@adtrackify/at-service-common 5.1.2 → 5.1.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 (623) hide show
  1. package/dist/cjs/__tests__/clients/acuity-client.spec.js +20 -21
  2. package/dist/cjs/__tests__/clients/acuity-client.spec.js.map +1 -1
  3. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js +86 -97
  4. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
  5. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js +95 -94
  6. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js.map +1 -1
  7. package/dist/cjs/__tests__/clients/event-collector-client.spec.js +58 -58
  8. package/dist/cjs/__tests__/clients/event-collector-client.spec.js.map +1 -1
  9. package/dist/cjs/__tests__/clients/liveintent-client.spec.js +37 -0
  10. package/dist/cjs/__tests__/clients/liveintent-client.spec.js.map +1 -0
  11. package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.js +17 -18
  12. package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.js.map +1 -1
  13. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js +255 -273
  14. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js.map +1 -1
  15. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js +125 -137
  16. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js.map +1 -1
  17. package/dist/cjs/__tests__/clients/sqs-client.spec.js +77 -78
  18. package/dist/cjs/__tests__/clients/sqs-client.spec.js.map +1 -1
  19. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js +430 -431
  20. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js.map +1 -1
  21. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js +29 -30
  22. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js.map +1 -1
  23. package/dist/cjs/__tests__/db/destinations-db-service.spec.js +47 -45
  24. package/dist/cjs/__tests__/db/destinations-db-service.spec.js.map +1 -1
  25. package/dist/cjs/__tests__/db/products-db-service.spec.js +40 -41
  26. package/dist/cjs/__tests__/db/products-db-service.spec.js.map +1 -1
  27. package/dist/cjs/__tests__/db/shared-read-db-services.spec.js +26 -27
  28. package/dist/cjs/__tests__/db/shared-read-db-services.spec.js.map +1 -1
  29. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js +37 -38
  30. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -1
  31. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js +35 -36
  32. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js.map +1 -1
  33. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js +27 -28
  34. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js.map +1 -1
  35. package/dist/cjs/__tests__/helpers/account-users-helper.spec.js +64 -65
  36. package/dist/cjs/__tests__/helpers/account-users-helper.spec.js.map +1 -1
  37. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js +18 -19
  38. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js.map +1 -1
  39. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js +23 -24
  40. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js.map +1 -1
  41. package/dist/cjs/__tests__/helpers/cognito-auth-helper.spec.js +16 -17
  42. package/dist/cjs/__tests__/helpers/cognito-auth-helper.spec.js.map +1 -1
  43. package/dist/cjs/__tests__/helpers/order-calculation-helper.spec.js +42 -43
  44. package/dist/cjs/__tests__/helpers/order-calculation-helper.spec.js.map +1 -1
  45. package/dist/cjs/__tests__/helpers/public-api-response-helper.spec.js +23 -24
  46. package/dist/cjs/__tests__/helpers/public-api-response-helper.spec.js.map +1 -1
  47. package/dist/cjs/__tests__/identity-cache/helpers.spec.js +114 -115
  48. package/dist/cjs/__tests__/identity-cache/helpers.spec.js.map +1 -1
  49. package/dist/cjs/__tests__/identity-cache/identity-cache-alias-write.spec.js +29 -30
  50. package/dist/cjs/__tests__/identity-cache/identity-cache-alias-write.spec.js.map +1 -1
  51. package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js +19 -20
  52. package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js.map +1 -1
  53. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +200 -223
  54. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -1
  55. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js +114 -123
  56. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
  57. package/dist/cjs/__tests__/identity-cache/identity-client.spec.js +107 -110
  58. package/dist/cjs/__tests__/identity-cache/identity-client.spec.js.map +1 -1
  59. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.js +31 -32
  60. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.js.map +1 -1
  61. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.js +47 -60
  62. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.js.map +1 -1
  63. package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.js +15 -16
  64. package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.js.map +1 -1
  65. package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.js +28 -35
  66. package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.js.map +1 -1
  67. package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js +27 -28
  68. package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js.map +1 -1
  69. package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.js +52 -74
  70. package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.js.map +1 -1
  71. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.d.ts +18 -14
  72. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.js +30 -37
  73. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.js.map +1 -1
  74. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js +424 -403
  75. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
  76. package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js +218 -219
  77. package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js.map +1 -1
  78. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js +117 -118
  79. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js.map +1 -1
  80. package/dist/cjs/__tests__/libs/compress-decompress.spec.js +7 -8
  81. package/dist/cjs/__tests__/libs/compress-decompress.spec.js.map +1 -1
  82. package/dist/cjs/__tests__/libs/contacts.spec.js +101 -102
  83. package/dist/cjs/__tests__/libs/contacts.spec.js.map +1 -1
  84. package/dist/cjs/__tests__/libs/currency.spec.js +56 -57
  85. package/dist/cjs/__tests__/libs/currency.spec.js.map +1 -1
  86. package/dist/cjs/__tests__/libs/dates.spec.js +94 -82
  87. package/dist/cjs/__tests__/libs/dates.spec.js.map +1 -1
  88. package/dist/cjs/__tests__/libs/domain.spec.js +68 -69
  89. package/dist/cjs/__tests__/libs/domain.spec.js.map +1 -1
  90. package/dist/cjs/__tests__/libs/numbers.spec.js +249 -250
  91. package/dist/cjs/__tests__/libs/numbers.spec.js.map +1 -1
  92. package/dist/cjs/__tests__/s3-client/s3-client.spec.js +16 -15
  93. package/dist/cjs/__tests__/s3-client/s3-client.spec.js.map +1 -1
  94. package/dist/cjs/__tests__/services/acuity-api-service.spec.js +32 -35
  95. package/dist/cjs/__tests__/services/acuity-api-service.spec.js.map +1 -1
  96. package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.js +14 -15
  97. package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.js.map +1 -1
  98. package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.js +949 -1187
  99. package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.js.map +1 -1
  100. package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.js +39 -40
  101. package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.js.map +1 -1
  102. package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.js +204 -201
  103. package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.js.map +1 -1
  104. package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js +174 -299
  105. package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js.map +1 -1
  106. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js +39 -41
  107. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -1
  108. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js +22 -27
  109. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
  110. package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.js +64 -67
  111. package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.js.map +1 -1
  112. package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.js +51 -54
  113. package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.js.map +1 -1
  114. package/dist/cjs/__tests__/services/liveintent-api-service.spec.js +67 -0
  115. package/dist/cjs/__tests__/services/liveintent-api-service.spec.js.map +1 -0
  116. package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.js +9 -10
  117. package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.js.map +1 -1
  118. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js +58 -69
  119. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js.map +1 -1
  120. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js +31 -32
  121. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js.map +1 -1
  122. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js +64 -65
  123. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js.map +1 -1
  124. package/dist/cjs/clients/generic/cognito-client.js +14 -14
  125. package/dist/cjs/clients/generic/cognito-client.js.map +1 -1
  126. package/dist/cjs/clients/generic/dynamodb-client.js +9 -9
  127. package/dist/cjs/clients/generic/dynamodb-client.js.map +1 -1
  128. package/dist/cjs/clients/generic/eventbridge-client.js +2 -2
  129. package/dist/cjs/clients/generic/eventbridge-client.js.map +1 -1
  130. package/dist/cjs/clients/generic/http-client.js +5 -5
  131. package/dist/cjs/clients/generic/http-client.js.map +1 -1
  132. package/dist/cjs/clients/generic/lambda-invoke-client.js.map +1 -1
  133. package/dist/cjs/clients/generic/location-client.js +2 -2
  134. package/dist/cjs/clients/generic/location-client.js.map +1 -1
  135. package/dist/cjs/clients/generic/redis-client.js +2 -13
  136. package/dist/cjs/clients/generic/redis-client.js.map +1 -1
  137. package/dist/cjs/clients/generic/s3-client.d.ts +1 -0
  138. package/dist/cjs/clients/generic/s3-client.js +19 -19
  139. package/dist/cjs/clients/generic/s3-client.js.map +1 -1
  140. package/dist/cjs/clients/generic/singlestore-db-client.d.ts +2 -2
  141. package/dist/cjs/clients/generic/singlestore-db-client.js +8 -18
  142. package/dist/cjs/clients/generic/singlestore-db-client.js.map +1 -1
  143. package/dist/cjs/clients/generic/sqs-bundled-client.js +2 -2
  144. package/dist/cjs/clients/generic/sqs-bundled-client.js.map +1 -1
  145. package/dist/cjs/clients/generic/sqs-bundled-client.types.js +1 -1
  146. package/dist/cjs/clients/generic/sqs-bundled-client.types.js.map +1 -1
  147. package/dist/cjs/clients/generic/sqs-client.d.ts +1 -1
  148. package/dist/cjs/clients/generic/sqs-client.js +2 -2
  149. package/dist/cjs/clients/generic/sqs-client.js.map +1 -1
  150. package/dist/cjs/clients/generic/sqs-unbundle.js +7 -6
  151. package/dist/cjs/clients/generic/sqs-unbundle.js.map +1 -1
  152. package/dist/cjs/clients/internal-api/accounts-client.js +14 -14
  153. package/dist/cjs/clients/internal-api/accounts-client.js.map +1 -1
  154. package/dist/cjs/clients/internal-api/cache-lambda-client.js.map +1 -1
  155. package/dist/cjs/clients/internal-api/db-management-client.js.map +1 -1
  156. package/dist/cjs/clients/internal-api/destinations-client.d.ts +2 -1
  157. package/dist/cjs/clients/internal-api/destinations-client.js +15 -8
  158. package/dist/cjs/clients/internal-api/destinations-client.js.map +1 -1
  159. package/dist/cjs/clients/internal-api/event-collector-client.js.map +1 -1
  160. package/dist/cjs/clients/internal-api/identity-client.js.map +1 -1
  161. package/dist/cjs/clients/internal-api/shopify-app-install-client.js.map +1 -1
  162. package/dist/cjs/clients/internal-api/subscriptions-client.js.map +1 -1
  163. package/dist/cjs/clients/internal-api/users-auth-client.js +11 -11
  164. package/dist/cjs/clients/internal-api/users-auth-client.js.map +1 -1
  165. package/dist/cjs/clients/third-party/acuity-client.js.map +1 -1
  166. package/dist/cjs/clients/third-party/emailable-client.js.map +1 -1
  167. package/dist/cjs/clients/third-party/index.d.ts +1 -0
  168. package/dist/cjs/clients/third-party/index.js +1 -0
  169. package/dist/cjs/clients/third-party/index.js.map +1 -1
  170. package/dist/cjs/clients/third-party/liveintent-client.d.ts +11 -0
  171. package/dist/cjs/clients/third-party/liveintent-client.js +25 -0
  172. package/dist/cjs/clients/third-party/liveintent-client.js.map +1 -0
  173. package/dist/cjs/clients/third-party/loops-client.js.map +1 -1
  174. package/dist/cjs/clients/third-party/open-exchange-rates-client.js.map +1 -1
  175. package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js.map +1 -1
  176. package/dist/cjs/clients/third-party/shopify-client.js +15 -15
  177. package/dist/cjs/clients/third-party/shopify-client.js.map +1 -1
  178. package/dist/cjs/constants/sqs.js +5 -5
  179. package/dist/cjs/constants/sqs.js.map +1 -1
  180. package/dist/cjs/helpers/account-users-helper.js.map +1 -1
  181. package/dist/cjs/helpers/acuity-helper.js.map +1 -1
  182. package/dist/cjs/helpers/api-key-auth-helper.d.ts +1 -2
  183. package/dist/cjs/helpers/api-key-auth-helper.js.map +1 -1
  184. package/dist/cjs/helpers/api-key-authorizer-helper.js.map +1 -1
  185. package/dist/cjs/helpers/cognito-auth-helper.d.ts +1 -2
  186. package/dist/cjs/helpers/cognito-auth-helper.js.map +1 -1
  187. package/dist/cjs/helpers/input-validation-helper.d.ts +1 -1
  188. package/dist/cjs/helpers/input-validation-helper.js.map +1 -1
  189. package/dist/cjs/helpers/logging-helper.d.ts +5 -5
  190. package/dist/cjs/helpers/logging-helper.js +7 -17
  191. package/dist/cjs/helpers/logging-helper.js.map +1 -1
  192. package/dist/cjs/helpers/order-calculation-helper.js.map +1 -1
  193. package/dist/cjs/helpers/public-api-response-helper.js.map +1 -1
  194. package/dist/cjs/helpers/response-helper.js.map +1 -1
  195. package/dist/cjs/helpers/shopify-helper.js.map +1 -1
  196. package/dist/cjs/helpers/sqs-utils.js +4 -8
  197. package/dist/cjs/helpers/sqs-utils.js.map +1 -1
  198. package/dist/cjs/libs/api-router/public-api-router.d.ts +2 -2
  199. package/dist/cjs/libs/api-router/public-api-router.js.map +1 -1
  200. package/dist/cjs/libs/api-router/route-matcher.js.map +1 -1
  201. package/dist/cjs/libs/click-id-parser.js +1 -1
  202. package/dist/cjs/libs/click-id-parser.js.map +1 -1
  203. package/dist/cjs/libs/compression.d.ts +1 -1
  204. package/dist/cjs/libs/compression.js.map +1 -1
  205. package/dist/cjs/libs/contacts.js.map +1 -1
  206. package/dist/cjs/libs/cookie.js +1 -1
  207. package/dist/cjs/libs/cookie.js.map +1 -1
  208. package/dist/cjs/libs/crypto.js.map +1 -1
  209. package/dist/cjs/libs/csv.js.map +1 -1
  210. package/dist/cjs/libs/currency.js.map +1 -1
  211. package/dist/cjs/libs/dates.d.ts +1 -0
  212. package/dist/cjs/libs/dates.js +18 -1
  213. package/dist/cjs/libs/dates.js.map +1 -1
  214. package/dist/cjs/libs/domain.js.map +1 -1
  215. package/dist/cjs/libs/emails.js.map +1 -1
  216. package/dist/cjs/libs/http-error.js.map +1 -1
  217. package/dist/cjs/libs/http-status-codes.js +1 -1
  218. package/dist/cjs/libs/http-status-codes.js.map +1 -1
  219. package/dist/cjs/libs/numbers.js.map +1 -1
  220. package/dist/cjs/libs/referrer-parser/referrer-parser-util.d.ts +1 -0
  221. package/dist/cjs/libs/referrer-parser/referrer-parser-util.js +2 -2
  222. package/dist/cjs/libs/referrer-parser/referrer-parser-util.js.map +1 -1
  223. package/dist/cjs/libs/strings.js.map +1 -1
  224. package/dist/cjs/libs/traits.js.map +1 -1
  225. package/dist/cjs/libs/url.js.map +1 -1
  226. package/dist/cjs/services/acuity-api-service.js.map +1 -1
  227. package/dist/cjs/services/cache/product-cache-service.js.map +1 -1
  228. package/dist/cjs/services/cost/cost-calculation-types.js +2 -1
  229. package/dist/cjs/services/cost/cost-calculation-types.js.map +1 -1
  230. package/dist/cjs/services/cost/cost-calculator-service.js +10 -43
  231. package/dist/cjs/services/cost/cost-calculator-service.js.map +1 -1
  232. package/dist/cjs/services/cost/cost-currency-service.js.map +1 -1
  233. package/dist/cjs/services/cost/cost-filter-service.js +7 -16
  234. package/dist/cjs/services/cost/cost-filter-service.js.map +1 -1
  235. package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.js +9 -24
  236. package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.js.map +1 -1
  237. package/dist/cjs/services/db/accounts-db-service.js.map +1 -1
  238. package/dist/cjs/services/db/api-keys-db-service.js.map +1 -1
  239. package/dist/cjs/services/db/contact-enrichments-db-service.js.map +1 -1
  240. package/dist/cjs/services/db/custom-measures-db-service.js.map +1 -1
  241. package/dist/cjs/services/db/destinations-db-service.js.map +1 -1
  242. package/dist/cjs/services/db/identity-cache-db-service.d.ts +1 -1
  243. package/dist/cjs/services/db/identity-cache-db-service.js.map +1 -1
  244. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +1 -5
  245. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
  246. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +7 -21
  247. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
  248. package/dist/cjs/services/db/identity-cache-dynamodb-service/key-builders.js +7 -7
  249. package/dist/cjs/services/db/identity-cache-dynamodb-service/key-builders.js.map +1 -1
  250. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js +3 -3
  251. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
  252. package/dist/cjs/services/db/index.d.ts +0 -1
  253. package/dist/cjs/services/db/index.js +0 -1
  254. package/dist/cjs/services/db/index.js.map +1 -1
  255. package/dist/cjs/services/db/log-events-db-service.js.map +1 -1
  256. package/dist/cjs/services/db/pixels-db-service.js.map +1 -1
  257. package/dist/cjs/services/db/products-db-service.js +16 -45
  258. package/dist/cjs/services/db/products-db-service.js.map +1 -1
  259. package/dist/cjs/services/db/purchasable-contacts-db-service.js.map +1 -1
  260. package/dist/cjs/services/db/purchased-contacts/purchased-contacts-db-service.js.map +1 -1
  261. package/dist/cjs/services/db/shopify-app-installs-db-service.js.map +1 -1
  262. package/dist/cjs/services/db/shopify-products-cache-db-service.js.map +1 -1
  263. package/dist/cjs/services/db/subscriptions-db-service.js.map +1 -1
  264. package/dist/cjs/services/db/tracking-events-db-service.js.map +1 -1
  265. package/dist/cjs/services/db/user-accounts-db-service.js.map +1 -1
  266. package/dist/cjs/services/email-verification/contact-email-verification-service.js.map +1 -1
  267. package/dist/cjs/services/email-verification/email-verification-service.js.map +1 -1
  268. package/dist/cjs/services/eventbridge-integration-service.js.map +1 -1
  269. package/dist/cjs/services/events/build-collect-queue-tracking-event.js +2 -2
  270. package/dist/cjs/services/events/build-collect-queue-tracking-event.js.map +1 -1
  271. package/dist/cjs/services/events/collect-queue-tracking-service.js.map +1 -1
  272. package/dist/cjs/services/events/log-event-service.js.map +1 -1
  273. package/dist/cjs/services/events/metric-event-service.js.map +1 -1
  274. package/dist/cjs/services/events/tracking-event-sqs-service.js.map +1 -1
  275. package/dist/cjs/services/generic-cache-service.js.map +1 -1
  276. package/dist/cjs/services/index.d.ts +1 -1
  277. package/dist/cjs/services/index.js +1 -1
  278. package/dist/cjs/services/index.js.map +1 -1
  279. package/dist/cjs/services/ipdata-lookup-service.d.ts +1 -1
  280. package/dist/cjs/services/ipdata-lookup-service.js.map +1 -1
  281. package/dist/cjs/services/liveintent-api-service.d.ts +15 -0
  282. package/dist/cjs/services/liveintent-api-service.js +59 -0
  283. package/dist/cjs/services/liveintent-api-service.js.map +1 -0
  284. package/dist/cjs/services/shopify/products/shopify-products-serviceV2.js.map +1 -1
  285. package/dist/cjs/services/shopify/shopify-graphql-transformer.js +1 -1
  286. package/dist/cjs/services/shopify/shopify-graphql-transformer.js.map +1 -1
  287. package/dist/cjs/types/index.d.ts +1 -0
  288. package/dist/cjs/types/index.js +8 -17
  289. package/dist/cjs/types/index.js.map +1 -1
  290. package/dist/cjs/types/internal-events/event-detail-types.js +4 -4
  291. package/dist/cjs/types/internal-events/event-detail-types.js.map +1 -1
  292. package/dist/cjs/types/liveintent-types.d.ts +8 -0
  293. package/dist/cjs/types/liveintent-types.js +3 -0
  294. package/dist/cjs/types/liveintent-types.js.map +1 -0
  295. package/dist/cjs/types/public-api-types.js +1 -1
  296. package/dist/cjs/types/public-api-types.js.map +1 -1
  297. package/dist/cjs/types/shopify-graphql-types/admin.types.js +491 -491
  298. package/dist/cjs/types/shopify-graphql-types/admin.types.js.map +1 -1
  299. package/dist/cjs/types/shopify-rest-types.d.ts +1 -1
  300. package/dist/cjs/utils/compression.d.ts +2 -0
  301. package/dist/cjs/utils/compression.js +11 -11
  302. package/dist/cjs/utils/compression.js.map +1 -1
  303. package/dist/cjs/utils/custom-measure-formula-utils.js.map +1 -1
  304. package/dist/cjs/utils/retry-envelope.js +4 -3
  305. package/dist/cjs/utils/retry-envelope.js.map +1 -1
  306. package/dist/cjs/utils/size.js +3 -2
  307. package/dist/cjs/utils/size.js.map +1 -1
  308. package/dist/esm/__tests__/clients/acuity-client.spec.js +5 -6
  309. package/dist/esm/__tests__/clients/acuity-client.spec.js.map +1 -1
  310. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js +0 -1
  311. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
  312. package/dist/esm/__tests__/clients/dynamodb-client.spec.js +42 -41
  313. package/dist/esm/__tests__/clients/dynamodb-client.spec.js.map +1 -1
  314. package/dist/esm/__tests__/clients/event-collector-client.spec.js +18 -18
  315. package/dist/esm/__tests__/clients/event-collector-client.spec.js.map +1 -1
  316. package/dist/esm/__tests__/clients/liveintent-client.spec.js +35 -0
  317. package/dist/esm/__tests__/clients/liveintent-client.spec.js.map +1 -0
  318. package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.js +3 -4
  319. package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.js.map +1 -1
  320. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js +47 -55
  321. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js.map +1 -1
  322. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js +1 -3
  323. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js.map +1 -1
  324. package/dist/esm/__tests__/clients/sqs-client.spec.js +21 -22
  325. package/dist/esm/__tests__/clients/sqs-client.spec.js.map +1 -1
  326. package/dist/esm/__tests__/clients/sqs-unbundle.spec.js +8 -9
  327. package/dist/esm/__tests__/clients/sqs-unbundle.spec.js.map +1 -1
  328. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js +5 -6
  329. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js.map +1 -1
  330. package/dist/esm/__tests__/db/destinations-db-service.spec.js +11 -9
  331. package/dist/esm/__tests__/db/destinations-db-service.spec.js.map +1 -1
  332. package/dist/esm/__tests__/db/products-db-service.spec.js +8 -9
  333. package/dist/esm/__tests__/db/products-db-service.spec.js.map +1 -1
  334. package/dist/esm/__tests__/db/shared-read-db-services.spec.js +6 -7
  335. package/dist/esm/__tests__/db/shared-read-db-services.spec.js.map +1 -1
  336. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js +12 -13
  337. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -1
  338. package/dist/esm/__tests__/db/subscriptions-db-service.spec.js +11 -12
  339. package/dist/esm/__tests__/db/subscriptions-db-service.spec.js.map +1 -1
  340. package/dist/esm/__tests__/db/user-accounts-db-service.spec.js +6 -7
  341. package/dist/esm/__tests__/db/user-accounts-db-service.spec.js.map +1 -1
  342. package/dist/esm/__tests__/helpers/account-users-helper.spec.js +3 -4
  343. package/dist/esm/__tests__/helpers/account-users-helper.spec.js.map +1 -1
  344. package/dist/esm/__tests__/helpers/acuity-helper.spec.js +0 -1
  345. package/dist/esm/__tests__/helpers/acuity-helper.spec.js.map +1 -1
  346. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js +3 -4
  347. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js.map +1 -1
  348. package/dist/esm/__tests__/helpers/cognito-auth-helper.spec.js +1 -2
  349. package/dist/esm/__tests__/helpers/cognito-auth-helper.spec.js.map +1 -1
  350. package/dist/esm/__tests__/helpers/order-calculation-helper.spec.js +4 -5
  351. package/dist/esm/__tests__/helpers/order-calculation-helper.spec.js.map +1 -1
  352. package/dist/esm/__tests__/helpers/public-api-response-helper.spec.js +1 -2
  353. package/dist/esm/__tests__/helpers/public-api-response-helper.spec.js.map +1 -1
  354. package/dist/esm/__tests__/identity-cache/helpers.spec.js +1 -2
  355. package/dist/esm/__tests__/identity-cache/helpers.spec.js.map +1 -1
  356. package/dist/esm/__tests__/identity-cache/identity-cache-alias-write.spec.js +15 -16
  357. package/dist/esm/__tests__/identity-cache/identity-cache-alias-write.spec.js.map +1 -1
  358. package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js +1 -2
  359. package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js.map +1 -1
  360. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +29 -52
  361. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -1
  362. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js +31 -40
  363. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
  364. package/dist/esm/__tests__/identity-cache/identity-client.spec.js +21 -24
  365. package/dist/esm/__tests__/identity-cache/identity-client.spec.js.map +1 -1
  366. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.js +0 -1
  367. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.js.map +1 -1
  368. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.js +4 -17
  369. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.js.map +1 -1
  370. package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.js +0 -1
  371. package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.js.map +1 -1
  372. package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.js +2 -9
  373. package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.js.map +1 -1
  374. package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js +0 -1
  375. package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js.map +1 -1
  376. package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.js +7 -29
  377. package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.js.map +1 -1
  378. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.d.ts +18 -14
  379. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.js +30 -37
  380. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.js.map +1 -1
  381. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js +37 -16
  382. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
  383. package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js +5 -6
  384. package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js.map +1 -1
  385. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js +9 -10
  386. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js.map +1 -1
  387. package/dist/esm/__tests__/libs/compress-decompress.spec.js +1 -2
  388. package/dist/esm/__tests__/libs/compress-decompress.spec.js.map +1 -1
  389. package/dist/esm/__tests__/libs/contacts.spec.js +0 -1
  390. package/dist/esm/__tests__/libs/contacts.spec.js.map +1 -1
  391. package/dist/esm/__tests__/libs/currency.spec.js +3 -4
  392. package/dist/esm/__tests__/libs/currency.spec.js.map +1 -1
  393. package/dist/esm/__tests__/libs/dates.spec.js +23 -11
  394. package/dist/esm/__tests__/libs/dates.spec.js.map +1 -1
  395. package/dist/esm/__tests__/libs/domain.spec.js +0 -1
  396. package/dist/esm/__tests__/libs/domain.spec.js.map +1 -1
  397. package/dist/esm/__tests__/libs/numbers.spec.js +0 -1
  398. package/dist/esm/__tests__/libs/numbers.spec.js.map +1 -1
  399. package/dist/esm/__tests__/s3-client/s3-client.spec.js +7 -6
  400. package/dist/esm/__tests__/s3-client/s3-client.spec.js.map +1 -1
  401. package/dist/esm/__tests__/services/acuity-api-service.spec.js +10 -13
  402. package/dist/esm/__tests__/services/acuity-api-service.spec.js.map +1 -1
  403. package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.js +0 -1
  404. package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.js.map +1 -1
  405. package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.js +280 -518
  406. package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.js.map +1 -1
  407. package/dist/esm/__tests__/services/cost/cost-currency-service.spec.js +3 -4
  408. package/dist/esm/__tests__/services/cost/cost-currency-service.spec.js.map +1 -1
  409. package/dist/esm/__tests__/services/cost/cost-filter-service.spec.js +22 -19
  410. package/dist/esm/__tests__/services/cost/cost-filter-service.spec.js.map +1 -1
  411. package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js +41 -133
  412. package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js.map +1 -1
  413. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js +6 -8
  414. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -1
  415. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js +5 -10
  416. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
  417. package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.js +14 -17
  418. package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.js.map +1 -1
  419. package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.js +16 -19
  420. package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.js.map +1 -1
  421. package/dist/esm/__tests__/services/liveintent-api-service.spec.js +65 -0
  422. package/dist/esm/__tests__/services/liveintent-api-service.spec.js.map +1 -0
  423. package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.js +1 -2
  424. package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.js.map +1 -1
  425. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js +14 -15
  426. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js.map +1 -1
  427. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js +1 -2
  428. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js.map +1 -1
  429. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js +0 -1
  430. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js.map +1 -1
  431. package/dist/esm/clients/generic/cognito-client.js +2 -2
  432. package/dist/esm/clients/generic/cognito-client.js.map +1 -1
  433. package/dist/esm/clients/generic/dynamodb-client.js +9 -9
  434. package/dist/esm/clients/generic/dynamodb-client.js.map +1 -1
  435. package/dist/esm/clients/generic/eventbridge-client.js +1 -1
  436. package/dist/esm/clients/generic/eventbridge-client.js.map +1 -1
  437. package/dist/esm/clients/generic/http-client.js +5 -5
  438. package/dist/esm/clients/generic/http-client.js.map +1 -1
  439. package/dist/esm/clients/generic/lambda-invoke-client.js.map +1 -1
  440. package/dist/esm/clients/generic/location-client.js +1 -1
  441. package/dist/esm/clients/generic/location-client.js.map +1 -1
  442. package/dist/esm/clients/generic/redis-client.js +2 -13
  443. package/dist/esm/clients/generic/redis-client.js.map +1 -1
  444. package/dist/esm/clients/generic/s3-client.d.ts +1 -0
  445. package/dist/esm/clients/generic/s3-client.js +1 -1
  446. package/dist/esm/clients/generic/s3-client.js.map +1 -1
  447. package/dist/esm/clients/generic/singlestore-db-client.d.ts +2 -2
  448. package/dist/esm/clients/generic/singlestore-db-client.js +1 -1
  449. package/dist/esm/clients/generic/singlestore-db-client.js.map +1 -1
  450. package/dist/esm/clients/generic/sqs-bundled-client.js +2 -2
  451. package/dist/esm/clients/generic/sqs-bundled-client.js.map +1 -1
  452. package/dist/esm/clients/generic/sqs-client.d.ts +1 -1
  453. package/dist/esm/clients/generic/sqs-client.js +2 -2
  454. package/dist/esm/clients/generic/sqs-client.js.map +1 -1
  455. package/dist/esm/clients/generic/sqs-unbundle.js +2 -2
  456. package/dist/esm/clients/generic/sqs-unbundle.js.map +1 -1
  457. package/dist/esm/clients/internal-api/accounts-client.js +1 -1
  458. package/dist/esm/clients/internal-api/accounts-client.js.map +1 -1
  459. package/dist/esm/clients/internal-api/cache-lambda-client.js.map +1 -1
  460. package/dist/esm/clients/internal-api/destinations-client.d.ts +2 -1
  461. package/dist/esm/clients/internal-api/destinations-client.js +8 -1
  462. package/dist/esm/clients/internal-api/destinations-client.js.map +1 -1
  463. package/dist/esm/clients/internal-api/event-collector-client.js.map +1 -1
  464. package/dist/esm/clients/internal-api/identity-client.js.map +1 -1
  465. package/dist/esm/clients/internal-api/users-auth-client.js +1 -1
  466. package/dist/esm/clients/internal-api/users-auth-client.js.map +1 -1
  467. package/dist/esm/clients/third-party/emailable-client.js.map +1 -1
  468. package/dist/esm/clients/third-party/index.d.ts +1 -0
  469. package/dist/esm/clients/third-party/index.js +1 -0
  470. package/dist/esm/clients/third-party/index.js.map +1 -1
  471. package/dist/esm/clients/third-party/liveintent-client.d.ts +11 -0
  472. package/dist/esm/clients/third-party/liveintent-client.js +21 -0
  473. package/dist/esm/clients/third-party/liveintent-client.js.map +1 -0
  474. package/dist/esm/clients/third-party/loops-client.js.map +1 -1
  475. package/dist/esm/clients/third-party/open-exchange-rates-client.js.map +1 -1
  476. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js +1 -1
  477. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js.map +1 -1
  478. package/dist/esm/clients/third-party/shopify-client.js +1 -1
  479. package/dist/esm/clients/third-party/shopify-client.js.map +1 -1
  480. package/dist/esm/constants/sqs.js +3 -3
  481. package/dist/esm/constants/sqs.js.map +1 -1
  482. package/dist/esm/helpers/account-users-helper.js.map +1 -1
  483. package/dist/esm/helpers/acuity-helper.js.map +1 -1
  484. package/dist/esm/helpers/api-key-auth-helper.d.ts +1 -2
  485. package/dist/esm/helpers/api-key-auth-helper.js.map +1 -1
  486. package/dist/esm/helpers/api-key-authorizer-helper.js.map +1 -1
  487. package/dist/esm/helpers/cognito-auth-helper.d.ts +1 -2
  488. package/dist/esm/helpers/cognito-auth-helper.js.map +1 -1
  489. package/dist/esm/helpers/input-validation-helper.d.ts +1 -1
  490. package/dist/esm/helpers/input-validation-helper.js.map +1 -1
  491. package/dist/esm/helpers/logging-helper.d.ts +5 -5
  492. package/dist/esm/helpers/logging-helper.js.map +1 -1
  493. package/dist/esm/helpers/order-calculation-helper.js.map +1 -1
  494. package/dist/esm/helpers/public-api-response-helper.js.map +1 -1
  495. package/dist/esm/helpers/response-helper.js.map +1 -1
  496. package/dist/esm/helpers/shopify-helper.js.map +1 -1
  497. package/dist/esm/helpers/sqs-utils.js +1 -6
  498. package/dist/esm/helpers/sqs-utils.js.map +1 -1
  499. package/dist/esm/libs/api-router/public-api-router.d.ts +2 -2
  500. package/dist/esm/libs/api-router/public-api-router.js.map +1 -1
  501. package/dist/esm/libs/api-router/route-matcher.js.map +1 -1
  502. package/dist/esm/libs/click-id-parser.js.map +1 -1
  503. package/dist/esm/libs/compression.d.ts +1 -1
  504. package/dist/esm/libs/compression.js.map +1 -1
  505. package/dist/esm/libs/contacts.js.map +1 -1
  506. package/dist/esm/libs/cookie.js.map +1 -1
  507. package/dist/esm/libs/csv.js.map +1 -1
  508. package/dist/esm/libs/currency.js.map +1 -1
  509. package/dist/esm/libs/dates.d.ts +1 -0
  510. package/dist/esm/libs/dates.js +16 -0
  511. package/dist/esm/libs/dates.js.map +1 -1
  512. package/dist/esm/libs/domain.js.map +1 -1
  513. package/dist/esm/libs/emails.js.map +1 -1
  514. package/dist/esm/libs/http-error.js.map +1 -1
  515. package/dist/esm/libs/numbers.js.map +1 -1
  516. package/dist/esm/libs/referrer-parser/referrer-parser-util.d.ts +1 -0
  517. package/dist/esm/libs/referrer-parser/referrer-parser-util.js +2 -2
  518. package/dist/esm/libs/referrer-parser/referrer-parser-util.js.map +1 -1
  519. package/dist/esm/libs/strings.js.map +1 -1
  520. package/dist/esm/libs/traits.js.map +1 -1
  521. package/dist/esm/services/acuity-api-service.js.map +1 -1
  522. package/dist/esm/services/cache/product-cache-service.js.map +1 -1
  523. package/dist/esm/services/cost/cost-calculation-types.js.map +1 -1
  524. package/dist/esm/services/cost/cost-calculator-service.js +10 -43
  525. package/dist/esm/services/cost/cost-calculator-service.js.map +1 -1
  526. package/dist/esm/services/cost/cost-currency-service.js.map +1 -1
  527. package/dist/esm/services/cost/cost-filter-service.js +7 -16
  528. package/dist/esm/services/cost/cost-filter-service.js.map +1 -1
  529. package/dist/esm/services/cost/order-cost/order-cost-resolution-service.js +9 -24
  530. package/dist/esm/services/cost/order-cost/order-cost-resolution-service.js.map +1 -1
  531. package/dist/esm/services/db/accounts-db-service.js.map +1 -1
  532. package/dist/esm/services/db/api-keys-db-service.js.map +1 -1
  533. package/dist/esm/services/db/contact-enrichments-db-service.js.map +1 -1
  534. package/dist/esm/services/db/custom-measures-db-service.js.map +1 -1
  535. package/dist/esm/services/db/identity-cache-db-service.d.ts +1 -1
  536. package/dist/esm/services/db/identity-cache-db-service.js.map +1 -1
  537. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +2 -6
  538. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
  539. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +8 -22
  540. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
  541. package/dist/esm/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
  542. package/dist/esm/services/db/index.d.ts +0 -1
  543. package/dist/esm/services/db/index.js +0 -1
  544. package/dist/esm/services/db/index.js.map +1 -1
  545. package/dist/esm/services/db/log-events-db-service.js.map +1 -1
  546. package/dist/esm/services/db/products-db-service.js +16 -45
  547. package/dist/esm/services/db/products-db-service.js.map +1 -1
  548. package/dist/esm/services/db/purchasable-contacts-db-service.js.map +1 -1
  549. package/dist/esm/services/db/purchased-contacts/purchased-contacts-db-service.js.map +1 -1
  550. package/dist/esm/services/db/shopify-app-installs-db-service.js.map +1 -1
  551. package/dist/esm/services/db/shopify-products-cache-db-service.js.map +1 -1
  552. package/dist/esm/services/db/subscriptions-db-service.js.map +1 -1
  553. package/dist/esm/services/db/tracking-events-db-service.js.map +1 -1
  554. package/dist/esm/services/email-verification/contact-email-verification-service.js.map +1 -1
  555. package/dist/esm/services/email-verification/email-verification-service.js.map +1 -1
  556. package/dist/esm/services/events/build-collect-queue-tracking-event.js.map +1 -1
  557. package/dist/esm/services/events/collect-queue-tracking-service.js +1 -1
  558. package/dist/esm/services/events/collect-queue-tracking-service.js.map +1 -1
  559. package/dist/esm/services/events/log-event-service.js.map +1 -1
  560. package/dist/esm/services/events/metric-event-service.js.map +1 -1
  561. package/dist/esm/services/events/tracking-event-sqs-service.js.map +1 -1
  562. package/dist/esm/services/generic-cache-service.js.map +1 -1
  563. package/dist/esm/services/index.d.ts +1 -1
  564. package/dist/esm/services/index.js +1 -1
  565. package/dist/esm/services/index.js.map +1 -1
  566. package/dist/esm/services/ipdata-lookup-service.d.ts +1 -1
  567. package/dist/esm/services/ipdata-lookup-service.js.map +1 -1
  568. package/dist/esm/services/liveintent-api-service.d.ts +15 -0
  569. package/dist/esm/services/liveintent-api-service.js +55 -0
  570. package/dist/esm/services/liveintent-api-service.js.map +1 -0
  571. package/dist/esm/services/shopify/products/shopify-products-serviceV2.js.map +1 -1
  572. package/dist/esm/services/shopify/shopify-graphql-transformer.js +1 -1
  573. package/dist/esm/services/shopify/shopify-graphql-transformer.js.map +1 -1
  574. package/dist/esm/types/index.d.ts +1 -0
  575. package/dist/esm/types/index.js +1 -0
  576. package/dist/esm/types/index.js.map +1 -1
  577. package/dist/esm/types/liveintent-types.d.ts +8 -0
  578. package/dist/esm/types/liveintent-types.js +2 -0
  579. package/dist/esm/types/liveintent-types.js.map +1 -0
  580. package/dist/esm/types/shopify-rest-types.d.ts +1 -1
  581. package/dist/esm/utils/compression.d.ts +2 -0
  582. package/dist/esm/utils/compression.js +3 -3
  583. package/dist/esm/utils/compression.js.map +1 -1
  584. package/dist/esm/utils/custom-measure-formula-utils.js.map +1 -1
  585. package/dist/esm/utils/retry-envelope.js.map +1 -1
  586. package/dist/esm/utils/size.js.map +1 -1
  587. package/package.json +136 -139
  588. package/dist/cjs/__tests__/clients/client-timeout-inventory.spec.js +0 -21
  589. package/dist/cjs/__tests__/clients/client-timeout-inventory.spec.js.map +0 -1
  590. package/dist/cjs/__tests__/clients/redis-client.spec.js +0 -79
  591. package/dist/cjs/__tests__/clients/redis-client.spec.js.map +0 -1
  592. package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.js +0 -40
  593. package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.js.map +0 -1
  594. package/dist/cjs/clients/third-party/exchange-rate-api-client.d.ts +0 -17
  595. package/dist/cjs/clients/third-party/exchange-rate-api-client.js +0 -20
  596. package/dist/cjs/clients/third-party/exchange-rate-api-client.js.map +0 -1
  597. package/dist/cjs/services/currency-exchange-rate-lookup-service.d.ts +0 -12
  598. package/dist/cjs/services/currency-exchange-rate-lookup-service.js +0 -98
  599. package/dist/cjs/services/currency-exchange-rate-lookup-service.js.map +0 -1
  600. package/dist/cjs/services/db/currency-exchange-rates-db-service.d.ts +0 -21
  601. package/dist/cjs/services/db/currency-exchange-rates-db-service.js +0 -40
  602. package/dist/cjs/services/db/currency-exchange-rates-db-service.js.map +0 -1
  603. package/dist/esm/__tests__/clients/client-timeout-inventory.spec.js +0 -19
  604. package/dist/esm/__tests__/clients/client-timeout-inventory.spec.js.map +0 -1
  605. package/dist/esm/__tests__/clients/redis-client.spec.d.ts +0 -1
  606. package/dist/esm/__tests__/clients/redis-client.spec.js +0 -77
  607. package/dist/esm/__tests__/clients/redis-client.spec.js.map +0 -1
  608. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.d.ts +0 -1
  609. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.js +0 -38
  610. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.js.map +0 -1
  611. package/dist/esm/clients/third-party/exchange-rate-api-client.d.ts +0 -17
  612. package/dist/esm/clients/third-party/exchange-rate-api-client.js +0 -16
  613. package/dist/esm/clients/third-party/exchange-rate-api-client.js.map +0 -1
  614. package/dist/esm/services/currency-exchange-rate-lookup-service.d.ts +0 -12
  615. package/dist/esm/services/currency-exchange-rate-lookup-service.js +0 -94
  616. package/dist/esm/services/currency-exchange-rate-lookup-service.js.map +0 -1
  617. package/dist/esm/services/db/currency-exchange-rates-db-service.d.ts +0 -21
  618. package/dist/esm/services/db/currency-exchange-rates-db-service.js +0 -36
  619. package/dist/esm/services/db/currency-exchange-rates-db-service.js.map +0 -1
  620. /package/dist/cjs/__tests__/clients/{client-timeout-inventory.spec.d.ts → liveintent-client.spec.d.ts} +0 -0
  621. /package/dist/cjs/__tests__/{clients/redis-client.spec.d.ts → services/liveintent-api-service.spec.d.ts} +0 -0
  622. /package/dist/{cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.d.ts → esm/__tests__/clients/liveintent-client.spec.d.ts} +0 -0
  623. /package/dist/esm/__tests__/{clients/client-timeout-inventory.spec.d.ts → services/liveintent-api-service.spec.d.ts} +0 -0
@@ -1,18 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
3
  const sqs_unbundle_1 = require("../../clients/generic/sqs-unbundle");
5
4
  const sqs_bundled_client_types_1 = require("../../clients/generic/sqs-bundled-client.types");
6
5
  const compression_1 = require("../../utils/compression");
7
6
  const node_zlib_1 = require("node:zlib");
8
7
  const node_util_1 = require("node:util");
9
8
  const gzipAsync = (0, node_util_1.promisify)(node_zlib_1.gzip);
10
- vitest_1.vi.mock('../../helpers/logging-helper', () => ({
9
+ jest.mock('../../helpers/logging-helper', () => ({
11
10
  Logger: {
12
- debug: vitest_1.vi.fn(),
13
- info: vitest_1.vi.fn(),
14
- warn: vitest_1.vi.fn(),
15
- error: vitest_1.vi.fn(),
11
+ debug: jest.fn(),
12
+ info: jest.fn(),
13
+ warn: jest.fn(),
14
+ error: jest.fn(),
16
15
  },
17
16
  }));
18
17
  function makeTestEvent(id, name = 'test_event', value) {
@@ -57,224 +56,224 @@ async function makeGzipCompressedEnvelope(items) {
57
56
  p: base64,
58
57
  };
59
58
  }
60
- (0, vitest_1.describe)('isBundledEnvelope', () => {
61
- (0, vitest_1.it)('returns true for valid bundled envelope with NONE compression', () => {
59
+ describe('isBundledEnvelope', () => {
60
+ it('returns true for valid bundled envelope with NONE compression', () => {
62
61
  const envelope = makeBundledEnvelope([makeTestEvent('1')]);
63
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(true);
62
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(true);
64
63
  });
65
- (0, vitest_1.it)('returns true for valid bundled envelope with ZSTD compression', async () => {
64
+ it('returns true for valid bundled envelope with ZSTD compression', async () => {
66
65
  const envelope = await makeCompressedEnvelope([makeTestEvent('1')]);
67
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(true);
66
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(true);
68
67
  });
69
- (0, vitest_1.it)('returns false for null', () => {
70
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(null)).toBe(false);
68
+ it('returns false for null', () => {
69
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(null)).toBe(false);
71
70
  });
72
- (0, vitest_1.it)('returns false for undefined', () => {
73
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(undefined)).toBe(false);
71
+ it('returns false for undefined', () => {
72
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(undefined)).toBe(false);
74
73
  });
75
- (0, vitest_1.it)('returns false for plain object (legacy message)', () => {
76
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(makeTestEvent('1'))).toBe(false);
74
+ it('returns false for plain object (legacy message)', () => {
75
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(makeTestEvent('1'))).toBe(false);
77
76
  });
78
- (0, vitest_1.it)('returns false for wrong version', () => {
77
+ it('returns false for wrong version', () => {
79
78
  const envelope = { v: 2, c: 'none', n: 1, p: [] };
80
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(false);
79
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(false);
81
80
  });
82
- (0, vitest_1.it)('returns true for valid bundled envelope with GZIP compression', async () => {
81
+ it('returns true for valid bundled envelope with GZIP compression', async () => {
83
82
  const envelope = await makeGzipCompressedEnvelope([makeTestEvent('1')]);
84
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(true);
83
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(true);
85
84
  });
86
- (0, vitest_1.it)('returns false for invalid compression algorithm', () => {
85
+ it('returns false for invalid compression algorithm', () => {
87
86
  const envelope = { v: 1, c: 'lz4', n: 1, p: [] };
88
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(false);
87
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(false);
89
88
  });
90
- (0, vitest_1.it)('returns false for missing count', () => {
89
+ it('returns false for missing count', () => {
91
90
  const envelope = { v: 1, c: 'none', p: [] };
92
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(false);
91
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(false);
93
92
  });
94
- (0, vitest_1.it)('returns false for missing payload', () => {
93
+ it('returns false for missing payload', () => {
95
94
  const envelope = { v: 1, c: 'none', n: 1 };
96
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(false);
95
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(false);
97
96
  });
98
97
  });
99
- (0, vitest_1.describe)('unbundleMessage', () => {
100
- (0, vitest_1.it)('unbundles NONE compression envelope', async () => {
98
+ describe('unbundleMessage', () => {
99
+ it('unbundles NONE compression envelope', async () => {
101
100
  const items = [makeTestEvent('1'), makeTestEvent('2')];
102
101
  const envelope = makeBundledEnvelope(items);
103
102
  const result = await (0, sqs_unbundle_1.unbundleMessage)(envelope);
104
- (0, vitest_1.expect)(result).toHaveLength(2);
105
- (0, vitest_1.expect)(result[0].eventId).toBe('1');
106
- (0, vitest_1.expect)(result[1].eventId).toBe('2');
103
+ expect(result).toHaveLength(2);
104
+ expect(result[0].eventId).toBe('1');
105
+ expect(result[1].eventId).toBe('2');
107
106
  });
108
- (0, vitest_1.it)('unbundles ZSTD compressed envelope', async () => {
107
+ it('unbundles ZSTD compressed envelope', async () => {
109
108
  const items = [makeTestEvent('1'), makeTestEvent('2'), makeTestEvent('3')];
110
109
  const envelope = await makeCompressedEnvelope(items);
111
110
  const result = await (0, sqs_unbundle_1.unbundleMessage)(envelope);
112
- (0, vitest_1.expect)(result).toHaveLength(3);
113
- (0, vitest_1.expect)(result[0].eventId).toBe('1');
114
- (0, vitest_1.expect)(result[1].eventId).toBe('2');
115
- (0, vitest_1.expect)(result[2].eventId).toBe('3');
111
+ expect(result).toHaveLength(3);
112
+ expect(result[0].eventId).toBe('1');
113
+ expect(result[1].eventId).toBe('2');
114
+ expect(result[2].eventId).toBe('3');
116
115
  });
117
- (0, vitest_1.it)('unbundles large batches with ZSTD compression', async () => {
116
+ it('unbundles large batches with ZSTD compression', async () => {
118
117
  const items = Array.from({ length: 500 }, (_, i) => makeTestEvent(`event-${i}`, `event_${i}`, i * 10));
119
118
  const envelope = await makeCompressedEnvelope(items);
120
119
  const result = await (0, sqs_unbundle_1.unbundleMessage)(envelope);
121
- (0, vitest_1.expect)(result).toHaveLength(500);
122
- (0, vitest_1.expect)(result[0].eventId).toBe('event-0');
123
- (0, vitest_1.expect)(result[499].eventId).toBe('event-499');
120
+ expect(result).toHaveLength(500);
121
+ expect(result[0].eventId).toBe('event-0');
122
+ expect(result[499].eventId).toBe('event-499');
124
123
  });
125
- (0, vitest_1.it)('throws on unsupported bundle version', async () => {
124
+ it('throws on unsupported bundle version', async () => {
126
125
  const envelope = { v: 99, c: 'none', n: 1, p: [] };
127
- await (0, vitest_1.expect)((0, sqs_unbundle_1.unbundleMessage)(envelope)).rejects.toThrow('Unsupported bundle version: 99');
126
+ await expect((0, sqs_unbundle_1.unbundleMessage)(envelope)).rejects.toThrow('Unsupported bundle version: 99');
128
127
  });
129
- (0, vitest_1.it)('throws on invalid payload type for NONE compression', async () => {
128
+ it('throws on invalid payload type for NONE compression', async () => {
130
129
  const envelope = { v: 1, c: 'none', n: 1, p: 'not-an-array' };
131
- await (0, vitest_1.expect)((0, sqs_unbundle_1.unbundleMessage)(envelope)).rejects.toThrow('Invalid bundle: NONE compression but payload is not an array');
130
+ await expect((0, sqs_unbundle_1.unbundleMessage)(envelope)).rejects.toThrow('Invalid bundle: NONE compression but payload is not an array');
132
131
  });
133
- (0, vitest_1.it)('throws on invalid payload type for ZSTD compression', async () => {
132
+ it('throws on invalid payload type for ZSTD compression', async () => {
134
133
  const envelope = { v: 1, c: 'zstd', n: 1, p: [] };
135
- await (0, vitest_1.expect)((0, sqs_unbundle_1.unbundleMessage)(envelope)).rejects.toThrow('Invalid bundle: zstd compression but payload is not a string');
134
+ await expect((0, sqs_unbundle_1.unbundleMessage)(envelope)).rejects.toThrow('Invalid bundle: zstd compression but payload is not a string');
136
135
  });
137
- (0, vitest_1.it)('unbundles GZIP compressed envelope', async () => {
136
+ it('unbundles GZIP compressed envelope', async () => {
138
137
  const items = [makeTestEvent('1'), makeTestEvent('2'), makeTestEvent('3')];
139
138
  const envelope = await makeGzipCompressedEnvelope(items);
140
139
  const result = await (0, sqs_unbundle_1.unbundleMessage)(envelope);
141
- (0, vitest_1.expect)(result).toHaveLength(3);
142
- (0, vitest_1.expect)(result[0].eventId).toBe('1');
143
- (0, vitest_1.expect)(result[1].eventId).toBe('2');
144
- (0, vitest_1.expect)(result[2].eventId).toBe('3');
140
+ expect(result).toHaveLength(3);
141
+ expect(result[0].eventId).toBe('1');
142
+ expect(result[1].eventId).toBe('2');
143
+ expect(result[2].eventId).toBe('3');
145
144
  });
146
- (0, vitest_1.it)('unbundles large batches with GZIP compression', async () => {
145
+ it('unbundles large batches with GZIP compression', async () => {
147
146
  const items = Array.from({ length: 500 }, (_, i) => makeTestEvent(`event-${i}`, `event_${i}`, i * 10));
148
147
  const envelope = await makeGzipCompressedEnvelope(items);
149
148
  const result = await (0, sqs_unbundle_1.unbundleMessage)(envelope);
150
- (0, vitest_1.expect)(result).toHaveLength(500);
151
- (0, vitest_1.expect)(result[0].eventId).toBe('event-0');
152
- (0, vitest_1.expect)(result[499].eventId).toBe('event-499');
149
+ expect(result).toHaveLength(500);
150
+ expect(result[0].eventId).toBe('event-0');
151
+ expect(result[499].eventId).toBe('event-499');
153
152
  });
154
- (0, vitest_1.it)('throws on invalid payload type for GZIP compression', async () => {
153
+ it('throws on invalid payload type for GZIP compression', async () => {
155
154
  const envelope = { v: 1, c: 'gzip', n: 1, p: [] };
156
- await (0, vitest_1.expect)((0, sqs_unbundle_1.unbundleMessage)(envelope)).rejects.toThrow('Invalid bundle: gzip compression but payload is not a string');
155
+ await expect((0, sqs_unbundle_1.unbundleMessage)(envelope)).rejects.toThrow('Invalid bundle: gzip compression but payload is not a string');
157
156
  });
158
157
  });
159
- (0, vitest_1.describe)('unbundleRecords', () => {
160
- (0, vitest_1.describe)('legacy (non-bundled) messages', () => {
161
- (0, vitest_1.it)('parses raw JSON message', async () => {
158
+ describe('unbundleRecords', () => {
159
+ describe('legacy (non-bundled) messages', () => {
160
+ it('parses raw JSON message', async () => {
162
161
  const event = makeTestEvent('raw-1', 'purchase');
163
162
  const record = makeSqsRecord(event);
164
163
  const { items, stats, failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
165
- (0, vitest_1.expect)(items).toHaveLength(1);
166
- (0, vitest_1.expect)(items[0].eventId).toBe('raw-1');
167
- (0, vitest_1.expect)(items[0].name).toBe('purchase');
168
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(1);
169
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(0);
170
- (0, vitest_1.expect)(failedMessageIds).toHaveLength(0);
164
+ expect(items).toHaveLength(1);
165
+ expect(items[0].eventId).toBe('raw-1');
166
+ expect(items[0].name).toBe('purchase');
167
+ expect(stats.legacySqsRecords).toBe(1);
168
+ expect(stats.bundledSqsRecords).toBe(0);
169
+ expect(failedMessageIds).toHaveLength(0);
171
170
  });
172
- (0, vitest_1.it)('parses wrapped messageBody format', async () => {
171
+ it('parses wrapped messageBody format', async () => {
173
172
  const event = makeTestEvent('wrapped-1');
174
173
  const record = makeSqsRecord({ messageBody: event });
175
174
  const { items, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
176
- (0, vitest_1.expect)(items).toHaveLength(1);
177
- (0, vitest_1.expect)(items[0].eventId).toBe('wrapped-1');
178
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(1);
175
+ expect(items).toHaveLength(1);
176
+ expect(items[0].eventId).toBe('wrapped-1');
177
+ expect(stats.legacySqsRecords).toBe(1);
179
178
  });
180
- (0, vitest_1.it)('handles multiple legacy records', async () => {
179
+ it('handles multiple legacy records', async () => {
181
180
  const records = [
182
181
  makeSqsRecord(makeTestEvent('1'), 'msg-1'),
183
182
  makeSqsRecord(makeTestEvent('2'), 'msg-2'),
184
183
  makeSqsRecord(makeTestEvent('3'), 'msg-3'),
185
184
  ];
186
185
  const { items, stats, recordMap } = await (0, sqs_unbundle_1.unbundleRecords)(records);
187
- (0, vitest_1.expect)(items).toHaveLength(3);
188
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(3);
189
- (0, vitest_1.expect)(stats.totalItems).toBe(3);
190
- (0, vitest_1.expect)(recordMap.get(items[0])).toBe('msg-1');
191
- (0, vitest_1.expect)(recordMap.get(items[1])).toBe('msg-2');
192
- (0, vitest_1.expect)(recordMap.get(items[2])).toBe('msg-3');
186
+ expect(items).toHaveLength(3);
187
+ expect(stats.legacySqsRecords).toBe(3);
188
+ expect(stats.totalItems).toBe(3);
189
+ expect(recordMap.get(items[0])).toBe('msg-1');
190
+ expect(recordMap.get(items[1])).toBe('msg-2');
191
+ expect(recordMap.get(items[2])).toBe('msg-3');
193
192
  });
194
193
  });
195
- (0, vitest_1.describe)('bundled messages (NONE compression)', () => {
196
- (0, vitest_1.it)('unbundles wrapped messageBody envelope', async () => {
194
+ describe('bundled messages (NONE compression)', () => {
195
+ it('unbundles wrapped messageBody envelope', async () => {
197
196
  const items = [makeTestEvent('b1'), makeTestEvent('b2')];
198
197
  const envelope = makeBundledEnvelope(items);
199
198
  const record = makeSqsRecord({ messageBody: envelope });
200
199
  const { items: result, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
201
- (0, vitest_1.expect)(result).toHaveLength(2);
202
- (0, vitest_1.expect)(result[0].eventId).toBe('b1');
203
- (0, vitest_1.expect)(result[1].eventId).toBe('b2');
204
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
205
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(0);
200
+ expect(result).toHaveLength(2);
201
+ expect(result[0].eventId).toBe('b1');
202
+ expect(result[1].eventId).toBe('b2');
203
+ expect(stats.bundledSqsRecords).toBe(1);
204
+ expect(stats.legacySqsRecords).toBe(0);
206
205
  });
207
- (0, vitest_1.it)('unbundles raw envelope (not wrapped)', async () => {
206
+ it('unbundles raw envelope (not wrapped)', async () => {
208
207
  const items = [makeTestEvent('r1'), makeTestEvent('r2')];
209
208
  const envelope = makeBundledEnvelope(items);
210
209
  const record = makeSqsRecord(envelope);
211
210
  const { items: result, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
212
- (0, vitest_1.expect)(result).toHaveLength(2);
213
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
211
+ expect(result).toHaveLength(2);
212
+ expect(stats.bundledSqsRecords).toBe(1);
214
213
  });
215
- (0, vitest_1.it)('maps all items from bundle to same messageId', async () => {
214
+ it('maps all items from bundle to same messageId', async () => {
216
215
  const items = [makeTestEvent('x1'), makeTestEvent('x2'), makeTestEvent('x3')];
217
216
  const envelope = makeBundledEnvelope(items);
218
217
  const record = makeSqsRecord({ messageBody: envelope }, 'bundle-msg-1');
219
218
  const { items: result, recordMap } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
220
- (0, vitest_1.expect)(result).toHaveLength(3);
221
- (0, vitest_1.expect)(recordMap.get(result[0])).toBe('bundle-msg-1');
222
- (0, vitest_1.expect)(recordMap.get(result[1])).toBe('bundle-msg-1');
223
- (0, vitest_1.expect)(recordMap.get(result[2])).toBe('bundle-msg-1');
219
+ expect(result).toHaveLength(3);
220
+ expect(recordMap.get(result[0])).toBe('bundle-msg-1');
221
+ expect(recordMap.get(result[1])).toBe('bundle-msg-1');
222
+ expect(recordMap.get(result[2])).toBe('bundle-msg-1');
224
223
  });
225
224
  });
226
- (0, vitest_1.describe)('bundled messages (ZSTD compression)', () => {
227
- (0, vitest_1.it)('unbundles ZSTD compressed envelope', async () => {
225
+ describe('bundled messages (ZSTD compression)', () => {
226
+ it('unbundles ZSTD compressed envelope', async () => {
228
227
  const items = [makeTestEvent('z1'), makeTestEvent('z2')];
229
228
  const envelope = await makeCompressedEnvelope(items);
230
229
  const record = makeSqsRecord({ messageBody: envelope });
231
230
  const { items: result, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
232
- (0, vitest_1.expect)(result).toHaveLength(2);
233
- (0, vitest_1.expect)(result[0].eventId).toBe('z1');
234
- (0, vitest_1.expect)(result[1].eventId).toBe('z2');
235
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
231
+ expect(result).toHaveLength(2);
232
+ expect(result[0].eventId).toBe('z1');
233
+ expect(result[1].eventId).toBe('z2');
234
+ expect(stats.bundledSqsRecords).toBe(1);
236
235
  });
237
- (0, vitest_1.it)('handles large compressed bundles (500 items)', async () => {
236
+ it('handles large compressed bundles (500 items)', async () => {
238
237
  const items = Array.from({ length: 500 }, (_, i) => makeTestEvent(`item-${i}`));
239
238
  const envelope = await makeCompressedEnvelope(items);
240
239
  const record = makeSqsRecord({ messageBody: envelope });
241
240
  const { items: result, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
242
- (0, vitest_1.expect)(result).toHaveLength(500);
243
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
244
- (0, vitest_1.expect)(stats.totalItems).toBe(500);
241
+ expect(result).toHaveLength(500);
242
+ expect(stats.bundledSqsRecords).toBe(1);
243
+ expect(stats.totalItems).toBe(500);
245
244
  });
246
245
  });
247
- (0, vitest_1.describe)('bundled messages (GZIP compression - CF Worker)', () => {
248
- (0, vitest_1.it)('unbundles GZIP compressed envelope', async () => {
246
+ describe('bundled messages (GZIP compression - CF Worker)', () => {
247
+ it('unbundles GZIP compressed envelope', async () => {
249
248
  const items = [makeTestEvent('g1'), makeTestEvent('g2')];
250
249
  const envelope = await makeGzipCompressedEnvelope(items);
251
250
  const record = makeSqsRecord({ messageBody: envelope });
252
251
  const { items: result, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
253
- (0, vitest_1.expect)(result).toHaveLength(2);
254
- (0, vitest_1.expect)(result[0].eventId).toBe('g1');
255
- (0, vitest_1.expect)(result[1].eventId).toBe('g2');
256
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
252
+ expect(result).toHaveLength(2);
253
+ expect(result[0].eventId).toBe('g1');
254
+ expect(result[1].eventId).toBe('g2');
255
+ expect(stats.bundledSqsRecords).toBe(1);
257
256
  });
258
- (0, vitest_1.it)('handles large GZIP compressed bundles (500 items)', async () => {
257
+ it('handles large GZIP compressed bundles (500 items)', async () => {
259
258
  const items = Array.from({ length: 500 }, (_, i) => makeTestEvent(`item-${i}`));
260
259
  const envelope = await makeGzipCompressedEnvelope(items);
261
260
  const record = makeSqsRecord({ messageBody: envelope });
262
261
  const { items: result, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
263
- (0, vitest_1.expect)(result).toHaveLength(500);
264
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
265
- (0, vitest_1.expect)(stats.totalItems).toBe(500);
262
+ expect(result).toHaveLength(500);
263
+ expect(stats.bundledSqsRecords).toBe(1);
264
+ expect(stats.totalItems).toBe(500);
266
265
  });
267
- (0, vitest_1.it)('maps all items from GZIP bundle to same messageId', async () => {
266
+ it('maps all items from GZIP bundle to same messageId', async () => {
268
267
  const items = [makeTestEvent('x1'), makeTestEvent('x2'), makeTestEvent('x3')];
269
268
  const envelope = await makeGzipCompressedEnvelope(items);
270
269
  const record = makeSqsRecord({ messageBody: envelope }, 'gzip-bundle-msg-1');
271
270
  const { items: result, recordMap } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
272
- (0, vitest_1.expect)(result).toHaveLength(3);
273
- (0, vitest_1.expect)(recordMap.get(result[0])).toBe('gzip-bundle-msg-1');
274
- (0, vitest_1.expect)(recordMap.get(result[1])).toBe('gzip-bundle-msg-1');
275
- (0, vitest_1.expect)(recordMap.get(result[2])).toBe('gzip-bundle-msg-1');
271
+ expect(result).toHaveLength(3);
272
+ expect(recordMap.get(result[0])).toBe('gzip-bundle-msg-1');
273
+ expect(recordMap.get(result[1])).toBe('gzip-bundle-msg-1');
274
+ expect(recordMap.get(result[2])).toBe('gzip-bundle-msg-1');
276
275
  });
277
- (0, vitest_1.it)('unbundles GZIP envelope wrapped in full InternalSQSMessage format (CF Worker format)', async () => {
276
+ it('unbundles GZIP envelope wrapped in full InternalSQSMessage format (CF Worker format)', async () => {
278
277
  const items = [makeTestEvent('cf1'), makeTestEvent('cf2'), makeTestEvent('cf3')];
279
278
  const envelope = await makeGzipCompressedEnvelope(items);
280
279
  const internalSqsMessage = {
@@ -285,18 +284,18 @@ async function makeGzipCompressedEnvelope(items) {
285
284
  };
286
285
  const record = makeSqsRecord(internalSqsMessage, 'sqs-msg-id');
287
286
  const { items: result, stats, recordMap } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
288
- (0, vitest_1.expect)(result).toHaveLength(3);
289
- (0, vitest_1.expect)(result[0].eventId).toBe('cf1');
290
- (0, vitest_1.expect)(result[1].eventId).toBe('cf2');
291
- (0, vitest_1.expect)(result[2].eventId).toBe('cf3');
292
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
293
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(0);
294
- (0, vitest_1.expect)(stats.totalItems).toBe(3);
295
- (0, vitest_1.expect)(recordMap.get(result[0])).toBe('sqs-msg-id');
296
- (0, vitest_1.expect)(recordMap.get(result[1])).toBe('sqs-msg-id');
297
- (0, vitest_1.expect)(recordMap.get(result[2])).toBe('sqs-msg-id');
287
+ expect(result).toHaveLength(3);
288
+ expect(result[0].eventId).toBe('cf1');
289
+ expect(result[1].eventId).toBe('cf2');
290
+ expect(result[2].eventId).toBe('cf3');
291
+ expect(stats.bundledSqsRecords).toBe(1);
292
+ expect(stats.legacySqsRecords).toBe(0);
293
+ expect(stats.totalItems).toBe(3);
294
+ expect(recordMap.get(result[0])).toBe('sqs-msg-id');
295
+ expect(recordMap.get(result[1])).toBe('sqs-msg-id');
296
+ expect(recordMap.get(result[2])).toBe('sqs-msg-id');
298
297
  });
299
- (0, vitest_1.it)('unbundles GZIP envelope with extra wrapper fields (messageTime, messageType)', async () => {
298
+ it('unbundles GZIP envelope with extra wrapper fields (messageTime, messageType)', async () => {
300
299
  const items = [makeTestEvent('w1')];
301
300
  const envelope = await makeGzipCompressedEnvelope(items);
302
301
  const wrappedMessage = {
@@ -307,11 +306,11 @@ async function makeGzipCompressedEnvelope(items) {
307
306
  };
308
307
  const record = makeSqsRecord(wrappedMessage);
309
308
  const { items: result, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
310
- (0, vitest_1.expect)(result).toHaveLength(1);
311
- (0, vitest_1.expect)(result[0].eventId).toBe('w1');
312
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
309
+ expect(result).toHaveLength(1);
310
+ expect(result[0].eventId).toBe('w1');
311
+ expect(stats.bundledSqsRecords).toBe(1);
313
312
  });
314
- (0, vitest_1.it)('handles decompression failure gracefully (does not return wrapper)', async () => {
313
+ it('handles decompression failure gracefully (does not return wrapper)', async () => {
315
314
  const corruptedEnvelope = {
316
315
  v: 1,
317
316
  c: 'gzip',
@@ -327,16 +326,16 @@ async function makeGzipCompressedEnvelope(items) {
327
326
  };
328
327
  const record = makeSqsRecord(internalSqsMessage, 'sqs-record-id');
329
328
  const { items, stats, failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
330
- (0, vitest_1.expect)(failedMessageIds).toHaveLength(1);
331
- (0, vitest_1.expect)(stats.failedRecords).toBe(1);
332
- (0, vitest_1.expect)(items).toHaveLength(0);
329
+ expect(failedMessageIds).toHaveLength(1);
330
+ expect(stats.failedRecords).toBe(1);
331
+ expect(items).toHaveLength(0);
333
332
  items.forEach((item) => {
334
- (0, vitest_1.expect)(item).not.toHaveProperty('messageTime');
335
- (0, vitest_1.expect)(item).not.toHaveProperty('messageType');
336
- (0, vitest_1.expect)(item).not.toHaveProperty('messageBody');
333
+ expect(item).not.toHaveProperty('messageTime');
334
+ expect(item).not.toHaveProperty('messageType');
335
+ expect(item).not.toHaveProperty('messageBody');
337
336
  });
338
337
  });
339
- (0, vitest_1.it)('verifies decompression failure does NOT leak wrapper into items', async () => {
338
+ it('verifies decompression failure does NOT leak wrapper into items', async () => {
340
339
  const badEnvelope = {
341
340
  v: 1,
342
341
  c: 'gzip',
@@ -352,12 +351,12 @@ async function makeGzipCompressedEnvelope(items) {
352
351
  };
353
352
  const record = makeSqsRecord(wrapper, 'sqs-msg-id');
354
353
  const { items, stats, failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
355
- (0, vitest_1.expect)(failedMessageIds).toContain('sqs-msg-id');
356
- (0, vitest_1.expect)(stats.failedRecords).toBe(1);
357
- (0, vitest_1.expect)(items).toHaveLength(0);
358
- (0, vitest_1.expect)(stats.totalItems).toBe(0);
354
+ expect(failedMessageIds).toContain('sqs-msg-id');
355
+ expect(stats.failedRecords).toBe(1);
356
+ expect(items).toHaveLength(0);
357
+ expect(stats.totalItems).toBe(0);
359
358
  });
360
- (0, vitest_1.it)('simulates old version without GZIP - returns envelope as item (BUG)', async () => {
359
+ it('simulates old version without GZIP - returns envelope as item (BUG)', async () => {
361
360
  const items = [{ pixelId: 'px123', trackingEvent: { name: 'page_view' } }];
362
361
  const envelope = await makeGzipCompressedEnvelope(items);
363
362
  const wrapper = {
@@ -366,19 +365,19 @@ async function makeGzipCompressedEnvelope(items) {
366
365
  messageBody: envelope,
367
366
  messageId: 'cf-msg-id',
368
367
  };
369
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(true);
368
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(envelope)).toBe(true);
370
369
  const record = makeSqsRecord(wrapper, 'sqs-msg-id');
371
370
  const { items: result, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
372
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
373
- (0, vitest_1.expect)(result).toHaveLength(1);
374
- (0, vitest_1.expect)(result[0].pixelId).toBe('px123');
375
- (0, vitest_1.expect)(result[0]).not.toHaveProperty('v');
376
- (0, vitest_1.expect)(result[0]).not.toHaveProperty('c');
377
- (0, vitest_1.expect)(result[0]).not.toHaveProperty('n');
378
- (0, vitest_1.expect)(result[0]).not.toHaveProperty('p');
379
- (0, vitest_1.expect)(result[0]).not.toHaveProperty('s');
371
+ expect(stats.bundledSqsRecords).toBe(1);
372
+ expect(result).toHaveLength(1);
373
+ expect(result[0].pixelId).toBe('px123');
374
+ expect(result[0]).not.toHaveProperty('v');
375
+ expect(result[0]).not.toHaveProperty('c');
376
+ expect(result[0]).not.toHaveProperty('n');
377
+ expect(result[0]).not.toHaveProperty('p');
378
+ expect(result[0]).not.toHaveProperty('s');
380
379
  });
381
- (0, vitest_1.it)('unknown compression algorithm causes legacy fallback (returns messageBody)', async () => {
380
+ it('unknown compression algorithm causes legacy fallback (returns messageBody)', async () => {
382
381
  const unknownEnvelope = {
383
382
  v: 1,
384
383
  c: 'lz4',
@@ -392,20 +391,20 @@ async function makeGzipCompressedEnvelope(items) {
392
391
  messageBody: unknownEnvelope,
393
392
  messageId: 'wrapper-msg-id',
394
393
  };
395
- (0, vitest_1.expect)((0, sqs_unbundle_1.isBundledEnvelope)(unknownEnvelope)).toBe(false);
394
+ expect((0, sqs_unbundle_1.isBundledEnvelope)(unknownEnvelope)).toBe(false);
396
395
  const record = makeSqsRecord(wrapper, 'sqs-msg-id');
397
396
  const { items, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
398
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(1);
399
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(0);
400
- (0, vitest_1.expect)(items).toHaveLength(1);
401
- (0, vitest_1.expect)(items[0]).toHaveProperty('v', 1);
402
- (0, vitest_1.expect)(items[0]).toHaveProperty('c', 'lz4');
403
- (0, vitest_1.expect)(items[0]).toHaveProperty('n', 1);
404
- (0, vitest_1.expect)(items[0]).toHaveProperty('p');
397
+ expect(stats.legacySqsRecords).toBe(1);
398
+ expect(stats.bundledSqsRecords).toBe(0);
399
+ expect(items).toHaveLength(1);
400
+ expect(items[0]).toHaveProperty('v', 1);
401
+ expect(items[0]).toHaveProperty('c', 'lz4');
402
+ expect(items[0]).toHaveProperty('n', 1);
403
+ expect(items[0]).toHaveProperty('p');
405
404
  });
406
405
  });
407
- (0, vitest_1.describe)('mixed message formats', () => {
408
- (0, vitest_1.it)('handles mix of legacy and bundled messages', async () => {
406
+ describe('mixed message formats', () => {
407
+ it('handles mix of legacy and bundled messages', async () => {
409
408
  const legacyEvent = makeTestEvent('legacy-1');
410
409
  const bundledItems = [makeTestEvent('bundled-1'), makeTestEvent('bundled-2')];
411
410
  const bundleEnvelope = makeBundledEnvelope(bundledItems);
@@ -414,15 +413,15 @@ async function makeGzipCompressedEnvelope(items) {
414
413
  makeSqsRecord({ messageBody: bundleEnvelope }, 'msg-bundle'),
415
414
  ];
416
415
  const { items, stats, recordMap } = await (0, sqs_unbundle_1.unbundleRecords)(records);
417
- (0, vitest_1.expect)(items).toHaveLength(3);
418
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(1);
419
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
420
- (0, vitest_1.expect)(stats.totalItems).toBe(3);
421
- (0, vitest_1.expect)(recordMap.get(items[0])).toBe('msg-legacy');
422
- (0, vitest_1.expect)(recordMap.get(items[1])).toBe('msg-bundle');
423
- (0, vitest_1.expect)(recordMap.get(items[2])).toBe('msg-bundle');
416
+ expect(items).toHaveLength(3);
417
+ expect(stats.legacySqsRecords).toBe(1);
418
+ expect(stats.bundledSqsRecords).toBe(1);
419
+ expect(stats.totalItems).toBe(3);
420
+ expect(recordMap.get(items[0])).toBe('msg-legacy');
421
+ expect(recordMap.get(items[1])).toBe('msg-bundle');
422
+ expect(recordMap.get(items[2])).toBe('msg-bundle');
424
423
  });
425
- (0, vitest_1.it)('handles mix of NONE and ZSTD compressed bundles', async () => {
424
+ it('handles mix of NONE and ZSTD compressed bundles', async () => {
426
425
  const noneItems = [makeTestEvent('none-1')];
427
426
  const zstdItems = [makeTestEvent('zstd-1'), makeTestEvent('zstd-2')];
428
427
  const noneEnvelope = makeBundledEnvelope(noneItems);
@@ -432,11 +431,11 @@ async function makeGzipCompressedEnvelope(items) {
432
431
  makeSqsRecord({ messageBody: zstdEnvelope }, 'msg-zstd'),
433
432
  ];
434
433
  const { items, stats } = await (0, sqs_unbundle_1.unbundleRecords)(records);
435
- (0, vitest_1.expect)(items).toHaveLength(3);
436
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(2);
437
- (0, vitest_1.expect)(stats.totalItems).toBe(3);
434
+ expect(items).toHaveLength(3);
435
+ expect(stats.bundledSqsRecords).toBe(2);
436
+ expect(stats.totalItems).toBe(3);
438
437
  });
439
- (0, vitest_1.it)('handles mix of ZSTD, GZIP, and legacy messages', async () => {
438
+ it('handles mix of ZSTD, GZIP, and legacy messages', async () => {
440
439
  const legacyEvent = makeTestEvent('legacy-1');
441
440
  const zstdItems = [makeTestEvent('zstd-1'), makeTestEvent('zstd-2')];
442
441
  const gzipItems = [makeTestEvent('gzip-1'), makeTestEvent('gzip-2'), makeTestEvent('gzip-3')];
@@ -448,29 +447,29 @@ async function makeGzipCompressedEnvelope(items) {
448
447
  makeSqsRecord({ messageBody: gzipEnvelope }, 'msg-gzip'),
449
448
  ];
450
449
  const { items, stats, recordMap } = await (0, sqs_unbundle_1.unbundleRecords)(records);
451
- (0, vitest_1.expect)(items).toHaveLength(6);
452
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(1);
453
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(2);
454
- (0, vitest_1.expect)(stats.totalItems).toBe(6);
455
- (0, vitest_1.expect)(recordMap.get(items[0])).toBe('msg-legacy');
456
- (0, vitest_1.expect)(recordMap.get(items[1])).toBe('msg-zstd');
457
- (0, vitest_1.expect)(recordMap.get(items[2])).toBe('msg-zstd');
458
- (0, vitest_1.expect)(recordMap.get(items[3])).toBe('msg-gzip');
459
- (0, vitest_1.expect)(recordMap.get(items[4])).toBe('msg-gzip');
460
- (0, vitest_1.expect)(recordMap.get(items[5])).toBe('msg-gzip');
450
+ expect(items).toHaveLength(6);
451
+ expect(stats.legacySqsRecords).toBe(1);
452
+ expect(stats.bundledSqsRecords).toBe(2);
453
+ expect(stats.totalItems).toBe(6);
454
+ expect(recordMap.get(items[0])).toBe('msg-legacy');
455
+ expect(recordMap.get(items[1])).toBe('msg-zstd');
456
+ expect(recordMap.get(items[2])).toBe('msg-zstd');
457
+ expect(recordMap.get(items[3])).toBe('msg-gzip');
458
+ expect(recordMap.get(items[4])).toBe('msg-gzip');
459
+ expect(recordMap.get(items[5])).toBe('msg-gzip');
461
460
  });
462
461
  });
463
- (0, vitest_1.describe)('error handling', () => {
464
- (0, vitest_1.it)('returns failed messageId for invalid JSON', async () => {
462
+ describe('error handling', () => {
463
+ it('returns failed messageId for invalid JSON', async () => {
465
464
  const records = [makeSqsRecord('not-valid-json{{{', 'msg-bad'), makeSqsRecord(makeTestEvent('good'), 'msg-good')];
466
465
  const { items, failedMessageIds, stats } = await (0, sqs_unbundle_1.unbundleRecords)(records);
467
- (0, vitest_1.expect)(items).toHaveLength(1);
468
- (0, vitest_1.expect)(items[0].eventId).toBe('good');
469
- (0, vitest_1.expect)(failedMessageIds).toEqual(['msg-bad']);
470
- (0, vitest_1.expect)(stats.failedRecords).toBe(1);
471
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(1);
466
+ expect(items).toHaveLength(1);
467
+ expect(items[0].eventId).toBe('good');
468
+ expect(failedMessageIds).toEqual(['msg-bad']);
469
+ expect(stats.failedRecords).toBe(1);
470
+ expect(stats.legacySqsRecords).toBe(1);
472
471
  });
473
- (0, vitest_1.it)('returns failed messageId for corrupt ZSTD compressed data', async () => {
472
+ it('returns failed messageId for corrupt ZSTD compressed data', async () => {
474
473
  const corruptEnvelope = {
475
474
  v: 1,
476
475
  c: sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD,
@@ -482,12 +481,12 @@ async function makeGzipCompressedEnvelope(items) {
482
481
  makeSqsRecord(makeTestEvent('valid'), 'msg-valid'),
483
482
  ];
484
483
  const { items, failedMessageIds, stats } = await (0, sqs_unbundle_1.unbundleRecords)(records);
485
- (0, vitest_1.expect)(items).toHaveLength(1);
486
- (0, vitest_1.expect)(items[0].eventId).toBe('valid');
487
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-corrupt');
488
- (0, vitest_1.expect)(stats.failedRecords).toBe(1);
484
+ expect(items).toHaveLength(1);
485
+ expect(items[0].eventId).toBe('valid');
486
+ expect(failedMessageIds).toContain('msg-corrupt');
487
+ expect(stats.failedRecords).toBe(1);
489
488
  });
490
- (0, vitest_1.it)('returns failed messageId for corrupt GZIP compressed data', async () => {
489
+ it('returns failed messageId for corrupt GZIP compressed data', async () => {
491
490
  const corruptEnvelope = {
492
491
  v: 1,
493
492
  c: sqs_bundled_client_types_1.CompressionAlgorithm.GZIP,
@@ -499,27 +498,27 @@ async function makeGzipCompressedEnvelope(items) {
499
498
  makeSqsRecord(makeTestEvent('valid'), 'msg-valid'),
500
499
  ];
501
500
  const { items, failedMessageIds, stats } = await (0, sqs_unbundle_1.unbundleRecords)(records);
502
- (0, vitest_1.expect)(items).toHaveLength(1);
503
- (0, vitest_1.expect)(items[0].eventId).toBe('valid');
504
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-corrupt-gzip');
505
- (0, vitest_1.expect)(stats.failedRecords).toBe(1);
501
+ expect(items).toHaveLength(1);
502
+ expect(items[0].eventId).toBe('valid');
503
+ expect(failedMessageIds).toContain('msg-corrupt-gzip');
504
+ expect(stats.failedRecords).toBe(1);
506
505
  });
507
- (0, vitest_1.it)('returns empty result for all failed records', async () => {
506
+ it('returns empty result for all failed records', async () => {
508
507
  const records = [makeSqsRecord('invalid-1', 'msg-1'), makeSqsRecord('invalid-2', 'msg-2')];
509
508
  const { items, failedMessageIds, stats } = await (0, sqs_unbundle_1.unbundleRecords)(records);
510
- (0, vitest_1.expect)(items).toHaveLength(0);
511
- (0, vitest_1.expect)(failedMessageIds).toEqual(['msg-1', 'msg-2']);
512
- (0, vitest_1.expect)(stats.failedRecords).toBe(2);
513
- (0, vitest_1.expect)(stats.totalItems).toBe(0);
509
+ expect(items).toHaveLength(0);
510
+ expect(failedMessageIds).toEqual(['msg-1', 'msg-2']);
511
+ expect(stats.failedRecords).toBe(2);
512
+ expect(stats.totalItems).toBe(0);
514
513
  });
515
- (0, vitest_1.it)('handles empty records array', async () => {
514
+ it('handles empty records array', async () => {
516
515
  const { items, failedMessageIds, stats } = await (0, sqs_unbundle_1.unbundleRecords)([]);
517
- (0, vitest_1.expect)(items).toHaveLength(0);
518
- (0, vitest_1.expect)(failedMessageIds).toHaveLength(0);
519
- (0, vitest_1.expect)(stats.totalRecords).toBe(0);
520
- (0, vitest_1.expect)(stats.totalItems).toBe(0);
516
+ expect(items).toHaveLength(0);
517
+ expect(failedMessageIds).toHaveLength(0);
518
+ expect(stats.totalRecords).toBe(0);
519
+ expect(stats.totalItems).toBe(0);
521
520
  });
522
- (0, vitest_1.it)('rejects ZSTD payload exceeding max decompressed size', async () => {
521
+ it('rejects ZSTD payload exceeding max decompressed size', async () => {
523
522
  const largeItems = Array.from({ length: 1000 }, (_, i) => ({
524
523
  id: `item-${i}`,
525
524
  data: 'x'.repeat(1000),
@@ -529,10 +528,10 @@ async function makeGzipCompressedEnvelope(items) {
529
528
  const { failedMessageIds, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
530
529
  maxDecompressedSizeBytes: 100 * 1024,
531
530
  });
532
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-too-large');
533
- (0, vitest_1.expect)(stats.failedRecords).toBe(1);
531
+ expect(failedMessageIds).toContain('msg-too-large');
532
+ expect(stats.failedRecords).toBe(1);
534
533
  });
535
- (0, vitest_1.it)('rejects GZIP payload exceeding max decompressed size (post-decompress check)', async () => {
534
+ it('rejects GZIP payload exceeding max decompressed size (post-decompress check)', async () => {
536
535
  const largeItems = Array.from({ length: 1000 }, (_, i) => ({
537
536
  id: `item-${i}`,
538
537
  data: 'x'.repeat(1000),
@@ -542,10 +541,10 @@ async function makeGzipCompressedEnvelope(items) {
542
541
  const { failedMessageIds, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
543
542
  maxDecompressedSizeBytes: 100 * 1024,
544
543
  });
545
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-too-large-gzip');
546
- (0, vitest_1.expect)(stats.failedRecords).toBe(1);
544
+ expect(failedMessageIds).toContain('msg-too-large-gzip');
545
+ expect(stats.failedRecords).toBe(1);
547
546
  });
548
- (0, vitest_1.it)('fails on invalid base64 in compressed payload', async () => {
547
+ it('fails on invalid base64 in compressed payload', async () => {
549
548
  const badEnvelope = {
550
549
  v: 1,
551
550
  c: sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD,
@@ -555,11 +554,11 @@ async function makeGzipCompressedEnvelope(items) {
555
554
  };
556
555
  const record = makeSqsRecord({ messageBody: badEnvelope }, 'msg-bad-base64');
557
556
  const { failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
558
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-bad-base64');
557
+ expect(failedMessageIds).toContain('msg-bad-base64');
559
558
  });
560
559
  });
561
- (0, vitest_1.describe)('bundle format edge cases', () => {
562
- (0, vitest_1.it)('successfully unbundles even when n does not match actual item count', async () => {
560
+ describe('bundle format edge cases', () => {
561
+ it('successfully unbundles even when n does not match actual item count', async () => {
563
562
  const envelope = {
564
563
  v: 1,
565
564
  c: sqs_bundled_client_types_1.CompressionAlgorithm.NONE,
@@ -569,54 +568,54 @@ async function makeGzipCompressedEnvelope(items) {
569
568
  };
570
569
  const record = makeSqsRecord({ messageBody: envelope });
571
570
  const { items } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
572
- (0, vitest_1.expect)(items).toHaveLength(2);
571
+ expect(items).toHaveLength(2);
573
572
  });
574
- (0, vitest_1.it)('treats envelope with unsupported version as legacy message', async () => {
573
+ it('treats envelope with unsupported version as legacy message', async () => {
575
574
  const badEnvelope = { v: 99, c: 'none', n: 1, s: 10, p: [] };
576
575
  const record = makeSqsRecord({ messageBody: badEnvelope }, 'msg-bad-version');
577
576
  const { items, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
578
- (0, vitest_1.expect)(items).toHaveLength(1);
579
- (0, vitest_1.expect)(items[0].v).toBe(99);
580
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(1);
581
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(0);
577
+ expect(items).toHaveLength(1);
578
+ expect(items[0].v).toBe(99);
579
+ expect(stats.legacySqsRecords).toBe(1);
580
+ expect(stats.bundledSqsRecords).toBe(0);
582
581
  });
583
582
  });
584
- (0, vitest_1.describe)('timeout protection', () => {
585
- (0, vitest_1.it)('respects timeoutMs option for ZSTD', async () => {
583
+ describe('timeout protection', () => {
584
+ it('respects timeoutMs option for ZSTD', async () => {
586
585
  const items = [makeTestEvent('1')];
587
586
  const envelope = await makeCompressedEnvelope(items);
588
587
  const record = makeSqsRecord({ messageBody: envelope });
589
588
  const { items: result, failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
590
589
  timeoutMs: 5000,
591
590
  });
592
- (0, vitest_1.expect)(result).toHaveLength(1);
593
- (0, vitest_1.expect)(failedMessageIds).toHaveLength(0);
591
+ expect(result).toHaveLength(1);
592
+ expect(failedMessageIds).toHaveLength(0);
594
593
  });
595
- (0, vitest_1.it)('respects timeoutMs option for GZIP', async () => {
594
+ it('respects timeoutMs option for GZIP', async () => {
596
595
  const items = [makeTestEvent('1')];
597
596
  const envelope = await makeGzipCompressedEnvelope(items);
598
597
  const record = makeSqsRecord({ messageBody: envelope });
599
598
  const { items: result, failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
600
599
  timeoutMs: 5000,
601
600
  });
602
- (0, vitest_1.expect)(result).toHaveLength(1);
603
- (0, vitest_1.expect)(failedMessageIds).toHaveLength(0);
601
+ expect(result).toHaveLength(1);
602
+ expect(failedMessageIds).toHaveLength(0);
604
603
  });
605
- (0, vitest_1.it)('passes timeoutMs through to decompression', async () => {
604
+ it('passes timeoutMs through to decompression', async () => {
606
605
  const items = [makeTestEvent('1')];
607
606
  const envelope = await makeCompressedEnvelope(items);
608
607
  const record = makeSqsRecord({ messageBody: envelope });
609
- await (0, vitest_1.expect)((0, sqs_unbundle_1.unbundleRecords)([record], { timeoutMs: 30000 })).resolves.toBeDefined();
608
+ await expect((0, sqs_unbundle_1.unbundleRecords)([record], { timeoutMs: 30000 })).resolves.toBeDefined();
610
609
  });
611
- (0, vitest_1.it)('CompressionTimeoutError is properly exported', () => {
610
+ it('CompressionTimeoutError is properly exported', () => {
612
611
  const error = new compression_1.CompressionTimeoutError(compression_1.CompressionOperation.DECOMPRESS, 5000);
613
- (0, vitest_1.expect)(error).toBeInstanceOf(Error);
614
- (0, vitest_1.expect)(error.name).toBe('CompressionTimeoutError');
615
- (0, vitest_1.expect)(error.operation).toBe('decompress');
616
- (0, vitest_1.expect)(error.timeoutMs).toBe(5000);
617
- (0, vitest_1.expect)(error.message).toContain('timed out after 5000ms');
612
+ expect(error).toBeInstanceOf(Error);
613
+ expect(error.name).toBe('CompressionTimeoutError');
614
+ expect(error.operation).toBe('decompress');
615
+ expect(error.timeoutMs).toBe(5000);
616
+ expect(error.message).toContain('timed out after 5000ms');
618
617
  });
619
- (0, vitest_1.it)('includes timeout info in failure logging for ZSTD', async () => {
618
+ it('includes timeout info in failure logging for ZSTD', async () => {
620
619
  const corruptEnvelope = {
621
620
  v: 1,
622
621
  c: sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD,
@@ -628,9 +627,9 @@ async function makeGzipCompressedEnvelope(items) {
628
627
  const { failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
629
628
  timeoutMs: 5000,
630
629
  });
631
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-timeout-test');
630
+ expect(failedMessageIds).toContain('msg-timeout-test');
632
631
  });
633
- (0, vitest_1.it)('includes timeout info in failure logging for GZIP', async () => {
632
+ it('includes timeout info in failure logging for GZIP', async () => {
634
633
  const corruptEnvelope = {
635
634
  v: 1,
636
635
  c: sqs_bundled_client_types_1.CompressionAlgorithm.GZIP,
@@ -642,27 +641,27 @@ async function makeGzipCompressedEnvelope(items) {
642
641
  const { failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
643
642
  timeoutMs: 5000,
644
643
  });
645
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-gzip-timeout-test');
644
+ expect(failedMessageIds).toContain('msg-gzip-timeout-test');
646
645
  });
647
646
  });
648
- (0, vitest_1.describe)('end-to-end: producer bundle → consumer unbundle', () => {
649
- (0, vitest_1.it)('simulates full bundle → unbundle flow with compression', async () => {
647
+ describe('end-to-end: producer bundle → consumer unbundle', () => {
648
+ it('simulates full bundle → unbundle flow with compression', async () => {
650
649
  const producerItems = Array.from({ length: 100 }, (_, i) => makeTestEvent(`event-${i}`, 'page_view', i * 1.5));
651
650
  const envelope = await makeCompressedEnvelope(producerItems, 3);
652
651
  const sqsMessageBody = { messageBody: envelope };
653
652
  const consumerRecord = makeSqsRecord(sqsMessageBody, 'sqs-message-id-123');
654
653
  const { items, recordMap, stats } = await (0, sqs_unbundle_1.unbundleRecords)([consumerRecord]);
655
- (0, vitest_1.expect)(items).toHaveLength(100);
656
- (0, vitest_1.expect)(items[0]).toEqual({ eventId: 'event-0', name: 'page_view', value: 0 });
657
- (0, vitest_1.expect)(items[99]).toEqual({ eventId: 'event-99', name: 'page_view', value: 148.5 });
658
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
659
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(0);
660
- (0, vitest_1.expect)(stats.totalItems).toBe(100);
654
+ expect(items).toHaveLength(100);
655
+ expect(items[0]).toEqual({ eventId: 'event-0', name: 'page_view', value: 0 });
656
+ expect(items[99]).toEqual({ eventId: 'event-99', name: 'page_view', value: 148.5 });
657
+ expect(stats.bundledSqsRecords).toBe(1);
658
+ expect(stats.legacySqsRecords).toBe(0);
659
+ expect(stats.totalItems).toBe(100);
661
660
  for (const item of items) {
662
- (0, vitest_1.expect)(recordMap.get(item)).toBe('sqs-message-id-123');
661
+ expect(recordMap.get(item)).toBe('sqs-message-id-123');
663
662
  }
664
663
  });
665
- (0, vitest_1.it)('simulates mixed batch with legacy and bundled messages', async () => {
664
+ it('simulates mixed batch with legacy and bundled messages', async () => {
666
665
  const legacyRecord1 = makeSqsRecord({ messageBody: makeTestEvent('legacy-1', 'purchase', 99.99) }, 'legacy-msg-1');
667
666
  const legacyRecord2 = makeSqsRecord(makeTestEvent('legacy-2', 'add_to_cart', 29.99), 'legacy-msg-2');
668
667
  const bundledItems = [
@@ -674,19 +673,19 @@ async function makeGzipCompressedEnvelope(items) {
674
673
  const bundledRecord = makeSqsRecord({ messageBody: envelope }, 'bundled-msg-1');
675
674
  const records = [legacyRecord1, bundledRecord, legacyRecord2];
676
675
  const { items, stats, recordMap } = await (0, sqs_unbundle_1.unbundleRecords)(records);
677
- (0, vitest_1.expect)(items).toHaveLength(5);
678
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(2);
679
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
680
- (0, vitest_1.expect)(stats.totalItems).toBe(5);
681
- (0, vitest_1.expect)(recordMap.get(items[0])).toBe('legacy-msg-1');
682
- (0, vitest_1.expect)(recordMap.get(items[1])).toBe('bundled-msg-1');
683
- (0, vitest_1.expect)(recordMap.get(items[2])).toBe('bundled-msg-1');
684
- (0, vitest_1.expect)(recordMap.get(items[3])).toBe('bundled-msg-1');
685
- (0, vitest_1.expect)(recordMap.get(items[4])).toBe('legacy-msg-2');
676
+ expect(items).toHaveLength(5);
677
+ expect(stats.legacySqsRecords).toBe(2);
678
+ expect(stats.bundledSqsRecords).toBe(1);
679
+ expect(stats.totalItems).toBe(5);
680
+ expect(recordMap.get(items[0])).toBe('legacy-msg-1');
681
+ expect(recordMap.get(items[1])).toBe('bundled-msg-1');
682
+ expect(recordMap.get(items[2])).toBe('bundled-msg-1');
683
+ expect(recordMap.get(items[3])).toBe('bundled-msg-1');
684
+ expect(recordMap.get(items[4])).toBe('legacy-msg-2');
686
685
  });
687
686
  });
688
- (0, vitest_1.describe)('consumer edge cases - real sequences', () => {
689
- (0, vitest_1.it)('handles 500 items in single compressed bundle with exact verification', async () => {
687
+ describe('consumer edge cases - real sequences', () => {
688
+ it('handles 500 items in single compressed bundle with exact verification', async () => {
690
689
  const originalItems = Array.from({ length: 500 }, (_, i) => ({
691
690
  id: `item-${i}`,
692
691
  name: `Event ${i}`,
@@ -696,21 +695,21 @@ async function makeGzipCompressedEnvelope(items) {
696
695
  const envelope = await makeCompressedEnvelope(originalItems);
697
696
  const record = makeSqsRecord({ messageBody: envelope }, 'msg-500-items');
698
697
  const { items, recordMap, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
699
- (0, vitest_1.expect)(items).toHaveLength(500);
700
- (0, vitest_1.expect)(items[0]).toEqual(originalItems[0]);
701
- (0, vitest_1.expect)(items[249]).toEqual(originalItems[249]);
702
- (0, vitest_1.expect)(items[499]).toEqual(originalItems[499]);
703
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
704
- (0, vitest_1.expect)(stats.totalItems).toBe(500);
698
+ expect(items).toHaveLength(500);
699
+ expect(items[0]).toEqual(originalItems[0]);
700
+ expect(items[249]).toEqual(originalItems[249]);
701
+ expect(items[499]).toEqual(originalItems[499]);
702
+ expect(stats.bundledSqsRecords).toBe(1);
703
+ expect(stats.totalItems).toBe(500);
705
704
  for (let i = 0; i < 500; i++) {
706
- (0, vitest_1.expect)(items[i].id).toBe(`item-${i}`);
707
- (0, vitest_1.expect)(items[i].data.nested.value).toBe(i * 1.5);
705
+ expect(items[i].id).toBe(`item-${i}`);
706
+ expect(items[i].data.nested.value).toBe(i * 1.5);
708
707
  }
709
708
  for (const item of items) {
710
- (0, vitest_1.expect)(recordMap.get(item)).toBe('msg-500-items');
709
+ expect(recordMap.get(item)).toBe('msg-500-items');
711
710
  }
712
711
  });
713
- (0, vitest_1.it)('handles multiple bundles in single batch with different item counts', async () => {
712
+ it('handles multiple bundles in single batch with different item counts', async () => {
714
713
  const counts = [10, 50, 100, 200, 300];
715
714
  const records = [];
716
715
  const expectedTotal = counts.reduce((sum, c) => sum + c, 0);
@@ -725,24 +724,24 @@ async function makeGzipCompressedEnvelope(items) {
725
724
  records.push(makeSqsRecord({ messageBody: envelope }, `msg-bundle-${bundleIdx}`));
726
725
  }
727
726
  const { items, recordMap, stats } = await (0, sqs_unbundle_1.unbundleRecords)(records);
728
- (0, vitest_1.expect)(items).toHaveLength(expectedTotal);
729
- (0, vitest_1.expect)(stats.totalItems).toBe(expectedTotal);
730
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(5);
731
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(0);
732
- (0, vitest_1.expect)(stats.failedRecords).toBe(0);
727
+ expect(items).toHaveLength(expectedTotal);
728
+ expect(stats.totalItems).toBe(expectedTotal);
729
+ expect(stats.bundledSqsRecords).toBe(5);
730
+ expect(stats.legacySqsRecords).toBe(0);
731
+ expect(stats.failedRecords).toBe(0);
733
732
  const itemsByBundle = new Map();
734
733
  for (const item of items) {
735
734
  const expectedMsgId = `msg-bundle-${item.bundleId}`;
736
- (0, vitest_1.expect)(recordMap.get(item)).toBe(expectedMsgId);
735
+ expect(recordMap.get(item)).toBe(expectedMsgId);
737
736
  itemsByBundle.set(item.bundleId, (itemsByBundle.get(item.bundleId) ?? 0) + 1);
738
737
  }
739
- (0, vitest_1.expect)(itemsByBundle.get(0)).toBe(10);
740
- (0, vitest_1.expect)(itemsByBundle.get(1)).toBe(50);
741
- (0, vitest_1.expect)(itemsByBundle.get(2)).toBe(100);
742
- (0, vitest_1.expect)(itemsByBundle.get(3)).toBe(200);
743
- (0, vitest_1.expect)(itemsByBundle.get(4)).toBe(300);
738
+ expect(itemsByBundle.get(0)).toBe(10);
739
+ expect(itemsByBundle.get(1)).toBe(50);
740
+ expect(itemsByBundle.get(2)).toBe(100);
741
+ expect(itemsByBundle.get(3)).toBe(200);
742
+ expect(itemsByBundle.get(4)).toBe(300);
744
743
  });
745
- (0, vitest_1.it)('handles realistic 80% bundled / 20% legacy migration ratio', async () => {
744
+ it('handles realistic 80% bundled / 20% legacy migration ratio', async () => {
746
745
  const records = [];
747
746
  const totalMessages = 100;
748
747
  const bundledCount = 80;
@@ -767,24 +766,24 @@ async function makeGzipCompressedEnvelope(items) {
767
766
  }
768
767
  const shuffled = [...records].sort(() => Math.random() - 0.5);
769
768
  const { items, stats, recordMap } = await (0, sqs_unbundle_1.unbundleRecords)(shuffled);
770
- (0, vitest_1.expect)(stats.totalRecords).toBe(totalMessages);
771
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(bundledCount);
772
- (0, vitest_1.expect)(stats.legacySqsRecords).toBe(legacyCount);
773
- (0, vitest_1.expect)(stats.failedRecords).toBe(0);
774
- (0, vitest_1.expect)(items).toHaveLength(bundledCount * itemsPerBundle + legacyCount);
775
- (0, vitest_1.expect)(stats.totalItems).toBe(2020);
769
+ expect(stats.totalRecords).toBe(totalMessages);
770
+ expect(stats.bundledSqsRecords).toBe(bundledCount);
771
+ expect(stats.legacySqsRecords).toBe(legacyCount);
772
+ expect(stats.failedRecords).toBe(0);
773
+ expect(items).toHaveLength(bundledCount * itemsPerBundle + legacyCount);
774
+ expect(stats.totalItems).toBe(2020);
776
775
  const bundledItems = items.filter((i) => i.type === 'bundled');
777
776
  const legacyItems = items.filter((i) => i.type === 'legacy');
778
- (0, vitest_1.expect)(bundledItems).toHaveLength(bundledCount * itemsPerBundle);
779
- (0, vitest_1.expect)(legacyItems).toHaveLength(legacyCount);
777
+ expect(bundledItems).toHaveLength(bundledCount * itemsPerBundle);
778
+ expect(legacyItems).toHaveLength(legacyCount);
780
779
  for (const item of bundledItems) {
781
- (0, vitest_1.expect)(recordMap.get(item)).toBe(`msg-bundled-${item.bundleIdx}`);
780
+ expect(recordMap.get(item)).toBe(`msg-bundled-${item.bundleIdx}`);
782
781
  }
783
782
  for (const item of legacyItems) {
784
- (0, vitest_1.expect)(recordMap.get(item)).toBe(`msg-legacy-${item.legacyIdx}`);
783
+ expect(recordMap.get(item)).toBe(`msg-legacy-${item.legacyIdx}`);
785
784
  }
786
785
  });
787
- (0, vitest_1.it)('preserves Unicode characters through ZSTD compression', async () => {
786
+ it('preserves Unicode characters through ZSTD compression', async () => {
788
787
  const unicodeItems = [
789
788
  {
790
789
  id: 'emoji',
@@ -840,17 +839,17 @@ async function makeGzipCompressedEnvelope(items) {
840
839
  const envelope = await makeCompressedEnvelope(unicodeItems);
841
840
  const record = makeSqsRecord({ messageBody: envelope }, 'msg-unicode');
842
841
  const { items } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
843
- (0, vitest_1.expect)(items).toHaveLength(unicodeItems.length);
842
+ expect(items).toHaveLength(unicodeItems.length);
844
843
  for (let i = 0; i < unicodeItems.length; i++) {
845
- (0, vitest_1.expect)(items[i].id).toBe(unicodeItems[i].id);
846
- (0, vitest_1.expect)(items[i].content).toBe(unicodeItems[i].content);
847
- (0, vitest_1.expect)(items[i].description).toBe(unicodeItems[i].description);
844
+ expect(items[i].id).toBe(unicodeItems[i].id);
845
+ expect(items[i].content).toBe(unicodeItems[i].content);
846
+ expect(items[i].description).toBe(unicodeItems[i].description);
848
847
  const originalBytes = Buffer.from(unicodeItems[i].content, 'utf8');
849
848
  const recoveredBytes = Buffer.from(items[i].content, 'utf8');
850
- (0, vitest_1.expect)(recoveredBytes.equals(originalBytes)).toBe(true);
849
+ expect(recoveredBytes.equals(originalBytes)).toBe(true);
851
850
  }
852
851
  });
853
- (0, vitest_1.it)('preserves deeply nested structures (10 levels)', async () => {
852
+ it('preserves deeply nested structures (10 levels)', async () => {
854
853
  function createDeepStructure(depth, maxDepth = 10) {
855
854
  const node = {
856
855
  level: depth,
@@ -873,16 +872,16 @@ async function makeGzipCompressedEnvelope(items) {
873
872
  const envelope = await makeCompressedEnvelope(deepItems);
874
873
  const record = makeSqsRecord({ messageBody: envelope }, 'msg-deep');
875
874
  const { items } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
876
- (0, vitest_1.expect)(items).toHaveLength(10);
875
+ expect(items).toHaveLength(10);
877
876
  for (let i = 0; i < 10; i++) {
878
- (0, vitest_1.expect)(JSON.stringify(items[i])).toBe(JSON.stringify(deepItems[i]));
879
- (0, vitest_1.expect)(items[i].nested.level).toBe(0);
880
- (0, vitest_1.expect)(items[i].nested.child?.level).toBe(1);
881
- (0, vitest_1.expect)(items[i].nested.child?.child?.child?.level).toBe(3);
882
- (0, vitest_1.expect)(items[i].arrays[0][0][0][0][0][0]).toBe('deeply');
877
+ expect(JSON.stringify(items[i])).toBe(JSON.stringify(deepItems[i]));
878
+ expect(items[i].nested.level).toBe(0);
879
+ expect(items[i].nested.child?.level).toBe(1);
880
+ expect(items[i].nested.child?.child?.child?.level).toBe(3);
881
+ expect(items[i].arrays[0][0][0][0][0][0]).toBe('deeply');
883
882
  }
884
883
  });
885
- (0, vitest_1.it)('handles binary-like string data (base64 encoded)', async () => {
884
+ it('handles binary-like string data (base64 encoded)', async () => {
886
885
  const binaryItems = [
887
886
  {
888
887
  id: 'small-binary',
@@ -913,16 +912,16 @@ async function makeGzipCompressedEnvelope(items) {
913
912
  const envelope = await makeCompressedEnvelope(binaryItems);
914
913
  const record = makeSqsRecord({ messageBody: envelope }, 'msg-binary');
915
914
  const { items } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
916
- (0, vitest_1.expect)(items).toHaveLength(binaryItems.length);
915
+ expect(items).toHaveLength(binaryItems.length);
917
916
  for (let i = 0; i < binaryItems.length; i++) {
918
- (0, vitest_1.expect)(items[i].id).toBe(binaryItems[i].id);
919
- (0, vitest_1.expect)(items[i].base64Data).toBe(binaryItems[i].base64Data);
917
+ expect(items[i].id).toBe(binaryItems[i].id);
918
+ expect(items[i].base64Data).toBe(binaryItems[i].base64Data);
920
919
  const originalDecoded = Buffer.from(binaryItems[i].base64Data, 'base64');
921
920
  const recoveredDecoded = Buffer.from(items[i].base64Data, 'base64');
922
- (0, vitest_1.expect)(recoveredDecoded.equals(originalDecoded)).toBe(true);
921
+ expect(recoveredDecoded.equals(originalDecoded)).toBe(true);
923
922
  }
924
923
  });
925
- (0, vitest_1.it)('handles concurrent unbundling stress test (100 records in parallel)', async () => {
924
+ it('handles concurrent unbundling stress test (100 records in parallel)', async () => {
926
925
  const recordCount = 100;
927
926
  const records = [];
928
927
  for (let i = 0; i < recordCount; i++) {
@@ -940,24 +939,24 @@ async function makeGzipCompressedEnvelope(items) {
940
939
  const startTime = Date.now();
941
940
  const { items, recordMap, stats, failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)(records);
942
941
  const duration = Date.now() - startTime;
943
- (0, vitest_1.expect)(failedMessageIds).toHaveLength(0);
944
- (0, vitest_1.expect)(stats.failedRecords).toBe(0);
945
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(recordCount);
942
+ expect(failedMessageIds).toHaveLength(0);
943
+ expect(stats.failedRecords).toBe(0);
944
+ expect(stats.bundledSqsRecords).toBe(recordCount);
946
945
  const seenUniqueIds = new Set();
947
946
  for (const item of items) {
948
- (0, vitest_1.expect)(seenUniqueIds.has(item.uniqueId)).toBe(false);
947
+ expect(seenUniqueIds.has(item.uniqueId)).toBe(false);
949
948
  seenUniqueIds.add(item.uniqueId);
950
949
  const expectedMsgId = `stress-msg-${item.recordIdx}`;
951
- (0, vitest_1.expect)(recordMap.get(item)).toBe(expectedMsgId);
952
- (0, vitest_1.expect)(item.itemIdx).toBeGreaterThanOrEqual(0);
953
- (0, vitest_1.expect)(item.itemIdx).toBeLessThan(30);
950
+ expect(recordMap.get(item)).toBe(expectedMsgId);
951
+ expect(item.itemIdx).toBeGreaterThanOrEqual(0);
952
+ expect(item.itemIdx).toBeLessThan(30);
954
953
  }
955
954
  const expectedTotal = Array.from({ length: recordCount }, (_, i) => 10 + (i % 20)).reduce((a, b) => a + b, 0);
956
- (0, vitest_1.expect)(items).toHaveLength(expectedTotal);
957
- (0, vitest_1.expect)(stats.totalItems).toBe(expectedTotal);
955
+ expect(items).toHaveLength(expectedTotal);
956
+ expect(stats.totalItems).toBe(expectedTotal);
958
957
  console.log(`Unbundled ${recordCount} records (${stats.totalItems} items) in ${duration}ms`);
959
958
  });
960
- (0, vitest_1.it)('handles items with all JSON primitive types', async () => {
959
+ it('handles items with all JSON primitive types', async () => {
961
960
  const primitiveItems = [
962
961
  {
963
962
  id: 'primitives',
@@ -991,10 +990,10 @@ async function makeGzipCompressedEnvelope(items) {
991
990
  const envelope = await makeCompressedEnvelope(primitiveItems);
992
991
  const record = makeSqsRecord({ messageBody: envelope }, 'msg-primitives');
993
992
  const { items } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
994
- (0, vitest_1.expect)(items).toHaveLength(3);
995
- (0, vitest_1.expect)(JSON.stringify(items)).toBe(JSON.stringify(primitiveItems));
993
+ expect(items).toHaveLength(3);
994
+ expect(JSON.stringify(items)).toBe(JSON.stringify(primitiveItems));
996
995
  });
997
- (0, vitest_1.it)('maintains item order across multiple bundles', async () => {
996
+ it('maintains item order across multiple bundles', async () => {
998
997
  const records = [];
999
998
  let globalIdx = 0;
1000
999
  for (let bundleIdx = 0; bundleIdx < 10; bundleIdx++) {
@@ -1016,29 +1015,29 @@ async function makeGzipCompressedEnvelope(items) {
1016
1015
  }
1017
1016
  for (const [, orders] of bundleGroups) {
1018
1017
  for (let i = 1; i < orders.length; i++) {
1019
- (0, vitest_1.expect)(orders[i]).toBeGreaterThan(orders[i - 1]);
1018
+ expect(orders[i]).toBeGreaterThan(orders[i - 1]);
1020
1019
  }
1021
1020
  }
1022
1021
  });
1023
- (0, vitest_1.it)('handles edge case: single item bundles', async () => {
1022
+ it('handles edge case: single item bundles', async () => {
1024
1023
  const records = await Promise.all(Array.from({ length: 50 }, async (_, i) => {
1025
1024
  const items = [{ id: `single-${i}`, value: i }];
1026
1025
  const envelope = await makeCompressedEnvelope(items);
1027
1026
  return makeSqsRecord({ messageBody: envelope }, `single-msg-${i}`);
1028
1027
  }));
1029
1028
  const { items, stats, recordMap } = await (0, sqs_unbundle_1.unbundleRecords)(records);
1030
- (0, vitest_1.expect)(items).toHaveLength(50);
1031
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(50);
1032
- (0, vitest_1.expect)(stats.totalItems).toBe(50);
1029
+ expect(items).toHaveLength(50);
1030
+ expect(stats.bundledSqsRecords).toBe(50);
1031
+ expect(stats.totalItems).toBe(50);
1033
1032
  for (let i = 0; i < 50; i++) {
1034
1033
  const item = items.find((x) => x.value === i);
1035
- (0, vitest_1.expect)(item).toBeDefined();
1034
+ expect(item).toBeDefined();
1036
1035
  if (!item)
1037
1036
  throw new Error(`Expected item with value ${i} to be found`);
1038
- (0, vitest_1.expect)(recordMap.get(item)).toMatch(/single-msg-\d+/);
1037
+ expect(recordMap.get(item)).toMatch(/single-msg-\d+/);
1039
1038
  }
1040
1039
  });
1041
- (0, vitest_1.it)('handles edge case: empty arrays in bundles', async () => {
1040
+ it('handles edge case: empty arrays in bundles', async () => {
1042
1041
  const emptyEnvelope = {
1043
1042
  v: 1,
1044
1043
  c: sqs_bundled_client_types_1.CompressionAlgorithm.NONE,
@@ -1047,14 +1046,14 @@ async function makeGzipCompressedEnvelope(items) {
1047
1046
  };
1048
1047
  const record = makeSqsRecord({ messageBody: emptyEnvelope }, 'msg-empty');
1049
1048
  const { items, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
1050
- (0, vitest_1.expect)(items).toHaveLength(0);
1051
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
1052
- (0, vitest_1.expect)(stats.totalItems).toBe(0);
1049
+ expect(items).toHaveLength(0);
1050
+ expect(stats.bundledSqsRecords).toBe(1);
1051
+ expect(stats.totalItems).toBe(0);
1053
1052
  });
1054
1053
  });
1055
- (0, vitest_1.describe)('GZIP comprehensive tests', () => {
1056
- (0, vitest_1.describe)('GZIP pre-decompression bomb protection', () => {
1057
- (0, vitest_1.it)('rejects GZIP with fake ISIZE claiming huge size BEFORE decompression starts', async () => {
1054
+ describe('GZIP comprehensive tests', () => {
1055
+ describe('GZIP pre-decompression bomb protection', () => {
1056
+ it('rejects GZIP with fake ISIZE claiming huge size BEFORE decompression starts', async () => {
1058
1057
  const gzipHeader = Buffer.from([0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03]);
1059
1058
  const emptyDeflate = Buffer.from([0x03, 0x00]);
1060
1059
  const crc32 = Buffer.from([0x00, 0x00, 0x00, 0x00]);
@@ -1073,20 +1072,20 @@ async function makeGzipCompressedEnvelope(items) {
1073
1072
  const { failedMessageIds, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
1074
1073
  maxDecompressedSizeBytes: 10 * 1024 * 1024,
1075
1074
  });
1076
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-gzip-bomb');
1077
- (0, vitest_1.expect)(stats.failedRecords).toBe(1);
1075
+ expect(failedMessageIds).toContain('msg-gzip-bomb');
1076
+ expect(stats.failedRecords).toBe(1);
1078
1077
  });
1079
- (0, vitest_1.it)('allows GZIP with ISIZE within limit', async () => {
1078
+ it('allows GZIP with ISIZE within limit', async () => {
1080
1079
  const items = [makeTestEvent('valid-1')];
1081
1080
  const envelope = await makeGzipCompressedEnvelope(items);
1082
1081
  const record = makeSqsRecord({ messageBody: envelope }, 'msg-gzip-valid');
1083
1082
  const { items: result, failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
1084
1083
  maxDecompressedSizeBytes: 10 * 1024 * 1024,
1085
1084
  });
1086
- (0, vitest_1.expect)(result).toHaveLength(1);
1087
- (0, vitest_1.expect)(failedMessageIds).toHaveLength(0);
1085
+ expect(result).toHaveLength(1);
1086
+ expect(failedMessageIds).toHaveLength(0);
1088
1087
  });
1089
- (0, vitest_1.it)('pre-check catches bomb even when ISIZE is exactly at limit + 1', async () => {
1088
+ it('pre-check catches bomb even when ISIZE is exactly at limit + 1', async () => {
1090
1089
  const limit = 1000;
1091
1090
  const gzipHeader = Buffer.from([0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03]);
1092
1091
  const emptyDeflate = Buffer.from([0x03, 0x00]);
@@ -1106,21 +1105,21 @@ async function makeGzipCompressedEnvelope(items) {
1106
1105
  const { failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
1107
1106
  maxDecompressedSizeBytes: limit,
1108
1107
  });
1109
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-boundary-bomb');
1108
+ expect(failedMessageIds).toContain('msg-boundary-bomb');
1110
1109
  });
1111
1110
  });
1112
- (0, vitest_1.describe)('empty GZIP bundle', () => {
1113
- (0, vitest_1.it)('unbundles empty GZIP compressed array', async () => {
1111
+ describe('empty GZIP bundle', () => {
1112
+ it('unbundles empty GZIP compressed array', async () => {
1114
1113
  const envelope = await makeGzipCompressedEnvelope([]);
1115
1114
  const record = makeSqsRecord({ messageBody: envelope }, 'msg-empty-gzip');
1116
1115
  const { items, stats } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
1117
- (0, vitest_1.expect)(items).toHaveLength(0);
1118
- (0, vitest_1.expect)(stats.bundledSqsRecords).toBe(1);
1119
- (0, vitest_1.expect)(stats.totalItems).toBe(0);
1116
+ expect(items).toHaveLength(0);
1117
+ expect(stats.bundledSqsRecords).toBe(1);
1118
+ expect(stats.totalItems).toBe(0);
1120
1119
  });
1121
1120
  });
1122
- (0, vitest_1.describe)('Unicode characters in GZIP payload', () => {
1123
- (0, vitest_1.it)('preserves emoji through GZIP compression', async () => {
1121
+ describe('Unicode characters in GZIP payload', () => {
1122
+ it('preserves emoji through GZIP compression', async () => {
1124
1123
  const items = [
1125
1124
  { eventId: 'emoji-1', content: '🎉🚀💻🌍✨' },
1126
1125
  { eventId: 'emoji-2', content: '👋🏽👨‍👩‍👧‍👦🏳️‍🌈' },
@@ -1128,11 +1127,11 @@ async function makeGzipCompressedEnvelope(items) {
1128
1127
  const envelope = await makeGzipCompressedEnvelope(items);
1129
1128
  const record = makeSqsRecord({ messageBody: envelope });
1130
1129
  const { items: result } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
1131
- (0, vitest_1.expect)(result).toHaveLength(2);
1132
- (0, vitest_1.expect)(result[0].content).toBe('🎉🚀💻🌍✨');
1133
- (0, vitest_1.expect)(result[1].content).toBe('👋🏽👨‍👩‍👧‍👦🏳️‍🌈');
1130
+ expect(result).toHaveLength(2);
1131
+ expect(result[0].content).toBe('🎉🚀💻🌍✨');
1132
+ expect(result[1].content).toBe('👋🏽👨‍👩‍👧‍👦🏳️‍🌈');
1134
1133
  });
1135
- (0, vitest_1.it)('preserves CJK characters through GZIP compression', async () => {
1134
+ it('preserves CJK characters through GZIP compression', async () => {
1136
1135
  const items = [
1137
1136
  { eventId: 'cjk-1', content: '中文测试:欢迎使用' },
1138
1137
  { eventId: 'cjk-2', content: 'こんにちは世界 ひらがな カタカナ' },
@@ -1141,12 +1140,12 @@ async function makeGzipCompressedEnvelope(items) {
1141
1140
  const envelope = await makeGzipCompressedEnvelope(items);
1142
1141
  const record = makeSqsRecord({ messageBody: envelope });
1143
1142
  const { items: result } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
1144
- (0, vitest_1.expect)(result).toHaveLength(3);
1145
- (0, vitest_1.expect)(result[0].content).toBe('中文测试:欢迎使用');
1146
- (0, vitest_1.expect)(result[1].content).toBe('こんにちは世界 ひらがな カタカナ');
1147
- (0, vitest_1.expect)(result[2].content).toBe('안녕하세요 세계');
1143
+ expect(result).toHaveLength(3);
1144
+ expect(result[0].content).toBe('中文测试:欢迎使用');
1145
+ expect(result[1].content).toBe('こんにちは世界 ひらがな カタカナ');
1146
+ expect(result[2].content).toBe('안녕하세요 세계');
1148
1147
  });
1149
- (0, vitest_1.it)('preserves special characters and mixed scripts through GZIP compression', async () => {
1148
+ it('preserves special characters and mixed scripts through GZIP compression', async () => {
1150
1149
  const items = [
1151
1150
  { eventId: 'special-1', content: '∑∫∂∇ε → ∞ × ∈ ⊆ ∀∃' },
1152
1151
  { eventId: 'special-2', content: 'العربية: مرحبا بكم' },
@@ -1156,17 +1155,17 @@ async function makeGzipCompressedEnvelope(items) {
1156
1155
  const envelope = await makeGzipCompressedEnvelope(items);
1157
1156
  const record = makeSqsRecord({ messageBody: envelope });
1158
1157
  const { items: result } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
1159
- (0, vitest_1.expect)(result).toHaveLength(4);
1158
+ expect(result).toHaveLength(4);
1160
1159
  for (let i = 0; i < items.length; i++) {
1161
- (0, vitest_1.expect)(result[i].content).toBe(items[i].content);
1160
+ expect(result[i].content).toBe(items[i].content);
1162
1161
  const originalBytes = Buffer.from(items[i].content, 'utf8');
1163
1162
  const recoveredBytes = Buffer.from(result[i].content, 'utf8');
1164
- (0, vitest_1.expect)(recoveredBytes.equals(originalBytes)).toBe(true);
1163
+ expect(recoveredBytes.equals(originalBytes)).toBe(true);
1165
1164
  }
1166
1165
  });
1167
1166
  });
1168
- (0, vitest_1.describe)('GZIP with invalid magic bytes', () => {
1169
- (0, vitest_1.it)('fails gracefully for buffer with wrong magic bytes', async () => {
1167
+ describe('GZIP with invalid magic bytes', () => {
1168
+ it('fails gracefully for buffer with wrong magic bytes', async () => {
1170
1169
  const wrongMagic = Buffer.from([0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03]);
1171
1170
  const filler = Buffer.alloc(10);
1172
1171
  const invalidGzip = Buffer.concat([wrongMagic, filler]);
@@ -1180,9 +1179,9 @@ async function makeGzipCompressedEnvelope(items) {
1180
1179
  };
1181
1180
  const record = makeSqsRecord({ messageBody: badEnvelope }, 'msg-wrong-magic');
1182
1181
  const { failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
1183
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-wrong-magic');
1182
+ expect(failedMessageIds).toContain('msg-wrong-magic');
1184
1183
  });
1185
- (0, vitest_1.it)('fails gracefully for buffer starting with valid magic but corrupted data', async () => {
1184
+ it('fails gracefully for buffer starting with valid magic but corrupted data', async () => {
1186
1185
  const validMagic = Buffer.from([0x1f, 0x8b]);
1187
1186
  const garbage = Buffer.from('this is not valid gzip data after magic');
1188
1187
  const invalidGzip = Buffer.concat([validMagic, garbage]);
@@ -1196,25 +1195,25 @@ async function makeGzipCompressedEnvelope(items) {
1196
1195
  };
1197
1196
  const record = makeSqsRecord({ messageBody: badEnvelope }, 'msg-corrupt-gzip');
1198
1197
  const { failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
1199
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-corrupt-gzip');
1198
+ expect(failedMessageIds).toContain('msg-corrupt-gzip');
1200
1199
  });
1201
1200
  });
1202
- (0, vitest_1.describe)('GZIP minimum size edge cases', () => {
1203
- (0, vitest_1.it)('handles buffer exactly 18 bytes (minimum valid)', () => {
1201
+ describe('GZIP minimum size edge cases', () => {
1202
+ it('handles buffer exactly 18 bytes (minimum valid)', async () => {
1204
1203
  const minBuffer = Buffer.alloc(18);
1205
1204
  minBuffer[0] = 0x1f;
1206
1205
  minBuffer[1] = 0x8b;
1207
1206
  const size = (0, compression_1.getGzipUncompressedSize)(minBuffer);
1208
- (0, vitest_1.expect)(size).toBe(0);
1207
+ expect(size).toBe(0);
1209
1208
  });
1210
- (0, vitest_1.it)('returns undefined for buffer exactly 17 bytes (too small)', () => {
1209
+ it('returns undefined for buffer exactly 17 bytes (too small)', async () => {
1211
1210
  const tooSmall = Buffer.alloc(17);
1212
1211
  tooSmall[0] = 0x1f;
1213
1212
  tooSmall[1] = 0x8b;
1214
1213
  const size = (0, compression_1.getGzipUncompressedSize)(tooSmall);
1215
- (0, vitest_1.expect)(size).toBeUndefined();
1214
+ expect(size).toBeUndefined();
1216
1215
  });
1217
- (0, vitest_1.it)('fails gracefully for 17-byte GZIP envelope', async () => {
1216
+ it('fails gracefully for 17-byte GZIP envelope', async () => {
1218
1217
  const tooSmall = Buffer.alloc(17);
1219
1218
  tooSmall[0] = 0x1f;
1220
1219
  tooSmall[1] = 0x8b;
@@ -1228,31 +1227,31 @@ async function makeGzipCompressedEnvelope(items) {
1228
1227
  };
1229
1228
  const record = makeSqsRecord({ messageBody: badEnvelope }, 'msg-too-small');
1230
1229
  const { failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
1231
- (0, vitest_1.expect)(failedMessageIds).toContain('msg-too-small');
1230
+ expect(failedMessageIds).toContain('msg-too-small');
1232
1231
  });
1233
1232
  });
1234
- (0, vitest_1.describe)('GZIP timeout protection', () => {
1235
- (0, vitest_1.it)('CompressionTimeoutError has correct properties', () => {
1233
+ describe('GZIP timeout protection', () => {
1234
+ it('CompressionTimeoutError has correct properties', () => {
1236
1235
  const error = new compression_1.CompressionTimeoutError(compression_1.CompressionOperation.DECOMPRESS, 100);
1237
- (0, vitest_1.expect)(error).toBeInstanceOf(Error);
1238
- (0, vitest_1.expect)(error.name).toBe('CompressionTimeoutError');
1239
- (0, vitest_1.expect)(error.operation).toBe('decompress');
1240
- (0, vitest_1.expect)(error.timeoutMs).toBe(100);
1241
- (0, vitest_1.expect)(error.message).toContain('timed out after 100ms');
1236
+ expect(error).toBeInstanceOf(Error);
1237
+ expect(error.name).toBe('CompressionTimeoutError');
1238
+ expect(error.operation).toBe('decompress');
1239
+ expect(error.timeoutMs).toBe(100);
1240
+ expect(error.message).toContain('timed out after 100ms');
1242
1241
  });
1243
- (0, vitest_1.it)('GZIP decompression respects timeout option', async () => {
1242
+ it('GZIP decompression respects timeout option', async () => {
1244
1243
  const items = [makeTestEvent('timeout-test')];
1245
1244
  const envelope = await makeGzipCompressedEnvelope(items);
1246
1245
  const record = makeSqsRecord({ messageBody: envelope });
1247
1246
  const { items: result, failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
1248
1247
  timeoutMs: 10000,
1249
1248
  });
1250
- (0, vitest_1.expect)(result).toHaveLength(1);
1251
- (0, vitest_1.expect)(failedMessageIds).toHaveLength(0);
1249
+ expect(result).toHaveLength(1);
1250
+ expect(failedMessageIds).toHaveLength(0);
1252
1251
  });
1253
1252
  });
1254
- (0, vitest_1.describe)('large GZIP near SQS limit', () => {
1255
- (0, vitest_1.it)('decompresses large GZIP bundle near 256KB compressed', async () => {
1253
+ describe('large GZIP near SQS limit', () => {
1254
+ it('decompresses large GZIP bundle near 256KB compressed', async () => {
1256
1255
  const items = Array.from({ length: 200 }, (_, i) => ({
1257
1256
  eventId: `large-${i}`,
1258
1257
  name: 'page_view',
@@ -1264,96 +1263,96 @@ async function makeGzipCompressedEnvelope(items) {
1264
1263
  console.log(`Large GZIP test: compressed payload ~${Math.round(compressedSize / 1024)}KB`);
1265
1264
  const record = makeSqsRecord({ messageBody: envelope }, 'msg-large-gzip');
1266
1265
  const { items: result, failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record]);
1267
- (0, vitest_1.expect)(failedMessageIds).toHaveLength(0);
1268
- (0, vitest_1.expect)(result).toHaveLength(200);
1269
- (0, vitest_1.expect)(result[0].eventId).toBe('large-0');
1270
- (0, vitest_1.expect)(result[199].eventId).toBe('large-199');
1266
+ expect(failedMessageIds).toHaveLength(0);
1267
+ expect(result).toHaveLength(200);
1268
+ expect(result[0].eventId).toBe('large-0');
1269
+ expect(result[199].eventId).toBe('large-199');
1271
1270
  });
1272
- (0, vitest_1.it)('handles GZIP with maximum decompressed size exactly at limit', async () => {
1271
+ it('handles GZIP with maximum decompressed size exactly at limit', async () => {
1273
1272
  const items = [{ eventId: 'boundary', data: 'x'.repeat(5000) }];
1274
1273
  const envelope = await makeGzipCompressedEnvelope(items);
1275
1274
  const record = makeSqsRecord({ messageBody: envelope });
1276
1275
  const { items: result, failedMessageIds } = await (0, sqs_unbundle_1.unbundleRecords)([record], {
1277
1276
  maxDecompressedSizeBytes: 10 * 1024,
1278
1277
  });
1279
- (0, vitest_1.expect)(failedMessageIds).toHaveLength(0);
1280
- (0, vitest_1.expect)(result).toHaveLength(1);
1278
+ expect(failedMessageIds).toHaveLength(0);
1279
+ expect(result).toHaveLength(1);
1281
1280
  });
1282
1281
  });
1283
1282
  });
1284
1283
  });
1285
- (0, vitest_1.describe)('getGzipUncompressedSize', () => {
1286
- (0, vitest_1.it)('returns correct size for valid GZIP', async () => {
1284
+ describe('getGzipUncompressedSize', () => {
1285
+ it('returns correct size for valid GZIP', async () => {
1287
1286
  const originalData = 'Hello, World! This is a test.';
1288
1287
  const compressed = await gzipAsync(Buffer.from(originalData, 'utf8'));
1289
1288
  const size = (0, compression_1.getGzipUncompressedSize)(compressed);
1290
- (0, vitest_1.expect)(size).toBe(Buffer.byteLength(originalData, 'utf8'));
1289
+ expect(size).toBe(Buffer.byteLength(originalData, 'utf8'));
1291
1290
  });
1292
- (0, vitest_1.it)('returns correct size for larger payload', async () => {
1291
+ it('returns correct size for larger payload', async () => {
1293
1292
  const originalData = 'x'.repeat(10000);
1294
1293
  const compressed = await gzipAsync(Buffer.from(originalData, 'utf8'));
1295
1294
  const size = (0, compression_1.getGzipUncompressedSize)(compressed);
1296
- (0, vitest_1.expect)(size).toBe(10000);
1295
+ expect(size).toBe(10000);
1297
1296
  });
1298
- (0, vitest_1.it)('returns undefined for buffer too small', () => {
1297
+ it('returns undefined for buffer too small', () => {
1299
1298
  const tooSmall = Buffer.alloc(17);
1300
1299
  tooSmall[0] = 0x1f;
1301
1300
  tooSmall[1] = 0x8b;
1302
- (0, vitest_1.expect)((0, compression_1.getGzipUncompressedSize)(tooSmall)).toBeUndefined();
1301
+ expect((0, compression_1.getGzipUncompressedSize)(tooSmall)).toBeUndefined();
1303
1302
  });
1304
- (0, vitest_1.it)('returns undefined for wrong magic bytes', () => {
1303
+ it('returns undefined for wrong magic bytes', () => {
1305
1304
  const wrongMagic = Buffer.alloc(20);
1306
1305
  wrongMagic[0] = 0x00;
1307
1306
  wrongMagic[1] = 0x00;
1308
- (0, vitest_1.expect)((0, compression_1.getGzipUncompressedSize)(wrongMagic)).toBeUndefined();
1307
+ expect((0, compression_1.getGzipUncompressedSize)(wrongMagic)).toBeUndefined();
1309
1308
  });
1310
- (0, vitest_1.it)('returns undefined for empty buffer', () => {
1311
- (0, vitest_1.expect)((0, compression_1.getGzipUncompressedSize)(Buffer.alloc(0))).toBeUndefined();
1309
+ it('returns undefined for empty buffer', () => {
1310
+ expect((0, compression_1.getGzipUncompressedSize)(Buffer.alloc(0))).toBeUndefined();
1312
1311
  });
1313
- (0, vitest_1.it)('returns undefined for single byte buffer', () => {
1314
- (0, vitest_1.expect)((0, compression_1.getGzipUncompressedSize)(Buffer.from([0x1f]))).toBeUndefined();
1312
+ it('returns undefined for single byte buffer', () => {
1313
+ expect((0, compression_1.getGzipUncompressedSize)(Buffer.from([0x1f]))).toBeUndefined();
1315
1314
  });
1316
- (0, vitest_1.it)('returns undefined for buffer with only magic bytes', () => {
1317
- (0, vitest_1.expect)((0, compression_1.getGzipUncompressedSize)(Buffer.from([0x1f, 0x8b]))).toBeUndefined();
1315
+ it('returns undefined for buffer with only magic bytes', () => {
1316
+ expect((0, compression_1.getGzipUncompressedSize)(Buffer.from([0x1f, 0x8b]))).toBeUndefined();
1318
1317
  });
1319
- (0, vitest_1.it)('returns 0 for GZIP with ISIZE = 0', () => {
1318
+ it('returns 0 for GZIP with ISIZE = 0', () => {
1320
1319
  const buffer = Buffer.alloc(18);
1321
1320
  buffer[0] = 0x1f;
1322
1321
  buffer[1] = 0x8b;
1323
1322
  const size = (0, compression_1.getGzipUncompressedSize)(buffer);
1324
- (0, vitest_1.expect)(size).toBe(0);
1323
+ expect(size).toBe(0);
1325
1324
  });
1326
- (0, vitest_1.it)('reads ISIZE correctly as little-endian', () => {
1325
+ it('reads ISIZE correctly as little-endian', async () => {
1327
1326
  const buffer = Buffer.alloc(18);
1328
1327
  buffer[0] = 0x1f;
1329
1328
  buffer[1] = 0x8b;
1330
1329
  buffer.writeUInt32LE(0x12345678, 14);
1331
1330
  const size = (0, compression_1.getGzipUncompressedSize)(buffer);
1332
- (0, vitest_1.expect)(size).toBe(0x12345678);
1331
+ expect(size).toBe(0x12345678);
1333
1332
  });
1334
- (0, vitest_1.it)('handles maximum 32-bit ISIZE value', () => {
1333
+ it('handles maximum 32-bit ISIZE value', () => {
1335
1334
  const buffer = Buffer.alloc(18);
1336
1335
  buffer[0] = 0x1f;
1337
1336
  buffer[1] = 0x8b;
1338
1337
  buffer.writeUInt32LE(0xffffffff, 14);
1339
1338
  const size = (0, compression_1.getGzipUncompressedSize)(buffer);
1340
- (0, vitest_1.expect)(size).toBe(0xffffffff);
1339
+ expect(size).toBe(0xffffffff);
1341
1340
  });
1342
- (0, vitest_1.it)('correctly extracts size from real GZIP data', async () => {
1341
+ it('correctly extracts size from real GZIP data', async () => {
1343
1342
  const testSizes = [1, 10, 100, 1000, 50000];
1344
1343
  for (const testSize of testSizes) {
1345
1344
  const originalData = 'a'.repeat(testSize);
1346
1345
  const compressed = await gzipAsync(Buffer.from(originalData, 'utf8'));
1347
1346
  const size = (0, compression_1.getGzipUncompressedSize)(compressed);
1348
- (0, vitest_1.expect)(size).toBe(testSize);
1347
+ expect(size).toBe(testSize);
1349
1348
  }
1350
1349
  });
1351
- (0, vitest_1.it)('handles JSON array compression correctly', async () => {
1350
+ it('handles JSON array compression correctly', async () => {
1352
1351
  const items = [{ id: 1 }, { id: 2 }, { id: 3 }];
1353
1352
  const json = JSON.stringify(items);
1354
1353
  const compressed = await gzipAsync(Buffer.from(json, 'utf8'));
1355
1354
  const size = (0, compression_1.getGzipUncompressedSize)(compressed);
1356
- (0, vitest_1.expect)(size).toBe(Buffer.byteLength(json, 'utf8'));
1355
+ expect(size).toBe(Buffer.byteLength(json, 'utf8'));
1357
1356
  });
1358
1357
  });
1359
1358
  //# sourceMappingURL=sqs-unbundle.spec.js.map