@athoscommerce/beacon 1.0.0

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 (590) hide show
  1. package/.github/workflows/merge.yml +28 -0
  2. package/.github/workflows/publish.yml +45 -0
  3. package/.github/workflows/tests.yml +22 -0
  4. package/.versionrc +18 -0
  5. package/CHANGELOG.md +249 -0
  6. package/README.md +970 -0
  7. package/beacon.v2.snap.types.oas.yaml +3213 -0
  8. package/dist/cdn/beacon.js +2 -0
  9. package/dist/cdn/beacon.js.LICENSE.txt +1 -0
  10. package/dist/cjs/package.json +78 -0
  11. package/dist/cjs/src/Beacon.d.ts +181 -0
  12. package/dist/cjs/src/Beacon.d.ts.map +1 -0
  13. package/dist/cjs/src/Beacon.js +1153 -0
  14. package/dist/cjs/src/client/apis/AutocompleteApi.d.ts +89 -0
  15. package/dist/cjs/src/client/apis/AutocompleteApi.d.ts.map +1 -0
  16. package/dist/cjs/src/client/apis/AutocompleteApi.js +378 -0
  17. package/dist/cjs/src/client/apis/CartApi.d.ts +47 -0
  18. package/dist/cjs/src/client/apis/CartApi.d.ts.map +1 -0
  19. package/dist/cjs/src/client/apis/CartApi.js +219 -0
  20. package/dist/cjs/src/client/apis/CategoryApi.d.ts +75 -0
  21. package/dist/cjs/src/client/apis/CategoryApi.d.ts.map +1 -0
  22. package/dist/cjs/src/client/apis/CategoryApi.js +325 -0
  23. package/dist/cjs/src/client/apis/ErrorLogsApi.d.ts +61 -0
  24. package/dist/cjs/src/client/apis/ErrorLogsApi.d.ts.map +1 -0
  25. package/dist/cjs/src/client/apis/ErrorLogsApi.js +272 -0
  26. package/dist/cjs/src/client/apis/MessagingRecommendationsApi.d.ts +75 -0
  27. package/dist/cjs/src/client/apis/MessagingRecommendationsApi.d.ts.map +1 -0
  28. package/dist/cjs/src/client/apis/MessagingRecommendationsApi.js +325 -0
  29. package/dist/cjs/src/client/apis/OrderApi.d.ts +33 -0
  30. package/dist/cjs/src/client/apis/OrderApi.d.ts.map +1 -0
  31. package/dist/cjs/src/client/apis/OrderApi.js +166 -0
  32. package/dist/cjs/src/client/apis/ProductApi.d.ts +33 -0
  33. package/dist/cjs/src/client/apis/ProductApi.d.ts.map +1 -0
  34. package/dist/cjs/src/client/apis/ProductApi.js +166 -0
  35. package/dist/cjs/src/client/apis/RecommendationsApi.d.ts +75 -0
  36. package/dist/cjs/src/client/apis/RecommendationsApi.d.ts.map +1 -0
  37. package/dist/cjs/src/client/apis/RecommendationsApi.js +325 -0
  38. package/dist/cjs/src/client/apis/SearchApi.d.ts +89 -0
  39. package/dist/cjs/src/client/apis/SearchApi.d.ts.map +1 -0
  40. package/dist/cjs/src/client/apis/SearchApi.js +378 -0
  41. package/dist/cjs/src/client/apis/ShopperApi.d.ts +33 -0
  42. package/dist/cjs/src/client/apis/ShopperApi.d.ts.map +1 -0
  43. package/dist/cjs/src/client/apis/ShopperApi.js +166 -0
  44. package/dist/cjs/src/client/apis/index.d.ts +11 -0
  45. package/dist/cjs/src/client/apis/index.d.ts.map +1 -0
  46. package/dist/cjs/src/client/apis/index.js +28 -0
  47. package/dist/cjs/src/client/index.d.ts +4 -0
  48. package/dist/cjs/src/client/index.d.ts.map +1 -0
  49. package/dist/cjs/src/client/index.js +21 -0
  50. package/dist/cjs/src/client/models/AddtocartSchema.d.ts +41 -0
  51. package/dist/cjs/src/client/models/AddtocartSchema.d.ts.map +1 -0
  52. package/dist/cjs/src/client/models/AddtocartSchema.js +57 -0
  53. package/dist/cjs/src/client/models/AddtocartSchemaData.d.ts +40 -0
  54. package/dist/cjs/src/client/models/AddtocartSchemaData.d.ts.map +1 -0
  55. package/dist/cjs/src/client/models/AddtocartSchemaData.js +56 -0
  56. package/dist/cjs/src/client/models/AttributionInner.d.ts +39 -0
  57. package/dist/cjs/src/client/models/AttributionInner.d.ts.map +1 -0
  58. package/dist/cjs/src/client/models/AttributionInner.js +55 -0
  59. package/dist/cjs/src/client/models/BannersInner.d.ts +33 -0
  60. package/dist/cjs/src/client/models/BannersInner.d.ts.map +1 -0
  61. package/dist/cjs/src/client/models/BannersInner.js +51 -0
  62. package/dist/cjs/src/client/models/CartSchema.d.ts +41 -0
  63. package/dist/cjs/src/client/models/CartSchema.d.ts.map +1 -0
  64. package/dist/cjs/src/client/models/CartSchema.js +57 -0
  65. package/dist/cjs/src/client/models/CartSchemaData.d.ts +40 -0
  66. package/dist/cjs/src/client/models/CartSchemaData.d.ts.map +1 -0
  67. package/dist/cjs/src/client/models/CartSchemaData.js +56 -0
  68. package/dist/cjs/src/client/models/ClickthroughBannersInner.d.ts +33 -0
  69. package/dist/cjs/src/client/models/ClickthroughBannersInner.d.ts.map +1 -0
  70. package/dist/cjs/src/client/models/ClickthroughBannersInner.js +51 -0
  71. package/dist/cjs/src/client/models/ClickthroughBannersSchema.d.ts +40 -0
  72. package/dist/cjs/src/client/models/ClickthroughBannersSchema.d.ts.map +1 -0
  73. package/dist/cjs/src/client/models/ClickthroughBannersSchema.js +56 -0
  74. package/dist/cjs/src/client/models/ClickthroughBannersSchema1.d.ts +46 -0
  75. package/dist/cjs/src/client/models/ClickthroughBannersSchema1.d.ts.map +1 -0
  76. package/dist/cjs/src/client/models/ClickthroughBannersSchema1.js +60 -0
  77. package/dist/cjs/src/client/models/ClickthroughResultsInner.d.ts +24 -0
  78. package/dist/cjs/src/client/models/ClickthroughResultsInner.d.ts.map +1 -0
  79. package/dist/cjs/src/client/models/ClickthroughResultsInner.js +58 -0
  80. package/dist/cjs/src/client/models/ClickthroughResultsSchema.d.ts +40 -0
  81. package/dist/cjs/src/client/models/ClickthroughResultsSchema.d.ts.map +1 -0
  82. package/dist/cjs/src/client/models/ClickthroughResultsSchema.js +56 -0
  83. package/dist/cjs/src/client/models/ClickthroughResultsSchema1.d.ts +46 -0
  84. package/dist/cjs/src/client/models/ClickthroughResultsSchema1.d.ts.map +1 -0
  85. package/dist/cjs/src/client/models/ClickthroughResultsSchema1.js +60 -0
  86. package/dist/cjs/src/client/models/ClickthroughSchema.d.ts +41 -0
  87. package/dist/cjs/src/client/models/ClickthroughSchema.d.ts.map +1 -0
  88. package/dist/cjs/src/client/models/ClickthroughSchema.js +57 -0
  89. package/dist/cjs/src/client/models/ClickthroughSchemaData.d.ts +24 -0
  90. package/dist/cjs/src/client/models/ClickthroughSchemaData.d.ts.map +1 -0
  91. package/dist/cjs/src/client/models/ClickthroughSchemaData.js +58 -0
  92. package/dist/cjs/src/client/models/Context.d.ts +101 -0
  93. package/dist/cjs/src/client/models/Context.d.ts.map +1 -0
  94. package/dist/cjs/src/client/models/Context.js +85 -0
  95. package/dist/cjs/src/client/models/Currency.d.ts +33 -0
  96. package/dist/cjs/src/client/models/Currency.d.ts.map +1 -0
  97. package/dist/cjs/src/client/models/Currency.js +49 -0
  98. package/dist/cjs/src/client/models/ErrorResponseBody.d.ts +45 -0
  99. package/dist/cjs/src/client/models/ErrorResponseBody.d.ts.map +1 -0
  100. package/dist/cjs/src/client/models/ErrorResponseBody.js +53 -0
  101. package/dist/cjs/src/client/models/ImpressionSchema.d.ts +41 -0
  102. package/dist/cjs/src/client/models/ImpressionSchema.d.ts.map +1 -0
  103. package/dist/cjs/src/client/models/ImpressionSchema.js +57 -0
  104. package/dist/cjs/src/client/models/ImpressionSchemaData.d.ts +47 -0
  105. package/dist/cjs/src/client/models/ImpressionSchemaData.d.ts.map +1 -0
  106. package/dist/cjs/src/client/models/ImpressionSchemaData.js +61 -0
  107. package/dist/cjs/src/client/models/InlineObject.d.ts +33 -0
  108. package/dist/cjs/src/client/models/InlineObject.d.ts.map +1 -0
  109. package/dist/cjs/src/client/models/InlineObject.js +49 -0
  110. package/dist/cjs/src/client/models/InlineObject1.d.ts +51 -0
  111. package/dist/cjs/src/client/models/InlineObject1.d.ts.map +1 -0
  112. package/dist/cjs/src/client/models/InlineObject1.js +55 -0
  113. package/dist/cjs/src/client/models/LogSchema.d.ts +41 -0
  114. package/dist/cjs/src/client/models/LogSchema.d.ts.map +1 -0
  115. package/dist/cjs/src/client/models/LogSchema.js +57 -0
  116. package/dist/cjs/src/client/models/LogSchemaData.d.ts +45 -0
  117. package/dist/cjs/src/client/models/LogSchemaData.d.ts.map +1 -0
  118. package/dist/cjs/src/client/models/LogSchemaData.js +55 -0
  119. package/dist/cjs/src/client/models/MessagingSchema.d.ts +41 -0
  120. package/dist/cjs/src/client/models/MessagingSchema.d.ts.map +1 -0
  121. package/dist/cjs/src/client/models/MessagingSchema.js +57 -0
  122. package/dist/cjs/src/client/models/MessagingSchemaContext.d.ts +45 -0
  123. package/dist/cjs/src/client/models/MessagingSchemaContext.d.ts.map +1 -0
  124. package/dist/cjs/src/client/models/MessagingSchemaContext.js +57 -0
  125. package/dist/cjs/src/client/models/MessagingSchemaData.d.ts +39 -0
  126. package/dist/cjs/src/client/models/MessagingSchemaData.d.ts.map +1 -0
  127. package/dist/cjs/src/client/models/MessagingSchemaData.js +55 -0
  128. package/dist/cjs/src/client/models/OrderTransactionSchema.d.ts +41 -0
  129. package/dist/cjs/src/client/models/OrderTransactionSchema.d.ts.map +1 -0
  130. package/dist/cjs/src/client/models/OrderTransactionSchema.js +57 -0
  131. package/dist/cjs/src/client/models/OrderTransactionSchemaData.d.ts +76 -0
  132. package/dist/cjs/src/client/models/OrderTransactionSchemaData.d.ts.map +1 -0
  133. package/dist/cjs/src/client/models/OrderTransactionSchemaData.js +72 -0
  134. package/dist/cjs/src/client/models/PersonalizationLogContext.d.ts +39 -0
  135. package/dist/cjs/src/client/models/PersonalizationLogContext.d.ts.map +1 -0
  136. package/dist/cjs/src/client/models/PersonalizationLogContext.js +53 -0
  137. package/dist/cjs/src/client/models/PersonalizationLogSchema.d.ts +41 -0
  138. package/dist/cjs/src/client/models/PersonalizationLogSchema.d.ts.map +1 -0
  139. package/dist/cjs/src/client/models/PersonalizationLogSchema.js +57 -0
  140. package/dist/cjs/src/client/models/PersonalizationLogSchemaData.d.ts +45 -0
  141. package/dist/cjs/src/client/models/PersonalizationLogSchemaData.d.ts.map +1 -0
  142. package/dist/cjs/src/client/models/PersonalizationLogSchemaData.js +53 -0
  143. package/dist/cjs/src/client/models/Product.d.ts +57 -0
  144. package/dist/cjs/src/client/models/Product.d.ts.map +1 -0
  145. package/dist/cjs/src/client/models/Product.js +65 -0
  146. package/dist/cjs/src/client/models/ProductPageviewSchema.d.ts +41 -0
  147. package/dist/cjs/src/client/models/ProductPageviewSchema.d.ts.map +1 -0
  148. package/dist/cjs/src/client/models/ProductPageviewSchema.js +57 -0
  149. package/dist/cjs/src/client/models/ProductPageviewSchemaData.d.ts +34 -0
  150. package/dist/cjs/src/client/models/ProductPageviewSchemaData.d.ts.map +1 -0
  151. package/dist/cjs/src/client/models/ProductPageviewSchemaData.js +52 -0
  152. package/dist/cjs/src/client/models/ProductPageviewSchemaDataResult.d.ts +45 -0
  153. package/dist/cjs/src/client/models/ProductPageviewSchemaDataResult.d.ts.map +1 -0
  154. package/dist/cjs/src/client/models/ProductPageviewSchemaDataResult.js +57 -0
  155. package/dist/cjs/src/client/models/RecommendationsAddtocartSchema.d.ts +41 -0
  156. package/dist/cjs/src/client/models/RecommendationsAddtocartSchema.d.ts.map +1 -0
  157. package/dist/cjs/src/client/models/RecommendationsAddtocartSchema.js +57 -0
  158. package/dist/cjs/src/client/models/RecommendationsAddtocartSchemaData.d.ts +46 -0
  159. package/dist/cjs/src/client/models/RecommendationsAddtocartSchemaData.d.ts.map +1 -0
  160. package/dist/cjs/src/client/models/RecommendationsAddtocartSchemaData.js +60 -0
  161. package/dist/cjs/src/client/models/RecommendationsClickthroughSchema.d.ts +41 -0
  162. package/dist/cjs/src/client/models/RecommendationsClickthroughSchema.d.ts.map +1 -0
  163. package/dist/cjs/src/client/models/RecommendationsClickthroughSchema.js +57 -0
  164. package/dist/cjs/src/client/models/RecommendationsClickthroughSchemaData.d.ts +24 -0
  165. package/dist/cjs/src/client/models/RecommendationsClickthroughSchemaData.d.ts.map +1 -0
  166. package/dist/cjs/src/client/models/RecommendationsClickthroughSchemaData.js +58 -0
  167. package/dist/cjs/src/client/models/RecommendationsImpressionSchema.d.ts +41 -0
  168. package/dist/cjs/src/client/models/RecommendationsImpressionSchema.d.ts.map +1 -0
  169. package/dist/cjs/src/client/models/RecommendationsImpressionSchema.js +57 -0
  170. package/dist/cjs/src/client/models/RecommendationsImpressionSchemaData.d.ts +53 -0
  171. package/dist/cjs/src/client/models/RecommendationsImpressionSchemaData.d.ts.map +1 -0
  172. package/dist/cjs/src/client/models/RecommendationsImpressionSchemaData.js +63 -0
  173. package/dist/cjs/src/client/models/RecommendationsRenderSchema.d.ts +41 -0
  174. package/dist/cjs/src/client/models/RecommendationsRenderSchema.d.ts.map +1 -0
  175. package/dist/cjs/src/client/models/RecommendationsRenderSchema.js +57 -0
  176. package/dist/cjs/src/client/models/RecommendationsRenderSchemaData.d.ts +39 -0
  177. package/dist/cjs/src/client/models/RecommendationsRenderSchemaData.d.ts.map +1 -0
  178. package/dist/cjs/src/client/models/RecommendationsRenderSchemaData.js +55 -0
  179. package/dist/cjs/src/client/models/RedirectSchema.d.ts +41 -0
  180. package/dist/cjs/src/client/models/RedirectSchema.d.ts.map +1 -0
  181. package/dist/cjs/src/client/models/RedirectSchema.js +57 -0
  182. package/dist/cjs/src/client/models/RedirectSchemaData.d.ts +39 -0
  183. package/dist/cjs/src/client/models/RedirectSchemaData.d.ts.map +1 -0
  184. package/dist/cjs/src/client/models/RedirectSchemaData.js +55 -0
  185. package/dist/cjs/src/client/models/RenderSchema.d.ts +41 -0
  186. package/dist/cjs/src/client/models/RenderSchema.d.ts.map +1 -0
  187. package/dist/cjs/src/client/models/RenderSchema.js +57 -0
  188. package/dist/cjs/src/client/models/RenderSchemaData.d.ts +33 -0
  189. package/dist/cjs/src/client/models/RenderSchemaData.d.ts.map +1 -0
  190. package/dist/cjs/src/client/models/RenderSchemaData.js +51 -0
  191. package/dist/cjs/src/client/models/ResultProduct.d.ts +52 -0
  192. package/dist/cjs/src/client/models/ResultProduct.d.ts.map +1 -0
  193. package/dist/cjs/src/client/models/ResultProduct.js +62 -0
  194. package/dist/cjs/src/client/models/ResultProductType.d.ts +26 -0
  195. package/dist/cjs/src/client/models/ResultProductType.d.ts.map +1 -0
  196. package/dist/cjs/src/client/models/ResultProductType.js +51 -0
  197. package/dist/cjs/src/client/models/ResultResultBanner.d.ts +40 -0
  198. package/dist/cjs/src/client/models/ResultResultBanner.d.ts.map +1 -0
  199. package/dist/cjs/src/client/models/ResultResultBanner.js +56 -0
  200. package/dist/cjs/src/client/models/ResultsInner.d.ts +24 -0
  201. package/dist/cjs/src/client/models/ResultsInner.d.ts.map +1 -0
  202. package/dist/cjs/src/client/models/ResultsInner.js +58 -0
  203. package/dist/cjs/src/client/models/ShopperContext.d.ts +101 -0
  204. package/dist/cjs/src/client/models/ShopperContext.d.ts.map +1 -0
  205. package/dist/cjs/src/client/models/ShopperContext.js +87 -0
  206. package/dist/cjs/src/client/models/ShopperLoginSchema.d.ts +34 -0
  207. package/dist/cjs/src/client/models/ShopperLoginSchema.d.ts.map +1 -0
  208. package/dist/cjs/src/client/models/ShopperLoginSchema.js +52 -0
  209. package/dist/cjs/src/client/models/ValidationErrorWithDataField.d.ts +51 -0
  210. package/dist/cjs/src/client/models/ValidationErrorWithDataField.d.ts.map +1 -0
  211. package/dist/cjs/src/client/models/ValidationErrorWithDataField.js +55 -0
  212. package/dist/cjs/src/client/models/index.d.ts +55 -0
  213. package/dist/cjs/src/client/models/index.d.ts.map +1 -0
  214. package/dist/cjs/src/client/models/index.js +72 -0
  215. package/dist/cjs/src/client/runtime.d.ts +185 -0
  216. package/dist/cjs/src/client/runtime.d.ts.map +1 -0
  217. package/dist/cjs/src/client/runtime.js +564 -0
  218. package/dist/cjs/src/index.d.ts +4 -0
  219. package/dist/cjs/src/index.d.ts.map +1 -0
  220. package/dist/cjs/src/index.js +21 -0
  221. package/dist/cjs/src/indexCDN.d.ts +2 -0
  222. package/dist/cjs/src/indexCDN.d.ts.map +1 -0
  223. package/dist/cjs/src/indexCDN.js +40 -0
  224. package/dist/cjs/src/utils/featureFlags.d.ts +11 -0
  225. package/dist/cjs/src/utils/featureFlags.d.ts.map +1 -0
  226. package/dist/cjs/src/utils/featureFlags.js +33 -0
  227. package/dist/esm/package.json +78 -0
  228. package/dist/esm/src/Beacon.d.ts +181 -0
  229. package/dist/esm/src/Beacon.d.ts.map +1 -0
  230. package/dist/esm/src/Beacon.js +1074 -0
  231. package/dist/esm/src/client/apis/AutocompleteApi.d.ts +89 -0
  232. package/dist/esm/src/client/apis/AutocompleteApi.d.ts.map +1 -0
  233. package/dist/esm/src/client/apis/AutocompleteApi.js +185 -0
  234. package/dist/esm/src/client/apis/CartApi.d.ts +47 -0
  235. package/dist/esm/src/client/apis/CartApi.d.ts.map +1 -0
  236. package/dist/esm/src/client/apis/CartApi.js +86 -0
  237. package/dist/esm/src/client/apis/CategoryApi.d.ts +75 -0
  238. package/dist/esm/src/client/apis/CategoryApi.d.ts.map +1 -0
  239. package/dist/esm/src/client/apis/CategoryApi.js +152 -0
  240. package/dist/esm/src/client/apis/ErrorLogsApi.d.ts +61 -0
  241. package/dist/esm/src/client/apis/ErrorLogsApi.d.ts.map +1 -0
  242. package/dist/esm/src/client/apis/ErrorLogsApi.js +119 -0
  243. package/dist/esm/src/client/apis/MessagingRecommendationsApi.d.ts +75 -0
  244. package/dist/esm/src/client/apis/MessagingRecommendationsApi.d.ts.map +1 -0
  245. package/dist/esm/src/client/apis/MessagingRecommendationsApi.js +152 -0
  246. package/dist/esm/src/client/apis/OrderApi.d.ts +33 -0
  247. package/dist/esm/src/client/apis/OrderApi.d.ts.map +1 -0
  248. package/dist/esm/src/client/apis/OrderApi.js +53 -0
  249. package/dist/esm/src/client/apis/ProductApi.d.ts +33 -0
  250. package/dist/esm/src/client/apis/ProductApi.d.ts.map +1 -0
  251. package/dist/esm/src/client/apis/ProductApi.js +53 -0
  252. package/dist/esm/src/client/apis/RecommendationsApi.d.ts +75 -0
  253. package/dist/esm/src/client/apis/RecommendationsApi.d.ts.map +1 -0
  254. package/dist/esm/src/client/apis/RecommendationsApi.js +152 -0
  255. package/dist/esm/src/client/apis/SearchApi.d.ts +89 -0
  256. package/dist/esm/src/client/apis/SearchApi.d.ts.map +1 -0
  257. package/dist/esm/src/client/apis/SearchApi.js +185 -0
  258. package/dist/esm/src/client/apis/ShopperApi.d.ts +33 -0
  259. package/dist/esm/src/client/apis/ShopperApi.d.ts.map +1 -0
  260. package/dist/esm/src/client/apis/ShopperApi.js +53 -0
  261. package/dist/esm/src/client/apis/index.d.ts +11 -0
  262. package/dist/esm/src/client/apis/index.d.ts.map +1 -0
  263. package/dist/esm/src/client/apis/index.js +12 -0
  264. package/dist/esm/src/client/index.d.ts +4 -0
  265. package/dist/esm/src/client/index.d.ts.map +1 -0
  266. package/dist/esm/src/client/index.js +5 -0
  267. package/dist/esm/src/client/models/AddtocartSchema.d.ts +41 -0
  268. package/dist/esm/src/client/models/AddtocartSchema.d.ts.map +1 -0
  269. package/dist/esm/src/client/models/AddtocartSchema.js +49 -0
  270. package/dist/esm/src/client/models/AddtocartSchemaData.d.ts +40 -0
  271. package/dist/esm/src/client/models/AddtocartSchemaData.d.ts.map +1 -0
  272. package/dist/esm/src/client/models/AddtocartSchemaData.js +48 -0
  273. package/dist/esm/src/client/models/AttributionInner.d.ts +39 -0
  274. package/dist/esm/src/client/models/AttributionInner.d.ts.map +1 -0
  275. package/dist/esm/src/client/models/AttributionInner.js +47 -0
  276. package/dist/esm/src/client/models/BannersInner.d.ts +33 -0
  277. package/dist/esm/src/client/models/BannersInner.d.ts.map +1 -0
  278. package/dist/esm/src/client/models/BannersInner.js +43 -0
  279. package/dist/esm/src/client/models/CartSchema.d.ts +41 -0
  280. package/dist/esm/src/client/models/CartSchema.d.ts.map +1 -0
  281. package/dist/esm/src/client/models/CartSchema.js +49 -0
  282. package/dist/esm/src/client/models/CartSchemaData.d.ts +40 -0
  283. package/dist/esm/src/client/models/CartSchemaData.d.ts.map +1 -0
  284. package/dist/esm/src/client/models/CartSchemaData.js +48 -0
  285. package/dist/esm/src/client/models/ClickthroughBannersInner.d.ts +33 -0
  286. package/dist/esm/src/client/models/ClickthroughBannersInner.d.ts.map +1 -0
  287. package/dist/esm/src/client/models/ClickthroughBannersInner.js +43 -0
  288. package/dist/esm/src/client/models/ClickthroughBannersSchema.d.ts +40 -0
  289. package/dist/esm/src/client/models/ClickthroughBannersSchema.d.ts.map +1 -0
  290. package/dist/esm/src/client/models/ClickthroughBannersSchema.js +48 -0
  291. package/dist/esm/src/client/models/ClickthroughBannersSchema1.d.ts +46 -0
  292. package/dist/esm/src/client/models/ClickthroughBannersSchema1.d.ts.map +1 -0
  293. package/dist/esm/src/client/models/ClickthroughBannersSchema1.js +52 -0
  294. package/dist/esm/src/client/models/ClickthroughResultsInner.d.ts +24 -0
  295. package/dist/esm/src/client/models/ClickthroughResultsInner.d.ts.map +1 -0
  296. package/dist/esm/src/client/models/ClickthroughResultsInner.js +51 -0
  297. package/dist/esm/src/client/models/ClickthroughResultsSchema.d.ts +40 -0
  298. package/dist/esm/src/client/models/ClickthroughResultsSchema.d.ts.map +1 -0
  299. package/dist/esm/src/client/models/ClickthroughResultsSchema.js +48 -0
  300. package/dist/esm/src/client/models/ClickthroughResultsSchema1.d.ts +46 -0
  301. package/dist/esm/src/client/models/ClickthroughResultsSchema1.d.ts.map +1 -0
  302. package/dist/esm/src/client/models/ClickthroughResultsSchema1.js +52 -0
  303. package/dist/esm/src/client/models/ClickthroughSchema.d.ts +41 -0
  304. package/dist/esm/src/client/models/ClickthroughSchema.d.ts.map +1 -0
  305. package/dist/esm/src/client/models/ClickthroughSchema.js +49 -0
  306. package/dist/esm/src/client/models/ClickthroughSchemaData.d.ts +24 -0
  307. package/dist/esm/src/client/models/ClickthroughSchemaData.d.ts.map +1 -0
  308. package/dist/esm/src/client/models/ClickthroughSchemaData.js +51 -0
  309. package/dist/esm/src/client/models/Context.d.ts +101 -0
  310. package/dist/esm/src/client/models/Context.d.ts.map +1 -0
  311. package/dist/esm/src/client/models/Context.js +77 -0
  312. package/dist/esm/src/client/models/Currency.d.ts +33 -0
  313. package/dist/esm/src/client/models/Currency.d.ts.map +1 -0
  314. package/dist/esm/src/client/models/Currency.js +41 -0
  315. package/dist/esm/src/client/models/ErrorResponseBody.d.ts +45 -0
  316. package/dist/esm/src/client/models/ErrorResponseBody.d.ts.map +1 -0
  317. package/dist/esm/src/client/models/ErrorResponseBody.js +45 -0
  318. package/dist/esm/src/client/models/ImpressionSchema.d.ts +41 -0
  319. package/dist/esm/src/client/models/ImpressionSchema.d.ts.map +1 -0
  320. package/dist/esm/src/client/models/ImpressionSchema.js +49 -0
  321. package/dist/esm/src/client/models/ImpressionSchemaData.d.ts +47 -0
  322. package/dist/esm/src/client/models/ImpressionSchemaData.d.ts.map +1 -0
  323. package/dist/esm/src/client/models/ImpressionSchemaData.js +53 -0
  324. package/dist/esm/src/client/models/InlineObject.d.ts +33 -0
  325. package/dist/esm/src/client/models/InlineObject.d.ts.map +1 -0
  326. package/dist/esm/src/client/models/InlineObject.js +41 -0
  327. package/dist/esm/src/client/models/InlineObject1.d.ts +51 -0
  328. package/dist/esm/src/client/models/InlineObject1.d.ts.map +1 -0
  329. package/dist/esm/src/client/models/InlineObject1.js +47 -0
  330. package/dist/esm/src/client/models/LogSchema.d.ts +41 -0
  331. package/dist/esm/src/client/models/LogSchema.d.ts.map +1 -0
  332. package/dist/esm/src/client/models/LogSchema.js +49 -0
  333. package/dist/esm/src/client/models/LogSchemaData.d.ts +45 -0
  334. package/dist/esm/src/client/models/LogSchemaData.d.ts.map +1 -0
  335. package/dist/esm/src/client/models/LogSchemaData.js +47 -0
  336. package/dist/esm/src/client/models/MessagingSchema.d.ts +41 -0
  337. package/dist/esm/src/client/models/MessagingSchema.d.ts.map +1 -0
  338. package/dist/esm/src/client/models/MessagingSchema.js +49 -0
  339. package/dist/esm/src/client/models/MessagingSchemaContext.d.ts +45 -0
  340. package/dist/esm/src/client/models/MessagingSchemaContext.d.ts.map +1 -0
  341. package/dist/esm/src/client/models/MessagingSchemaContext.js +49 -0
  342. package/dist/esm/src/client/models/MessagingSchemaData.d.ts +39 -0
  343. package/dist/esm/src/client/models/MessagingSchemaData.d.ts.map +1 -0
  344. package/dist/esm/src/client/models/MessagingSchemaData.js +47 -0
  345. package/dist/esm/src/client/models/OrderTransactionSchema.d.ts +41 -0
  346. package/dist/esm/src/client/models/OrderTransactionSchema.d.ts.map +1 -0
  347. package/dist/esm/src/client/models/OrderTransactionSchema.js +49 -0
  348. package/dist/esm/src/client/models/OrderTransactionSchemaData.d.ts +76 -0
  349. package/dist/esm/src/client/models/OrderTransactionSchemaData.d.ts.map +1 -0
  350. package/dist/esm/src/client/models/OrderTransactionSchemaData.js +64 -0
  351. package/dist/esm/src/client/models/PersonalizationLogContext.d.ts +39 -0
  352. package/dist/esm/src/client/models/PersonalizationLogContext.d.ts.map +1 -0
  353. package/dist/esm/src/client/models/PersonalizationLogContext.js +45 -0
  354. package/dist/esm/src/client/models/PersonalizationLogSchema.d.ts +41 -0
  355. package/dist/esm/src/client/models/PersonalizationLogSchema.d.ts.map +1 -0
  356. package/dist/esm/src/client/models/PersonalizationLogSchema.js +49 -0
  357. package/dist/esm/src/client/models/PersonalizationLogSchemaData.d.ts +45 -0
  358. package/dist/esm/src/client/models/PersonalizationLogSchemaData.d.ts.map +1 -0
  359. package/dist/esm/src/client/models/PersonalizationLogSchemaData.js +45 -0
  360. package/dist/esm/src/client/models/Product.d.ts +57 -0
  361. package/dist/esm/src/client/models/Product.d.ts.map +1 -0
  362. package/dist/esm/src/client/models/Product.js +57 -0
  363. package/dist/esm/src/client/models/ProductPageviewSchema.d.ts +41 -0
  364. package/dist/esm/src/client/models/ProductPageviewSchema.d.ts.map +1 -0
  365. package/dist/esm/src/client/models/ProductPageviewSchema.js +49 -0
  366. package/dist/esm/src/client/models/ProductPageviewSchemaData.d.ts +34 -0
  367. package/dist/esm/src/client/models/ProductPageviewSchemaData.d.ts.map +1 -0
  368. package/dist/esm/src/client/models/ProductPageviewSchemaData.js +44 -0
  369. package/dist/esm/src/client/models/ProductPageviewSchemaDataResult.d.ts +45 -0
  370. package/dist/esm/src/client/models/ProductPageviewSchemaDataResult.d.ts.map +1 -0
  371. package/dist/esm/src/client/models/ProductPageviewSchemaDataResult.js +49 -0
  372. package/dist/esm/src/client/models/RecommendationsAddtocartSchema.d.ts +41 -0
  373. package/dist/esm/src/client/models/RecommendationsAddtocartSchema.d.ts.map +1 -0
  374. package/dist/esm/src/client/models/RecommendationsAddtocartSchema.js +49 -0
  375. package/dist/esm/src/client/models/RecommendationsAddtocartSchemaData.d.ts +46 -0
  376. package/dist/esm/src/client/models/RecommendationsAddtocartSchemaData.d.ts.map +1 -0
  377. package/dist/esm/src/client/models/RecommendationsAddtocartSchemaData.js +52 -0
  378. package/dist/esm/src/client/models/RecommendationsClickthroughSchema.d.ts +41 -0
  379. package/dist/esm/src/client/models/RecommendationsClickthroughSchema.d.ts.map +1 -0
  380. package/dist/esm/src/client/models/RecommendationsClickthroughSchema.js +49 -0
  381. package/dist/esm/src/client/models/RecommendationsClickthroughSchemaData.d.ts +24 -0
  382. package/dist/esm/src/client/models/RecommendationsClickthroughSchemaData.d.ts.map +1 -0
  383. package/dist/esm/src/client/models/RecommendationsClickthroughSchemaData.js +51 -0
  384. package/dist/esm/src/client/models/RecommendationsImpressionSchema.d.ts +41 -0
  385. package/dist/esm/src/client/models/RecommendationsImpressionSchema.d.ts.map +1 -0
  386. package/dist/esm/src/client/models/RecommendationsImpressionSchema.js +49 -0
  387. package/dist/esm/src/client/models/RecommendationsImpressionSchemaData.d.ts +53 -0
  388. package/dist/esm/src/client/models/RecommendationsImpressionSchemaData.d.ts.map +1 -0
  389. package/dist/esm/src/client/models/RecommendationsImpressionSchemaData.js +55 -0
  390. package/dist/esm/src/client/models/RecommendationsRenderSchema.d.ts +41 -0
  391. package/dist/esm/src/client/models/RecommendationsRenderSchema.d.ts.map +1 -0
  392. package/dist/esm/src/client/models/RecommendationsRenderSchema.js +49 -0
  393. package/dist/esm/src/client/models/RecommendationsRenderSchemaData.d.ts +39 -0
  394. package/dist/esm/src/client/models/RecommendationsRenderSchemaData.d.ts.map +1 -0
  395. package/dist/esm/src/client/models/RecommendationsRenderSchemaData.js +47 -0
  396. package/dist/esm/src/client/models/RedirectSchema.d.ts +41 -0
  397. package/dist/esm/src/client/models/RedirectSchema.d.ts.map +1 -0
  398. package/dist/esm/src/client/models/RedirectSchema.js +49 -0
  399. package/dist/esm/src/client/models/RedirectSchemaData.d.ts +39 -0
  400. package/dist/esm/src/client/models/RedirectSchemaData.d.ts.map +1 -0
  401. package/dist/esm/src/client/models/RedirectSchemaData.js +47 -0
  402. package/dist/esm/src/client/models/RenderSchema.d.ts +41 -0
  403. package/dist/esm/src/client/models/RenderSchema.d.ts.map +1 -0
  404. package/dist/esm/src/client/models/RenderSchema.js +49 -0
  405. package/dist/esm/src/client/models/RenderSchemaData.d.ts +33 -0
  406. package/dist/esm/src/client/models/RenderSchemaData.d.ts.map +1 -0
  407. package/dist/esm/src/client/models/RenderSchemaData.js +43 -0
  408. package/dist/esm/src/client/models/ResultProduct.d.ts +52 -0
  409. package/dist/esm/src/client/models/ResultProduct.d.ts.map +1 -0
  410. package/dist/esm/src/client/models/ResultProduct.js +54 -0
  411. package/dist/esm/src/client/models/ResultProductType.d.ts +26 -0
  412. package/dist/esm/src/client/models/ResultProductType.d.ts.map +1 -0
  413. package/dist/esm/src/client/models/ResultProductType.js +43 -0
  414. package/dist/esm/src/client/models/ResultResultBanner.d.ts +40 -0
  415. package/dist/esm/src/client/models/ResultResultBanner.d.ts.map +1 -0
  416. package/dist/esm/src/client/models/ResultResultBanner.js +48 -0
  417. package/dist/esm/src/client/models/ResultsInner.d.ts +24 -0
  418. package/dist/esm/src/client/models/ResultsInner.d.ts.map +1 -0
  419. package/dist/esm/src/client/models/ResultsInner.js +51 -0
  420. package/dist/esm/src/client/models/ShopperContext.d.ts +101 -0
  421. package/dist/esm/src/client/models/ShopperContext.d.ts.map +1 -0
  422. package/dist/esm/src/client/models/ShopperContext.js +79 -0
  423. package/dist/esm/src/client/models/ShopperLoginSchema.d.ts +34 -0
  424. package/dist/esm/src/client/models/ShopperLoginSchema.d.ts.map +1 -0
  425. package/dist/esm/src/client/models/ShopperLoginSchema.js +44 -0
  426. package/dist/esm/src/client/models/ValidationErrorWithDataField.d.ts +51 -0
  427. package/dist/esm/src/client/models/ValidationErrorWithDataField.d.ts.map +1 -0
  428. package/dist/esm/src/client/models/ValidationErrorWithDataField.js +47 -0
  429. package/dist/esm/src/client/models/index.d.ts +55 -0
  430. package/dist/esm/src/client/models/index.d.ts.map +1 -0
  431. package/dist/esm/src/client/models/index.js +56 -0
  432. package/dist/esm/src/client/runtime.d.ts +185 -0
  433. package/dist/esm/src/client/runtime.d.ts.map +1 -0
  434. package/dist/esm/src/client/runtime.js +322 -0
  435. package/dist/esm/src/index.d.ts +4 -0
  436. package/dist/esm/src/index.d.ts.map +1 -0
  437. package/dist/esm/src/index.js +3 -0
  438. package/dist/esm/src/indexCDN.d.ts +2 -0
  439. package/dist/esm/src/indexCDN.d.ts.map +1 -0
  440. package/dist/esm/src/indexCDN.js +33 -0
  441. package/dist/esm/src/utils/featureFlags.d.ts +11 -0
  442. package/dist/esm/src/utils/featureFlags.d.ts.map +1 -0
  443. package/dist/esm/src/utils/featureFlags.js +27 -0
  444. package/jest.config.js +14 -0
  445. package/openapitools.json +7 -0
  446. package/package.json +78 -0
  447. package/public/index.html +18 -0
  448. package/src/Beacon.test.ts +1487 -0
  449. package/src/Beacon.ts +1322 -0
  450. package/src/client/.openapi-generator/FILES +133 -0
  451. package/src/client/.openapi-generator/VERSION +1 -0
  452. package/src/client/.openapi-generator-ignore +23 -0
  453. package/src/client/apis/AutocompleteApi.ts +321 -0
  454. package/src/client/apis/CartApi.ts +147 -0
  455. package/src/client/apis/CategoryApi.ts +264 -0
  456. package/src/client/apis/ErrorLogsApi.ts +204 -0
  457. package/src/client/apis/MessagingRecommendationsApi.ts +255 -0
  458. package/src/client/apis/OrderApi.ts +93 -0
  459. package/src/client/apis/ProductApi.ts +93 -0
  460. package/src/client/apis/RecommendationsApi.ts +264 -0
  461. package/src/client/apis/SearchApi.ts +321 -0
  462. package/src/client/apis/ShopperApi.ts +93 -0
  463. package/src/client/apis/index.ts +12 -0
  464. package/src/client/docs/AddtocartSchema.md +36 -0
  465. package/src/client/docs/AddtocartSchemaData.md +37 -0
  466. package/src/client/docs/AttributionInner.md +36 -0
  467. package/src/client/docs/AutocompleteApi.md +393 -0
  468. package/src/client/docs/BannersInner.md +34 -0
  469. package/src/client/docs/CartApi.md +162 -0
  470. package/src/client/docs/CartSchema.md +36 -0
  471. package/src/client/docs/CartSchemaData.md +37 -0
  472. package/src/client/docs/CategoryApi.md +316 -0
  473. package/src/client/docs/ClickthroughBannersInner.md +34 -0
  474. package/src/client/docs/ClickthroughBannersSchema.md +36 -0
  475. package/src/client/docs/ClickthroughBannersSchema1.md +38 -0
  476. package/src/client/docs/ClickthroughResultsInner.md +40 -0
  477. package/src/client/docs/ClickthroughResultsSchema.md +36 -0
  478. package/src/client/docs/ClickthroughResultsSchema1.md +38 -0
  479. package/src/client/docs/ClickthroughSchema.md +36 -0
  480. package/src/client/docs/ClickthroughSchemaData.md +39 -0
  481. package/src/client/docs/Context.md +57 -0
  482. package/src/client/docs/Currency.md +35 -0
  483. package/src/client/docs/ErrorLogsApi.md +239 -0
  484. package/src/client/docs/ErrorResponseBody.md +38 -0
  485. package/src/client/docs/ImpressionSchema.md +36 -0
  486. package/src/client/docs/ImpressionSchemaData.md +39 -0
  487. package/src/client/docs/InlineObject.md +34 -0
  488. package/src/client/docs/InlineObject1.md +40 -0
  489. package/src/client/docs/LogSchema.md +36 -0
  490. package/src/client/docs/LogSchemaData.md +39 -0
  491. package/src/client/docs/MessagingRecommendationsApi.md +316 -0
  492. package/src/client/docs/MessagingSchema.md +36 -0
  493. package/src/client/docs/MessagingSchemaContext.md +39 -0
  494. package/src/client/docs/MessagingSchemaData.md +37 -0
  495. package/src/client/docs/OrderApi.md +85 -0
  496. package/src/client/docs/OrderTransactionSchema.md +36 -0
  497. package/src/client/docs/OrderTransactionSchemaData.md +49 -0
  498. package/src/client/docs/PersonalizationLogContext.md +36 -0
  499. package/src/client/docs/PersonalizationLogSchema.md +36 -0
  500. package/src/client/docs/PersonalizationLogSchemaData.md +39 -0
  501. package/src/client/docs/Product.md +43 -0
  502. package/src/client/docs/ProductApi.md +85 -0
  503. package/src/client/docs/ProductPageviewSchema.md +36 -0
  504. package/src/client/docs/ProductPageviewSchemaData.md +35 -0
  505. package/src/client/docs/ProductPageviewSchemaDataResult.md +39 -0
  506. package/src/client/docs/RecommendationsAddtocartSchema.md +36 -0
  507. package/src/client/docs/RecommendationsAddtocartSchemaData.md +39 -0
  508. package/src/client/docs/RecommendationsApi.md +316 -0
  509. package/src/client/docs/RecommendationsClickthroughSchema.md +36 -0
  510. package/src/client/docs/RecommendationsClickthroughSchemaData.md +41 -0
  511. package/src/client/docs/RecommendationsImpressionSchema.md +36 -0
  512. package/src/client/docs/RecommendationsImpressionSchemaData.md +41 -0
  513. package/src/client/docs/RecommendationsRenderSchema.md +36 -0
  514. package/src/client/docs/RecommendationsRenderSchemaData.md +37 -0
  515. package/src/client/docs/RedirectSchema.md +36 -0
  516. package/src/client/docs/RedirectSchemaData.md +37 -0
  517. package/src/client/docs/RenderSchema.md +36 -0
  518. package/src/client/docs/RenderSchemaData.md +35 -0
  519. package/src/client/docs/ResultProduct.md +41 -0
  520. package/src/client/docs/ResultProductType.md +33 -0
  521. package/src/client/docs/ResultResultBanner.md +37 -0
  522. package/src/client/docs/ResultsInner.md +40 -0
  523. package/src/client/docs/SearchApi.md +393 -0
  524. package/src/client/docs/ShopperApi.md +85 -0
  525. package/src/client/docs/ShopperContext.md +57 -0
  526. package/src/client/docs/ShopperLoginSchema.md +34 -0
  527. package/src/client/docs/ValidationErrorWithDataField.md +40 -0
  528. package/src/client/index.ts +5 -0
  529. package/src/client/models/AddtocartSchema.ts +90 -0
  530. package/src/client/models/AddtocartSchemaData.ts +83 -0
  531. package/src/client/models/AttributionInner.ts +75 -0
  532. package/src/client/models/BannersInner.ts +66 -0
  533. package/src/client/models/CartSchema.ts +90 -0
  534. package/src/client/models/CartSchemaData.ts +83 -0
  535. package/src/client/models/ClickthroughBannersInner.ts +66 -0
  536. package/src/client/models/ClickthroughBannersSchema.ts +83 -0
  537. package/src/client/models/ClickthroughBannersSchema1.ts +92 -0
  538. package/src/client/models/ClickthroughResultsInner.ts +76 -0
  539. package/src/client/models/ClickthroughResultsSchema.ts +83 -0
  540. package/src/client/models/ClickthroughResultsSchema1.ts +92 -0
  541. package/src/client/models/ClickthroughSchema.ts +90 -0
  542. package/src/client/models/ClickthroughSchemaData.ts +76 -0
  543. package/src/client/models/Context.ts +174 -0
  544. package/src/client/models/Currency.ts +65 -0
  545. package/src/client/models/ErrorResponseBody.ts +81 -0
  546. package/src/client/models/ImpressionSchema.ts +90 -0
  547. package/src/client/models/ImpressionSchemaData.ts +99 -0
  548. package/src/client/models/InlineObject.ts +65 -0
  549. package/src/client/models/InlineObject1.ts +104 -0
  550. package/src/client/models/LogSchema.ts +90 -0
  551. package/src/client/models/LogSchemaData.ts +82 -0
  552. package/src/client/models/MessagingSchema.ts +90 -0
  553. package/src/client/models/MessagingSchemaContext.ts +83 -0
  554. package/src/client/models/MessagingSchemaData.ts +75 -0
  555. package/src/client/models/OrderTransactionSchema.ts +90 -0
  556. package/src/client/models/OrderTransactionSchemaData.ts +133 -0
  557. package/src/client/models/PersonalizationLogContext.ts +74 -0
  558. package/src/client/models/PersonalizationLogSchema.ts +90 -0
  559. package/src/client/models/PersonalizationLogSchemaData.ts +81 -0
  560. package/src/client/models/Product.ts +101 -0
  561. package/src/client/models/ProductPageviewSchema.ts +90 -0
  562. package/src/client/models/ProductPageviewSchemaData.ts +74 -0
  563. package/src/client/models/ProductPageviewSchemaDataResult.ts +83 -0
  564. package/src/client/models/RecommendationsAddtocartSchema.ts +90 -0
  565. package/src/client/models/RecommendationsAddtocartSchemaData.ts +92 -0
  566. package/src/client/models/RecommendationsClickthroughSchema.ts +90 -0
  567. package/src/client/models/RecommendationsClickthroughSchemaData.ts +76 -0
  568. package/src/client/models/RecommendationsImpressionSchema.ts +90 -0
  569. package/src/client/models/RecommendationsImpressionSchemaData.ts +107 -0
  570. package/src/client/models/RecommendationsRenderSchema.ts +90 -0
  571. package/src/client/models/RecommendationsRenderSchemaData.ts +75 -0
  572. package/src/client/models/RedirectSchema.ts +90 -0
  573. package/src/client/models/RedirectSchemaData.ts +75 -0
  574. package/src/client/models/RenderSchema.ts +90 -0
  575. package/src/client/models/RenderSchemaData.ts +66 -0
  576. package/src/client/models/ResultProduct.ts +102 -0
  577. package/src/client/models/ResultProductType.ts +53 -0
  578. package/src/client/models/ResultResultBanner.ts +85 -0
  579. package/src/client/models/ResultsInner.ts +76 -0
  580. package/src/client/models/ShopperContext.ts +175 -0
  581. package/src/client/models/ShopperLoginSchema.ts +74 -0
  582. package/src/client/models/ValidationErrorWithDataField.ts +89 -0
  583. package/src/client/models/index.ts +56 -0
  584. package/src/client/runtime.ts +432 -0
  585. package/src/index.ts +3 -0
  586. package/src/indexCDN.ts +34 -0
  587. package/src/utils/featureFlags.ts +35 -0
  588. package/tsconfig.cjs.json +31 -0
  589. package/tsconfig.json +34 -0
  590. package/webpack.prod.js +47 -0
package/README.md ADDED
@@ -0,0 +1,970 @@
1
+ # beacon.js
2
+
3
+ A TypeScript library for tracking user interactions and analytics events to Athos Commerce's Beacon API. This library enables real-time tracking of user behavior across search, recommendations, autocomplete, and e-commerce interactions.
4
+
5
+ This package can be used by both Athos Commerce and Searchspring accounts.
6
+
7
+ ## Features
8
+
9
+ - 🎯 **Multi-Channel Tracking**: Track events from search, autocomplete, recommendations, category pages, and product pages
10
+ - 📦 **Smart Batching**: Automatically batches requests for optimal performance
11
+ - 💾 **Local Storage Management**: Manages user IDs, session IDs, cart state, and viewed products
12
+ - 🔍 **Attribution Tracking**: Built-in support for tracking attribution and campaign sources
13
+ - 🎨 **Flexible Configuration**: Support for custom headers, custom fetch implementations, and multiple environments
14
+ - 🌍 **Multi-Currency**: Support for tracking transactions in different currencies
15
+ - ⚡ **Production Ready**: Optimized for performance with features like keepalive requests and efficient batching
16
+
17
+ ## Installation
18
+
19
+ ### CDN
20
+
21
+ To use the beacon via our CDN build, place the following script before the page's closing `</head>` tag:
22
+
23
+ ```html
24
+ <script siteId="[REPLACE WITH ATHOS OR SEARCHSPRING SITEID]" src="https://cdn.athoscommerce.net/analytics/beacon.js"></script>
25
+ ```
26
+
27
+ The beacon will then be available for usage via `window.athos.tracker`
28
+
29
+ ```html
30
+ <script>
31
+ window.athos.tracker.events.search.render({ data: { responseId: '35e5ea31-a537-471b-ba2b-6eea9caebe62' }})
32
+ </script>
33
+ ```
34
+
35
+
36
+ Utilizing this package via the CDN is preferred if you either:
37
+
38
+ - plan on integrating Athos API and are not sending events directly to the beacon endpoint.
39
+
40
+ OR
41
+
42
+ - You are actively developing an integration, however would like to start tracking events before going live with the integration. Note that after going live with a Snap integration, this beacon.js should be removed from the website, however the function calls can remain on the website. The Snap integration will publish an identical reference of this Beacon to the same path: `window.athos.tracker`.
43
+
44
+
45
+ ### NPM
46
+
47
+ If you are integrating Athos via API instead of utilizing Snap, the `@athoscommerce/beacon` package is available to use for your convenience.
48
+
49
+ ```bash
50
+ npm install --save @athoscommerce/beacon
51
+ ```
52
+
53
+ ```typescript
54
+ import { Beacon } from '@athoscommerce/beacon';
55
+
56
+ // Initialize Beacon with required siteId
57
+ const beacon = new Beacon({
58
+ siteId: 'abc123',
59
+ currency: { code: 'USD' }
60
+ });
61
+
62
+ // Track an autocomplete render event
63
+ beacon.events.autocomplete.render({
64
+ data: {
65
+ // ... render data
66
+ }
67
+ });
68
+
69
+ // Track a product page view
70
+ beacon.events.product.pageView({
71
+ data: {
72
+ result: {
73
+ uid: 'product-123',
74
+ sku: 'SKU-123',
75
+ parentId: 'parent-123'
76
+ }
77
+ }
78
+ });
79
+ ```
80
+
81
+ ## Initialization
82
+
83
+ ### Beacon Globals
84
+
85
+ The first parameter to the `Beacon` constructor contains required and optional global configuration that applies to all tracking events.
86
+
87
+ ```typescript
88
+ import { Beacon } from '@athoscommerce/beacon';
89
+
90
+ const beacon = new Beacon({ siteId: 'abc123' });
91
+ ```
92
+
93
+ | Option | Type | Description | Required |
94
+ |--------|------|-------------|----------|
95
+ | `siteId` | `string` | Your Athos site ID | ✔️ |
96
+
97
+ ### Beacon Config
98
+
99
+ The second parameter to the `Beacon` constructor provides optional configuration for API behavior and request handling.
100
+
101
+ ```typescript
102
+ const beacon = new Beacon(
103
+ { siteId: 'abc123' },
104
+ {
105
+ mode: 'development',
106
+ initiator: 'my-app/1.0.0',
107
+ requesters: {
108
+ beacon: {
109
+ origin: 'https://custom-beacon.example.com/beacon/v2',
110
+ headers: { 'Authorization': 'Bearer token' }
111
+ },
112
+ personalization: {
113
+ origin: 'https://custom-personalization.example.com',
114
+ headers: { 'X-Custom-Header': 'value' }
115
+ }
116
+ },
117
+ apis: {
118
+ fetch: customFetchImplementation
119
+ },
120
+ href: 'https://example.com/page',
121
+ userAgent: 'Custom User Agent'
122
+ }
123
+ );
124
+ ```
125
+
126
+ | Option | Type | Description | Default |
127
+ |--------|------|-------------|---------|
128
+ | `mode` | `'production' \| 'development'` | Application mode. In development mode, errors are logged to console | `'production'` |
129
+ | `initiator` | `string` | Identifier for the beacon instance | `beaconjs/{version}` |
130
+ | `apis.fetch` | `FetchAPI` | Custom fetch implementation | `window.fetch` |
131
+ | `requesters.beacon.origin` | `string` | Custom beacon API endpoint | Auto-detected based on siteId |
132
+ | `requesters.beacon.headers` | `HTTPHeaders` | Custom headers for beacon API requests | `{ 'Content-Type': 'text/plain' }` |
133
+ | `requesters.personalization.origin` | `string` | Custom personalization preflight endpoint | Auto-detected based on siteId |
134
+ | `requesters.personalization.headers` | `HTTPHeaders` | Custom headers for personalization requests | |
135
+ | `href` | `string` | Override page URL for tracking | `window.location.href` |
136
+ | `userAgent` | `string` | Override user agent string | `navigator.userAgent` |
137
+
138
+
139
+ ## Common properties
140
+
141
+ ### responseId
142
+
143
+ The Athos Search, Autocomplete, and Recommendations APIs will return a `responseId` property that is required on most beacon event's payload. It will only be returned if the `beacon=true` parameter is provided to each API.
144
+
145
+ ```typescript
146
+ // Search API Example Response
147
+ const response = {
148
+ "breadcrumbs": [...],
149
+ "merchandising": {...},
150
+ "pagination": {...},
151
+ "query": {...},
152
+ "responseId": "f70594d2-c360-4292-8711-b256567099d3"
153
+ "results": [...],
154
+ "sorting": {...},
155
+ }
156
+
157
+ window.athos.tracker.events.search.render({
158
+ data: {
159
+ responseId: response.responseId,
160
+ }
161
+ });
162
+ ```
163
+
164
+ ### Merchandising Banner uid
165
+
166
+ When building the data payload for `banners`, the `uid` property is located within the Banner content. Here is an example of how you may choose to extract it.
167
+
168
+ ```typescript
169
+ // Search API Example Response
170
+ const response = {
171
+ "merchandising": {
172
+ "content": {
173
+ "header": [
174
+ "<script data-banner-id=\"440998\" data-banner-type=\"html\" data-banner-html=\"<div style=&quot;width: 100%; background: #ADD8E6; text-align: center; padding: 20px;&quot;>On Sale</div>\" type=\"text/widget\"></script><div style=\"width: 100%; background: #ADD8E6; text-align: center; padding: 20px;\">On Sale</div>"
175
+ ],
176
+ "banner": [],
177
+ "footer": [],
178
+ "left": [],
179
+ "inline": []
180
+ }
181
+ }
182
+ }
183
+ function getMerchandisingBannerUid(response, type) {
184
+ // Extract data-banner-id from the HTML string
185
+ const htmlString = response.merchandising?.content?.[type]?.[0] || '';
186
+ const match = typeof htmlString === 'string' && htmlString.match(/data-banner-id="(\d+)"/);
187
+ const uid = match ? match[1] : '';
188
+ return uid;
189
+ }
190
+ window.athos.tracker.events.search.impression({
191
+ data: {
192
+ responseId: response.responseId,
193
+ results: [],
194
+ banners: [
195
+ { uid: getMerchandisingBannerUid(response, 'header') } // { uid: '440998' }
196
+ ]
197
+ }
198
+ });
199
+ ```
200
+
201
+
202
+ ## Tracking Events
203
+
204
+ The Beacon class provides a comprehensive event tracking system organized by feature area. Each event method accepts a payload object containing the event data. An optional `siteId` can be provided to override the global siteId for a specific event.
205
+
206
+ ### Shopper Events
207
+
208
+ #### Login
209
+
210
+ Track when a user logs into their shopper account.
211
+
212
+ ```typescript
213
+ window.athos.tracker.events.shopper.login({
214
+ data: { id: 'shopper-12345' }
215
+ });
216
+ ```
217
+
218
+ ### Autocomplete Events
219
+
220
+ Autocomplete events track user interactions within the autocomplete/search suggestions interface.
221
+
222
+ #### Render
223
+
224
+ Track when autocomplete suggestions are rendered to the user.
225
+
226
+ ```typescript
227
+ window.athos.tracker.events.autocomplete.render({
228
+ data: {
229
+ responseId: response.responseId
230
+ }
231
+ });
232
+ ```
233
+
234
+ #### Impression
235
+
236
+ Track impressions (visibility) of autocomplete suggestions.
237
+
238
+ ```typescript
239
+ window.athos.tracker.events.autocomplete.impression({
240
+ data: {
241
+ responseId: response.responseId,
242
+ results: [
243
+ { type: 'product', uid: 'product-1', parentId: 'parent-1', sku: 'SKU-1' },
244
+ { type: 'banner', uid: 'banner-1' }
245
+ ],
246
+ banners: [
247
+ { uid: 'banner-1' }
248
+ ]
249
+ }
250
+ });
251
+ ```
252
+
253
+ #### Add to Cart
254
+
255
+ Track when a user adds a product to cart from autocomplete results.
256
+
257
+ ```typescript
258
+ window.athos.tracker.events.autocomplete.addToCart({
259
+ data: {
260
+ responseId: response.responseId,
261
+ results: [
262
+ {
263
+ uid: 'product-1',
264
+ parentId: 'parent-1',
265
+ sku: 'SKU-1',
266
+ qty: 1,
267
+ price: 29.99
268
+ }
269
+ ]
270
+ }
271
+ });
272
+ ```
273
+
274
+ This method automatically manages the stored cart state.
275
+
276
+ #### Click Through
277
+
278
+ Track when a user clicks on an autocomplete suggestion.
279
+
280
+ ```typescript
281
+ window.athos.tracker.events.autocomplete.clickThrough({
282
+ data: {
283
+ responseId: response.responseId,
284
+ results: [
285
+ {
286
+ type: 'product',
287
+ uid: 'product-1',
288
+ parentId: 'parent-1',
289
+ sku: 'SKU-1'
290
+ }
291
+ ]
292
+ }
293
+ });
294
+ ```
295
+
296
+ #### Redirect
297
+
298
+ Track when an autocomplete suggestion causes a page redirect.
299
+
300
+ ```typescript
301
+ const redirectUrl = response.merchandising?.redirect; // 'https://example.com/sale-page'
302
+ window.athos.tracker.events.autocomplete.redirect({
303
+ data: {
304
+ redirect: redirectUrl,
305
+ responseId: response.responseId
306
+ }
307
+ });
308
+ ```
309
+
310
+ ### Search Events
311
+
312
+ Search events track user interactions within search results pages.
313
+
314
+ #### Render
315
+
316
+ ```typescript
317
+ window.athos.tracker.events.search.render({
318
+ data: {
319
+ responseId: '607bafd1-f624-4e58-afa5-b8b8e90929f5'
320
+ }
321
+ });
322
+ ```
323
+
324
+ #### Impression
325
+
326
+ ```typescript
327
+ window.athos.tracker.events.search.impression({
328
+ data: {
329
+ responseId: '607bafd1-f624-4e58-afa5-b8b8e90929f5',
330
+ results: [
331
+ { type: 'product', uid: 'product-1', parentId: 'parent-1', sku: 'SKU-1' },
332
+ { type: 'product', uid: 'product-2', parentId: 'parent-2', sku: 'SKU-2' }
333
+ ],
334
+ banners: [{ uid: 'banner-1' }]
335
+ }
336
+ });
337
+ ```
338
+
339
+ #### Add to Cart
340
+
341
+ ```typescript
342
+ window.athos.tracker.events.search.addToCart({
343
+ data: {
344
+ responseId: '607bafd1-f624-4e58-afa5-b8b8e90929f5',
345
+ results: [
346
+ {
347
+ uid: 'product-1',
348
+ parentId: 'parent-1',
349
+ sku: 'SKU-1',
350
+ qty: 1,
351
+ price: 29.99
352
+ }
353
+ ]
354
+ }
355
+ });
356
+ ```
357
+
358
+ #### Click Through
359
+
360
+ ```typescript
361
+ window.athos.tracker.events.search.clickThrough({
362
+ data: {
363
+ responseId: '607bafd1-f624-4e58-afa5-b8b8e90929f5',
364
+ results: [
365
+ {
366
+ type: 'product',
367
+ uid: 'product-1',
368
+ parentId: 'parent-1',
369
+ sku: 'SKU-1'
370
+ }
371
+ ]
372
+ }
373
+ });
374
+ ```
375
+
376
+ #### Redirect
377
+
378
+ ```typescript
379
+ window.athos.tracker.events.search.redirect({
380
+ data: {
381
+ redirect: 'https://example.com/promo',
382
+ responseId: '607bafd1-f624-4e58-afa5-b8b8e90929f5'
383
+ }
384
+ });
385
+ ```
386
+
387
+ ### Category Events
388
+
389
+ Category events track user interactions on category/listing pages.
390
+
391
+ #### Render
392
+
393
+ ```typescript
394
+ window.athos.tracker.events.category.render({
395
+ data: {
396
+ responseId: '50c7aaf3-1909-43cd-8fff-a8e5c4452ddb'
397
+ }
398
+ });
399
+ ```
400
+
401
+ #### Impression
402
+
403
+ ```typescript
404
+ window.athos.tracker.events.category.impression({
405
+ data: {
406
+ responseId: '50c7aaf3-1909-43cd-8fff-a8e5c4452ddb',
407
+ results: [
408
+ { type: 'product', uid: 'product-1', parentId: 'parent-1', sku: 'SKU-1' }
409
+ ],
410
+ banners: []
411
+ }
412
+ });
413
+ ```
414
+
415
+ #### Add to Cart
416
+
417
+ ```typescript
418
+ window.athos.tracker.events.category.addToCart({
419
+ data: {
420
+ responseId: '50c7aaf3-1909-43cd-8fff-a8e5c4452ddb',
421
+ results: [
422
+ {
423
+ uid: 'product-1',
424
+ parentId: 'parent-1',
425
+ sku: 'SKU-1',
426
+ qty: 1,
427
+ price: 49.99
428
+ }
429
+ ]
430
+ }
431
+ });
432
+ ```
433
+
434
+ #### Click Through
435
+
436
+ ```typescript
437
+ window.athos.tracker.events.category.clickThrough({
438
+ data: {
439
+ responseId: '50c7aaf3-1909-43cd-8fff-a8e5c4452ddb',
440
+ results: [
441
+ {
442
+ type: 'product',
443
+ uid: 'product-1',
444
+ parentId: 'parent-1',
445
+ sku: 'SKU-1'
446
+ }
447
+ ]
448
+ }
449
+ });
450
+ ```
451
+
452
+ ### Recommendations Events
453
+
454
+ Recommendations events track interactions with personalized product recommendations.
455
+
456
+ #### Render
457
+
458
+ Track when a recommendation set is rendered to the user.
459
+
460
+ ```typescript
461
+ window.athos.tracker.events.recommendations.render({
462
+ data: {
463
+ tag: 'homepage-recommendations',
464
+ responseId: '1a304980-27d4-4f4b-96cc-758b280dfa7a'
465
+ }
466
+ });
467
+ ```
468
+
469
+ #### Impression
470
+
471
+ Track impressions of recommended products.
472
+
473
+ ```typescript
474
+ window.athos.tracker.events.recommendations.impression({
475
+ data: {
476
+ tag: 'homepage-recommendations',
477
+ responseId: '1a304980-27d4-4f4b-96cc-758b280dfa7a',
478
+ results: [
479
+ { type: 'product', uid: 'product-1', parentId: 'parent-1', sku: 'SKU-1' },
480
+ { type: 'product', uid: 'product-2', parentId: 'parent-2', sku: 'SKU-2' }
481
+ ],
482
+ banners: []
483
+ }
484
+ });
485
+ ```
486
+
487
+ #### Add to Cart
488
+
489
+ Track when a user adds a recommended product to cart.
490
+
491
+ ```typescript
492
+ window.athos.tracker.events.recommendations.addToCart({
493
+ data: {
494
+ tag: 'homepage-recommendations',
495
+ responseId: '1a304980-27d4-4f4b-96cc-758b280dfa7a',
496
+ results: [
497
+ {
498
+ uid: 'product-1',
499
+ parentId: 'parent-1',
500
+ sku: 'SKU-1',
501
+ qty: 1,
502
+ price: 39.99
503
+ }
504
+ ]
505
+ }
506
+ });
507
+ ```
508
+
509
+ #### Click Through
510
+
511
+ Track clicks on recommended products.
512
+
513
+ ```typescript
514
+ window.athos.tracker.events.recommendations.clickThrough({
515
+ data: {
516
+ tag: 'homepage-recommendations',
517
+ responseId: '1a304980-27d4-4f4b-96cc-758b280dfa7a',
518
+ results: [
519
+ {
520
+ type: 'product',
521
+ uid: 'product-1',
522
+ parentId: 'parent-1',
523
+ sku: 'SKU-1'
524
+ }
525
+ ]
526
+ }
527
+ });
528
+ ```
529
+
530
+ ### Product Events
531
+
532
+ #### Page View
533
+
534
+ Track product page views. This automatically updates the viewed products history.
535
+
536
+ ```typescript
537
+ window.athos.tracker.events.product.pageView({
538
+ data: {
539
+ result: {
540
+ uid: 'product-123',
541
+ parentId: 'parent-123',
542
+ sku: 'SKU-123'
543
+ }
544
+ }
545
+ });
546
+ ```
547
+
548
+ ### Cart Events
549
+
550
+ #### Add
551
+
552
+ Track when products are added to the cart.
553
+
554
+ ```typescript
555
+ window.athos.tracker.events.cart.add({
556
+ data: {
557
+ results: [
558
+ {
559
+ uid: 'product-1',
560
+ parentId: 'parent-1',
561
+ sku: 'SKU-1',
562
+ qty: 1,
563
+ price: 29.99
564
+ }
565
+ ],
566
+ cart: [
567
+ {
568
+ uid: 'product-1',
569
+ parentId: 'parent-1',
570
+ sku: 'SKU-1',
571
+ qty: 1,
572
+ price: 29.99
573
+ },
574
+ {
575
+ uid: 'product-2',
576
+ parentId: 'parent-2',
577
+ sku: 'SKU-2',
578
+ qty: 2,
579
+ price: 19.99
580
+ }
581
+ ]
582
+ }
583
+ });
584
+ ```
585
+
586
+ The cart state is automatically managed and synchronized with storage.
587
+
588
+ #### Remove
589
+
590
+ Track when products are removed from the cart.
591
+
592
+ ```typescript
593
+ window.athos.tracker.events.cart.remove({
594
+ data: {
595
+ results: [
596
+ { uid: 'product-1', parentId: 'parent-1', sku: 'SKU-1', qty: 1 }
597
+ ],
598
+ cart: [
599
+ {
600
+ uid: 'product-2',
601
+ parentId: 'parent-2',
602
+ sku: 'SKU-2',
603
+ qty: 2,
604
+ price: 19.99
605
+ }
606
+ ]
607
+ }
608
+ });
609
+ ```
610
+
611
+ ### Order Events
612
+
613
+ #### Transaction
614
+
615
+ Track completed transactions/orders.
616
+
617
+ ```typescript
618
+ window.athos.tracker.events.order.transaction({
619
+ data: {
620
+ orderId: 'order-12345',
621
+ transactionTotal: 119.97,
622
+ total: 129.97,
623
+ vat: 0.20,
624
+ city: 'New York',
625
+ state: 'NY',
626
+ country: 'US',
627
+ results: [
628
+ {
629
+ uid: 'product-1',
630
+ parentId: 'parent-1',
631
+ sku: 'SKU-1',
632
+ qty: 2,
633
+ price: 29.99
634
+ },
635
+ {
636
+ uid: 'product-2',
637
+ parentId: 'parent-2',
638
+ sku: 'SKU-2',
639
+ qty: 1,
640
+ price: 60.00
641
+ }
642
+ ]
643
+ }
644
+ });
645
+ ```
646
+
647
+ This method automatically clears the stored cart after tracking the transaction.
648
+
649
+ ### Error Tracking Events
650
+
651
+ #### Shopify Pixel Errors
652
+
653
+ Track errors from Shopify pixel implementations.
654
+
655
+ ```typescript
656
+ window.athos.tracker.events.error.shopifypixel({
657
+ data: {
658
+ message: 'Product not found',
659
+ stack: 'Error: Product not found\n at fetchProduct (app.js:45)',
660
+ details: {
661
+ productId: 'abc-123',
662
+ endpoint: '/api/products/abc-123'
663
+ }
664
+ }
665
+ });
666
+ ```
667
+
668
+ #### SNAP Errors
669
+
670
+ Track errors from SNAP implementations.
671
+
672
+ ```typescript
673
+ window.athos.tracker.events.error.snap({
674
+ data: {
675
+ message: 'Failed to load recommendations',
676
+ stack: 'Error: Network timeout\n at loadRecs (snap.js:120)',
677
+ details: {
678
+ tag: 'homepage-recs',
679
+ timeout: 5000
680
+ }
681
+ }
682
+ });
683
+ ```
684
+
685
+
686
+ ## Storage Management
687
+
688
+ Beacon automatically manages local storage and cookies to maintain user state across sessions. This includes:
689
+
690
+ - **User IDs**: Persisted for 18 months
691
+ - **Session IDs**: Persisted for 30 minutes
692
+ - **Cart**: Current items in the user's cart
693
+ - **Viewed Products**: Recently viewed products (up to 20 items)
694
+ - **Attribution**: Campaign/attribution source tracking
695
+
696
+ ### Cart Storage API
697
+
698
+ Access and manipulate the stored cart through the `storage.cart` API:
699
+
700
+ ```typescript
701
+ // Get current cart
702
+ const cartItems = beacon.storage.cart.get();
703
+
704
+ // Set cart to specific items
705
+ beacon.storage.cart.set([
706
+ { uid: 'p1', sku: 'SKU-1', qty: 2, price: 29.99 }
707
+ ]);
708
+
709
+ // Add items to cart
710
+ beacon.storage.cart.add([
711
+ { uid: 'p2', sku: 'SKU-2', qty: 1, price: 19.99 }
712
+ ]);
713
+
714
+ // Remove items from cart
715
+ beacon.storage.cart.remove([
716
+ { uid: 'p1', sku: 'SKU-1', qty: 1 }
717
+ ]);
718
+
719
+ // Clear cart
720
+ beacon.storage.cart.clear();
721
+ ```
722
+
723
+ ### Viewed Products Storage API
724
+
725
+ Access and manipulate the viewed products history:
726
+
727
+ ```typescript
728
+ // Get viewed products
729
+ const viewedItems = beacon.storage.viewed.get();
730
+
731
+ // Set viewed products
732
+ beacon.storage.viewed.set([
733
+ { uid: 'p1', sku: 'SKU-1' }
734
+ ]);
735
+
736
+ // Add to viewed products
737
+ beacon.storage.viewed.add([
738
+ { uid: 'p2', sku: 'SKU-2' }
739
+ ]);
740
+ ```
741
+
742
+ ## Public API Methods
743
+
744
+ ### `setCurrency(currency: Currency)`
745
+
746
+ Set or change the currency for tracking transactions.
747
+
748
+ ```typescript
749
+ const beacon = new Beacon({ siteId: 'abc123' });
750
+
751
+ // Set currency if not provided in globals
752
+ beacon.setCurrency({ code: 'EUR' });
753
+ ```
754
+
755
+ | Parameter | Type | Description |
756
+ |-----------|------|-------------|
757
+ | `currency.code` | `string` | ISO 4217 currency code |
758
+
759
+ ### `getContext(): Context`
760
+
761
+ Get the current tracking context including user, session, and page information.
762
+
763
+ ```typescript
764
+ const context = beacon.getContext();
765
+ // Returns: {
766
+ // userId: 'uuid-...',
767
+ // sessionId: 'uuid-...',
768
+ // pageLoadId: 'uuid-...',
769
+ // pageUrl: 'https://...',
770
+ // userAgent: '...',
771
+ // timestamp: '2024-01-01T...',
772
+ // ...
773
+ // }
774
+ ```
775
+
776
+ ### `updateContext(key: keyof Context, value: any)`
777
+
778
+ Update specific context properties.
779
+
780
+ ```typescript
781
+ beacon.updateContext('userId', 'custom-user-id');
782
+ beacon.updateContext('dev', 'development');
783
+ beacon.updateContext('pageUrl', 'https://example.com/new-page');
784
+ ```
785
+
786
+ ### User ID Management
787
+
788
+ #### `getUserId(): string`
789
+
790
+ Get or generate the current user ID.
791
+
792
+ ```typescript
793
+ const userId = beacon.getUserId();
794
+ ```
795
+
796
+ #### `getSessionId(): string`
797
+
798
+ Get or generate the current session ID (expires after 30 minutes of inactivity).
799
+
800
+ ```typescript
801
+ const sessionId = beacon.getSessionId();
802
+ ```
803
+
804
+ #### `getShopperId(): string`
805
+
806
+ Get the current shopper ID if set.
807
+
808
+ ```typescript
809
+ const shopperId = beacon.getShopperId();
810
+ ```
811
+
812
+ #### `setShopperId(shopperId: string): string | void`
813
+
814
+ Set the shopper ID and triggers both a login event to the beacon and preflight request for personalization.
815
+
816
+ ```typescript
817
+ const result = beacon.setShopperId('shopper-12345');
818
+ ```
819
+
820
+ ### `getPageLoadId(): string`
821
+
822
+ Get the current page load ID. Generate a new one with `pageLoad()`.
823
+
824
+ ```typescript
825
+ const pageLoadId = beacon.getPageLoadId();
826
+ ```
827
+
828
+ ### `pageLoad(): string`
829
+
830
+ Generate a new page load ID. Call this method when tracking page transitions or navigation within a single-page application.
831
+
832
+ ```typescript
833
+ const newPageLoadId = beacon.pageLoad();
834
+ ```
835
+
836
+ ### `getTimestamp(): string`
837
+
838
+ Get the current timestamp in ISO 8601 format.
839
+
840
+ ```typescript
841
+ const timestamp = beacon.getTimestamp();
842
+ ```
843
+
844
+ ### `sendPreflight(overrides?: PreflightRequestModel): void`
845
+
846
+ Send preflight data to the personalization API. This is automatically called when cart or shopper state changes, but can be manually triggered if needed.
847
+
848
+ ```typescript
849
+ beacon.sendPreflight();
850
+
851
+ // With overrides
852
+ beacon.sendPreflight({
853
+ userId: 'custom-user-id',
854
+ siteId: 'custom-site-id',
855
+ shopper: 'shopper-123',
856
+ cart: [/* products */],
857
+ lastViewed: [/* products */]
858
+ });
859
+ ```
860
+
861
+ ### `generateId(): string`
862
+
863
+ Generate and returns a new UUID.
864
+
865
+ ```typescript
866
+ const id = beacon.generateId();
867
+ ```
868
+
869
+ ## Advanced Usage
870
+
871
+ ### Custom Fetch Implementation
872
+
873
+ For environments where the standard `fetch` API is unavailable or needs to be customized (e.g., adding authentication, request interception), provide a custom fetch implementation:
874
+
875
+ ```typescript
876
+ // Custom fetch that adds authentication
877
+ const customFetch = async (url, options) => {
878
+ const response = await fetch(url, {
879
+ ...options,
880
+ headers: {
881
+ ...options.headers,
882
+ 'Authorization': `Bearer ${token}`
883
+ }
884
+ });
885
+ return response;
886
+ };
887
+
888
+ const beacon = new Beacon(
889
+ { siteId: 'abc123' },
890
+ {
891
+ apis: {
892
+ fetch: customFetch
893
+ }
894
+ }
895
+ );
896
+ ```
897
+
898
+ ### Custom API Endpoints
899
+
900
+ Override default API endpoints for internal proxying or custom infrastructure:
901
+
902
+ ```typescript
903
+ const beacon = new Beacon(
904
+ { siteId: 'abc123' },
905
+ {
906
+ requesters: {
907
+ beacon: {
908
+ origin: 'https://internal-api.example.com/beacon/v2',
909
+ headers: { 'X-Internal-Key': 'secret' }
910
+ },
911
+ personalization: {
912
+ origin: 'https://internal-api.example.com/personalization',
913
+ headers: { 'X-Internal-Key': 'secret' }
914
+ }
915
+ }
916
+ }
917
+ );
918
+ ```
919
+
920
+
921
+ ### Single Page Application (SPA) Support
922
+
923
+ For single-page applications, generate a new page load ID when the page/view changes:
924
+
925
+ ```typescript
926
+ // On navigation
927
+ const newPageLoadId = beacon.pageLoad();
928
+ console.log('New page load:', newPageLoadId);
929
+
930
+ // Track that we're now viewing a new product
931
+ window.athos.tracker.events.product.pageView({
932
+ data: {
933
+ result: { uid: 'new-product', sku: 'SKU-123' }
934
+ }
935
+ });
936
+ ```
937
+
938
+ ### Context Updates
939
+
940
+ Update tracking context dynamically as user behavior or application state changes:
941
+
942
+ ```typescript
943
+ // Update page URL for client-side routing
944
+ beacon.updateContext('pageUrl', window.location.href);
945
+ ```
946
+
947
+
948
+ ### Attribution Tracking
949
+
950
+ Attribution is automatically captured from url parameters (ie. https://example.com/products?ss_attribution=email:campaign-123) and will be placed on the beacon context.
951
+
952
+
953
+ ## Error Handling
954
+
955
+ ### Development Mode
956
+
957
+ Enabling development mode will prevent beacon events from appearing in reports in the Athos console.
958
+
959
+ ```typescript
960
+ const beacon = new Beacon(
961
+ { siteId: 'abc123' },
962
+ { mode: 'development' }
963
+ );
964
+ ```
965
+
966
+ ## License
967
+
968
+ MIT - See LICENSE file for details
969
+
970
+