@adtrackify/at-service-common 3.19.10 → 3.19.12

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 (413) hide show
  1. package/dist/cjs/__tests__/clients/acuity-client.spec.d.ts +1 -0
  2. package/dist/cjs/__tests__/clients/acuity-client.spec.js +44 -0
  3. package/dist/cjs/__tests__/clients/acuity-client.spec.js.map +1 -0
  4. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.d.ts +1 -0
  5. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js +355 -0
  6. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js.map +1 -0
  7. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js +2 -7
  8. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js.map +1 -1
  9. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.d.ts +1 -0
  10. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js +932 -0
  11. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js.map +1 -0
  12. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.d.ts +1 -0
  13. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js +564 -0
  14. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js.map +1 -0
  15. package/dist/cjs/__tests__/clients/sqs-client.spec.js +72 -0
  16. package/dist/cjs/__tests__/clients/sqs-client.spec.js.map +1 -1
  17. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.d.ts +1 -0
  18. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js +1358 -0
  19. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js.map +1 -0
  20. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.d.ts +1 -0
  21. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js +69 -0
  22. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js.map +1 -0
  23. package/dist/cjs/__tests__/db/shared-read-db-services.spec.d.ts +1 -0
  24. package/dist/cjs/__tests__/db/shared-read-db-services.spec.js +90 -0
  25. package/dist/cjs/__tests__/db/shared-read-db-services.spec.js.map +1 -0
  26. package/dist/cjs/__tests__/helpers/acuity-helper.spec.d.ts +1 -0
  27. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js +70 -0
  28. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js.map +1 -0
  29. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.d.ts +1 -0
  30. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js +83 -0
  31. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js.map +1 -0
  32. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +35 -26
  33. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js.map +1 -1
  34. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.d.ts +1 -0
  35. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js +585 -0
  36. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js.map +1 -0
  37. package/dist/cjs/__tests__/libs/contacts.spec.d.ts +1 -0
  38. package/dist/cjs/__tests__/libs/contacts.spec.js +295 -0
  39. package/dist/cjs/__tests__/libs/contacts.spec.js.map +1 -0
  40. package/dist/cjs/__tests__/services/acuity-api-service.spec.d.ts +1 -0
  41. package/dist/cjs/__tests__/services/acuity-api-service.spec.js +72 -0
  42. package/dist/cjs/__tests__/services/acuity-api-service.spec.js.map +1 -0
  43. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.d.ts +1 -0
  44. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js +94 -0
  45. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -0
  46. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.d.ts +1 -0
  47. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js +58 -0
  48. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -0
  49. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.d.ts +1 -0
  50. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js +182 -0
  51. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js.map +1 -0
  52. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.d.ts +1 -0
  53. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js +70 -0
  54. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js.map +1 -0
  55. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.d.ts +1 -0
  56. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js +140 -0
  57. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js.map +1 -0
  58. package/dist/cjs/clients/generic/dynamodb-client.js +24 -29
  59. package/dist/cjs/clients/generic/dynamodb-client.js.map +1 -1
  60. package/dist/cjs/clients/generic/index.d.ts +3 -0
  61. package/dist/cjs/clients/generic/index.js +3 -0
  62. package/dist/cjs/clients/generic/index.js.map +1 -1
  63. package/dist/cjs/clients/generic/sqs-bundled-client.d.ts +15 -0
  64. package/dist/cjs/clients/generic/sqs-bundled-client.js +312 -0
  65. package/dist/cjs/clients/generic/sqs-bundled-client.js.map +1 -0
  66. package/dist/cjs/clients/generic/sqs-bundled-client.types.d.ts +53 -0
  67. package/dist/cjs/clients/generic/sqs-bundled-client.types.js +18 -0
  68. package/dist/cjs/clients/generic/sqs-bundled-client.types.js.map +1 -0
  69. package/dist/cjs/clients/generic/sqs-client.d.ts +21 -1
  70. package/dist/cjs/clients/generic/sqs-client.js +193 -19
  71. package/dist/cjs/clients/generic/sqs-client.js.map +1 -1
  72. package/dist/cjs/clients/generic/sqs-unbundle.d.ts +32 -0
  73. package/dist/cjs/clients/generic/sqs-unbundle.js +145 -0
  74. package/dist/cjs/clients/generic/sqs-unbundle.js.map +1 -0
  75. package/dist/cjs/clients/internal-api/shopify-app-install-client.d.ts +2 -2
  76. package/dist/cjs/clients/internal-api/shopify-app-install-client.js.map +1 -1
  77. package/dist/cjs/clients/third-party/acuity-client.d.ts +10 -0
  78. package/dist/cjs/clients/third-party/acuity-client.js +41 -0
  79. package/dist/cjs/clients/third-party/acuity-client.js.map +1 -0
  80. package/dist/cjs/clients/third-party/index.d.ts +1 -0
  81. package/dist/cjs/clients/third-party/index.js +1 -0
  82. package/dist/cjs/clients/third-party/index.js.map +1 -1
  83. package/dist/cjs/clients/third-party/shopify-client.d.ts +5 -5
  84. package/dist/cjs/clients/third-party/shopify-client.js.map +1 -1
  85. package/dist/cjs/constants/index.d.ts +1 -0
  86. package/dist/cjs/constants/index.js +18 -0
  87. package/dist/cjs/constants/index.js.map +1 -0
  88. package/dist/cjs/constants/sqs.d.ts +20 -0
  89. package/dist/cjs/constants/sqs.js +27 -0
  90. package/dist/cjs/constants/sqs.js.map +1 -0
  91. package/dist/cjs/helpers/acuity-helper.d.ts +4 -0
  92. package/dist/cjs/helpers/acuity-helper.js +57 -0
  93. package/dist/cjs/helpers/acuity-helper.js.map +1 -0
  94. package/dist/cjs/helpers/api-key-auth-helper.d.ts +9 -0
  95. package/dist/cjs/helpers/api-key-auth-helper.js +41 -0
  96. package/dist/cjs/helpers/api-key-auth-helper.js.map +1 -0
  97. package/dist/cjs/helpers/api-key-authorizer-helper.d.ts +36 -0
  98. package/dist/cjs/helpers/api-key-authorizer-helper.js +88 -0
  99. package/dist/cjs/helpers/api-key-authorizer-helper.js.map +1 -0
  100. package/dist/cjs/helpers/identity-cache-helper.js +2 -2
  101. package/dist/cjs/helpers/identity-cache-helper.js.map +1 -1
  102. package/dist/cjs/helpers/index.d.ts +3 -0
  103. package/dist/cjs/helpers/index.js +3 -0
  104. package/dist/cjs/helpers/index.js.map +1 -1
  105. package/dist/cjs/index.d.ts +2 -0
  106. package/dist/cjs/index.js +2 -0
  107. package/dist/cjs/index.js.map +1 -1
  108. package/dist/cjs/libs/api-router/index.d.ts +2 -0
  109. package/dist/cjs/libs/api-router/index.js +19 -0
  110. package/dist/cjs/libs/api-router/index.js.map +1 -0
  111. package/dist/cjs/libs/api-router/public-api-router.d.ts +3 -0
  112. package/dist/cjs/libs/api-router/public-api-router.js +37 -0
  113. package/dist/cjs/libs/api-router/public-api-router.js.map +1 -0
  114. package/dist/cjs/libs/api-router/route-matcher.d.ts +21 -0
  115. package/dist/cjs/libs/api-router/route-matcher.js +37 -0
  116. package/dist/cjs/libs/api-router/route-matcher.js.map +1 -0
  117. package/dist/cjs/libs/contacts.d.ts +7 -0
  118. package/dist/cjs/libs/contacts.js +153 -0
  119. package/dist/cjs/libs/contacts.js.map +1 -0
  120. package/dist/cjs/libs/emails.d.ts +2 -0
  121. package/dist/cjs/libs/emails.js +33 -1
  122. package/dist/cjs/libs/emails.js.map +1 -1
  123. package/dist/cjs/libs/index.d.ts +2 -0
  124. package/dist/cjs/libs/index.js +2 -0
  125. package/dist/cjs/libs/index.js.map +1 -1
  126. package/dist/cjs/services/acuity-api-service.d.ts +9 -0
  127. package/dist/cjs/services/acuity-api-service.js +74 -0
  128. package/dist/cjs/services/acuity-api-service.js.map +1 -0
  129. package/dist/cjs/services/db/accounts-db-service.d.ts +9 -0
  130. package/dist/cjs/services/db/accounts-db-service.js +34 -0
  131. package/dist/cjs/services/db/accounts-db-service.js.map +1 -0
  132. package/dist/cjs/services/db/api-keys-db-service.d.ts +10 -0
  133. package/dist/cjs/services/db/api-keys-db-service.js +37 -0
  134. package/dist/cjs/services/db/api-keys-db-service.js.map +1 -0
  135. package/dist/cjs/services/db/contact-enrichments-db-service.d.ts +15 -0
  136. package/dist/cjs/services/db/contact-enrichments-db-service.js +95 -0
  137. package/dist/cjs/services/db/contact-enrichments-db-service.js.map +1 -0
  138. package/dist/cjs/services/db/custom-measures-db-service.d.ts +14 -0
  139. package/dist/cjs/services/db/custom-measures-db-service.js +49 -0
  140. package/dist/cjs/services/db/custom-measures-db-service.js.map +1 -0
  141. package/dist/cjs/services/db/identity-cache-db-service.js.map +1 -1
  142. package/dist/cjs/services/db/identity-cache-dynamodb-service.d.ts +2 -26
  143. package/dist/cjs/services/db/identity-cache-dynamodb-service.js +17 -39
  144. package/dist/cjs/services/db/identity-cache-dynamodb-service.js.map +1 -1
  145. package/dist/cjs/services/db/index.d.ts +6 -1
  146. package/dist/cjs/services/db/index.js +6 -1
  147. package/dist/cjs/services/db/index.js.map +1 -1
  148. package/dist/cjs/services/db/pixels-db-service.js +3 -3
  149. package/dist/cjs/services/db/pixels-db-service.js.map +1 -1
  150. package/dist/cjs/services/db/purchased-contacts/index.d.ts +2 -0
  151. package/dist/cjs/services/db/purchased-contacts/index.js +19 -0
  152. package/dist/cjs/services/db/purchased-contacts/index.js.map +1 -0
  153. package/dist/cjs/services/db/{purchased-contacts-db-service.d.ts → purchased-contacts/purchased-contacts-db-service.d.ts} +2 -1
  154. package/dist/cjs/services/db/{purchased-contacts-db-service.js → purchased-contacts/purchased-contacts-db-service.js} +13 -4
  155. package/dist/cjs/services/db/purchased-contacts/purchased-contacts-db-service.js.map +1 -0
  156. package/dist/cjs/services/db/purchased-contacts/types.d.ts +11 -0
  157. package/dist/cjs/services/db/purchased-contacts/types.js +3 -0
  158. package/dist/cjs/services/db/purchased-contacts/types.js.map +1 -0
  159. package/dist/cjs/services/db/shopify-app-installs-db-service.d.ts +2 -1
  160. package/dist/cjs/services/db/shopify-app-installs-db-service.js +10 -6
  161. package/dist/cjs/services/db/shopify-app-installs-db-service.js.map +1 -1
  162. package/dist/cjs/services/db/subscriptions-db-service.d.ts +10 -0
  163. package/dist/cjs/services/db/subscriptions-db-service.js +35 -0
  164. package/dist/cjs/services/db/subscriptions-db-service.js.map +1 -0
  165. package/dist/cjs/services/email-verification/contact-email-verification-service.d.ts +7 -0
  166. package/dist/cjs/services/email-verification/contact-email-verification-service.js +102 -0
  167. package/dist/cjs/services/email-verification/contact-email-verification-service.js.map +1 -0
  168. package/dist/cjs/services/email-verification/email-verification-service.d.ts +19 -0
  169. package/dist/cjs/services/email-verification/email-verification-service.js +132 -0
  170. package/dist/cjs/services/email-verification/email-verification-service.js.map +1 -0
  171. package/dist/cjs/services/email-verification/index.d.ts +2 -0
  172. package/dist/cjs/services/email-verification/index.js +19 -0
  173. package/dist/cjs/services/email-verification/index.js.map +1 -0
  174. package/dist/cjs/services/events/log-event-service.d.ts +11 -1
  175. package/dist/cjs/services/events/log-event-service.js +27 -6
  176. package/dist/cjs/services/events/log-event-service.js.map +1 -1
  177. package/dist/cjs/services/index.d.ts +2 -0
  178. package/dist/cjs/services/index.js +2 -0
  179. package/dist/cjs/services/index.js.map +1 -1
  180. package/dist/cjs/types/acuity-types.d.ts +74 -0
  181. package/dist/cjs/types/acuity-types.js +3 -0
  182. package/dist/cjs/types/acuity-types.js.map +1 -0
  183. package/dist/cjs/types/index.d.ts +3 -0
  184. package/dist/cjs/types/index.js +16 -0
  185. package/dist/cjs/types/index.js.map +1 -1
  186. package/dist/cjs/types/shopify-graphql-types/admin.generated.d.ts +38 -38
  187. package/dist/cjs/types/shopify-graphql-types/admin.types.js.map +1 -1
  188. package/dist/cjs/types/shopify-rest-types.d.ts +767 -0
  189. package/dist/cjs/types/shopify-rest-types.js +3 -0
  190. package/dist/cjs/types/shopify-rest-types.js.map +1 -0
  191. package/dist/cjs/utils/compression.d.ts +36 -0
  192. package/dist/cjs/utils/compression.js +199 -0
  193. package/dist/cjs/utils/compression.js.map +1 -0
  194. package/dist/cjs/utils/custom-measure-formula-utils.d.ts +6 -0
  195. package/dist/cjs/utils/custom-measure-formula-utils.js +210 -0
  196. package/dist/cjs/utils/custom-measure-formula-utils.js.map +1 -0
  197. package/dist/cjs/utils/index.d.ts +4 -0
  198. package/dist/cjs/utils/index.js +21 -0
  199. package/dist/cjs/utils/index.js.map +1 -0
  200. package/dist/cjs/utils/retry-envelope.d.ts +12 -0
  201. package/dist/cjs/utils/retry-envelope.js +29 -0
  202. package/dist/cjs/utils/retry-envelope.js.map +1 -0
  203. package/dist/cjs/utils/size.d.ts +2 -0
  204. package/dist/cjs/utils/size.js +50 -0
  205. package/dist/cjs/utils/size.js.map +1 -0
  206. package/dist/esm/__tests__/clients/acuity-client.spec.d.ts +1 -0
  207. package/dist/esm/__tests__/clients/acuity-client.spec.js +42 -0
  208. package/dist/esm/__tests__/clients/acuity-client.spec.js.map +1 -0
  209. package/dist/esm/__tests__/clients/cross-platform-compression.spec.d.ts +1 -0
  210. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js +330 -0
  211. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js.map +1 -0
  212. package/dist/esm/__tests__/clients/dynamodb-client.spec.js +2 -7
  213. package/dist/esm/__tests__/clients/dynamodb-client.spec.js.map +1 -1
  214. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.d.ts +1 -0
  215. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js +907 -0
  216. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js.map +1 -0
  217. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.d.ts +1 -0
  218. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js +539 -0
  219. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js.map +1 -0
  220. package/dist/esm/__tests__/clients/sqs-client.spec.js +72 -0
  221. package/dist/esm/__tests__/clients/sqs-client.spec.js.map +1 -1
  222. package/dist/esm/__tests__/clients/sqs-unbundle.spec.d.ts +1 -0
  223. package/dist/esm/__tests__/clients/sqs-unbundle.spec.js +1356 -0
  224. package/dist/esm/__tests__/clients/sqs-unbundle.spec.js.map +1 -0
  225. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.d.ts +1 -0
  226. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js +67 -0
  227. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js.map +1 -0
  228. package/dist/esm/__tests__/db/shared-read-db-services.spec.d.ts +1 -0
  229. package/dist/esm/__tests__/db/shared-read-db-services.spec.js +88 -0
  230. package/dist/esm/__tests__/db/shared-read-db-services.spec.js.map +1 -0
  231. package/dist/esm/__tests__/helpers/acuity-helper.spec.d.ts +1 -0
  232. package/dist/esm/__tests__/helpers/acuity-helper.spec.js +68 -0
  233. package/dist/esm/__tests__/helpers/acuity-helper.spec.js.map +1 -0
  234. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.d.ts +1 -0
  235. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js +81 -0
  236. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js.map +1 -0
  237. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +36 -27
  238. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js.map +1 -1
  239. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.d.ts +1 -0
  240. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js +583 -0
  241. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js.map +1 -0
  242. package/dist/esm/__tests__/libs/contacts.spec.d.ts +1 -0
  243. package/dist/esm/__tests__/libs/contacts.spec.js +293 -0
  244. package/dist/esm/__tests__/libs/contacts.spec.js.map +1 -0
  245. package/dist/esm/__tests__/services/acuity-api-service.spec.d.ts +1 -0
  246. package/dist/esm/__tests__/services/acuity-api-service.spec.js +70 -0
  247. package/dist/esm/__tests__/services/acuity-api-service.spec.js.map +1 -0
  248. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.d.ts +1 -0
  249. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js +92 -0
  250. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -0
  251. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.d.ts +1 -0
  252. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js +56 -0
  253. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -0
  254. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.d.ts +1 -0
  255. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js +157 -0
  256. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js.map +1 -0
  257. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.d.ts +1 -0
  258. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js +68 -0
  259. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js.map +1 -0
  260. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.d.ts +1 -0
  261. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js +138 -0
  262. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js.map +1 -0
  263. package/dist/esm/clients/generic/dynamodb-client.js +19 -24
  264. package/dist/esm/clients/generic/dynamodb-client.js.map +1 -1
  265. package/dist/esm/clients/generic/index.d.ts +3 -0
  266. package/dist/esm/clients/generic/index.js +3 -0
  267. package/dist/esm/clients/generic/index.js.map +1 -1
  268. package/dist/esm/clients/generic/sqs-bundled-client.d.ts +15 -0
  269. package/dist/esm/clients/generic/sqs-bundled-client.js +308 -0
  270. package/dist/esm/clients/generic/sqs-bundled-client.js.map +1 -0
  271. package/dist/esm/clients/generic/sqs-bundled-client.types.d.ts +53 -0
  272. package/dist/esm/clients/generic/sqs-bundled-client.types.js +15 -0
  273. package/dist/esm/clients/generic/sqs-bundled-client.types.js.map +1 -0
  274. package/dist/esm/clients/generic/sqs-client.d.ts +21 -1
  275. package/dist/esm/clients/generic/sqs-client.js +193 -19
  276. package/dist/esm/clients/generic/sqs-client.js.map +1 -1
  277. package/dist/esm/clients/generic/sqs-unbundle.d.ts +32 -0
  278. package/dist/esm/clients/generic/sqs-unbundle.js +138 -0
  279. package/dist/esm/clients/generic/sqs-unbundle.js.map +1 -0
  280. package/dist/esm/clients/internal-api/shopify-app-install-client.d.ts +2 -2
  281. package/dist/esm/clients/internal-api/shopify-app-install-client.js.map +1 -1
  282. package/dist/esm/clients/third-party/acuity-client.d.ts +10 -0
  283. package/dist/esm/clients/third-party/acuity-client.js +37 -0
  284. package/dist/esm/clients/third-party/acuity-client.js.map +1 -0
  285. package/dist/esm/clients/third-party/index.d.ts +1 -0
  286. package/dist/esm/clients/third-party/index.js +1 -0
  287. package/dist/esm/clients/third-party/index.js.map +1 -1
  288. package/dist/esm/clients/third-party/shopify-client.d.ts +5 -5
  289. package/dist/esm/clients/third-party/shopify-client.js.map +1 -1
  290. package/dist/esm/constants/index.d.ts +1 -0
  291. package/dist/esm/constants/index.js +2 -0
  292. package/dist/esm/constants/index.js.map +1 -0
  293. package/dist/esm/constants/sqs.d.ts +20 -0
  294. package/dist/esm/constants/sqs.js +23 -0
  295. package/dist/esm/constants/sqs.js.map +1 -0
  296. package/dist/esm/helpers/acuity-helper.d.ts +4 -0
  297. package/dist/esm/helpers/acuity-helper.js +52 -0
  298. package/dist/esm/helpers/acuity-helper.js.map +1 -0
  299. package/dist/esm/helpers/api-key-auth-helper.d.ts +9 -0
  300. package/dist/esm/helpers/api-key-auth-helper.js +36 -0
  301. package/dist/esm/helpers/api-key-auth-helper.js.map +1 -0
  302. package/dist/esm/helpers/api-key-authorizer-helper.d.ts +36 -0
  303. package/dist/esm/helpers/api-key-authorizer-helper.js +84 -0
  304. package/dist/esm/helpers/api-key-authorizer-helper.js.map +1 -0
  305. package/dist/esm/helpers/identity-cache-helper.js +2 -2
  306. package/dist/esm/helpers/identity-cache-helper.js.map +1 -1
  307. package/dist/esm/helpers/index.d.ts +3 -0
  308. package/dist/esm/helpers/index.js +3 -0
  309. package/dist/esm/helpers/index.js.map +1 -1
  310. package/dist/esm/index.d.ts +2 -0
  311. package/dist/esm/index.js +2 -0
  312. package/dist/esm/index.js.map +1 -1
  313. package/dist/esm/libs/api-router/index.d.ts +2 -0
  314. package/dist/esm/libs/api-router/index.js +3 -0
  315. package/dist/esm/libs/api-router/index.js.map +1 -0
  316. package/dist/esm/libs/api-router/public-api-router.d.ts +3 -0
  317. package/dist/esm/libs/api-router/public-api-router.js +33 -0
  318. package/dist/esm/libs/api-router/public-api-router.js.map +1 -0
  319. package/dist/esm/libs/api-router/route-matcher.d.ts +21 -0
  320. package/dist/esm/libs/api-router/route-matcher.js +31 -0
  321. package/dist/esm/libs/api-router/route-matcher.js.map +1 -0
  322. package/dist/esm/libs/contacts.d.ts +7 -0
  323. package/dist/esm/libs/contacts.js +144 -0
  324. package/dist/esm/libs/contacts.js.map +1 -0
  325. package/dist/esm/libs/emails.d.ts +2 -0
  326. package/dist/esm/libs/emails.js +31 -0
  327. package/dist/esm/libs/emails.js.map +1 -1
  328. package/dist/esm/libs/index.d.ts +2 -0
  329. package/dist/esm/libs/index.js +2 -0
  330. package/dist/esm/libs/index.js.map +1 -1
  331. package/dist/esm/services/acuity-api-service.d.ts +9 -0
  332. package/dist/esm/services/acuity-api-service.js +70 -0
  333. package/dist/esm/services/acuity-api-service.js.map +1 -0
  334. package/dist/esm/services/db/accounts-db-service.d.ts +9 -0
  335. package/dist/esm/services/db/accounts-db-service.js +30 -0
  336. package/dist/esm/services/db/accounts-db-service.js.map +1 -0
  337. package/dist/esm/services/db/api-keys-db-service.d.ts +10 -0
  338. package/dist/esm/services/db/api-keys-db-service.js +33 -0
  339. package/dist/esm/services/db/api-keys-db-service.js.map +1 -0
  340. package/dist/esm/services/db/contact-enrichments-db-service.d.ts +15 -0
  341. package/dist/esm/services/db/contact-enrichments-db-service.js +91 -0
  342. package/dist/esm/services/db/contact-enrichments-db-service.js.map +1 -0
  343. package/dist/esm/services/db/custom-measures-db-service.d.ts +14 -0
  344. package/dist/esm/services/db/custom-measures-db-service.js +45 -0
  345. package/dist/esm/services/db/custom-measures-db-service.js.map +1 -0
  346. package/dist/esm/services/db/identity-cache-db-service.js.map +1 -1
  347. package/dist/esm/services/db/identity-cache-dynamodb-service.d.ts +2 -26
  348. package/dist/esm/services/db/identity-cache-dynamodb-service.js +1 -23
  349. package/dist/esm/services/db/identity-cache-dynamodb-service.js.map +1 -1
  350. package/dist/esm/services/db/index.d.ts +6 -1
  351. package/dist/esm/services/db/index.js +6 -1
  352. package/dist/esm/services/db/index.js.map +1 -1
  353. package/dist/esm/services/db/pixels-db-service.js +1 -1
  354. package/dist/esm/services/db/pixels-db-service.js.map +1 -1
  355. package/dist/esm/services/db/purchased-contacts/index.d.ts +2 -0
  356. package/dist/esm/services/db/purchased-contacts/index.js +3 -0
  357. package/dist/esm/services/db/purchased-contacts/index.js.map +1 -0
  358. package/dist/esm/services/db/{purchased-contacts-db-service.d.ts → purchased-contacts/purchased-contacts-db-service.d.ts} +2 -1
  359. package/dist/esm/services/db/{purchased-contacts-db-service.js → purchased-contacts/purchased-contacts-db-service.js} +13 -4
  360. package/dist/esm/services/db/purchased-contacts/purchased-contacts-db-service.js.map +1 -0
  361. package/dist/esm/services/db/purchased-contacts/types.d.ts +11 -0
  362. package/dist/esm/services/db/purchased-contacts/types.js +2 -0
  363. package/dist/esm/services/db/purchased-contacts/types.js.map +1 -0
  364. package/dist/esm/services/db/shopify-app-installs-db-service.d.ts +2 -1
  365. package/dist/esm/services/db/shopify-app-installs-db-service.js +6 -2
  366. package/dist/esm/services/db/shopify-app-installs-db-service.js.map +1 -1
  367. package/dist/esm/services/db/subscriptions-db-service.d.ts +10 -0
  368. package/dist/esm/services/db/subscriptions-db-service.js +31 -0
  369. package/dist/esm/services/db/subscriptions-db-service.js.map +1 -0
  370. package/dist/esm/services/email-verification/contact-email-verification-service.d.ts +7 -0
  371. package/dist/esm/services/email-verification/contact-email-verification-service.js +98 -0
  372. package/dist/esm/services/email-verification/contact-email-verification-service.js.map +1 -0
  373. package/dist/esm/services/email-verification/email-verification-service.d.ts +19 -0
  374. package/dist/esm/services/email-verification/email-verification-service.js +128 -0
  375. package/dist/esm/services/email-verification/email-verification-service.js.map +1 -0
  376. package/dist/esm/services/email-verification/index.d.ts +2 -0
  377. package/dist/esm/services/email-verification/index.js +3 -0
  378. package/dist/esm/services/email-verification/index.js.map +1 -0
  379. package/dist/esm/services/events/log-event-service.d.ts +11 -1
  380. package/dist/esm/services/events/log-event-service.js +25 -4
  381. package/dist/esm/services/events/log-event-service.js.map +1 -1
  382. package/dist/esm/services/index.d.ts +2 -0
  383. package/dist/esm/services/index.js +2 -0
  384. package/dist/esm/services/index.js.map +1 -1
  385. package/dist/esm/types/acuity-types.d.ts +74 -0
  386. package/dist/esm/types/acuity-types.js +2 -0
  387. package/dist/esm/types/acuity-types.js.map +1 -0
  388. package/dist/esm/types/index.d.ts +3 -0
  389. package/dist/esm/types/index.js +3 -0
  390. package/dist/esm/types/index.js.map +1 -1
  391. package/dist/esm/types/shopify-graphql-types/admin.generated.d.ts +38 -38
  392. package/dist/esm/types/shopify-graphql-types/admin.types.js.map +1 -1
  393. package/dist/esm/types/shopify-rest-types.d.ts +767 -0
  394. package/dist/esm/types/shopify-rest-types.js +2 -0
  395. package/dist/esm/types/shopify-rest-types.js.map +1 -0
  396. package/dist/esm/utils/compression.d.ts +36 -0
  397. package/dist/esm/utils/compression.js +188 -0
  398. package/dist/esm/utils/compression.js.map +1 -0
  399. package/dist/esm/utils/custom-measure-formula-utils.d.ts +6 -0
  400. package/dist/esm/utils/custom-measure-formula-utils.js +202 -0
  401. package/dist/esm/utils/custom-measure-formula-utils.js.map +1 -0
  402. package/dist/esm/utils/index.d.ts +4 -0
  403. package/dist/esm/utils/index.js +5 -0
  404. package/dist/esm/utils/index.js.map +1 -0
  405. package/dist/esm/utils/retry-envelope.d.ts +12 -0
  406. package/dist/esm/utils/retry-envelope.js +23 -0
  407. package/dist/esm/utils/retry-envelope.js.map +1 -0
  408. package/dist/esm/utils/size.d.ts +2 -0
  409. package/dist/esm/utils/size.js +45 -0
  410. package/dist/esm/utils/size.js.map +1 -0
  411. package/package.json +2 -4
  412. package/dist/cjs/services/db/purchased-contacts-db-service.js.map +0 -1
  413. package/dist/esm/services/db/purchased-contacts-db-service.js.map +0 -1
@@ -0,0 +1,42 @@
1
+ import { axiosHttpService } from '../../clients/generic';
2
+ jest.mock('../../clients/generic', () => ({
3
+ axiosHttpService: jest.fn(() => ({ get: jest.fn() })),
4
+ }));
5
+ jest.mock('../../libs/crypto', () => ({
6
+ generateMd5Hash: jest.fn(() => 'MD5HASH'),
7
+ }));
8
+ import { AcuityClient } from '../../clients/third-party/acuity-client';
9
+ const mockGet = axiosHttpService.mock.results[0].value.get;
10
+ describe('AcuityClient', () => {
11
+ beforeEach(() => {
12
+ jest.clearAllMocks();
13
+ });
14
+ it('requests byMd5 with the template id and a bearer auth header', async () => {
15
+ mockGet.mockResolvedValue({ status: 200, data: { identities: [{ id: 1 }] } });
16
+ const client = new AcuityClient('KEY_ID', 'SECRET');
17
+ const response = await client.getContactsByMd5('abc123');
18
+ expect(mockGet).toHaveBeenCalledTimes(1);
19
+ const [url, config] = mockGet.mock.calls[0];
20
+ expect(url).toBe('/v2/identities/byMd5?md5=abc123&template=1701523581');
21
+ expect(config.headers.Authorization).toMatch(/^Bearer KEY_ID/);
22
+ expect(config.headers.Authorization).toContain('MD5HASH');
23
+ expect(response).toEqual({ status: 200, data: { identities: [{ id: 1 }] } });
24
+ });
25
+ it('requests byEmail with the template id, a url-encoded email, and a bearer auth header', async () => {
26
+ mockGet.mockResolvedValue({ status: 200, data: { identities: [{ id: 1 }] } });
27
+ const client = new AcuityClient('KEY_ID', 'SECRET');
28
+ const response = await client.getContactsByEmail('a+b@x.com');
29
+ expect(mockGet).toHaveBeenCalledTimes(1);
30
+ const [url, config] = mockGet.mock.calls[0];
31
+ expect(url).toBe('/v2/identities/byEmail?email=a%2Bb%40x.com&template=1701523581');
32
+ expect(config.headers.Authorization).toMatch(/^Bearer KEY_ID/);
33
+ expect(response).toEqual({ status: 200, data: { identities: [{ id: 1 }] } });
34
+ });
35
+ it('passes a non-200 response through without throwing', async () => {
36
+ mockGet.mockResolvedValue({ status: 500, data: undefined });
37
+ const client = new AcuityClient('KEY_ID', 'SECRET');
38
+ const response = await client.getContactsByMd5('abc123');
39
+ expect(response).toEqual({ status: 500, data: undefined });
40
+ });
41
+ });
42
+ //# sourceMappingURL=acuity-client.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acuity-client.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/clients/acuity-client.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,330 @@
1
+ import * as zlib from 'zlib';
2
+ import { promisify } from 'util';
3
+ import { unbundleRecords } from '../../clients/generic/sqs-unbundle';
4
+ import { decompressFromBase64 } from '../../utils/compression';
5
+ import { CompressionAlgorithm } from '../../clients/generic/sqs-bundled-client.types';
6
+ const gzip = promisify(zlib.gzip);
7
+ const gunzip = promisify(zlib.gunzip);
8
+ async function cfWorkerCompress(data) {
9
+ const stream = new CompressionStream('gzip');
10
+ const writer = stream.writable.getWriter();
11
+ await writer.write(data);
12
+ await writer.close();
13
+ const chunks = [];
14
+ const reader = stream.readable.getReader();
15
+ for (;;) {
16
+ const { done, value } = await reader.read();
17
+ if (done)
18
+ break;
19
+ chunks.push(value);
20
+ }
21
+ const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
22
+ const result = new Uint8Array(totalLength);
23
+ let offset = 0;
24
+ for (const chunk of chunks) {
25
+ result.set(chunk, offset);
26
+ offset += chunk.length;
27
+ }
28
+ return result;
29
+ }
30
+ function cfWorkerToBase64(bytes) {
31
+ let binary = '';
32
+ for (let i = 0; i < bytes.length; i++) {
33
+ binary += String.fromCharCode(bytes[i]);
34
+ }
35
+ return btoa(binary);
36
+ }
37
+ async function createCfWorkerBundledMessage(messageType, items) {
38
+ const json = JSON.stringify(items);
39
+ const encoder = new TextEncoder();
40
+ const uncompressed = encoder.encode(json);
41
+ const compressed = await cfWorkerCompress(uncompressed);
42
+ const base64 = cfWorkerToBase64(compressed);
43
+ const envelope = {
44
+ v: 1,
45
+ c: 'gzip',
46
+ n: items.length,
47
+ p: base64,
48
+ s: json.length,
49
+ };
50
+ return {
51
+ messageId: crypto.randomUUID(),
52
+ messageType,
53
+ messageTime: new Date().toISOString(),
54
+ messageBody: envelope,
55
+ };
56
+ }
57
+ function createSQSRecord(body, messageId) {
58
+ return {
59
+ messageId: messageId ?? crypto.randomUUID(),
60
+ receiptHandle: 'test-receipt-handle',
61
+ body,
62
+ attributes: {
63
+ ApproximateReceiveCount: '1',
64
+ SentTimestamp: Date.now().toString(),
65
+ SenderId: 'test-sender',
66
+ ApproximateFirstReceiveTimestamp: Date.now().toString(),
67
+ },
68
+ messageAttributes: {},
69
+ md5OfBody: 'test-md5',
70
+ eventSource: 'aws:sqs',
71
+ eventSourceARN: 'arn:aws:sqs:us-east-1:123456789:test-queue',
72
+ awsRegion: 'us-east-1',
73
+ };
74
+ }
75
+ const GOLDEN_ITEMS = [
76
+ { pixelId: 'px_golden_001', event: 'page_view', data: { url: 'https://example.com/test' } },
77
+ { pixelId: 'px_golden_002', event: 'purchase', data: { amount: 99.99, currency: 'USD' } },
78
+ ];
79
+ const GOLDEN_GZIP_BASE64 = 'H4sIAAAAAAAACnXMvQrDIBhG4Xt5Z4lpN527dC6dShHRjyTgH0ZTS/DeS7YsXc+B57UjLY3c3UIiNTVFZymocbyAgTYK5eh6IrUt9AGD1UVD7qjZQWIuJa2Sc2raJ0eDiZ4XWgt6Z//k61mu2cx6pROsfazHE2IQgsHUnCmYLySejxt6f/8AfIEZO7MAAAA=';
80
+ describe('Cross-Platform Compression Compatibility', () => {
81
+ describe('CompressionStream (CF Worker) → zlib.gunzip (Lambda)', () => {
82
+ it('basic payload round-trips correctly', async () => {
83
+ const originalData = { pixelId: 'px_test', event: 'page_view' };
84
+ const json = JSON.stringify([originalData]);
85
+ const compressed = await cfWorkerCompress(new TextEncoder().encode(json));
86
+ expect(compressed[0]).toBe(0x1f);
87
+ expect(compressed[1]).toBe(0x8b);
88
+ const decompressed = await gunzip(Buffer.from(compressed));
89
+ const parsed = JSON.parse(decompressed.toString('utf8'));
90
+ expect(parsed).toEqual([originalData]);
91
+ });
92
+ it('CompressionStream output is valid GZIP decompressible by at-service-common', async () => {
93
+ const items = [{ pixelId: 'px_001' }, { pixelId: 'px_002' }];
94
+ const json = JSON.stringify(items);
95
+ const compressed = await cfWorkerCompress(new TextEncoder().encode(json));
96
+ const base64 = cfWorkerToBase64(compressed);
97
+ const result = await decompressFromBase64(base64, CompressionAlgorithm.GZIP);
98
+ expect(result).toEqual(items);
99
+ });
100
+ it('unbundleRecords handles CF Worker compressed messages', async () => {
101
+ const items = [
102
+ { pixelId: 'px_cfworker_001', event: 'PageView' },
103
+ { pixelId: 'px_cfworker_002', event: 'AddToCart' },
104
+ ];
105
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
106
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
107
+ const result = await unbundleRecords([sqsRecord]);
108
+ expect(result.items).toHaveLength(2);
109
+ expect(result.failedMessageIds).toHaveLength(0);
110
+ expect(result.items).toEqual(items);
111
+ });
112
+ });
113
+ describe('Node zlib.gzip → zlib.gunzip (baseline)', () => {
114
+ it('Node gzip/gunzip round-trips correctly', async () => {
115
+ const original = { test: 'data', number: 123 };
116
+ const json = JSON.stringify(original);
117
+ const compressed = await gzip(Buffer.from(json, 'utf8'));
118
+ const decompressed = await gunzip(compressed);
119
+ expect(JSON.parse(decompressed.toString('utf8'))).toEqual(original);
120
+ });
121
+ it('Node gzip output is decompressible by at-service-common', async () => {
122
+ const items = [{ id: 1 }, { id: 2 }];
123
+ const json = JSON.stringify(items);
124
+ const compressed = await gzip(Buffer.from(json, 'utf8'));
125
+ const base64 = compressed.toString('base64');
126
+ const result = await decompressFromBase64(base64, CompressionAlgorithm.GZIP);
127
+ expect(result).toEqual(items);
128
+ });
129
+ });
130
+ describe('Golden Payload Compatibility', () => {
131
+ it('golden payload from at-cf-tracking-api is decompressible', async () => {
132
+ const result = await decompressFromBase64(GOLDEN_GZIP_BASE64, CompressionAlgorithm.GZIP);
133
+ expect(result).toEqual(GOLDEN_ITEMS);
134
+ });
135
+ it('golden payload works through full unbundleRecords path', async () => {
136
+ const envelope = {
137
+ v: 1,
138
+ c: 'gzip',
139
+ n: GOLDEN_ITEMS.length,
140
+ p: GOLDEN_GZIP_BASE64,
141
+ s: 179,
142
+ };
143
+ const wrapped = {
144
+ messageId: 'golden-test-id',
145
+ messageType: 'TRACKING_EVENT_COLLECT',
146
+ messageTime: new Date().toISOString(),
147
+ messageBody: envelope,
148
+ };
149
+ const sqsRecord = createSQSRecord(JSON.stringify(wrapped));
150
+ const result = await unbundleRecords([sqsRecord]);
151
+ expect(result.items).toEqual(GOLDEN_ITEMS);
152
+ expect(result.stats.bundledSqsRecords).toBe(1);
153
+ });
154
+ it('CompressionStream output matches zlib output content', async () => {
155
+ const json = JSON.stringify(GOLDEN_ITEMS);
156
+ const cfCompressed = await cfWorkerCompress(new TextEncoder().encode(json));
157
+ const nodeCompressed = await gzip(Buffer.from(json, 'utf8'));
158
+ const cfDecompressed = await gunzip(Buffer.from(cfCompressed));
159
+ const nodeDecompressed = await gunzip(nodeCompressed);
160
+ expect(cfDecompressed.toString('utf8')).toBe(json);
161
+ expect(nodeDecompressed.toString('utf8')).toBe(json);
162
+ expect(cfDecompressed.toString('utf8')).toBe(nodeDecompressed.toString('utf8'));
163
+ });
164
+ });
165
+ describe('Unicode and Special Characters', () => {
166
+ it('emoji and CJK characters survive CF Worker compression round-trip', async () => {
167
+ const unicodeItems = [
168
+ { pixelId: 'px_emoji', event: '🎉_celebration', data: { message: 'Success! 🚀✨' } },
169
+ { pixelId: 'px_cjk', event: 'page_view', data: { title: '中文页面标题', description: '日本語の説明' } },
170
+ { pixelId: 'px_rtl', event: 'page_view', data: { title: 'مرحبا بالعالم', content: 'שלום עולם' } },
171
+ ];
172
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', unicodeItems);
173
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
174
+ const result = await unbundleRecords([sqsRecord]);
175
+ expect(result.items).toHaveLength(3);
176
+ expect(result.items).toEqual(unicodeItems);
177
+ const item0 = result.items[0];
178
+ const item1 = result.items[1];
179
+ const item2 = result.items[2];
180
+ expect(item0.event).toBe('🎉_celebration');
181
+ expect(item0.data.message).toBe('Success! 🚀✨');
182
+ expect(item1.data.title).toBe('中文页面标题');
183
+ expect(item2.data.title).toBe('مرحبا بالعالم');
184
+ });
185
+ it('special characters in JSON survive round-trip', async () => {
186
+ const specialItems = [
187
+ { pixelId: 'px_special', data: { name: 'O\'Brien & Co.', note: 'Line1\nLine2\tTabbed' } },
188
+ { pixelId: 'px_quotes', data: { text: 'He said "hello"', escaped: '\\backslash' } },
189
+ ];
190
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', specialItems);
191
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
192
+ const result = await unbundleRecords([sqsRecord]);
193
+ expect(result.items).toEqual(specialItems);
194
+ });
195
+ });
196
+ describe('Large Payload Handling', () => {
197
+ it('100 items compressed by CF Worker decompresses correctly', async () => {
198
+ const items = Array.from({ length: 100 }, (_, i) => ({
199
+ pixelId: `px_${i.toString().padStart(4, '0')}`,
200
+ event: i % 2 === 0 ? 'page_view' : 'purchase',
201
+ timestamp: new Date(Date.now() - i * 1000).toISOString(),
202
+ }));
203
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
204
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
205
+ const result = await unbundleRecords([sqsRecord]);
206
+ expect(result.items).toHaveLength(100);
207
+ expect(result.items).toEqual(items);
208
+ });
209
+ it('deeply nested objects survive compression', async () => {
210
+ const nestedItems = [
211
+ {
212
+ pixelId: 'px_nested',
213
+ data: {
214
+ level1: {
215
+ level2: {
216
+ level3: {
217
+ level4: {
218
+ value: 'deep value',
219
+ array: [1, 2, 3, { nested: true }],
220
+ },
221
+ },
222
+ },
223
+ },
224
+ },
225
+ },
226
+ ];
227
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', nestedItems);
228
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
229
+ const result = await unbundleRecords([sqsRecord]);
230
+ expect(result.items).toEqual(nestedItems);
231
+ const item = result.items[0];
232
+ expect(item.data.level1.level2.level3.level4.value).toBe('deep value');
233
+ });
234
+ });
235
+ describe('Edge Cases', () => {
236
+ it('empty array compresses/decompresses correctly', async () => {
237
+ const items = [];
238
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
239
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
240
+ const result = await unbundleRecords([sqsRecord]);
241
+ expect(result.items).toHaveLength(0);
242
+ expect(result.failedMessageIds).toHaveLength(0);
243
+ });
244
+ it('single item compresses/decompresses correctly', async () => {
245
+ const items = [{ pixelId: 'px_single' }];
246
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
247
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
248
+ const result = await unbundleRecords([sqsRecord]);
249
+ expect(result.items).toEqual(items);
250
+ });
251
+ it('null and undefined values in objects preserved', async () => {
252
+ const items = [
253
+ { pixelId: 'px_nulls', value: null, nested: { alsoNull: null } },
254
+ { pixelId: 'px_zero', count: 0, price: 0.0 },
255
+ { pixelId: 'px_empty', name: '', items: [] },
256
+ { pixelId: 'px_bool', enabled: false, disabled: true },
257
+ ];
258
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
259
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
260
+ const result = await unbundleRecords([sqsRecord]);
261
+ expect(result.items).toEqual(items);
262
+ const item0 = result.items[0];
263
+ const item1 = result.items[1];
264
+ const item2 = result.items[2];
265
+ const item3 = result.items[3];
266
+ expect(item0.value).toBeNull();
267
+ expect(item0?.nested?.alsoNull).toBeNull();
268
+ expect(item1.count).toBe(0);
269
+ expect(item1.price).toBe(0.0);
270
+ expect(item2.name).toBe('');
271
+ expect(item2.items).toEqual([]);
272
+ expect(item3.enabled).toBe(false);
273
+ expect(item3.disabled).toBe(true);
274
+ });
275
+ });
276
+ describe('GZIP Header Validation', () => {
277
+ it('CF Worker compression produces valid GZIP header', async () => {
278
+ const data = new TextEncoder().encode('test data');
279
+ const compressed = await cfWorkerCompress(data);
280
+ expect(compressed[0]).toBe(0x1f);
281
+ expect(compressed[1]).toBe(0x8b);
282
+ expect(compressed[2]).toBe(8);
283
+ });
284
+ it('Node zlib compression produces valid GZIP header', async () => {
285
+ const compressed = await gzip(Buffer.from('test data', 'utf8'));
286
+ expect(compressed[0]).toBe(0x1f);
287
+ expect(compressed[1]).toBe(0x8b);
288
+ expect(compressed[2]).toBe(8);
289
+ });
290
+ });
291
+ describe('Mixed Batch Processing', () => {
292
+ it('handles mix of CF Worker compressed and Node compressed records', async () => {
293
+ const cfItems = [{ pixelId: 'px_cf_001' }, { pixelId: 'px_cf_002' }];
294
+ const cfMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', cfItems);
295
+ const nodeItems = [{ pixelId: 'px_node_001' }];
296
+ const nodeJson = JSON.stringify(nodeItems);
297
+ const nodeCompressed = await gzip(Buffer.from(nodeJson, 'utf8'));
298
+ const nodeEnvelope = {
299
+ v: 1,
300
+ c: 'gzip',
301
+ n: 1,
302
+ p: nodeCompressed.toString('base64'),
303
+ s: nodeJson.length,
304
+ };
305
+ const nodeMessage = {
306
+ messageId: crypto.randomUUID(),
307
+ messageType: 'TRACKING_EVENT_COLLECT',
308
+ messageTime: new Date().toISOString(),
309
+ messageBody: nodeEnvelope,
310
+ };
311
+ const legacyItem = { pixelId: 'px_legacy' };
312
+ const records = [
313
+ createSQSRecord(JSON.stringify(cfMessage), 'msg-cf'),
314
+ createSQSRecord(JSON.stringify(nodeMessage), 'msg-node'),
315
+ createSQSRecord(JSON.stringify(legacyItem), 'msg-legacy'),
316
+ ];
317
+ const result = await unbundleRecords(records);
318
+ expect(result.items).toHaveLength(4);
319
+ expect(result.failedMessageIds).toHaveLength(0);
320
+ expect(result.stats.bundledSqsRecords).toBe(2);
321
+ expect(result.stats.legacySqsRecords).toBe(1);
322
+ const pixelIds = result.items.map((item) => item.pixelId);
323
+ expect(pixelIds).toContain('px_cf_001');
324
+ expect(pixelIds).toContain('px_cf_002');
325
+ expect(pixelIds).toContain('px_node_001');
326
+ expect(pixelIds).toContain('px_legacy');
327
+ });
328
+ });
329
+ });
330
+ //# sourceMappingURL=cross-platform-compression.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-platform-compression.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/clients/cross-platform-compression.spec.ts"],"names":[],"mappings":"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"}
@@ -116,10 +116,7 @@ describe('DynamoDbClient', () => {
116
116
  expect(__mockBatchWrite).toHaveBeenCalledTimes(1);
117
117
  expect(__mockBatchWrite).toHaveBeenCalledWith({
118
118
  RequestItems: {
119
- [tableName]: [
120
- { PutRequest: { Item: items[0] } },
121
- { PutRequest: { Item: items[1] } },
122
- ],
119
+ [tableName]: [{ PutRequest: { Item: items[0] } }, { PutRequest: { Item: items[1] } }],
123
120
  },
124
121
  });
125
122
  });
@@ -146,9 +143,7 @@ describe('DynamoDbClient', () => {
146
143
  expect(__mockBatchWrite).toHaveBeenCalledTimes(3);
147
144
  });
148
145
  it('should continue processing other chunks if one fails', async () => {
149
- __mockBatchWrite
150
- .mockRejectedValueOnce(new Error('First chunk failed'))
151
- .mockResolvedValueOnce({});
146
+ __mockBatchWrite.mockRejectedValueOnce(new Error('First chunk failed')).mockResolvedValueOnce({});
152
147
  const items = Array.from({ length: 30 }, (_, i) => ({ pk: `key${i}`, data: `value${i}` }));
153
148
  await DynamoDbClient.safeBatchWrite(tableName, items);
154
149
  expect(__mockBatchWrite).toHaveBeenCalledTimes(2);
@@ -1 +1 @@
1
- {"version":3,"file":"dynamodb-client.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/clients/dynamodb-client.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamodb-client.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/clients/dynamodb-client.spec.ts"],"names":[],"mappings":"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"}