flowgrid-sdk 1.2.1 → 1.3.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 (312) hide show
  1. package/README.md +224 -250
  2. package/dist/237.flowgrid.min.js +2 -0
  3. package/dist/237.flowgrid.min.js.map +1 -0
  4. package/dist/546.flowgrid.min.js +3 -0
  5. package/dist/546.flowgrid.min.js.LICENSE.txt +14 -0
  6. package/dist/546.flowgrid.min.js.map +1 -0
  7. package/dist/EXAMPLE.d.ts +1 -0
  8. package/dist/EXAMPLE.js +55 -0
  9. package/dist/EXAMPLE.js.map +1 -0
  10. package/dist/browser.d.ts +46 -103
  11. package/dist/browser.js +102 -0
  12. package/dist/browser.js.map +1 -0
  13. package/dist/flowgrid.min.js +1 -1
  14. package/dist/flowgrid.min.js.map +1 -1
  15. package/dist/index.d.ts +7 -8
  16. package/dist/index.js +64 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/lib/client/transport.d.ts +14 -4
  19. package/dist/lib/client/transport.js +432 -0
  20. package/dist/lib/client/transport.js.map +1 -0
  21. package/dist/lib/consent/index.d.ts +0 -5
  22. package/dist/lib/consent/index.js +32 -0
  23. package/dist/lib/consent/index.js.map +1 -0
  24. package/dist/lib/consent/manager.js +336 -0
  25. package/dist/lib/consent/manager.js.map +1 -0
  26. package/dist/lib/consent/types.d.ts +3 -20
  27. package/dist/lib/consent/types.js +10 -0
  28. package/dist/lib/consent/types.js.map +1 -0
  29. package/dist/lib/features/analytics/attribution.d.ts +6 -47
  30. package/dist/lib/features/analytics/attribution.js +181 -0
  31. package/dist/lib/features/analytics/attribution.js.map +1 -0
  32. package/dist/lib/features/analytics/events.d.ts +1 -28
  33. package/dist/lib/features/analytics/events.js +256 -0
  34. package/dist/lib/features/analytics/events.js.map +1 -0
  35. package/dist/lib/features/analytics/funnels.js +260 -0
  36. package/dist/lib/features/analytics/funnels.js.map +1 -0
  37. package/dist/lib/features/analytics/heatmaps.d.ts +12 -19
  38. package/dist/lib/features/analytics/heatmaps.js +258 -0
  39. package/dist/lib/features/analytics/heatmaps.js.map +1 -0
  40. package/dist/lib/features/analytics/identify.d.ts +1 -21
  41. package/dist/lib/features/analytics/identify.js +213 -0
  42. package/dist/lib/features/analytics/identify.js.map +1 -0
  43. package/dist/lib/features/analytics/index.d.ts +2 -0
  44. package/dist/lib/features/analytics/index.js +15 -0
  45. package/dist/lib/features/analytics/index.js.map +1 -0
  46. package/dist/lib/features/analytics/page-views.d.ts +13 -30
  47. package/dist/lib/features/analytics/page-views.js +268 -0
  48. package/dist/lib/features/analytics/page-views.js.map +1 -0
  49. package/dist/lib/features/analytics/performance.d.ts +18 -24
  50. package/dist/lib/features/analytics/performance.js +232 -0
  51. package/dist/lib/features/analytics/performance.js.map +1 -0
  52. package/dist/lib/features/analytics/replay.d.ts +170 -0
  53. package/dist/lib/features/analytics/replay.js +381 -0
  54. package/dist/lib/features/analytics/replay.js.map +1 -0
  55. package/dist/lib/features/analytics/retention.d.ts +1 -76
  56. package/dist/lib/features/analytics/retention.js +135 -0
  57. package/dist/lib/features/analytics/retention.js.map +1 -0
  58. package/dist/lib/features/analytics/sessions.d.ts +12 -37
  59. package/dist/lib/features/analytics/sessions.js +213 -0
  60. package/dist/lib/features/analytics/sessions.js.map +1 -0
  61. package/dist/lib/features/core/activation.d.ts +1 -24
  62. package/dist/lib/features/core/activation.js +175 -0
  63. package/dist/lib/features/core/activation.js.map +1 -0
  64. package/dist/lib/features/core/experiment.d.ts +53 -21
  65. package/dist/lib/features/core/experiment.js +554 -0
  66. package/dist/lib/features/core/experiment.js.map +1 -0
  67. package/dist/lib/features/core/index.js +9 -0
  68. package/dist/lib/features/core/index.js.map +1 -0
  69. package/dist/lib/features/core/track-feature.d.ts +1 -8
  70. package/dist/lib/features/core/track-feature.js +119 -0
  71. package/dist/lib/features/core/track-feature.js.map +1 -0
  72. package/dist/lib/features/core/track-prompt.d.ts +5 -8
  73. package/dist/lib/features/core/track-prompt.js +181 -0
  74. package/dist/lib/features/core/track-prompt.js.map +1 -0
  75. package/dist/lib/features/ecommerce/cart.d.ts +1 -24
  76. package/dist/lib/features/ecommerce/cart.js +244 -0
  77. package/dist/lib/features/ecommerce/cart.js.map +1 -0
  78. package/dist/lib/features/ecommerce/checkout.d.ts +1 -28
  79. package/dist/lib/features/ecommerce/checkout.js +254 -0
  80. package/dist/lib/features/ecommerce/checkout.js.map +1 -0
  81. package/dist/lib/features/ecommerce/index.d.ts +0 -2
  82. package/dist/lib/features/ecommerce/index.js +15 -0
  83. package/dist/lib/features/ecommerce/index.js.map +1 -0
  84. package/dist/lib/features/ecommerce/ltv.d.ts +1 -69
  85. package/dist/lib/features/ecommerce/ltv.js +114 -0
  86. package/dist/lib/features/ecommerce/ltv.js.map +1 -0
  87. package/dist/lib/features/ecommerce/products.d.ts +1 -33
  88. package/dist/lib/features/ecommerce/products.js +223 -0
  89. package/dist/lib/features/ecommerce/products.js.map +1 -0
  90. package/dist/lib/features/ecommerce/promotions.d.ts +1 -30
  91. package/dist/lib/features/ecommerce/promotions.js +197 -0
  92. package/dist/lib/features/ecommerce/promotions.js.map +1 -0
  93. package/dist/lib/features/ecommerce/purchases.d.ts +1 -48
  94. package/dist/lib/features/ecommerce/purchases.js +193 -0
  95. package/dist/lib/features/ecommerce/purchases.js.map +1 -0
  96. package/dist/lib/features/ecommerce/refunds.d.ts +1 -27
  97. package/dist/lib/features/ecommerce/refunds.js +195 -0
  98. package/dist/lib/features/ecommerce/refunds.js.map +1 -0
  99. package/dist/lib/features/ecommerce/search.d.ts +1 -24
  100. package/dist/lib/features/ecommerce/search.js +156 -0
  101. package/dist/lib/features/ecommerce/search.js.map +1 -0
  102. package/dist/lib/features/ecommerce/subscriptions.d.ts +1 -28
  103. package/dist/lib/features/ecommerce/subscriptions.js +207 -0
  104. package/dist/lib/features/ecommerce/subscriptions.js.map +1 -0
  105. package/dist/lib/features/ecommerce/wishlist.d.ts +1 -28
  106. package/dist/lib/features/ecommerce/wishlist.js +186 -0
  107. package/dist/lib/features/ecommerce/wishlist.js.map +1 -0
  108. package/dist/lib/features/enterprise/acquisition.d.ts +2 -57
  109. package/dist/lib/features/enterprise/acquisition.js +166 -0
  110. package/dist/lib/features/enterprise/acquisition.js.map +1 -0
  111. package/dist/lib/features/enterprise/alerts.d.ts +1 -37
  112. package/dist/lib/features/enterprise/alerts.js +246 -0
  113. package/dist/lib/features/enterprise/alerts.js.map +1 -0
  114. package/dist/lib/features/enterprise/churn.d.ts +1 -42
  115. package/dist/lib/features/enterprise/churn.js +175 -0
  116. package/dist/lib/features/enterprise/churn.js.map +1 -0
  117. package/dist/lib/features/enterprise/cohorts.d.ts +1 -37
  118. package/dist/lib/features/enterprise/cohorts.js +201 -0
  119. package/dist/lib/features/enterprise/cohorts.js.map +1 -0
  120. package/dist/lib/features/enterprise/engagement.d.ts +40 -46
  121. package/dist/lib/features/enterprise/engagement.js +335 -0
  122. package/dist/lib/features/enterprise/engagement.js.map +1 -0
  123. package/dist/lib/features/enterprise/forecasting.d.ts +0 -50
  124. package/dist/lib/features/enterprise/forecasting.js +232 -0
  125. package/dist/lib/features/enterprise/forecasting.js.map +1 -0
  126. package/dist/lib/features/enterprise/index.d.ts +1 -1
  127. package/dist/lib/features/enterprise/index.js +76 -0
  128. package/dist/lib/features/enterprise/index.js.map +1 -0
  129. package/dist/lib/features/enterprise/monetization.d.ts +1 -60
  130. package/dist/lib/features/enterprise/monetization.js +146 -0
  131. package/dist/lib/features/enterprise/monetization.js.map +1 -0
  132. package/dist/lib/features/enterprise/multi-path-funnels.d.ts +1 -17
  133. package/dist/lib/features/enterprise/multi-path-funnels.js +205 -0
  134. package/dist/lib/features/enterprise/multi-path-funnels.js.map +1 -0
  135. package/dist/lib/features/enterprise/paths.d.ts +1 -56
  136. package/dist/lib/features/enterprise/paths.js +149 -0
  137. package/dist/lib/features/enterprise/paths.js.map +1 -0
  138. package/dist/lib/features/enterprise/security.d.ts +8 -57
  139. package/dist/lib/features/enterprise/security.js +202 -0
  140. package/dist/lib/features/enterprise/security.js.map +1 -0
  141. package/dist/lib/features/enterprise/support.d.ts +3 -42
  142. package/dist/lib/features/enterprise/support.js +162 -0
  143. package/dist/lib/features/enterprise/support.js.map +1 -0
  144. package/dist/lib/flowgrid.d.ts +278 -0
  145. package/dist/lib/flowgrid.js +323 -0
  146. package/dist/lib/flowgrid.js.map +1 -0
  147. package/dist/lib/frameworks/index.d.ts +13 -6
  148. package/dist/lib/frameworks/index.js +18 -0
  149. package/dist/lib/frameworks/index.js.map +1 -0
  150. package/dist/lib/frameworks/nextjs/client.js +355 -0
  151. package/dist/lib/frameworks/nextjs/client.js.map +1 -0
  152. package/dist/lib/frameworks/nextjs/index.js +31 -0
  153. package/dist/lib/frameworks/nextjs/index.js.map +1 -0
  154. package/dist/lib/frameworks/nextjs/server.js +259 -0
  155. package/dist/lib/frameworks/nextjs/server.js.map +1 -0
  156. package/dist/lib/frameworks/node/index.js +391 -0
  157. package/dist/lib/frameworks/node/index.js.map +1 -0
  158. package/dist/lib/frameworks/nuxt/index.js +288 -0
  159. package/dist/lib/frameworks/nuxt/index.js.map +1 -0
  160. package/dist/lib/frameworks/react/CookieBanner.js +166 -0
  161. package/dist/lib/frameworks/react/CookieBanner.js.map +1 -0
  162. package/dist/lib/frameworks/react/index.js +271 -0
  163. package/dist/lib/frameworks/react/index.js.map +1 -0
  164. package/dist/lib/frameworks/vue/CookieBanner.js +165 -0
  165. package/dist/lib/frameworks/vue/CookieBanner.js.map +1 -0
  166. package/dist/lib/frameworks/vue/index.js +390 -0
  167. package/dist/lib/frameworks/vue/index.js.map +1 -0
  168. package/dist/lib/tracking/analytics/attribution.d.ts +14 -0
  169. package/dist/lib/tracking/analytics/attribution.js +18 -0
  170. package/dist/lib/tracking/analytics/attribution.js.map +1 -0
  171. package/dist/lib/tracking/analytics/events.d.ts +26 -0
  172. package/dist/lib/tracking/analytics/events.js +30 -0
  173. package/dist/lib/tracking/analytics/events.js.map +1 -0
  174. package/dist/lib/tracking/analytics/funnels.d.ts +16 -0
  175. package/dist/lib/tracking/analytics/funnels.js +22 -0
  176. package/dist/lib/tracking/analytics/funnels.js.map +1 -0
  177. package/dist/lib/tracking/analytics/heatmaps.d.ts +27 -0
  178. package/dist/lib/tracking/analytics/heatmaps.js +22 -0
  179. package/dist/lib/tracking/analytics/heatmaps.js.map +1 -0
  180. package/dist/lib/tracking/analytics/identify.d.ts +16 -0
  181. package/dist/lib/tracking/analytics/identify.js +22 -0
  182. package/dist/lib/tracking/analytics/identify.js.map +1 -0
  183. package/dist/lib/tracking/analytics/index.d.ts +10 -0
  184. package/dist/lib/tracking/analytics/index.js +11 -0
  185. package/dist/lib/tracking/analytics/index.js.map +1 -0
  186. package/dist/lib/tracking/analytics/page-views.d.ts +29 -0
  187. package/dist/lib/tracking/analytics/page-views.js +50 -0
  188. package/dist/lib/tracking/analytics/page-views.js.map +1 -0
  189. package/dist/lib/tracking/analytics/performance.d.ts +22 -0
  190. package/dist/lib/tracking/analytics/performance.js +22 -0
  191. package/dist/lib/tracking/analytics/performance.js.map +1 -0
  192. package/dist/lib/tracking/analytics/replay.d.ts +34 -0
  193. package/dist/lib/tracking/analytics/replay.js +46 -0
  194. package/dist/lib/tracking/analytics/replay.js.map +1 -0
  195. package/dist/lib/tracking/analytics/retention.d.ts +10 -0
  196. package/dist/lib/tracking/analytics/retention.js +10 -0
  197. package/dist/lib/tracking/analytics/retention.js.map +1 -0
  198. package/dist/lib/tracking/analytics/sessions.d.ts +20 -0
  199. package/dist/lib/tracking/analytics/sessions.js +26 -0
  200. package/dist/lib/tracking/analytics/sessions.js.map +1 -0
  201. package/dist/lib/tracking/core/activation.d.ts +23 -0
  202. package/dist/lib/tracking/core/activation.js +33 -0
  203. package/dist/lib/tracking/core/activation.js.map +1 -0
  204. package/dist/lib/tracking/core/experiment.d.ts +122 -0
  205. package/dist/lib/tracking/core/experiment.js +150 -0
  206. package/dist/lib/tracking/core/experiment.js.map +1 -0
  207. package/dist/lib/tracking/core/feature.d.ts +13 -0
  208. package/dist/lib/tracking/core/feature.js +14 -0
  209. package/dist/lib/tracking/core/feature.js.map +1 -0
  210. package/dist/lib/tracking/core/index.d.ts +4 -0
  211. package/dist/lib/tracking/core/index.js +5 -0
  212. package/dist/lib/tracking/core/index.js.map +1 -0
  213. package/dist/lib/tracking/core/prompt.d.ts +18 -0
  214. package/dist/lib/tracking/core/prompt.js +26 -0
  215. package/dist/lib/tracking/core/prompt.js.map +1 -0
  216. package/dist/lib/tracking/ecommerce/cart.d.ts +17 -0
  217. package/dist/lib/tracking/ecommerce/cart.js +22 -0
  218. package/dist/lib/tracking/ecommerce/cart.js.map +1 -0
  219. package/dist/lib/tracking/ecommerce/checkout.d.ts +17 -0
  220. package/dist/lib/tracking/ecommerce/checkout.js +22 -0
  221. package/dist/lib/tracking/ecommerce/checkout.js.map +1 -0
  222. package/dist/lib/tracking/ecommerce/index.d.ts +10 -0
  223. package/dist/lib/tracking/ecommerce/index.js +11 -0
  224. package/dist/lib/tracking/ecommerce/index.js.map +1 -0
  225. package/dist/lib/tracking/ecommerce/ltv.d.ts +15 -0
  226. package/dist/lib/tracking/ecommerce/ltv.js +14 -0
  227. package/dist/lib/tracking/ecommerce/ltv.js.map +1 -0
  228. package/dist/lib/tracking/ecommerce/products.d.ts +15 -0
  229. package/dist/lib/tracking/ecommerce/products.js +18 -0
  230. package/dist/lib/tracking/ecommerce/products.js.map +1 -0
  231. package/dist/lib/tracking/ecommerce/promotions.d.ts +14 -0
  232. package/dist/lib/tracking/ecommerce/promotions.js +25 -0
  233. package/dist/lib/tracking/ecommerce/promotions.js.map +1 -0
  234. package/dist/lib/tracking/ecommerce/purchases.d.ts +11 -0
  235. package/dist/lib/tracking/ecommerce/purchases.js +10 -0
  236. package/dist/lib/tracking/ecommerce/purchases.js.map +1 -0
  237. package/dist/lib/tracking/ecommerce/refunds.d.ts +17 -0
  238. package/dist/lib/tracking/ecommerce/refunds.js +22 -0
  239. package/dist/lib/tracking/ecommerce/refunds.js.map +1 -0
  240. package/dist/lib/tracking/ecommerce/search.d.ts +24 -0
  241. package/dist/lib/tracking/ecommerce/search.js +22 -0
  242. package/dist/lib/tracking/ecommerce/search.js.map +1 -0
  243. package/dist/lib/tracking/ecommerce/subscriptions.d.ts +21 -0
  244. package/dist/lib/tracking/ecommerce/subscriptions.js +38 -0
  245. package/dist/lib/tracking/ecommerce/subscriptions.js.map +1 -0
  246. package/dist/lib/tracking/ecommerce/wishlist.d.ts +19 -0
  247. package/dist/lib/tracking/ecommerce/wishlist.js +26 -0
  248. package/dist/lib/tracking/ecommerce/wishlist.js.map +1 -0
  249. package/dist/lib/tracking/enterprise/acquisition.d.ts +25 -0
  250. package/dist/lib/tracking/enterprise/acquisition.js +22 -0
  251. package/dist/lib/tracking/enterprise/acquisition.js.map +1 -0
  252. package/dist/lib/tracking/enterprise/alerts.d.ts +32 -0
  253. package/dist/lib/tracking/enterprise/alerts.js +30 -0
  254. package/dist/lib/tracking/enterprise/alerts.js.map +1 -0
  255. package/dist/lib/tracking/enterprise/churn.d.ts +23 -0
  256. package/dist/lib/tracking/enterprise/churn.js +22 -0
  257. package/dist/lib/tracking/enterprise/churn.js.map +1 -0
  258. package/dist/lib/tracking/enterprise/cohorts.d.ts +18 -0
  259. package/dist/lib/tracking/enterprise/cohorts.js +18 -0
  260. package/dist/lib/tracking/enterprise/cohorts.js.map +1 -0
  261. package/dist/lib/tracking/enterprise/engagement.d.ts +31 -0
  262. package/dist/lib/tracking/enterprise/engagement.js +44 -0
  263. package/dist/lib/tracking/enterprise/engagement.js.map +1 -0
  264. package/dist/lib/tracking/enterprise/forecasting.d.ts +18 -0
  265. package/dist/lib/tracking/enterprise/forecasting.js +22 -0
  266. package/dist/lib/tracking/enterprise/forecasting.js.map +1 -0
  267. package/dist/lib/tracking/enterprise/index.d.ts +11 -0
  268. package/dist/lib/tracking/enterprise/index.js +12 -0
  269. package/dist/lib/tracking/enterprise/index.js.map +1 -0
  270. package/dist/lib/tracking/enterprise/monetization.d.ts +14 -0
  271. package/dist/lib/tracking/enterprise/monetization.js +10 -0
  272. package/dist/lib/tracking/enterprise/monetization.js.map +1 -0
  273. package/dist/lib/tracking/enterprise/multi-path-funnels.d.ts +20 -0
  274. package/dist/lib/tracking/enterprise/multi-path-funnels.js +18 -0
  275. package/dist/lib/tracking/enterprise/multi-path-funnels.js.map +1 -0
  276. package/dist/lib/tracking/enterprise/paths.d.ts +20 -0
  277. package/dist/lib/tracking/enterprise/paths.js +18 -0
  278. package/dist/lib/tracking/enterprise/paths.js.map +1 -0
  279. package/dist/lib/tracking/enterprise/security.d.ts +28 -0
  280. package/dist/lib/tracking/enterprise/security.js +26 -0
  281. package/dist/lib/tracking/enterprise/security.js.map +1 -0
  282. package/dist/lib/tracking/enterprise/support.d.ts +25 -0
  283. package/dist/lib/tracking/enterprise/support.js +22 -0
  284. package/dist/lib/tracking/enterprise/support.js.map +1 -0
  285. package/dist/lib/tracking/index.d.ts +4 -0
  286. package/dist/lib/tracking/index.js +5 -0
  287. package/dist/lib/tracking/index.js.map +1 -0
  288. package/dist/lib/types/analytics.d.ts +10 -2
  289. package/dist/lib/types/analytics.js +6 -0
  290. package/dist/lib/types/analytics.js.map +1 -0
  291. package/dist/lib/types/common.js +6 -0
  292. package/dist/lib/types/common.js.map +1 -0
  293. package/dist/lib/types/ecommerce.js +6 -0
  294. package/dist/lib/types/ecommerce.js.map +1 -0
  295. package/dist/lib/types/index.js +8 -0
  296. package/dist/lib/types/index.js.map +1 -0
  297. package/dist/lib/utils/browser.d.ts +16 -0
  298. package/dist/lib/utils/browser.js +32 -0
  299. package/dist/lib/utils/browser.js.map +1 -0
  300. package/dist/lib/utils/identity.js +346 -0
  301. package/dist/lib/utils/identity.js.map +1 -0
  302. package/dist/lib/utils/storage.js +105 -0
  303. package/dist/lib/utils/storage.js.map +1 -0
  304. package/dist/umd/237.index.js +2 -0
  305. package/dist/umd/237.index.js.map +1 -0
  306. package/dist/umd/546.index.js +3 -0
  307. package/dist/umd/546.index.js.LICENSE.txt +14 -0
  308. package/dist/umd/546.index.js.map +1 -0
  309. package/dist/umd/index.js +2 -0
  310. package/dist/umd/index.js.map +1 -0
  311. package/package.json +27 -80
  312. package/dist/lib/features/ecommerce/inventory.d.ts +0 -219
@@ -0,0 +1,207 @@
1
+ /**
2
+ * @fileoverview Ecommerce - Subscription & Recurring Revenue
3
+ * @module features/ecommerce/subscriptions
4
+ *
5
+ * @description
6
+ * Track subscription lifecycle events for SaaS and subscription
7
+ * ecommerce businesses.
8
+ *
9
+ * @useCases
10
+ * - Track subscription signups
11
+ * - Monitor subscription changes (upgrades/downgrades)
12
+ * - Track cancellations and churn
13
+ * - Calculate MRR/ARR metrics
14
+ * - Analyze subscription cohorts
15
+ *
16
+ * @metrics
17
+ * - Monthly Recurring Revenue (MRR)
18
+ * - Annual Recurring Revenue (ARR)
19
+ * - Churn rate
20
+ * - Expansion revenue
21
+ * - Net revenue retention
22
+ *
23
+ * @chartData
24
+ * - Line chart: MRR over time
25
+ * - Waterfall: MRR movement
26
+ * - Bar chart: Revenue by plan
27
+ * - Cohort: Subscription retention
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const subscriptions = new Subscriptions(webId, endpoint, apiKey);
32
+ *
33
+ * // Track subscription start
34
+ * await subscriptions.start({
35
+ * subscriptionId: 'sub_123',
36
+ * userId: 'user_456',
37
+ * plan: 'pro',
38
+ * mrr: { amount: 4900, currency: 'USD' },
39
+ * billingCycle: 'monthly'
40
+ * });
41
+ * ```
42
+ */
43
+ import { FlowGridTransport } from "../../client/transport";
44
+ // ============================================================================
45
+ // SUBSCRIPTIONS CLASS
46
+ // ============================================================================
47
+ /**
48
+ * Subscriptions - Track subscription lifecycle events.
49
+ *
50
+ * @extends FlowGridTransport
51
+ *
52
+ * @description
53
+ * Provides subscription tracking including:
54
+ * - Subscription starts (new MRR)
55
+ * - Plan changes (expansion/contraction)
56
+ * - Cancellations (churned MRR)
57
+ * - Renewals
58
+ * - Trial conversions
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const subscriptions = new Subscriptions(webId, endpoint, apiKey);
63
+ *
64
+ * // New subscription
65
+ * await subscriptions.start({
66
+ * subscriptionId: 'sub_abc123',
67
+ * userId: 'user_456',
68
+ * plan: 'professional',
69
+ * mrr: { amount: 9900, currency: 'USD' },
70
+ * billingCycle: 'monthly',
71
+ * trialDays: 14
72
+ * });
73
+ *
74
+ * // Upgrade
75
+ * await subscriptions.change({
76
+ * subscriptionId: 'sub_abc123',
77
+ * userId: 'user_456',
78
+ * previousPlan: 'professional',
79
+ * newPlan: 'enterprise',
80
+ * previousMrr: { amount: 9900, currency: 'USD' },
81
+ * newMrr: { amount: 29900, currency: 'USD' },
82
+ * changeType: 'upgrade'
83
+ * });
84
+ * ```
85
+ */
86
+ export class Subscriptions extends FlowGridTransport {
87
+ /**
88
+ * Tracks subscription start.
89
+ *
90
+ * @param config - Subscription start configuration
91
+ * @returns Promise resolving to subscription response
92
+ */
93
+ async start(config) {
94
+ return await this.init("subscription_start", {
95
+ type: "ecommerce",
96
+ subtype: "subscription_start",
97
+ subscriptionId: config.subscriptionId,
98
+ userId: config.userId,
99
+ plan: config.plan,
100
+ mrr: config.mrr,
101
+ billingCycle: config.billingCycle,
102
+ trialDays: config.trialDays,
103
+ coupon: config.coupon,
104
+ isTrialing: (config.trialDays || 0) > 0,
105
+ ...config.properties,
106
+ timestamp: new Date().toISOString()
107
+ });
108
+ }
109
+ /**
110
+ * Tracks subscription plan change.
111
+ *
112
+ * @param config - Subscription change configuration
113
+ * @returns Promise resolving to subscription response
114
+ */
115
+ async change(config) {
116
+ const mrrDiff = config.newMrr.amount - config.previousMrr.amount;
117
+ return await this.init("subscription_change", {
118
+ type: "ecommerce",
119
+ subtype: "subscription_change",
120
+ subscriptionId: config.subscriptionId,
121
+ userId: config.userId,
122
+ previousPlan: config.previousPlan,
123
+ newPlan: config.newPlan,
124
+ previousMrr: config.previousMrr,
125
+ newMrr: config.newMrr,
126
+ mrrChange: mrrDiff,
127
+ changeType: config.changeType,
128
+ timestamp: new Date().toISOString()
129
+ });
130
+ }
131
+ /**
132
+ * Tracks subscription cancellation.
133
+ *
134
+ * @param config - Cancellation configuration
135
+ * @returns Promise resolving to subscription response
136
+ */
137
+ async cancel(config) {
138
+ return await this.init("subscription_cancel", {
139
+ type: "ecommerce",
140
+ subtype: "subscription_cancel",
141
+ subscriptionId: config.subscriptionId,
142
+ userId: config.userId,
143
+ plan: config.plan,
144
+ lostMrr: config.lostMrr,
145
+ reason: config.reason,
146
+ feedback: config.feedback,
147
+ immediate: config.immediate,
148
+ timestamp: new Date().toISOString()
149
+ });
150
+ }
151
+ /**
152
+ * Tracks subscription renewal.
153
+ *
154
+ * @param subscriptionId - Subscription ID
155
+ * @param userId - User ID
156
+ * @param mrr - Renewed MRR
157
+ * @returns Promise resolving to subscription response
158
+ */
159
+ async renew(subscriptionId, userId, mrr) {
160
+ return await this.init("subscription_renew", {
161
+ type: "ecommerce",
162
+ subtype: "subscription_renew",
163
+ subscriptionId,
164
+ userId,
165
+ mrr,
166
+ timestamp: new Date().toISOString()
167
+ });
168
+ }
169
+ /**
170
+ * Tracks trial conversion to paid.
171
+ *
172
+ * @param subscriptionId - Subscription ID
173
+ * @param userId - User ID
174
+ * @param plan - Converted to plan
175
+ * @param mrr - New MRR
176
+ * @returns Promise resolving to subscription response
177
+ */
178
+ async trialConverted(subscriptionId, userId, plan, mrr) {
179
+ return await this.init("trial_converted", {
180
+ type: "ecommerce",
181
+ subtype: "trial_converted",
182
+ subscriptionId,
183
+ userId,
184
+ plan,
185
+ mrr,
186
+ timestamp: new Date().toISOString()
187
+ });
188
+ }
189
+ /**
190
+ * Tracks trial expiration without conversion.
191
+ *
192
+ * @param subscriptionId - Subscription ID
193
+ * @param userId - User ID
194
+ * @returns Promise resolving to subscription response
195
+ */
196
+ async trialExpired(subscriptionId, userId) {
197
+ return await this.init("trial_expired", {
198
+ type: "ecommerce",
199
+ subtype: "trial_expired",
200
+ subscriptionId,
201
+ userId,
202
+ timestamp: new Date().toISOString()
203
+ });
204
+ }
205
+ }
206
+ export default Subscriptions;
207
+ //# sourceMappingURL=subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../../../src/lib/features/ecommerce/subscriptions.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@
38
38
  * ```
39
39
  */
40
40
  import { FlowGridTransport } from "../../client/transport";
41
- import { Product, Wishlist, DateRangeFilter, TimeSeriesData } from "../../types";
41
+ import { Product, Wishlist, TimeSeriesData } from "../../types";
42
42
  /**
43
43
  * Configuration for adding to wishlist.
44
44
  */
@@ -205,32 +205,5 @@ export declare class WishlistTracking extends FlowGridTransport {
205
205
  * @returns Promise resolving to wishlist response
206
206
  */
207
207
  share(wishlistId: string, method: 'email' | 'link' | 'social'): Promise<WishlistResponse>;
208
- /**
209
- * Retrieves wishlist analytics for dashboards and charts.
210
- *
211
- * @param filter - Date range filter
212
- * @returns Promise resolving to wishlist analytics
213
- *
214
- * @example
215
- * ```typescript
216
- * const analytics = await wishlist.getAnalytics({
217
- * range: 'last30days'
218
- * });
219
- *
220
- * // Bar chart - top wishlisted products
221
- * const topProducts = analytics.topProducts.map(p => ({
222
- * name: p.product.name,
223
- * value: p.wishlistCount
224
- * }));
225
- *
226
- * // Funnel - wishlist to purchase
227
- * const funnel = [
228
- * { name: 'Wishlisted', value: analytics.conversionFunnel.wishlisted },
229
- * { name: 'Added to Cart', value: analytics.conversionFunnel.addedToCart },
230
- * { name: 'Purchased', value: analytics.conversionFunnel.purchased }
231
- * ];
232
- * ```
233
- */
234
- getAnalytics(filter?: DateRangeFilter): Promise<WishlistAnalyticsData>;
235
208
  }
236
209
  export default WishlistTracking;
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @fileoverview Ecommerce - Wishlist Tracking
3
+ * @module features/ecommerce/wishlist
4
+ *
5
+ * @description
6
+ * Track wishlist interactions to understand purchase intent
7
+ * and drive conversions from saved items.
8
+ *
9
+ * @useCases
10
+ * - Track wishlist additions
11
+ * - Monitor wishlist to cart conversions
12
+ * - Identify popular wishlist items
13
+ * - Trigger price drop notifications
14
+ * - Analyze wishlist behavior patterns
15
+ *
16
+ * @metrics
17
+ * - Wishlist additions
18
+ * - Wishlist to cart rate
19
+ * - Wishlist to purchase rate
20
+ * - Average items per wishlist
21
+ * - Top wishlisted products
22
+ *
23
+ * @chartData
24
+ * - Bar chart: Top wishlisted products
25
+ * - Line chart: Wishlist activity over time
26
+ * - Funnel: Wishlist to purchase conversion
27
+ * - Table: Wishlist conversion rates by product
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const wishlist = new WishlistTracking(webId, endpoint, apiKey);
32
+ *
33
+ * // Add to wishlist
34
+ * await wishlist.add({
35
+ * product: { productId: 'PROD-123', name: 'Widget', price: 49.99, currency: 'USD' },
36
+ * wishlistId: 'wl_user123'
37
+ * });
38
+ * ```
39
+ */
40
+ import { FlowGridTransport } from "../../client/transport";
41
+ // ============================================================================
42
+ // WISHLIST TRACKING CLASS
43
+ // ============================================================================
44
+ /**
45
+ * WishlistTracking - Track wishlist interactions.
46
+ *
47
+ * @extends FlowGridTransport
48
+ *
49
+ * @description
50
+ * Provides wishlist tracking capabilities including:
51
+ * - Add to wishlist events
52
+ * - Remove from wishlist events
53
+ * - Wishlist views
54
+ * - Move to cart tracking
55
+ * - Wishlist sharing
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const wishlist = new WishlistTracking(webId, endpoint, apiKey);
60
+ *
61
+ * // Add product to wishlist
62
+ * await wishlist.add({
63
+ * product: {
64
+ * productId: 'PROD-001',
65
+ * name: 'Designer Bag',
66
+ * price: 299.99,
67
+ * currency: 'USD'
68
+ * },
69
+ * source: 'product_page'
70
+ * });
71
+ *
72
+ * // Track wishlist view
73
+ * await wishlist.view({
74
+ * wishlistId: 'wl_user123',
75
+ * items: wishlistItems
76
+ * });
77
+ * ```
78
+ */
79
+ export class WishlistTracking extends FlowGridTransport {
80
+ /**
81
+ * Tracks adding product to wishlist.
82
+ *
83
+ * @param config - Add to wishlist configuration
84
+ * @returns Promise resolving to wishlist response
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * await wishlist.add({
89
+ * product: {
90
+ * productId: 'SKU-789',
91
+ * name: 'Premium Sneakers',
92
+ * price: 159.99,
93
+ * currency: 'USD',
94
+ * category: 'Footwear'
95
+ * },
96
+ * source: 'product_page'
97
+ * });
98
+ * ```
99
+ */
100
+ async add(config) {
101
+ return await this.init("add_to_wishlist", {
102
+ type: "ecommerce",
103
+ subtype: "add_to_wishlist",
104
+ product: config.product,
105
+ wishlistId: config.wishlistId,
106
+ userId: config.userId,
107
+ source: config.source,
108
+ timestamp: new Date().toISOString()
109
+ });
110
+ }
111
+ /**
112
+ * Tracks removing product from wishlist.
113
+ *
114
+ * @param config - Remove from wishlist configuration
115
+ * @returns Promise resolving to wishlist response
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * await wishlist.remove({
120
+ * product: productToRemove,
121
+ * wishlistId: 'wl_user123',
122
+ * reason: 'moved_to_cart'
123
+ * });
124
+ * ```
125
+ */
126
+ async remove(config) {
127
+ return await this.init("remove_from_wishlist", {
128
+ type: "ecommerce",
129
+ subtype: "remove_from_wishlist",
130
+ product: config.product,
131
+ wishlistId: config.wishlistId,
132
+ userId: config.userId,
133
+ reason: config.reason || "user_action",
134
+ timestamp: new Date().toISOString()
135
+ });
136
+ }
137
+ /**
138
+ * Tracks wishlist view.
139
+ *
140
+ * @param wishlist - Wishlist being viewed
141
+ * @returns Promise resolving to wishlist response
142
+ */
143
+ async view(wishlist) {
144
+ return await this.init("view_wishlist", {
145
+ type: "ecommerce",
146
+ subtype: "view_wishlist",
147
+ wishlistId: wishlist.wishlistId,
148
+ itemCount: wishlist.items.length,
149
+ timestamp: new Date().toISOString()
150
+ });
151
+ }
152
+ /**
153
+ * Tracks moving item from wishlist to cart.
154
+ *
155
+ * @param product - Product being moved
156
+ * @param wishlistId - Source wishlist
157
+ * @returns Promise resolving to wishlist response
158
+ */
159
+ async moveToCart(product, wishlistId) {
160
+ return await this.init("wishlist_to_cart", {
161
+ type: "ecommerce",
162
+ subtype: "wishlist_to_cart",
163
+ product,
164
+ wishlistId,
165
+ timestamp: new Date().toISOString()
166
+ });
167
+ }
168
+ /**
169
+ * Tracks wishlist sharing.
170
+ *
171
+ * @param wishlistId - Wishlist being shared
172
+ * @param method - Share method
173
+ * @returns Promise resolving to wishlist response
174
+ */
175
+ async share(wishlistId, method) {
176
+ return await this.init("share_wishlist", {
177
+ type: "ecommerce",
178
+ subtype: "share_wishlist",
179
+ wishlistId,
180
+ method,
181
+ timestamp: new Date().toISOString()
182
+ });
183
+ }
184
+ }
185
+ export default WishlistTracking;
186
+ //# sourceMappingURL=wishlist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wishlist.js","sourceRoot":"","sources":["../../../../src/lib/features/ecommerce/wishlist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAuF3D,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,OAAO,gBAAiB,SAAQ,iBAAiB;IACrD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,GAAG,CAAC,MAA2B;QACnC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACxC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,MAAM,CAAC,MAAgC;QAC3C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC7C,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,aAAa;YACtC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,QAAkB;QAC3B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACtC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,eAAe;YACxB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;YAChC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,OAAgB,EAAE,UAAmB;QACpD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACzC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,kBAAkB;YAC3B,OAAO;YACP,UAAU;YACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CACT,UAAkB,EAClB,MAAmC;QAEnC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACvC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,gBAAgB;YACzB,UAAU;YACV,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;CAEF;AAED,eAAe,gBAAgB,CAAC"}
@@ -39,7 +39,7 @@
39
39
  * ```
40
40
  */
41
41
  import { FlowGridTransport } from "../../client/transport";
42
- import { DateRangeFilter, TimeSeriesData, TimeGranularity, MoneyValue, CurrencyCode } from "../../types";
42
+ import { DateRangeFilter, TimeSeriesData, MoneyValue, CurrencyCode } from "../../types";
43
43
  /**
44
44
  * Acquisition source types.
45
45
  */
@@ -252,7 +252,7 @@ export interface AttributionResult {
252
252
  /**
253
253
  * Acquisition analytics result.
254
254
  */
255
- export interface AcquisitionAnalytics {
255
+ export interface AcquisitionAnalyticType {
256
256
  totalAcquisitions: number;
257
257
  cac: MoneyValue;
258
258
  ltv: MoneyValue;
@@ -315,59 +315,4 @@ export declare class AcquisitionAnalytics extends FlowGridTransport {
315
315
  trackCampaignSpend(config: CampaignSpendConfig): Promise<{
316
316
  tracked: boolean;
317
317
  }>;
318
- /**
319
- * Get CAC.
320
- */
321
- getCAC(config?: CACConfig): Promise<CACResult>;
322
- /**
323
- * Get trial funnel.
324
- */
325
- getTrialFunnel(config?: TrialFunnelConfig): Promise<TrialFunnelResult>;
326
- /**
327
- * Get campaign performance.
328
- */
329
- getCampaignPerformance(campaignId?: string, filter?: DateRangeFilter): Promise<CampaignPerformance[]>;
330
- /**
331
- * Get attribution analysis.
332
- */
333
- getAttribution(config: AttributionAnalysisConfig): Promise<AttributionResult>;
334
- /**
335
- * Get LTV:CAC ratio.
336
- */
337
- getLTVCACRatio(filter?: DateRangeFilter): Promise<{
338
- ltv: MoneyValue;
339
- cac: MoneyValue;
340
- ratio: number;
341
- healthy: boolean;
342
- }>;
343
- /**
344
- * Get acquisition analytics.
345
- */
346
- getAnalytics(filter?: DateRangeFilter): Promise<AcquisitionAnalytics>;
347
- /**
348
- * Get acquisition trend.
349
- */
350
- getAcquisitionTrend(filter?: DateRangeFilter, granularity?: TimeGranularity): Promise<TimeSeriesData>;
351
- /**
352
- * Get channel effectiveness.
353
- */
354
- getChannelEffectiveness(filter?: DateRangeFilter): Promise<Array<{
355
- channel: AcquisitionSource;
356
- acquisitions: number;
357
- cac: MoneyValue;
358
- ltv: MoneyValue;
359
- paybackMonths: number;
360
- score: number;
361
- }>>;
362
- /**
363
- * Get cohort-based campaign analysis.
364
- */
365
- getCohortCampaignAnalysis(campaignId: string, periods: number): Promise<{
366
- cohorts: Array<{
367
- cohortDate: string;
368
- acquisitions: number;
369
- retention: number[];
370
- ltv: MoneyValue;
371
- }>;
372
- }>;
373
318
  }
@@ -0,0 +1,166 @@
1
+ /**
2
+ * @fileoverview Enterprise - Marketing & Acquisition Analytics
3
+ * @module features/enterprise/acquisition
4
+ *
5
+ * @description
6
+ * Deep attribution and acquisition insights including CAC breakdown,
7
+ * trial-to-paid funnel tracking, and campaign performance by cohort.
8
+ *
9
+ * @useCases
10
+ * - Track customer acquisition cost by channel
11
+ * - Monitor trial → paid → upgrade funnel
12
+ * - Analyze campaign performance
13
+ * - Multi-touch attribution
14
+ * - Marketing ROI calculation
15
+ *
16
+ * @metrics
17
+ * - Customer Acquisition Cost (CAC)
18
+ * - Trial conversion rate
19
+ * - Paid conversion rate
20
+ * - Campaign ROI
21
+ * - Channel effectiveness
22
+ *
23
+ * @chartData
24
+ * - Bar chart: CAC by channel
25
+ * - Funnel: Trial to paid conversion
26
+ * - Line chart: Campaign performance
27
+ * - Pie chart: Acquisition source mix
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const acquisition = new AcquisitionAnalytics(webId, endpoint, apiKey);
32
+ *
33
+ * // Track acquisition
34
+ * await acquisition.trackAcquisition({
35
+ * userId: 'user_123',
36
+ * source: 'google_ads',
37
+ * campaign: 'summer_2026'
38
+ * });
39
+ * ```
40
+ */
41
+ import { FlowGridTransport } from "../../client/transport";
42
+ // ============================================================================
43
+ // HELPER FUNCTIONS
44
+ // ============================================================================
45
+ /**
46
+ * Calculate CAC.
47
+ */
48
+ export function calculateCAC(totalSpend, totalAcquisitions, currency) {
49
+ if (totalAcquisitions === 0) {
50
+ return { amount: 0, currency };
51
+ }
52
+ return {
53
+ amount: Math.round((totalSpend / totalAcquisitions) * 100) / 100,
54
+ currency
55
+ };
56
+ }
57
+ /**
58
+ * Calculate ROAS (Return on Ad Spend).
59
+ */
60
+ export function calculateROAS(revenue, spend) {
61
+ if (spend === 0)
62
+ return 0;
63
+ return Math.round((revenue / spend) * 100) / 100;
64
+ }
65
+ /**
66
+ * Calculate LTV:CAC ratio.
67
+ */
68
+ export function calculateLTVCACRatio(ltv, cac) {
69
+ if (cac === 0)
70
+ return 0;
71
+ return Math.round((ltv / cac) * 100) / 100;
72
+ }
73
+ /**
74
+ * Parse UTM parameters from URL.
75
+ */
76
+ export function parseUTMParams(url) {
77
+ const params = {};
78
+ try {
79
+ const urlObj = new URL(url);
80
+ const utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
81
+ for (const key of utmKeys) {
82
+ const value = urlObj.searchParams.get(key);
83
+ if (value) {
84
+ params[key.replace('utm_', '')] = value;
85
+ }
86
+ }
87
+ }
88
+ catch {
89
+ // Invalid URL, return empty object
90
+ }
91
+ return params;
92
+ }
93
+ /**
94
+ * Classify acquisition source from UTM parameters.
95
+ */
96
+ export function classifySource(utmSource, utmMedium) {
97
+ if (!utmSource && !utmMedium)
98
+ return 'direct';
99
+ const source = utmSource?.toLowerCase() ?? '';
100
+ const medium = utmMedium?.toLowerCase() ?? '';
101
+ if (medium.includes('cpc') || medium.includes('paid')) {
102
+ if (source.includes('facebook') || source.includes('instagram') || source.includes('linkedin')) {
103
+ return 'paid_social';
104
+ }
105
+ return 'paid_search';
106
+ }
107
+ if (source.includes('facebook') || source.includes('twitter') || source.includes('linkedin')) {
108
+ return 'organic_social';
109
+ }
110
+ if (medium === 'email')
111
+ return 'email';
112
+ if (medium === 'referral')
113
+ return 'referral';
114
+ if (medium === 'affiliate')
115
+ return 'affiliate';
116
+ return 'organic';
117
+ }
118
+ // ============================================================================
119
+ // MAIN CLASS
120
+ // ============================================================================
121
+ /**
122
+ * Marketing and acquisition analytics class.
123
+ */
124
+ export class AcquisitionAnalytics extends FlowGridTransport {
125
+ /**
126
+ * Track user acquisition.
127
+ */
128
+ async trackAcquisition(config) {
129
+ return await this.initFeature("acquisition.acquired", {
130
+ type: "acquisition",
131
+ ...config,
132
+ timestamp: new Date().toISOString()
133
+ });
134
+ }
135
+ /**
136
+ * Track lifecycle transition.
137
+ */
138
+ async trackLifecycleTransition(config) {
139
+ return await this.initFeature("acquisition.lifecycle_transition", {
140
+ type: "acquisition",
141
+ ...config,
142
+ timestamp: new Date().toISOString()
143
+ });
144
+ }
145
+ /**
146
+ * Create campaign.
147
+ */
148
+ async createCampaign(definition) {
149
+ return await this.initFeature("acquisition.create_campaign", {
150
+ type: "acquisition",
151
+ ...definition,
152
+ timestamp: new Date().toISOString()
153
+ });
154
+ }
155
+ /**
156
+ * Track campaign spend.
157
+ */
158
+ async trackCampaignSpend(config) {
159
+ return await this.initFeature("acquisition.campaign_spend", {
160
+ type: "acquisition",
161
+ ...config,
162
+ timestamp: new Date().toISOString()
163
+ });
164
+ }
165
+ }
166
+ //# sourceMappingURL=acquisition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acquisition.js","sourceRoot":"","sources":["../../../../src/lib/features/enterprise/acquisition.ts"],"names":[],"mappings":"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"}