@antelopejs/dms-marketing 0.3.3 → 0.4.1

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 (289) hide show
  1. package/README.md +18 -15
  2. package/dist/config.d.ts +1 -0
  3. package/dist/config.js +4 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/data-api/funnels.d.ts +2 -0
  6. package/dist/data-api/funnels.js +8 -1
  7. package/dist/data-api/funnels.js.map +1 -1
  8. package/dist/db/models/funnels.model.d.ts +2 -0
  9. package/dist/db/models/funnels.model.js +9 -0
  10. package/dist/db/models/funnels.model.js.map +1 -1
  11. package/dist/db/models/index.d.ts +1 -0
  12. package/dist/db/models/index.js +1 -0
  13. package/dist/db/models/index.js.map +1 -1
  14. package/dist/db/models/marketing_events.model.d.ts +22 -0
  15. package/dist/db/models/marketing_events.model.js +70 -5
  16. package/dist/db/models/marketing_events.model.js.map +1 -1
  17. package/dist/db/models/marketing_preferences.model.d.ts +25 -0
  18. package/dist/db/models/marketing_preferences.model.js +29 -0
  19. package/dist/db/models/marketing_preferences.model.js.map +1 -0
  20. package/dist/db/models/marketing_sessions.model.d.ts +2 -1
  21. package/dist/db/models/marketing_sessions.model.js +11 -1
  22. package/dist/db/models/marketing_sessions.model.js.map +1 -1
  23. package/dist/db/models/page_snapshots.model.d.ts +2 -1
  24. package/dist/db/models/page_snapshots.model.js +7 -7
  25. package/dist/db/models/page_snapshots.model.js.map +1 -1
  26. package/dist/db/models/website_statistics.model.d.ts +4 -1
  27. package/dist/db/models/website_statistics.model.js +15 -1
  28. package/dist/db/models/website_statistics.model.js.map +1 -1
  29. package/dist/db/tables/index.d.ts +1 -0
  30. package/dist/db/tables/index.js +1 -0
  31. package/dist/db/tables/index.js.map +1 -1
  32. package/dist/db/tables/marketing_preferences.table.d.ts +6 -0
  33. package/dist/db/tables/marketing_preferences.table.js +31 -0
  34. package/dist/db/tables/marketing_preferences.table.js.map +1 -0
  35. package/dist/hooks/index.js +8 -4
  36. package/dist/hooks/index.js.map +1 -1
  37. package/dist/index.js +18 -3
  38. package/dist/index.js.map +1 -1
  39. package/dist/pages/acquisition/page.d.ts +9 -0
  40. package/dist/pages/acquisition/page.js +181 -0
  41. package/dist/pages/acquisition/page.js.map +1 -0
  42. package/dist/pages/all.d.ts +5 -1
  43. package/dist/pages/all.js +5 -1
  44. package/dist/pages/all.js.map +1 -1
  45. package/dist/pages/blocks.d.ts +18 -0
  46. package/dist/pages/blocks.js +56 -0
  47. package/dist/pages/blocks.js.map +1 -0
  48. package/dist/pages/funnel/page.d.ts +9 -0
  49. package/dist/pages/funnel/page.js +36 -0
  50. package/dist/pages/funnel/page.js.map +1 -0
  51. package/dist/pages/funnel-builder/page.d.ts +9 -0
  52. package/dist/pages/funnel-builder/page.js +29 -0
  53. package/dist/pages/funnel-builder/page.js.map +1 -0
  54. package/dist/pages/funnels/page.d.ts +1 -1
  55. package/dist/pages/funnels/page.js +200 -3
  56. package/dist/pages/funnels/page.js.map +1 -1
  57. package/dist/pages/index.d.ts +1 -0
  58. package/dist/pages/index.js +1 -0
  59. package/dist/pages/index.js.map +1 -1
  60. package/dist/pages/{campaigns → install}/page.d.ts +3 -3
  61. package/dist/pages/{campaigns → install}/page.js +14 -12
  62. package/dist/pages/install/page.js.map +1 -0
  63. package/dist/pages/module.d.ts +3 -0
  64. package/dist/pages/module.js +30 -3
  65. package/dist/pages/module.js.map +1 -1
  66. package/dist/pages/overview/page.d.ts +1 -1
  67. package/dist/pages/overview/page.js +122 -3
  68. package/dist/pages/overview/page.js.map +1 -1
  69. package/dist/pages/pages/page.d.ts +1 -1
  70. package/dist/pages/pages/page.js +9 -4
  71. package/dist/pages/pages/page.js.map +1 -1
  72. package/dist/pages/quick-actions.d.ts +1 -0
  73. package/dist/pages/quick-actions.js +25 -0
  74. package/dist/pages/quick-actions.js.map +1 -0
  75. package/dist/pages/settings/form.d.ts +2 -1
  76. package/dist/pages/settings/form.js +62 -20
  77. package/dist/pages/settings/form.js.map +1 -1
  78. package/dist/pages/settings/page.d.ts +4 -1
  79. package/dist/pages/settings/page.js +50 -4
  80. package/dist/pages/settings/page.js.map +1 -1
  81. package/dist/pages/websites/page.d.ts +11 -0
  82. package/dist/pages/websites/page.js +62 -0
  83. package/dist/pages/websites/page.js.map +1 -0
  84. package/dist/routes/blocks.d.ts +50 -0
  85. package/dist/routes/blocks.js +269 -0
  86. package/dist/routes/blocks.js.map +1 -0
  87. package/dist/routes/collect.d.ts +1 -2
  88. package/dist/routes/collect.js +19 -12
  89. package/dist/routes/collect.js.map +1 -1
  90. package/dist/routes/context.d.ts +8 -0
  91. package/dist/routes/context.js +54 -0
  92. package/dist/routes/context.js.map +1 -0
  93. package/dist/routes/experiments.js +2 -1
  94. package/dist/routes/experiments.js.map +1 -1
  95. package/dist/routes/funnels.d.ts +21 -3
  96. package/dist/routes/funnels.js +150 -7
  97. package/dist/routes/funnels.js.map +1 -1
  98. package/dist/routes/index.d.ts +2 -0
  99. package/dist/routes/index.js +2 -0
  100. package/dist/routes/index.js.map +1 -1
  101. package/dist/routes/settings.d.ts +6 -1
  102. package/dist/routes/settings.js +65 -4
  103. package/dist/routes/settings.js.map +1 -1
  104. package/dist/routes/snapshot.d.ts +1 -1
  105. package/dist/routes/snapshot.js +24 -25
  106. package/dist/routes/snapshot.js.map +1 -1
  107. package/dist/routes/stats.d.ts +14 -23
  108. package/dist/routes/stats.js +73 -97
  109. package/dist/routes/stats.js.map +1 -1
  110. package/dist/routes/tracker.js +6 -4
  111. package/dist/routes/tracker.js.map +1 -1
  112. package/dist/routes/websites.d.ts +4 -0
  113. package/dist/routes/websites.js +111 -12
  114. package/dist/routes/websites.js.map +1 -1
  115. package/dist/services/acquisition-report.d.ts +62 -0
  116. package/dist/services/acquisition-report.js +181 -0
  117. package/dist/services/acquisition-report.js.map +1 -0
  118. package/dist/services/acquisition.d.ts +9 -3
  119. package/dist/services/acquisition.js +35 -5
  120. package/dist/services/acquisition.js.map +1 -1
  121. package/dist/services/catalog.d.ts +3 -0
  122. package/dist/services/catalog.js +17 -0
  123. package/dist/services/catalog.js.map +1 -0
  124. package/dist/services/collect.d.ts +1 -2
  125. package/dist/services/collect.js +49 -24
  126. package/dist/services/collect.js.map +1 -1
  127. package/dist/services/composed.d.ts +9 -0
  128. package/dist/services/composed.js +62 -0
  129. package/dist/services/composed.js.map +1 -0
  130. package/dist/services/context.d.ts +20 -0
  131. package/dist/services/context.js +76 -0
  132. package/dist/services/context.js.map +1 -0
  133. package/dist/services/dashboard.d.ts +74 -0
  134. package/dist/services/dashboard.js +343 -0
  135. package/dist/services/dashboard.js.map +1 -0
  136. package/dist/services/experiments/results.d.ts +12 -1
  137. package/dist/services/experiments/results.js +19 -2
  138. package/dist/services/experiments/results.js.map +1 -1
  139. package/dist/services/experiments/stats.d.ts +7 -1
  140. package/dist/services/experiments/stats.js +43 -5
  141. package/dist/services/experiments/stats.js.map +1 -1
  142. package/dist/services/funnel-report.d.ts +64 -0
  143. package/dist/services/funnel-report.js +280 -0
  144. package/dist/services/funnel-report.js.map +1 -0
  145. package/dist/services/funnels/compute.d.ts +2 -0
  146. package/dist/services/funnels/compute.js +25 -13
  147. package/dist/services/funnels/compute.js.map +1 -1
  148. package/dist/services/funnels/results.js +4 -1
  149. package/dist/services/funnels/results.js.map +1 -1
  150. package/dist/services/funnels/step-path.d.ts +4 -0
  151. package/dist/services/funnels/step-path.js +47 -0
  152. package/dist/services/funnels/step-path.js.map +1 -0
  153. package/dist/services/funnels-table.d.ts +31 -0
  154. package/dist/services/funnels-table.js +230 -0
  155. package/dist/services/funnels-table.js.map +1 -0
  156. package/dist/services/heatmap.d.ts +15 -3
  157. package/dist/services/heatmap.js +54 -11
  158. package/dist/services/heatmap.js.map +1 -1
  159. package/dist/services/hourly-traffic.d.ts +4 -0
  160. package/dist/services/hourly-traffic.js +35 -0
  161. package/dist/services/hourly-traffic.js.map +1 -0
  162. package/dist/services/origin-guard.d.ts +9 -1
  163. package/dist/services/origin-guard.js +46 -1
  164. package/dist/services/origin-guard.js.map +1 -1
  165. package/dist/services/period.d.ts +26 -1
  166. package/dist/services/period.js +99 -9
  167. package/dist/services/period.js.map +1 -1
  168. package/dist/services/prune.d.ts +6 -0
  169. package/dist/services/prune.js +35 -0
  170. package/dist/services/prune.js.map +1 -1
  171. package/dist/services/request-body.d.ts +1 -2
  172. package/dist/services/request-body.js +10 -36
  173. package/dist/services/request-body.js.map +1 -1
  174. package/dist/services/request-meta.d.ts +0 -1
  175. package/dist/services/request-meta.js +0 -11
  176. package/dist/services/request-meta.js.map +1 -1
  177. package/dist/services/rollups.d.ts +25 -0
  178. package/dist/services/rollups.js +102 -0
  179. package/dist/services/rollups.js.map +1 -0
  180. package/dist/services/sessionize.d.ts +5 -1
  181. package/dist/services/sessionize.js +52 -10
  182. package/dist/services/sessionize.js.map +1 -1
  183. package/dist/services/settings.d.ts +41 -2
  184. package/dist/services/settings.js +219 -6
  185. package/dist/services/settings.js.map +1 -1
  186. package/dist/services/snapshots.d.ts +3 -2
  187. package/dist/services/snapshots.js +110 -9
  188. package/dist/services/snapshots.js.map +1 -1
  189. package/dist/services/tenant-website.js +1 -0
  190. package/dist/services/tenant-website.js.map +1 -1
  191. package/dist/services/url.js +12 -4
  192. package/dist/services/url.js.map +1 -1
  193. package/dist/services/website-hosts.d.ts +15 -0
  194. package/dist/services/website-hosts.js +67 -0
  195. package/dist/services/website-hosts.js.map +1 -0
  196. package/dist/services/website-report.d.ts +40 -0
  197. package/dist/services/website-report.js +84 -0
  198. package/dist/services/website-report.js.map +1 -0
  199. package/dist/types/constants.d.ts +14 -2
  200. package/dist/types/constants.js +17 -6
  201. package/dist/types/constants.js.map +1 -1
  202. package/dist/types/events.d.ts +221 -68
  203. package/dist/types/events.js +60 -11
  204. package/dist/types/events.js.map +1 -1
  205. package/dist/types/snapshots.d.ts +6 -0
  206. package/dist/types/snapshots.js +2 -0
  207. package/dist/types/snapshots.js.map +1 -1
  208. package/dist/types/statistics.d.ts +2 -1
  209. package/dist/types/statistics.js +9 -2
  210. package/dist/types/statistics.js.map +1 -1
  211. package/dist/utils/experiment-type.js +1 -1
  212. package/dist/utils/experiment-type.js.map +1 -1
  213. package/dist/utils/funnel-steps-type.d.ts +21 -3
  214. package/dist/utils/funnel-steps-type.js +7 -2
  215. package/dist/utils/funnel-steps-type.js.map +1 -1
  216. package/frontend-vue/app/components/ChannelsCard.vue +265 -0
  217. package/frontend-vue/app/components/Context.vue +479 -0
  218. package/frontend-vue/app/components/ExperimentInput.vue +3 -1
  219. package/frontend-vue/app/components/ExperimentReport.vue +736 -0
  220. package/frontend-vue/app/components/FirstRun.vue +60 -0
  221. package/frontend-vue/app/components/FunnelBuilder.vue +1595 -0
  222. package/frontend-vue/app/components/FunnelFigure.vue +640 -0
  223. package/frontend-vue/app/components/FunnelReport.vue +532 -0
  224. package/frontend-vue/app/components/FunnelStepsInput.vue +3 -1
  225. package/frontend-vue/app/components/FunnelTemplates.vue +161 -0
  226. package/frontend-vue/app/components/HeatmapCanvas.vue +11 -4
  227. package/frontend-vue/app/components/InstallGuide.vue +753 -0
  228. package/frontend-vue/app/components/PagePreview.vue +889 -416
  229. package/frontend-vue/app/components/PagesExplorer.vue +552 -0
  230. package/frontend-vue/app/components/ScrollDepthOverlay.vue +48 -20
  231. package/frontend-vue/app/components/TopListTabs.vue +317 -0
  232. package/frontend-vue/app/components/TrackerSnippet.vue +50 -16
  233. package/frontend-vue/app/components/VariationsInput.vue +15 -5
  234. package/frontend-vue/app/components/WebsitesGrid.vue +799 -0
  235. package/frontend-vue/app/composables/useContextLink.ts +16 -0
  236. package/frontend-vue/app/composables/useExperiment.ts +1 -2
  237. package/frontend-vue/app/composables/useFunnelSteps.ts +1 -2
  238. package/frontend-vue/app/composables/useLatestRequest.ts +2 -4
  239. package/frontend-vue/app/composables/useMarketingApi.ts +298 -133
  240. package/frontend-vue/app/composables/useMarketingContext.ts +55 -0
  241. package/frontend-vue/app/composables/useMarketingRoutes.ts +80 -27
  242. package/frontend-vue/app/composables/useSnapshotFrame.ts +26 -4
  243. package/frontend-vue/app/constants.ts +22 -0
  244. package/frontend-vue/app/plugins/funnel-steps-data-type.client.ts +2 -1
  245. package/frontend-vue/app/utils/channels.ts +37 -0
  246. package/frontend-vue/app/utils/format.ts +132 -0
  247. package/frontend-vue/app/utils/funnel-draft.ts +264 -0
  248. package/frontend-vue/app/utils/heatmap.ts +82 -0
  249. package/frontend-vue/app/utils/heatmapPalette.ts +10 -0
  250. package/frontend-vue/app/utils/host-conflict.ts +48 -0
  251. package/frontend-vue/app/utils/sample-size.ts +17 -0
  252. package/frontend-vue/app/utils/snapshotViewportUnits.ts +15 -5
  253. package/frontend-vue/app/utils/snippet.ts +53 -0
  254. package/frontend-vue/app/utils/step-path.ts +32 -0
  255. package/frontend-vue/dms.frontend.ts +4 -3
  256. package/frontend-vue/i18n/locales/marketing-en-GB.json +1083 -316
  257. package/frontend-vue/i18n/locales/marketing-fr-FR.json +1087 -320
  258. package/frontend-vue/package.json +1 -2
  259. package/frontend-vue/pnpm-lock.yaml +51 -19
  260. package/frontend-vue/tests/drafts.test.ts +3 -3
  261. package/frontend-vue/tests/format.test.ts +73 -0
  262. package/frontend-vue/tests/funnel-draft.test.ts +194 -0
  263. package/frontend-vue/tests/heatmap.test.ts +32 -0
  264. package/frontend-vue/tests/i18n.test.ts +87 -4
  265. package/frontend-vue/tests/latest-request.test.ts +6 -3
  266. package/frontend-vue/tests/locale-typography.test.ts +115 -0
  267. package/frontend-vue/tests/registration.test.ts +17 -11
  268. package/frontend-vue/tests/routes.test.ts +67 -7
  269. package/frontend-vue/tests/server-parity.test.ts +77 -0
  270. package/frontend-vue/tests/stubs/frontend-module.ts +18 -3
  271. package/frontend-vue/vitest.config.ts +3 -1
  272. package/package.json +10 -8
  273. package/static/snapshot.js +46 -16
  274. package/static/tracker.js +139 -48
  275. package/dist/pages/campaigns/page.js.map +0 -1
  276. package/frontend-vue/app/components/CampaignsView.vue +0 -330
  277. package/frontend-vue/app/components/FunnelDetail.vue +0 -1026
  278. package/frontend-vue/app/components/FunnelsView.vue +0 -493
  279. package/frontend-vue/app/components/NoWebsiteState.vue +0 -18
  280. package/frontend-vue/app/components/OverviewView.vue +0 -493
  281. package/frontend-vue/app/components/PagesView.vue +0 -391
  282. package/frontend-vue/app/components/TextKpiCard.vue +0 -28
  283. package/frontend-vue/app/components/TopListTabsCard.vue +0 -162
  284. package/frontend-vue/app/composables/useChildId.ts +0 -13
  285. package/frontend-vue/app/composables/useMarketingPeriod.ts +0 -65
  286. package/frontend-vue/app/composables/useMarketingWebsiteForm.ts +0 -69
  287. package/frontend-vue/app/composables/useMarketingWebsites.ts +0 -80
  288. package/frontend-vue/app/utils/dmsComponent.ts +0 -18
  289. package/frontend-vue/tests/period.test.ts +0 -35
package/README.md CHANGED
@@ -12,7 +12,7 @@ first-party.
12
12
  No external service, no cookie; data stays in the project's MongoDB.
13
13
 
14
14
  <p align="center">
15
- <img src="docs/screenshots/overview.png" alt="Overview: pageviews, sessions, new visitors and custom events, a traffic chart, a device split and the top pages, referrers, UTM sources and browsers" width="900">
15
+ <img src="docs/screenshots/overview.png" alt="Overview: the website and period bar, four KPI cards with their change and sparkline, the session-quality strip, the traffic chart against the previous period, the device split and four tabbed top lists" width="900">
16
16
  </p>
17
17
  <p align="center">
18
18
  <em>The Overview page — every panel reads pre-aggregated daily rollups, never raw events.</em>
@@ -22,15 +22,16 @@ No external service, no cookie; data stays in the project's MongoDB.
22
22
 
23
23
  | Feature | Where | Guide |
24
24
  |---|---|---|
25
- | **Traffic overview** — pageviews, sessions, visitors, top pages/referrers/UTM/browsers, device split; site registration and tracker snippet | `/modules/marketing/overview` | [usage/overview.md](docs/usage/overview.md) |
26
- | **Campaigns & channels** — direct/organic/social/referral/paid split, UTM campaign table (source × medium × campaign) | `/modules/marketing/campaigns` | [usage/campaigns.md](docs/usage/campaigns.md) |
27
- | **Click heatmaps** — clicks drawn over a snapshot of any tracked page | `/modules/marketing/pages` | [usage/heatmap.md](docs/usage/heatmap.md) |
28
- | **Funnels & A/B** — ordered conversion journeys with per-step drop-off, optionally split into server-assigned variations scored with significance | `/modules/marketing/funnels` | [usage/funnels.md](docs/usage/funnels.md) |
25
+ | **Traffic overview** — pageviews, sessions, new visitors and custom events with their change, session quality, traffic chart, device split, top content/acquisition/audience/event lists | `/modules/marketing/overview` | [usage/overview.md](docs/usage/overview.md) |
26
+ | **Acquisition** — direct/organic/social/email/referral/paid split, UTM campaign table (source × medium × campaign), top referrers and UTM details | `/modules/marketing/acquisition` | [usage/acquisition.md](docs/usage/acquisition.md) |
27
+ | **Pages & heatmaps** — clicks and scroll depth drawn over a snapshot of any tracked page | `/modules/marketing/pages` | [usage/heatmap.md](docs/usage/heatmap.md) |
28
+ | **Funnels & A/B tests** — ordered conversion journeys with per-step drop-off, optionally split into server-assigned variations scored with significance; a report page and a builder per funnel | `/modules/marketing/funnels` | [usage/funnels.md](docs/usage/funnels.md) |
29
+ | **Websites & install guide** — the tracked sites, their live state and capture options; a guided tracker install that checks the first pageview | `/modules/marketing/websites` | [install.md](docs/install.md#2-register-a-website) |
29
30
  | **First-party tracker** — cookieless script, SPA-aware, custom events API | visitor sites | [usage/tracking.md](docs/usage/tracking.md) |
30
31
  | **Settings** — collection switch, retentions, heatmap sampling | `/modules/marketing/settings` | [usage/settings.md](docs/usage/settings.md) |
31
32
 
32
33
  <p align="center">
33
- <img src="docs/screenshots/heatmap.png" alt="Tracked pages: the inventory of visited paths on the left, and on the right the click heatmap of the selected path drawn over a live preview of the page" width="900">
34
+ <img src="docs/screenshots/heatmap.png" alt="Pages & heatmaps: the tracked pages with their views and heat bars on the left, and on the right the click heatmap of the selected page drawn over its snapshot, with count pins on the hottest elements and the Most clicked list beside it" width="900">
34
35
  </p>
35
36
  <p align="center">
36
37
  <em>Click heatmap over the page itself. Clicks are anchored to the element
@@ -38,7 +39,7 @@ No external service, no cookie; data stays in the project's MongoDB.
38
39
  </p>
39
40
 
40
41
  <p align="center">
41
- <img src="docs/screenshots/funnels.png" alt="Funnels: the funnel list on the left, and on the right the conversion bars of the selected funnel, step by step, with the drop-off between steps" width="900">
42
+ <img src="docs/screenshots/funnel.png" alt="Funnel report: entered, completed, end-to-end and biggest-loss KPIs over the steps figure, each step with its share of entered sessions and the sessions lost before the next one, the worst step flagged" width="900">
42
43
  </p>
43
44
  <p align="center">
44
45
  <em>Conversion funnels with per-step drop-off. Computed at read time over
@@ -46,12 +47,12 @@ No external service, no cookie; data stays in the project's MongoDB.
46
47
  </p>
47
48
 
48
49
  <p align="center">
49
- <img src="docs/screenshots/experiments.png" alt="A split funnel: the funnel list on the left, and on the right the verdict banner over the funnel drawn once per arm — control and challenger mirrored around the step they share, with the drop between steps in the taper" width="900">
50
+ <img src="docs/screenshots/experiments.png" alt="A/B test report: the verdict sentence with the relative lift, the confidence and the exposed sessions, the sample ratio check, then each arm step by step with A neutral and B in the primary colour" width="900">
50
51
  </p>
51
52
  <p align="center">
52
- <em>The same funnel split into A/B arms: one figure per arm, arm against
53
- arm at every step. Verdicts answer "not enough data" rather than
54
- overclaim — a sample too thin shows raw counts, never bars.</em>
53
+ <em>The same funnel split into A/B arms, arm against arm at every step.
54
+ Verdicts answer "not enough data" rather than overclaim — a sample too
55
+ thin shows raw counts, never bars.</em>
55
56
  </p>
56
57
 
57
58
  ## What makes it hold
@@ -92,8 +93,8 @@ The reasoning behind each choice is in
92
93
  - **[Usage guides](docs/usage/)** — one per feature, linked in the table above.
93
94
  - **[Architecture](docs/architecture.md)** — data flow, tenancy, auth model,
94
95
  event contract, HTTP surface, heatmap internals, phasing.
95
- - **[Known issues](KNOWN-ISSUES.md)** — one open behavioural defect, found
96
- end-to-end.
96
+ - **[Known issues](KNOWN-ISSUES.md)** — the defects found end-to-end and
97
+ how each was closed; none is open.
97
98
 
98
99
  ## Status
99
100
 
@@ -119,8 +120,10 @@ pnpm test # backend suite, then the frontend module's vitest suite
119
120
  ```
120
121
 
121
122
  The admin surfaces ship as a DMS frontend module in `frontend-vue/`: a Vue 3
122
- project whose root `dms.frontend.ts` registers every component under the
123
- `DmsMarketing` prefix, plus its own i18n catalogs. It is a separate project
123
+ project whose root `dms.frontend.ts` declares the `DmsMarketing` component
124
+ prefix and registers every component of `app/components/` under it, plus its
125
+ own i18n catalogs. The pages themselves are declared backend-side as trees
126
+ of DMS blocks ([architecture.md](docs/architecture.md#frontend-layout)). It is a separate project
124
127
  with a lockfile of its own, published inside this package's tarball and
125
128
  materialized by the DMS frontend loader (`ajs dms`) into the console's Inertia
126
129
  workspace. Its own vitest suite runs through `pnpm test`.
package/dist/config.d.ts CHANGED
@@ -10,4 +10,5 @@ export interface DmsMarketingConfig {
10
10
  }
11
11
  export declare function setConfig(input?: Partial<DmsMarketingConfig>): void;
12
12
  export declare function applyConfigOverrides(overrides: Partial<DmsMarketingConfig>): void;
13
+ export declare function getBaseConfig(): DmsMarketingConfig;
13
14
  export declare function getConfig(): DmsMarketingConfig;
package/dist/config.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setConfig = setConfig;
4
4
  exports.applyConfigOverrides = applyConfigOverrides;
5
+ exports.getBaseConfig = getBaseConfig;
5
6
  exports.getConfig = getConfig;
6
7
  const defu_1 = require("defu");
7
8
  const constants_1 = require("./types/constants");
@@ -29,6 +30,9 @@ function applyConfigOverrides(overrides) {
29
30
  runtimeOverrides = overrides;
30
31
  mergeEffective();
31
32
  }
33
+ function getBaseConfig() {
34
+ return baseConfig;
35
+ }
32
36
  function getConfig() {
33
37
  return globalConfig;
34
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAuDA,8BAGC;AAED,oDAKC;AAED,8BAEC;AArED,+BAA4B;AAC5B,iDAM2B;AA6B3B,MAAM,cAAc,GAAuB;IACzC,cAAc,EAAE,IAAI;IACpB,kBAAkB,EAAE,2CAA+B;IACnD,mBAAmB,EAAE,2CAA+B;IACpD,iBAAiB,EAAE,yCAA6B;IAChD,kBAAkB,EAAE,2CAA+B;IACnD,iBAAiB,EAAE,wCAA4B;IAC/C,iBAAiB,EAAE,EAAE;IACrB,iBAAiB,EAAE,EAAE;CACtB,CAAC;AAEF,IAAI,UAAU,GAAuB,cAAc,CAAC;AACpD,IAAI,YAAY,GAAuB,cAAc,CAAC;AACtD,IAAI,gBAAgB,GAAgC,EAAE,CAAC;AAEvD,SAAS,cAAc;IACrB,YAAY,GAAG,IAAA,WAAI,EAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,SAAS,CAAC,KAAmC;IAC3D,UAAU,GAAG,IAAA,WAAI,EAAC,KAAK,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;IAC/C,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,SAAgB,oBAAoB,CAClC,SAAsC;IAEtC,gBAAgB,GAAG,SAAS,CAAC;IAC7B,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAuDA,8BAGC;AAED,oDAKC;AAGD,sCAEC;AAED,8BAEC;AA1ED,+BAA4B;AAC5B,iDAM2B;AA6B3B,MAAM,cAAc,GAAuB;IACzC,cAAc,EAAE,IAAI;IACpB,kBAAkB,EAAE,2CAA+B;IACnD,mBAAmB,EAAE,2CAA+B;IACpD,iBAAiB,EAAE,yCAA6B;IAChD,kBAAkB,EAAE,2CAA+B;IACnD,iBAAiB,EAAE,wCAA4B;IAC/C,iBAAiB,EAAE,EAAE;IACrB,iBAAiB,EAAE,EAAE;CACtB,CAAC;AAEF,IAAI,UAAU,GAAuB,cAAc,CAAC;AACpD,IAAI,YAAY,GAAuB,cAAc,CAAC;AACtD,IAAI,gBAAgB,GAAgC,EAAE,CAAC;AAEvD,SAAS,cAAc;IACrB,YAAY,GAAG,IAAA,WAAI,EAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,SAAS,CAAC,KAAmC;IAC3D,UAAU,GAAG,IAAA,WAAI,EAAC,KAAK,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;IAC/C,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,SAAgB,oBAAoB,CAClC,SAAsC;IAEtC,gBAAgB,GAAG,SAAS,CAAC;IAC7B,cAAc,EAAE,CAAC;AACnB,CAAC;AAGD,SAAgB,aAAa;IAC3B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { type DataControllerCallback } from "@antelopejs/interface-data-api";
2
2
  import { FunnelsModel } from "@/db";
3
3
  import { Funnel, type FunnelExperiment, type FunnelStep } from "@/db/tables/funnels.table";
4
+ export declare function editedExperiment(parsed: Record<string, unknown>, current: Funnel, websiteId: string): FunnelExperiment | null;
4
5
  declare const funnelsDataAPI_base: import("@antelopejs/interface-core/decorators").Class<import("@antelopejs/interface-data-api").ExtractDefCallbacks<{
5
6
  new: DataControllerCallback;
6
7
  edit: DataControllerCallback;
@@ -10,6 +11,7 @@ declare const funnelsDataAPI_base: import("@antelopejs/interface-core/decorators
10
11
  select: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<any>;
11
12
  count: DataControllerCallback;
12
13
  countBatch: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<any>;
14
+ summary: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<any>;
13
15
  archive: DataControllerCallback;
14
16
  restore: DataControllerCallback;
15
17
  }> & {
@@ -10,6 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.funnelsDataAPI = void 0;
13
+ exports.editedExperiment = editedExperiment;
13
14
  const interface_api_1 = require("@antelopejs/interface-api");
14
15
  const interface_data_api_1 = require("@antelopejs/interface-data-api");
15
16
  const metadata_1 = require("@antelopejs/interface-data-api/metadata");
@@ -116,6 +117,12 @@ function resolveExperiment(requested, current, websiteId) {
116
117
  runs: lifecycleRuns(existing, currentStatus, status),
117
118
  };
118
119
  }
120
+ function editedExperiment(parsed, current, websiteId) {
121
+ const requested = "experiment" in parsed
122
+ ? parseExperiment(parsed)
123
+ : (current.experiment ?? null);
124
+ return resolveExperiment(requested, current, websiteId);
125
+ }
119
126
  async function assertUniqueKey(ctx, websiteId, key, excludeId) {
120
127
  if (await tenantFunnels(ctx).hasKey(websiteId, key, excludeId)) {
121
128
  throw badRequest(DUPLICATE_KEY_MESSAGE);
@@ -154,7 +161,7 @@ function withEditChecks(base) {
154
161
  const websiteId = typeof parsed.websiteId === "string"
155
162
  ? parsed.websiteId
156
163
  : current.websiteId;
157
- const experiment = resolveExperiment(parseExperiment(parsed), current, websiteId);
164
+ const experiment = editedExperiment(parsed, current, websiteId);
158
165
  if (experiment) {
159
166
  await assertUniqueKey(ctx, websiteId, experiment.key, current._id);
160
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"funnels.js","sourceRoot":"","sources":["../../src/data-api/funnels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"funnels.js","sourceRoot":"","sources":["../../src/data-api/funnels.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ declare const FunnelsModel_base: {
18
18
  validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
19
19
  };
20
20
  export declare class FunnelsModel extends FunnelsModel_base {
21
+ deleteByWebsite(websiteId: string): Promise<number>;
22
+ listByWebsite(websiteId: string): Promise<Funnel[]>;
21
23
  listRunning(websiteId: string): Promise<Funnel[]>;
22
24
  hasKey(websiteId: string, key: string, excludeId?: string): Promise<boolean>;
23
25
  listWebsiteIdsOf(ids: string[]): Promise<string[]>;
@@ -5,6 +5,15 @@ const interface_database_decorators_1 = require("@antelopejs/interface-database-
5
5
  const funnels_table_1 = require("../tables/funnels.table");
6
6
  const RUNNING_STATUS = "running";
7
7
  class FunnelsModel extends (0, interface_database_decorators_1.BasicDataModel)(funnels_table_1.Funnel, funnels_table_1.funnelsTableName) {
8
+ async deleteByWebsite(websiteId) {
9
+ return this.table.getAll(websiteId, "websiteId").delete().run();
10
+ }
11
+ async listByWebsite(websiteId) {
12
+ return this.table
13
+ .getAll(websiteId, "websiteId")
14
+ .orderBy("createdAt", "desc")
15
+ .run();
16
+ }
8
17
  async listRunning(websiteId) {
9
18
  return this.table
10
19
  .getAll(websiteId, "websiteId")
@@ -1 +1 @@
1
- {"version":3,"file":"funnels.model.js","sourceRoot":"","sources":["../../../src/db/models/funnels.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,2DAIiC;AAEjC,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC,MAAa,YAAa,SAAQ,IAAA,8CAAc,EAAC,sBAAM,EAAE,gCAAgB,CAAC;IAExE,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;aAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACd,GAAG;aACA,GAAG,CAAC,YAAY,CAAC;aACjB,IAAI,EAAoB;aACxB,GAAG,CAAC,QAAQ,CAAC;aACb,EAAE,CAAC,cAAc,CAAC,CACtB;aACA,GAAG,EAAE,CAAC;IACX,CAAC;IAQD,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,GAAW,EACX,SAAkB;QAElB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;aACf,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;aAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACd,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,EAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAClE,CAAC;QACJ,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAMD,KAAK,CAAC,gBAAgB,CAAC,GAAa;QAClC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,GAAG,CAAC;aACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;aAClC,QAAQ,EAAE;aACV,GAAG,EAAE,CAAC;IACX,CAAC;CACF;AAnDD,oCAmDC"}
1
+ {"version":3,"file":"funnels.model.js","sourceRoot":"","sources":["../../../src/db/models/funnels.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,2DAIiC;AAEjC,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC,MAAa,YAAa,SAAQ,IAAA,8CAAc,EAAC,sBAAM,EAAE,gCAAgB,CAAC;IACxE,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;aAC9B,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;aAC5B,GAAG,EAAE,CAAC;IACX,CAAC;IAGD,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;aAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACd,GAAG;aACA,GAAG,CAAC,YAAY,CAAC;aACjB,IAAI,EAAoB;aACxB,GAAG,CAAC,QAAQ,CAAC;aACb,EAAE,CAAC,cAAc,CAAC,CACtB;aACA,GAAG,EAAE,CAAC;IACX,CAAC;IAQD,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,GAAW,EACX,SAAkB;QAElB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;aACf,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;aAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACd,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,EAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAClE,CAAC;QACJ,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAMD,KAAK,CAAC,gBAAgB,CAAC,GAAa;QAClC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,GAAG,CAAC;aACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;aAClC,QAAQ,EAAE;aACV,GAAG,EAAE,CAAC;IACX,CAAC;CACF;AA9DD,oCA8DC"}
@@ -1,5 +1,6 @@
1
1
  export * from "./funnels.model";
2
2
  export * from "./marketing_events.model";
3
+ export * from "./marketing_preferences.model";
3
4
  export * from "./marketing_sessions.model";
4
5
  export * from "./marketing_settings.model";
5
6
  export * from "./page_snapshots.model";
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./funnels.model"), exports);
18
18
  __exportStar(require("./marketing_events.model"), exports);
19
+ __exportStar(require("./marketing_preferences.model"), exports);
19
20
  __exportStar(require("./marketing_sessions.model"), exports);
20
21
  __exportStar(require("./marketing_settings.model"), exports);
21
22
  __exportStar(require("./page_snapshots.model"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,2DAAyC;AACzC,6DAA2C;AAC3C,6DAA2C;AAC3C,yDAAuC;AACvC,6DAA2C;AAC3C,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,2DAAyC;AACzC,gEAA8C;AAC9C,6DAA2C;AAC3C,6DAA2C;AAC3C,yDAAuC;AACvC,6DAA2C;AAC3C,mDAAiC"}
@@ -1,6 +1,7 @@
1
1
  import { type Table } from "@antelopejs/interface-database";
2
2
  import { type EventKind } from "@/types";
3
3
  import { MarketingEvent } from "../tables/marketing_events.table";
4
+ type PageviewRow = Pick<MarketingEvent, "timestamp" | "url" | "sessionId">;
4
5
  export interface EventRangeQuery<F extends keyof MarketingEvent> {
5
6
  websiteIds: string[];
6
7
  since: Date;
@@ -20,6 +21,22 @@ export interface ScrollDepthBucket {
20
21
  depth: number;
21
22
  views: number;
22
23
  }
24
+ export type SampleRateQuery = Omit<ScrollDepthQuery, "url">;
25
+ export interface HourlyCountQuery {
26
+ websiteIds: string[];
27
+ since: Date;
28
+ until: Date;
29
+ kind: EventKind;
30
+ perSession: boolean;
31
+ }
32
+ export interface HourlyCountBucket {
33
+ hour: number;
34
+ count: number;
35
+ }
36
+ export interface SampleRateBucket {
37
+ sample: number;
38
+ views: number;
39
+ }
23
40
  declare const MarketingEventsModel_base: {
24
41
  new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
25
42
  readonly table: Table<MarketingEvent>;
@@ -41,9 +58,14 @@ declare const MarketingEventsModel_base: {
41
58
  export declare class MarketingEventsModel extends MarketingEventsModel_base {
42
59
  queryRange<F extends keyof MarketingEvent>(query: EventRangeQuery<F>): Promise<Pick<MarketingEvent, F | "timestamp">[]>;
43
60
  countScrollDepths(query: ScrollDepthQuery): Promise<ScrollDepthBucket[]>;
61
+ countDeclaredSampleRates(query: SampleRateQuery): Promise<SampleRateBucket[]>;
62
+ countHourly(query: HourlyCountQuery): Promise<HourlyCountBucket[]>;
44
63
  insertMany(events: MarketingEvent[]): Promise<number>;
45
64
  deleteHeatmapEvents(websiteId: string, url?: string): Promise<number>;
65
+ countHeatmapEvents(websiteId: string, url?: string): Promise<number>;
66
+ private heatmapEvents;
46
67
  deleteOlderThan(cutoff: Date): Promise<number>;
47
68
  deleteByWebsite(websiteId: string): Promise<number>;
69
+ getLatestPageview(websiteId: string, since: Date): Promise<PageviewRow | undefined>;
48
70
  }
49
71
  export {};
@@ -8,6 +8,7 @@ const constants_1 = require("@/types/constants");
8
8
  const marketing_events_table_1 = require("../tables/marketing_events.table");
9
9
  const EPOCH_LOWER_BOUND = new Date(0);
10
10
  const SCROLL_KIND = "scroll";
11
+ const PAGEVIEW_KIND = "pageview";
11
12
  class MarketingEventsModel extends (0, interface_database_decorators_1.BasicDataModel)(marketing_events_table_1.MarketingEvent, marketing_events_table_1.marketingEventsTableName) {
12
13
  async queryRange(query) {
13
14
  if (query.websiteIds.length === 0) {
@@ -54,6 +55,56 @@ class MarketingEventsModel extends (0, interface_database_decorators_1.BasicData
54
55
  }))
55
56
  .run();
56
57
  }
58
+ async countDeclaredSampleRates(query) {
59
+ if (query.websiteIds.length === 0) {
60
+ return [];
61
+ }
62
+ return this.table
63
+ .getAll(query.websiteIds, "websiteId")
64
+ .filter((doc) => doc.key("timestamp").ge(query.since))
65
+ .filter((doc) => doc.key("timestamp").le(query.until))
66
+ .filter((doc) => doc.key("kind").eq(PAGEVIEW_KIND))
67
+ .filter((doc) => {
68
+ const sample = doc.key("data").cast().key("sample");
69
+ return sample.ge(0).and(sample.le(1));
70
+ })
71
+ .map((doc) => ({
72
+ sample: doc.key("data").cast().key("sample"),
73
+ }))
74
+ .group("sample", (stream, sample) => ({
75
+ sample,
76
+ views: stream.count(),
77
+ }))
78
+ .run();
79
+ }
80
+ async countHourly(query) {
81
+ if (query.websiteIds.length === 0) {
82
+ return [];
83
+ }
84
+ const sinceSeconds = query.since.getTime() / constants_1.MS_PER_SECOND;
85
+ const hours = this.table
86
+ .getAll(query.websiteIds, "websiteId")
87
+ .filter((doc) => doc.key("timestamp").ge(query.since))
88
+ .filter((doc) => doc.key("timestamp").le(query.until))
89
+ .filter((doc) => doc.key("kind").eq(query.kind))
90
+ .map((doc) => ({
91
+ sessionId: doc.key("sessionId"),
92
+ hour: doc
93
+ .key("timestamp")
94
+ .epoch()
95
+ .sub(sinceSeconds)
96
+ .mul(constants_1.MS_PER_SECOND)
97
+ .round()
98
+ .div(constants_1.MS_PER_HOUR)
99
+ .floor(),
100
+ }));
101
+ const counted = query.perSession
102
+ ? hours.group("sessionId", (stream) => ({ hour: stream.min("hour") }))
103
+ : hours;
104
+ return counted
105
+ .group("hour", (stream, hour) => ({ hour, count: stream.count() }))
106
+ .run();
107
+ }
57
108
  async insertMany(events) {
58
109
  if (events.length === 0) {
59
110
  return 0;
@@ -63,13 +114,16 @@ class MarketingEventsModel extends (0, interface_database_decorators_1.BasicData
63
114
  return ids.length;
64
115
  }
65
116
  async deleteHeatmapEvents(websiteId, url) {
66
- let q = this.table
117
+ return this.heatmapEvents(websiteId, url).delete().run();
118
+ }
119
+ async countHeatmapEvents(websiteId, url) {
120
+ return this.heatmapEvents(websiteId, url).count().run();
121
+ }
122
+ heatmapEvents(websiteId, url) {
123
+ const events = this.table
67
124
  .getAll([websiteId], "websiteId")
68
125
  .filter((doc) => interface_database_1.ValueProxy.constant(types_1.HEATMAP_EVENT_KINDS).includes(doc.key("kind")));
69
- if (url) {
70
- q = q.filter((doc) => doc.key("url").eq(url));
71
- }
72
- return q.delete().run();
126
+ return url ? events.filter((doc) => doc.key("url").eq(url)) : events;
73
127
  }
74
128
  async deleteOlderThan(cutoff) {
75
129
  return this.table
@@ -80,6 +134,17 @@ class MarketingEventsModel extends (0, interface_database_decorators_1.BasicData
80
134
  async deleteByWebsite(websiteId) {
81
135
  return this.table.getAll([websiteId], "websiteId").delete().run();
82
136
  }
137
+ async getLatestPageview(websiteId, since) {
138
+ const rows = (await this.table
139
+ .getAll([websiteId], "websiteId")
140
+ .filter((doc) => doc.key("timestamp").ge(since))
141
+ .filter((doc) => doc.key("kind").eq(PAGEVIEW_KIND))
142
+ .orderBy("timestamp", "desc")
143
+ .slice(0, 1)
144
+ .pluck("timestamp", "url", "sessionId")
145
+ .run());
146
+ return rows[0];
147
+ }
83
148
  }
84
149
  exports.MarketingEventsModel = MarketingEventsModel;
85
150
  //# sourceMappingURL=marketing_events.model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"marketing_events.model.js","sourceRoot":"","sources":["../../../src/db/models/marketing_events.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"marketing_events.model.js","sourceRoot":"","sources":["../../../src/db/models/marketing_events.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { MarketingPreferences } from "../tables/marketing_preferences.table";
2
+ declare const MarketingPreferencesModel_base: {
3
+ new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
4
+ readonly table: import("@antelopejs/interface-database").Table<MarketingPreferences>;
5
+ readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
6
+ get(id: string): PromiseLike<MarketingPreferences | undefined>;
7
+ getBy(index: keyof MarketingPreferences, ...keys: any[]): PromiseLike<MarketingPreferences[]>;
8
+ getAll(): PromiseLike<MarketingPreferences[]>;
9
+ insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MarketingPreferences> | import("@antelopejs/interface-database-decorators").DeepPartial<MarketingPreferences>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
10
+ update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<MarketingPreferences>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
11
+ update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MarketingPreferences>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
12
+ delete(id: string): Promise<number>;
13
+ };
14
+ readonly schemaName: string;
15
+ fromPlainData(obj: any): MarketingPreferences;
16
+ fromDatabase(obj: any): MarketingPreferences | undefined;
17
+ toDatabase(obj: any): Record<string, any>;
18
+ validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
19
+ };
20
+ export declare class MarketingPreferencesModel extends MarketingPreferencesModel_base {
21
+ getWebsiteId(userId: string): Promise<string | undefined>;
22
+ setWebsiteId(userId: string, websiteId: string): Promise<void>;
23
+ forget(userId: string): Promise<void>;
24
+ }
25
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MarketingPreferencesModel = void 0;
4
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
5
+ const marketing_preferences_table_1 = require("../tables/marketing_preferences.table");
6
+ class MarketingPreferencesModel extends (0, interface_database_decorators_1.BasicDataModel)(marketing_preferences_table_1.MarketingPreferences, marketing_preferences_table_1.marketingPreferencesTableName) {
7
+ async getWebsiteId(userId) {
8
+ const row = await this.table.get(userId).run();
9
+ return row?.websiteId;
10
+ }
11
+ async setWebsiteId(userId, websiteId) {
12
+ const existing = await this.table.get(userId).run();
13
+ if (existing) {
14
+ await this.table
15
+ .get(userId)
16
+ .update({ websiteId, updatedAt: new Date() })
17
+ .run();
18
+ return;
19
+ }
20
+ await this.table
21
+ .insert({ _id: userId, websiteId, updatedAt: new Date() })
22
+ .run();
23
+ }
24
+ async forget(userId) {
25
+ await this.table.get(userId).delete().run();
26
+ }
27
+ }
28
+ exports.MarketingPreferencesModel = MarketingPreferencesModel;
29
+ //# sourceMappingURL=marketing_preferences.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketing_preferences.model.js","sourceRoot":"","sources":["../../../src/db/models/marketing_preferences.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,uFAG+C;AAE/C,MAAa,yBAA0B,SAAQ,IAAA,8CAAc,EAC3D,kDAAoB,EACpB,2DAA6B,CAC9B;IACC,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/C,OAAO,GAAG,EAAE,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,SAAiB;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,KAAK;iBACb,GAAG,CAAC,MAAM,CAAC;iBACX,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;iBAC5C,GAAG,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,KAAK;aACb,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;aACzD,GAAG,EAAE,CAAC;IACX,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IAC9C,CAAC;CACF;AA1BD,8DA0BC"}
@@ -2,7 +2,7 @@ import { MarketingSession } from "../tables/marketing_sessions.table";
2
2
  export interface SessionActivityDelta {
3
3
  pageviews: number;
4
4
  events: number;
5
- lastSeenAt: Date;
5
+ lastSeenAt?: Date;
6
6
  exitUrl?: string;
7
7
  }
8
8
  declare const MarketingSessionsModel_base: {
@@ -27,6 +27,7 @@ export declare class MarketingSessionsModel extends MarketingSessionsModel_base
27
27
  findLatestForVisitor(websiteId: string, visitorId: string): Promise<MarketingSession | undefined>;
28
28
  getLastActivityByWebsites(websiteIds: string[]): Promise<Map<string, number>>;
29
29
  recordActivity(sessionId: string, delta: SessionActivityDelta): Promise<void>;
30
+ getLatest(websiteId: string): Promise<MarketingSession | undefined>;
30
31
  deleteOlderThan(cutoff: Date): Promise<number>;
31
32
  deleteByWebsite(websiteId: string): Promise<number>;
32
33
  }
@@ -38,11 +38,21 @@ class MarketingSessionsModel extends (0, interface_database_decorators_1.BasicDa
38
38
  .update((doc) => ({
39
39
  pageviewsCount: doc.key("pageviewsCount").add(delta.pageviews),
40
40
  eventsCount: doc.key("eventsCount").add(delta.events),
41
- lastSeenAt: delta.lastSeenAt,
41
+ ...(delta.lastSeenAt !== undefined && {
42
+ lastSeenAt: delta.lastSeenAt,
43
+ }),
42
44
  ...(delta.exitUrl !== undefined && { exitUrl: delta.exitUrl }),
43
45
  }))
44
46
  .run();
45
47
  }
48
+ async getLatest(websiteId) {
49
+ const rows = await this.table
50
+ .getAll(websiteId, "websiteId")
51
+ .orderBy("lastSeenAt", "desc")
52
+ .slice(0, 1)
53
+ .run();
54
+ return rows[0];
55
+ }
46
56
  async deleteOlderThan(cutoff) {
47
57
  return (0, retention_1.deleteExpiredRows)(this.table, "lastSeenAt", cutoff);
48
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"marketing_sessions.model.js","sourceRoot":"","sources":["../../../src/db/models/marketing_sessions.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,iFAG4C;AAC5C,2CAAgD;AAShD,MAAa,sBAAuB,SAAQ,IAAA,8CAAc,EACxD,2CAAgB,EAChB,qDAA0B,CAC3B;IAMC,KAAK,CAAC,oBAAoB,CACxB,SAAiB,EACjB,SAAiB;QAEjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK;aAC7B,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;aAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;aACnD,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;aAC5B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAOD,KAAK,CAAC,yBAAyB,CAC7B,UAAoB;QAEpB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK;iBAC1B,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;iBAC9B,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;iBAC7B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,KAAK,CAAC,YAAY,CAAC;iBACnB,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAU,CAAC;QACnD,CAAC,CAAC,CACH,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;YAC7C,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAQD,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,KAA2B;QAE3B,MAAM,IAAI,CAAC,KAAK;aACb,GAAG,CAAC,SAAS,CAAC;aACd,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChB,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;YAC9D,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;YACrD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;SAC/D,CAAC,CAAC;aACF,GAAG,EAAE,CAAC;IACX,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAY;QAChC,OAAO,IAAA,6BAAiB,EAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IACpE,CAAC;CACF;AA9ED,wDA8EC"}
1
+ {"version":3,"file":"marketing_sessions.model.js","sourceRoot":"","sources":["../../../src/db/models/marketing_sessions.model.ts"],"names":[],"mappings":"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"}
@@ -19,9 +19,10 @@ declare const PageSnapshotsModel_base: {
19
19
  };
20
20
  export declare class PageSnapshotsModel extends PageSnapshotsModel_base {
21
21
  getByPath(websiteId: string, url: string): Promise<PageSnapshot[]>;
22
- countByWebsite(websiteId: string): Promise<number>;
22
+ countByWebsite(websiteId: string, url?: string): Promise<number>;
23
23
  upsert(row: PageSnapshot): Promise<void>;
24
24
  deleteByWebsite(websiteId: string, url?: string): Promise<number>;
25
25
  deleteOlderThan(cutoff: Date): Promise<number>;
26
+ private byWebsite;
26
27
  }
27
28
  export {};
@@ -11,22 +11,22 @@ class PageSnapshotsModel extends (0, interface_database_decorators_1.BasicDataMo
11
11
  .filter((doc) => doc.key("url").eq(url))
12
12
  .run();
13
13
  }
14
- async countByWebsite(websiteId) {
15
- return this.table.getAll([websiteId], "websiteId").count().run();
14
+ async countByWebsite(websiteId, url) {
15
+ return this.byWebsite(websiteId, url).count().run();
16
16
  }
17
17
  async upsert(row) {
18
18
  await this.table.insert(row, { conflict: "replace" }).run();
19
19
  }
20
20
  async deleteByWebsite(websiteId, url) {
21
- let q = this.table.getAll([websiteId], "websiteId");
22
- if (url) {
23
- q = q.filter((doc) => doc.key("url").eq(url));
24
- }
25
- return q.delete().run();
21
+ return this.byWebsite(websiteId, url).delete().run();
26
22
  }
27
23
  async deleteOlderThan(cutoff) {
28
24
  return (0, retention_1.deleteExpiredRows)(this.table, "capturedAt", cutoff);
29
25
  }
26
+ byWebsite(websiteId, url) {
27
+ const rows = this.table.getAll([websiteId], "websiteId");
28
+ return url ? rows.filter((doc) => doc.key("url").eq(url)) : rows;
29
+ }
30
30
  }
31
31
  exports.PageSnapshotsModel = PageSnapshotsModel;
32
32
  //# sourceMappingURL=page_snapshots.model.js.map