@antelopejs/dms-marketing 0.3.2 → 0.4.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.
- package/README.md +18 -15
- package/dist/config.d.ts +1 -0
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/data-api/funnels.d.ts +2 -0
- package/dist/data-api/funnels.js +8 -1
- package/dist/data-api/funnels.js.map +1 -1
- package/dist/db/models/funnels.model.d.ts +2 -0
- package/dist/db/models/funnels.model.js +9 -0
- package/dist/db/models/funnels.model.js.map +1 -1
- package/dist/db/models/index.d.ts +1 -0
- package/dist/db/models/index.js +1 -0
- package/dist/db/models/index.js.map +1 -1
- package/dist/db/models/marketing_events.model.d.ts +22 -0
- package/dist/db/models/marketing_events.model.js +70 -5
- package/dist/db/models/marketing_events.model.js.map +1 -1
- package/dist/db/models/marketing_preferences.model.d.ts +25 -0
- package/dist/db/models/marketing_preferences.model.js +29 -0
- package/dist/db/models/marketing_preferences.model.js.map +1 -0
- package/dist/db/models/marketing_sessions.model.d.ts +2 -1
- package/dist/db/models/marketing_sessions.model.js +11 -1
- package/dist/db/models/marketing_sessions.model.js.map +1 -1
- package/dist/db/models/page_snapshots.model.d.ts +2 -1
- package/dist/db/models/page_snapshots.model.js +7 -7
- package/dist/db/models/page_snapshots.model.js.map +1 -1
- package/dist/db/models/website_statistics.model.d.ts +4 -1
- package/dist/db/models/website_statistics.model.js +15 -1
- package/dist/db/models/website_statistics.model.js.map +1 -1
- package/dist/db/tables/index.d.ts +1 -0
- package/dist/db/tables/index.js +1 -0
- package/dist/db/tables/index.js.map +1 -1
- package/dist/db/tables/marketing_preferences.table.d.ts +6 -0
- package/dist/db/tables/marketing_preferences.table.js +31 -0
- package/dist/db/tables/marketing_preferences.table.js.map +1 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/pages/acquisition/page.d.ts +9 -0
- package/dist/pages/acquisition/page.js +181 -0
- package/dist/pages/acquisition/page.js.map +1 -0
- package/dist/pages/all.d.ts +5 -1
- package/dist/pages/all.js +5 -1
- package/dist/pages/all.js.map +1 -1
- package/dist/pages/blocks.d.ts +18 -0
- package/dist/pages/blocks.js +56 -0
- package/dist/pages/blocks.js.map +1 -0
- package/dist/pages/funnel/page.d.ts +9 -0
- package/dist/pages/funnel/page.js +36 -0
- package/dist/pages/funnel/page.js.map +1 -0
- package/dist/pages/funnel-builder/page.d.ts +9 -0
- package/dist/pages/funnel-builder/page.js +29 -0
- package/dist/pages/funnel-builder/page.js.map +1 -0
- package/dist/pages/funnels/page.d.ts +1 -1
- package/dist/pages/funnels/page.js +200 -3
- package/dist/pages/funnels/page.js.map +1 -1
- package/dist/pages/index.d.ts +1 -0
- package/dist/pages/index.js +1 -0
- package/dist/pages/index.js.map +1 -1
- package/dist/pages/{campaigns → install}/page.d.ts +3 -3
- package/dist/pages/{campaigns → install}/page.js +14 -12
- package/dist/pages/install/page.js.map +1 -0
- package/dist/pages/module.d.ts +3 -0
- package/dist/pages/module.js +30 -3
- package/dist/pages/module.js.map +1 -1
- package/dist/pages/overview/page.d.ts +1 -1
- package/dist/pages/overview/page.js +122 -3
- package/dist/pages/overview/page.js.map +1 -1
- package/dist/pages/pages/page.d.ts +1 -1
- package/dist/pages/pages/page.js +9 -4
- package/dist/pages/pages/page.js.map +1 -1
- package/dist/pages/quick-actions.d.ts +1 -0
- package/dist/pages/quick-actions.js +25 -0
- package/dist/pages/quick-actions.js.map +1 -0
- package/dist/pages/settings/form.d.ts +2 -1
- package/dist/pages/settings/form.js +62 -20
- package/dist/pages/settings/form.js.map +1 -1
- package/dist/pages/settings/page.d.ts +4 -1
- package/dist/pages/settings/page.js +50 -4
- package/dist/pages/settings/page.js.map +1 -1
- package/dist/pages/websites/page.d.ts +11 -0
- package/dist/pages/websites/page.js +62 -0
- package/dist/pages/websites/page.js.map +1 -0
- package/dist/routes/blocks.d.ts +50 -0
- package/dist/routes/blocks.js +269 -0
- package/dist/routes/blocks.js.map +1 -0
- package/dist/routes/collect.d.ts +1 -2
- package/dist/routes/collect.js +19 -12
- package/dist/routes/collect.js.map +1 -1
- package/dist/routes/context.d.ts +8 -0
- package/dist/routes/context.js +54 -0
- package/dist/routes/context.js.map +1 -0
- package/dist/routes/experiments.js +2 -1
- package/dist/routes/experiments.js.map +1 -1
- package/dist/routes/funnels.d.ts +21 -3
- package/dist/routes/funnels.js +150 -7
- package/dist/routes/funnels.js.map +1 -1
- package/dist/routes/index.d.ts +2 -0
- package/dist/routes/index.js +2 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/settings.d.ts +6 -1
- package/dist/routes/settings.js +65 -4
- package/dist/routes/settings.js.map +1 -1
- package/dist/routes/snapshot.d.ts +1 -1
- package/dist/routes/snapshot.js +24 -25
- package/dist/routes/snapshot.js.map +1 -1
- package/dist/routes/stats.d.ts +14 -23
- package/dist/routes/stats.js +73 -97
- package/dist/routes/stats.js.map +1 -1
- package/dist/routes/tracker.js +6 -4
- package/dist/routes/tracker.js.map +1 -1
- package/dist/routes/websites.d.ts +4 -0
- package/dist/routes/websites.js +111 -12
- package/dist/routes/websites.js.map +1 -1
- package/dist/services/acquisition-report.d.ts +62 -0
- package/dist/services/acquisition-report.js +181 -0
- package/dist/services/acquisition-report.js.map +1 -0
- package/dist/services/acquisition.d.ts +9 -3
- package/dist/services/acquisition.js +35 -5
- package/dist/services/acquisition.js.map +1 -1
- package/dist/services/catalog.d.ts +3 -0
- package/dist/services/catalog.js +17 -0
- package/dist/services/catalog.js.map +1 -0
- package/dist/services/collect.d.ts +1 -2
- package/dist/services/collect.js +49 -24
- package/dist/services/collect.js.map +1 -1
- package/dist/services/composed.d.ts +9 -0
- package/dist/services/composed.js +62 -0
- package/dist/services/composed.js.map +1 -0
- package/dist/services/context.d.ts +20 -0
- package/dist/services/context.js +76 -0
- package/dist/services/context.js.map +1 -0
- package/dist/services/dashboard.d.ts +74 -0
- package/dist/services/dashboard.js +343 -0
- package/dist/services/dashboard.js.map +1 -0
- package/dist/services/experiments/results.d.ts +12 -1
- package/dist/services/experiments/results.js +19 -2
- package/dist/services/experiments/results.js.map +1 -1
- package/dist/services/experiments/stats.d.ts +7 -1
- package/dist/services/experiments/stats.js +43 -5
- package/dist/services/experiments/stats.js.map +1 -1
- package/dist/services/funnel-report.d.ts +64 -0
- package/dist/services/funnel-report.js +280 -0
- package/dist/services/funnel-report.js.map +1 -0
- package/dist/services/funnels/compute.d.ts +2 -0
- package/dist/services/funnels/compute.js +25 -13
- package/dist/services/funnels/compute.js.map +1 -1
- package/dist/services/funnels/results.js +4 -1
- package/dist/services/funnels/results.js.map +1 -1
- package/dist/services/funnels/step-path.d.ts +4 -0
- package/dist/services/funnels/step-path.js +47 -0
- package/dist/services/funnels/step-path.js.map +1 -0
- package/dist/services/funnels-table.d.ts +31 -0
- package/dist/services/funnels-table.js +230 -0
- package/dist/services/funnels-table.js.map +1 -0
- package/dist/services/heatmap.d.ts +15 -3
- package/dist/services/heatmap.js +54 -11
- package/dist/services/heatmap.js.map +1 -1
- package/dist/services/hourly-traffic.d.ts +4 -0
- package/dist/services/hourly-traffic.js +35 -0
- package/dist/services/hourly-traffic.js.map +1 -0
- package/dist/services/origin-guard.d.ts +9 -1
- package/dist/services/origin-guard.js +46 -1
- package/dist/services/origin-guard.js.map +1 -1
- package/dist/services/period.d.ts +26 -1
- package/dist/services/period.js +99 -9
- package/dist/services/period.js.map +1 -1
- package/dist/services/prune.d.ts +6 -0
- package/dist/services/prune.js +35 -0
- package/dist/services/prune.js.map +1 -1
- package/dist/services/request-body.d.ts +1 -2
- package/dist/services/request-body.js +10 -36
- package/dist/services/request-body.js.map +1 -1
- package/dist/services/request-meta.d.ts +0 -1
- package/dist/services/request-meta.js +0 -11
- package/dist/services/request-meta.js.map +1 -1
- package/dist/services/rollups.d.ts +25 -0
- package/dist/services/rollups.js +102 -0
- package/dist/services/rollups.js.map +1 -0
- package/dist/services/sessionize.d.ts +5 -1
- package/dist/services/sessionize.js +52 -10
- package/dist/services/sessionize.js.map +1 -1
- package/dist/services/settings.d.ts +41 -2
- package/dist/services/settings.js +219 -6
- package/dist/services/settings.js.map +1 -1
- package/dist/services/snapshots.d.ts +3 -2
- package/dist/services/snapshots.js +110 -9
- package/dist/services/snapshots.js.map +1 -1
- package/dist/services/tenant-website.js +1 -0
- package/dist/services/tenant-website.js.map +1 -1
- package/dist/services/url.js +12 -4
- package/dist/services/url.js.map +1 -1
- package/dist/services/website-hosts.d.ts +15 -0
- package/dist/services/website-hosts.js +67 -0
- package/dist/services/website-hosts.js.map +1 -0
- package/dist/services/website-report.d.ts +40 -0
- package/dist/services/website-report.js +84 -0
- package/dist/services/website-report.js.map +1 -0
- package/dist/types/constants.d.ts +14 -2
- package/dist/types/constants.js +17 -6
- package/dist/types/constants.js.map +1 -1
- package/dist/types/events.d.ts +221 -68
- package/dist/types/events.js +60 -11
- package/dist/types/events.js.map +1 -1
- package/dist/types/snapshots.d.ts +6 -0
- package/dist/types/snapshots.js +2 -0
- package/dist/types/snapshots.js.map +1 -1
- package/dist/types/statistics.d.ts +2 -1
- package/dist/types/statistics.js +9 -2
- package/dist/types/statistics.js.map +1 -1
- package/dist/utils/experiment-type.js +1 -1
- package/dist/utils/experiment-type.js.map +1 -1
- package/dist/utils/funnel-steps-type.d.ts +21 -3
- package/dist/utils/funnel-steps-type.js +7 -2
- package/dist/utils/funnel-steps-type.js.map +1 -1
- package/frontend-vue/app/components/ChannelsCard.vue +265 -0
- package/frontend-vue/app/components/Context.vue +479 -0
- package/frontend-vue/app/components/ExperimentInput.vue +3 -1
- package/frontend-vue/app/components/ExperimentReport.vue +736 -0
- package/frontend-vue/app/components/FirstRun.vue +60 -0
- package/frontend-vue/app/components/FunnelBuilder.vue +1595 -0
- package/frontend-vue/app/components/FunnelFigure.vue +640 -0
- package/frontend-vue/app/components/FunnelReport.vue +532 -0
- package/frontend-vue/app/components/FunnelStepsInput.vue +3 -1
- package/frontend-vue/app/components/FunnelTemplates.vue +161 -0
- package/frontend-vue/app/components/HeatmapCanvas.vue +11 -4
- package/frontend-vue/app/components/InstallGuide.vue +753 -0
- package/frontend-vue/app/components/PagePreview.vue +889 -416
- package/frontend-vue/app/components/PagesExplorer.vue +552 -0
- package/frontend-vue/app/components/ScrollDepthOverlay.vue +48 -20
- package/frontend-vue/app/components/TopListTabs.vue +317 -0
- package/frontend-vue/app/components/TrackerSnippet.vue +50 -16
- package/frontend-vue/app/components/VariationsInput.vue +15 -5
- package/frontend-vue/app/components/WebsitesGrid.vue +799 -0
- package/frontend-vue/app/composables/useContextLink.ts +16 -0
- package/frontend-vue/app/composables/useExperiment.ts +1 -2
- package/frontend-vue/app/composables/useFunnelSteps.ts +1 -2
- package/frontend-vue/app/composables/useLatestRequest.ts +2 -4
- package/frontend-vue/app/composables/useMarketingApi.ts +298 -133
- package/frontend-vue/app/composables/useMarketingContext.ts +55 -0
- package/frontend-vue/app/composables/useMarketingRoutes.ts +80 -27
- package/frontend-vue/app/composables/useSnapshotFrame.ts +26 -4
- package/frontend-vue/app/constants.ts +22 -0
- package/frontend-vue/app/plugins/funnel-steps-data-type.client.ts +2 -1
- package/frontend-vue/app/utils/channels.ts +37 -0
- package/frontend-vue/app/utils/format.ts +132 -0
- package/frontend-vue/app/utils/funnel-draft.ts +264 -0
- package/frontend-vue/app/utils/heatmap.ts +82 -0
- package/frontend-vue/app/utils/heatmapPalette.ts +10 -0
- package/frontend-vue/app/utils/host-conflict.ts +48 -0
- package/frontend-vue/app/utils/sample-size.ts +17 -0
- package/frontend-vue/app/utils/snapshotViewportUnits.ts +15 -5
- package/frontend-vue/app/utils/snippet.ts +53 -0
- package/frontend-vue/app/utils/step-path.ts +32 -0
- package/frontend-vue/dms.frontend.ts +4 -3
- package/frontend-vue/i18n/locales/marketing-en-GB.json +1083 -316
- package/frontend-vue/i18n/locales/marketing-fr-FR.json +1087 -320
- package/frontend-vue/package.json +3 -0
- package/frontend-vue/tests/drafts.test.ts +3 -3
- package/frontend-vue/tests/format.test.ts +73 -0
- package/frontend-vue/tests/funnel-draft.test.ts +194 -0
- package/frontend-vue/tests/heatmap.test.ts +32 -0
- package/frontend-vue/tests/i18n.test.ts +87 -4
- package/frontend-vue/tests/latest-request.test.ts +6 -3
- package/frontend-vue/tests/locale-typography.test.ts +115 -0
- package/frontend-vue/tests/registration.test.ts +21 -11
- package/frontend-vue/tests/routes.test.ts +67 -7
- package/frontend-vue/tests/server-parity.test.ts +77 -0
- package/frontend-vue/tests/stubs/frontend-module.ts +18 -3
- package/package.json +9 -7
- package/static/snapshot.js +46 -16
- package/static/tracker.js +139 -48
- package/dist/pages/campaigns/page.js.map +0 -1
- package/frontend-vue/app/components/CampaignsView.vue +0 -330
- package/frontend-vue/app/components/FunnelDetail.vue +0 -1026
- package/frontend-vue/app/components/FunnelsView.vue +0 -493
- package/frontend-vue/app/components/NoWebsiteState.vue +0 -18
- package/frontend-vue/app/components/OverviewView.vue +0 -493
- package/frontend-vue/app/components/PagesView.vue +0 -391
- package/frontend-vue/app/components/TextKpiCard.vue +0 -28
- package/frontend-vue/app/components/TopListTabsCard.vue +0 -162
- package/frontend-vue/app/composables/useChildId.ts +0 -13
- package/frontend-vue/app/composables/useMarketingPeriod.ts +0 -65
- package/frontend-vue/app/composables/useMarketingWebsiteForm.ts +0 -69
- package/frontend-vue/app/composables/useMarketingWebsites.ts +0 -80
- package/frontend-vue/app/utils/dmsComponent.ts +0 -18
- package/frontend-vue/tests/period.test.ts +0 -35
package/dist/services/collect.js
CHANGED
|
@@ -8,6 +8,7 @@ const db_1 = require("@/db");
|
|
|
8
8
|
const types_1 = require("@/types");
|
|
9
9
|
const constants_1 = require("@/types/constants");
|
|
10
10
|
const acquisition_1 = require("./acquisition");
|
|
11
|
+
const bounded_cache_1 = require("./bounded-cache");
|
|
11
12
|
const experiment_definitions_1 = require("./experiment-definitions");
|
|
12
13
|
const geoip_1 = require("./geoip");
|
|
13
14
|
const rollup_write_1 = require("./rollup-write");
|
|
@@ -17,13 +18,13 @@ const url_1 = require("./url");
|
|
|
17
18
|
const user_agent_1 = require("./user-agent");
|
|
18
19
|
const visitor_id_1 = require("./visitor-id");
|
|
19
20
|
const EXPOSURE_KIND = "exposure";
|
|
20
|
-
const
|
|
21
|
+
const PAGEVIEW_KIND = "pageview";
|
|
21
22
|
async function processCollectBatch(website, events, meta) {
|
|
22
23
|
const now = new Date();
|
|
23
|
-
const prepared = await acceptExposures(website, prepareEvents(events));
|
|
24
|
-
const
|
|
24
|
+
const prepared = await acceptExposures(website, prepareEvents(website._id, events));
|
|
25
|
+
const refused = { accepted: 0, dropped: events.length };
|
|
25
26
|
if (prepared.length === 0) {
|
|
26
|
-
return
|
|
27
|
+
return refused;
|
|
27
28
|
}
|
|
28
29
|
const context = {
|
|
29
30
|
website,
|
|
@@ -31,18 +32,38 @@ async function processCollectBatch(website, events, meta) {
|
|
|
31
32
|
now,
|
|
32
33
|
ownHostnames: collectOwnHostnames(website, prepared),
|
|
33
34
|
};
|
|
34
|
-
const resolution = await openSession(context, prepared
|
|
35
|
+
const resolution = await openSession(context, prepared, meta);
|
|
36
|
+
if (!resolution) {
|
|
37
|
+
return refused;
|
|
38
|
+
}
|
|
35
39
|
const docs = prepared.map((event) => buildEventDoc(context, resolution.session, event));
|
|
36
40
|
await (0, interface_database_decorators_1.GetModel)(db_1.MarketingEventsModel, website.tenantId).insertMany(docs);
|
|
37
41
|
const previous = snapshotSession(resolution.session);
|
|
38
|
-
await touchSession(context, resolution
|
|
42
|
+
await touchSession(context, resolution, docs);
|
|
39
43
|
recordRollup(context, resolution, docs, previous);
|
|
40
|
-
return { accepted: docs.length, dropped };
|
|
44
|
+
return { accepted: docs.length, dropped: events.length - docs.length };
|
|
45
|
+
}
|
|
46
|
+
const invalidEventLogGate = new bounded_cache_1.BoundedCache(constants_1.MS_PER_MINUTE);
|
|
47
|
+
function prepareEvents(websiteId, events) {
|
|
48
|
+
const prepared = [];
|
|
49
|
+
for (const event of events) {
|
|
50
|
+
const parsed = types_1.trackedEventSchema.safeParse(event);
|
|
51
|
+
if (parsed.success) {
|
|
52
|
+
const input = parsed.data;
|
|
53
|
+
prepared.push({ input, url: (0, url_1.parseTrackedUrl)(input.url) });
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
warnInvalidEvent(websiteId, parsed.error.issues[0]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return prepared;
|
|
41
60
|
}
|
|
42
|
-
function
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
61
|
+
function warnInvalidEvent(websiteId, issue) {
|
|
62
|
+
if (invalidEventLogGate.get(websiteId)) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
invalidEventLogGate.set(websiteId, true);
|
|
66
|
+
logging_1.Logging.Warn(`[dms-marketing] collect: dropping invalid events for website '${websiteId}' (${issue?.path.join(".") ?? "event"}: ${issue?.message ?? "invalid"}).`);
|
|
46
67
|
}
|
|
47
68
|
async function acceptExposures(website, events) {
|
|
48
69
|
if (!events.some((event) => event.input.kind === EXPOSURE_KIND)) {
|
|
@@ -52,21 +73,19 @@ async function acceptExposures(website, events) {
|
|
|
52
73
|
return events.filter((event) => event.input.kind !== EXPOSURE_KIND ||
|
|
53
74
|
running.has(event.input.name ?? ""));
|
|
54
75
|
}
|
|
55
|
-
function isAcceptable(event) {
|
|
56
|
-
if (NAME_REQUIRED_KINDS.has(event.kind) && !event.name) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
return (!event.data || JSON.stringify(event.data).length <= constants_1.MAX_EVENT_DATA_BYTES);
|
|
60
|
-
}
|
|
61
76
|
function collectOwnHostnames(website, events) {
|
|
62
77
|
const candidates = [website.domain, ...events.map((e) => e.url.hostname)];
|
|
63
78
|
return new Set(candidates.map(url_1.toBareHostname).filter((bare) => bare !== undefined));
|
|
64
79
|
}
|
|
65
|
-
async function openSession(context,
|
|
80
|
+
async function openSession(context, prepared, meta) {
|
|
81
|
+
const pageview = prepared.find((event) => event.input.kind === PAGEVIEW_KIND);
|
|
82
|
+
const first = pageview ?? prepared[0];
|
|
66
83
|
return (0, sessionize_1.resolveSession)((0, interface_database_decorators_1.GetModel)(db_1.MarketingSessionsModel, context.website.tenantId), {
|
|
67
84
|
websiteId: context.website._id,
|
|
68
85
|
visitorId: context.visitorId,
|
|
69
86
|
now: context.now,
|
|
87
|
+
startedAt: eventTimestamp(first.input, context.now),
|
|
88
|
+
opensSession: pageview !== undefined,
|
|
70
89
|
sessionIdleTimeoutMs: (0, config_1.getConfig)().sessionIdleTimeout,
|
|
71
90
|
entryUrl: first.url.path,
|
|
72
91
|
referrerDomain: (0, url_1.extractReferrerDomain)(first.input.referrer, context.ownHostnames),
|
|
@@ -107,18 +126,23 @@ function snapshotSession(session) {
|
|
|
107
126
|
exitUrl: session.exitUrl,
|
|
108
127
|
};
|
|
109
128
|
}
|
|
110
|
-
async function touchSession(context,
|
|
129
|
+
async function touchSession(context, resolution, docs) {
|
|
130
|
+
const { session, extendsSession } = resolution;
|
|
111
131
|
const pageviews = docs.filter((doc) => doc.kind === "pageview");
|
|
112
|
-
const lastPageview =
|
|
132
|
+
const lastPageview = extendsSession
|
|
133
|
+
? pageviews[pageviews.length - 1]
|
|
134
|
+
: undefined;
|
|
113
135
|
await (0, interface_database_decorators_1.GetModel)(db_1.MarketingSessionsModel, context.website.tenantId).recordActivity(session._id, {
|
|
114
136
|
pageviews: pageviews.length,
|
|
115
137
|
events: docs.length,
|
|
116
|
-
lastSeenAt: context.now,
|
|
138
|
+
lastSeenAt: extendsSession ? context.now : undefined,
|
|
117
139
|
exitUrl: lastPageview?.url,
|
|
118
140
|
});
|
|
119
141
|
session.pageviewsCount += pageviews.length;
|
|
120
142
|
session.eventsCount += docs.length;
|
|
121
|
-
|
|
143
|
+
if (extendsSession) {
|
|
144
|
+
session.lastSeenAt = context.now;
|
|
145
|
+
}
|
|
122
146
|
if (lastPageview) {
|
|
123
147
|
session.exitUrl = lastPageview.url;
|
|
124
148
|
}
|
|
@@ -165,7 +189,8 @@ function bounceDelta(batch) {
|
|
|
165
189
|
return Number(isBounced) - Number(wasBounced);
|
|
166
190
|
}
|
|
167
191
|
function durationDelta(batch, now) {
|
|
168
|
-
|
|
192
|
+
const gap = now.getTime() - batch.previous.lastSeenAt.getTime();
|
|
193
|
+
return gap < (0, config_1.getConfig)().sessionIdleTimeout ? Math.max(0, gap) : 0;
|
|
169
194
|
}
|
|
170
195
|
function recordRollup(context, resolution, docs, previous) {
|
|
171
196
|
const batch = {
|
|
@@ -186,7 +211,7 @@ function recordRollup(context, resolution, docs, previous) {
|
|
|
186
211
|
tops: collectTops(batch),
|
|
187
212
|
drops: collectDrops(batch),
|
|
188
213
|
};
|
|
189
|
-
void (0, rollup_write_1.addDailyMarketingStats)((0, interface_database_decorators_1.GetModel)(db_1.WebsiteStatisticsModel, context.website.tenantId), context.website._id, (0, rollup_write_1.getUtcMidnight)(context.now), delta).catch((err) => {
|
|
214
|
+
void (0, rollup_write_1.addDailyMarketingStats)((0, interface_database_decorators_1.GetModel)(db_1.WebsiteStatisticsModel, context.website.tenantId), context.website._id, (0, rollup_write_1.getUtcMidnight)(docs[0]?.timestamp ?? context.now), delta).catch((err) => {
|
|
190
215
|
logging_1.Logging.Error("[dms-marketing] daily rollup write failed:", err);
|
|
191
216
|
});
|
|
192
217
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../src/services/collect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../src/services/collect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BlockText, ComposedText } from "@antelopejs/interface-dms/base/types/composed-text";
|
|
2
|
+
import type { Tone } from "@antelopejs/interface-dms/base/types/tone";
|
|
3
|
+
import type { ComparisonKind } from "./period";
|
|
4
|
+
export declare function percentText(value: number | null): BlockText;
|
|
5
|
+
export declare function durationText(seconds: number): ComposedText;
|
|
6
|
+
export declare function decimalText(value: number | null): BlockText | number;
|
|
7
|
+
export type DeltaUnit = "points" | "seconds" | "number";
|
|
8
|
+
export declare function deltaText(delta: number | null, unit: DeltaUnit, comparison?: ComparisonKind): ComposedText | undefined;
|
|
9
|
+
export declare function deltaTone(delta: number | null, invert?: boolean): Tone;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.percentText = percentText;
|
|
4
|
+
exports.durationText = durationText;
|
|
5
|
+
exports.decimalText = decimalText;
|
|
6
|
+
exports.deltaText = deltaText;
|
|
7
|
+
exports.deltaTone = deltaTone;
|
|
8
|
+
const constants_1 = require("@/types/constants");
|
|
9
|
+
const COMPOSE_PREFIX = "$page.marketing.compose.";
|
|
10
|
+
const DECIMALS = 10;
|
|
11
|
+
const NO_VALUE = "—";
|
|
12
|
+
const FLAT_DELTA = 0.05;
|
|
13
|
+
function oneDecimal(value) {
|
|
14
|
+
return Math.round(value * DECIMALS) / DECIMALS;
|
|
15
|
+
}
|
|
16
|
+
function compose(key, params = {}) {
|
|
17
|
+
return { key: `${COMPOSE_PREFIX}${key}`, params };
|
|
18
|
+
}
|
|
19
|
+
function percentText(value) {
|
|
20
|
+
return value === null
|
|
21
|
+
? NO_VALUE
|
|
22
|
+
: compose("percent", {
|
|
23
|
+
value: { type: "number", value: oneDecimal(value) },
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function durationText(seconds) {
|
|
27
|
+
const total = Math.max(0, Math.round(seconds));
|
|
28
|
+
const hours = Math.floor(total / constants_1.SECONDS_PER_HOUR);
|
|
29
|
+
const minutes = Math.floor((total % constants_1.SECONDS_PER_HOUR) / constants_1.SECONDS_PER_MINUTE);
|
|
30
|
+
const rest = total % constants_1.SECONDS_PER_MINUTE;
|
|
31
|
+
if (hours > 0) {
|
|
32
|
+
return compose("duration_hours", { hours, minutes });
|
|
33
|
+
}
|
|
34
|
+
return minutes > 0
|
|
35
|
+
? compose("duration_minutes", { minutes, seconds: rest })
|
|
36
|
+
: compose("duration_seconds", { seconds: rest });
|
|
37
|
+
}
|
|
38
|
+
function decimalText(value) {
|
|
39
|
+
return value === null ? NO_VALUE : oneDecimal(value);
|
|
40
|
+
}
|
|
41
|
+
function deltaText(delta, unit, comparison = "previous-period") {
|
|
42
|
+
if (delta === null) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
const rounded = unit === "seconds" ? Math.round(delta) : oneDecimal(delta);
|
|
46
|
+
const sign = rounded > 0 ? "+" : rounded < 0 ? "−" : "±";
|
|
47
|
+
const magnitude = Math.abs(rounded);
|
|
48
|
+
const value = unit === "seconds"
|
|
49
|
+
? durationText(magnitude)
|
|
50
|
+
: compose(unit === "points" ? "points" : "number", {
|
|
51
|
+
value: { type: "number", value: magnitude },
|
|
52
|
+
});
|
|
53
|
+
return compose(comparison === "previous-year" ? "delta_previous_year" : "delta", { sign, value });
|
|
54
|
+
}
|
|
55
|
+
function deltaTone(delta, invert = false) {
|
|
56
|
+
if (delta === null || Math.abs(delta) < FLAT_DELTA) {
|
|
57
|
+
return "neutral";
|
|
58
|
+
}
|
|
59
|
+
const better = invert ? delta < 0 : delta > 0;
|
|
60
|
+
return better ? "success" : "error";
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=composed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composed.js","sourceRoot":"","sources":["../../src/services/composed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type RequestContext } from "@antelopejs/interface-api";
|
|
2
|
+
import type { User } from "@antelopejs/interface-dms/auth/db";
|
|
3
|
+
import type { Website } from "@/db/tables/websites.table";
|
|
4
|
+
export type WebsiteState = "live" | "waiting" | "paused";
|
|
5
|
+
export interface ContextWebsite {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
domain: string;
|
|
9
|
+
state: WebsiteState;
|
|
10
|
+
lastActivityAt: number | null;
|
|
11
|
+
}
|
|
12
|
+
export interface MarketingContextPayload {
|
|
13
|
+
websites: ContextWebsite[];
|
|
14
|
+
selectedId: string | null;
|
|
15
|
+
}
|
|
16
|
+
export declare function toContextWebsite(website: Website, activity: ReadonlyMap<string, number>): ContextWebsite;
|
|
17
|
+
export declare function loadWebsiteActivity(tenantId: string, websites: Website[]): Promise<Map<string, number>>;
|
|
18
|
+
export declare function resolveContextWebsite(context: RequestContext, user: User, website: unknown): Promise<Website>;
|
|
19
|
+
export declare function loadMarketingContext(context: RequestContext, user: User): Promise<MarketingContextPayload>;
|
|
20
|
+
export declare function selectContextWebsite(context: RequestContext, user: User, websiteId: string): Promise<void>;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toContextWebsite = toContextWebsite;
|
|
4
|
+
exports.loadWebsiteActivity = loadWebsiteActivity;
|
|
5
|
+
exports.resolveContextWebsite = resolveContextWebsite;
|
|
6
|
+
exports.loadMarketingContext = loadMarketingContext;
|
|
7
|
+
exports.selectContextWebsite = selectContextWebsite;
|
|
8
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
9
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
10
|
+
const request_tenant_1 = require("@antelopejs/interface-dms/request-tenant");
|
|
11
|
+
const db_1 = require("@/db");
|
|
12
|
+
const constants_1 = require("@/types/constants");
|
|
13
|
+
const query_param_1 = require("./query-param");
|
|
14
|
+
const tenant_website_1 = require("./tenant-website");
|
|
15
|
+
const NO_WEBSITE_MESSAGE = "$page.marketing.errors.no_website";
|
|
16
|
+
function websiteState(website, lastActivityAt) {
|
|
17
|
+
if (!website.trackingEnabled) {
|
|
18
|
+
return "paused";
|
|
19
|
+
}
|
|
20
|
+
return lastActivityAt === null ? "waiting" : "live";
|
|
21
|
+
}
|
|
22
|
+
function toContextWebsite(website, activity) {
|
|
23
|
+
const lastActivityAt = activity.get(website._id) ?? null;
|
|
24
|
+
return {
|
|
25
|
+
id: website._id,
|
|
26
|
+
name: website.name,
|
|
27
|
+
domain: website.domain,
|
|
28
|
+
state: websiteState(website, lastActivityAt),
|
|
29
|
+
lastActivityAt,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async function loadWebsiteActivity(tenantId, websites) {
|
|
33
|
+
if (websites.length === 0) {
|
|
34
|
+
return new Map();
|
|
35
|
+
}
|
|
36
|
+
return (0, interface_database_decorators_1.GetModel)(db_1.MarketingSessionsModel, tenantId).getLastActivityByWebsites(websites.map((website) => website._id));
|
|
37
|
+
}
|
|
38
|
+
async function preferredWebsiteId(tenantId, user) {
|
|
39
|
+
return (0, interface_database_decorators_1.GetModel)(db_1.MarketingPreferencesModel, tenantId).getWebsiteId(user._id);
|
|
40
|
+
}
|
|
41
|
+
async function resolveContextWebsite(context, user, website) {
|
|
42
|
+
const wanted = (0, query_param_1.queryString)(website);
|
|
43
|
+
if (wanted) {
|
|
44
|
+
return (0, tenant_website_1.requireTenantWebsite)(context, wanted);
|
|
45
|
+
}
|
|
46
|
+
const tenantId = (0, request_tenant_1.getRequestTenantId)(context);
|
|
47
|
+
const preferred = await preferredWebsiteId(tenantId, user);
|
|
48
|
+
const saved = preferred
|
|
49
|
+
? await (0, interface_database_decorators_1.GetModel)(db_1.WebsitesModel).get(preferred)
|
|
50
|
+
: undefined;
|
|
51
|
+
if (saved?.tenantId === tenantId) {
|
|
52
|
+
return saved;
|
|
53
|
+
}
|
|
54
|
+
const [mostActive] = await (0, tenant_website_1.listTenantWebsites)(tenantId);
|
|
55
|
+
if (!mostActive) {
|
|
56
|
+
throw new interface_api_1.HTTPResult(constants_1.HTTP_NOT_FOUND, NO_WEBSITE_MESSAGE);
|
|
57
|
+
}
|
|
58
|
+
return mostActive;
|
|
59
|
+
}
|
|
60
|
+
async function loadMarketingContext(context, user) {
|
|
61
|
+
const tenantId = (0, request_tenant_1.getRequestTenantId)(context);
|
|
62
|
+
const all = await (0, interface_database_decorators_1.GetModel)(db_1.WebsitesModel).getByTenant(tenantId);
|
|
63
|
+
const activity = await loadWebsiteActivity(tenantId, all);
|
|
64
|
+
const websites = [...all].sort((a, b) => (activity.get(b._id) ?? 0) - (activity.get(a._id) ?? 0));
|
|
65
|
+
const preferred = await preferredWebsiteId(tenantId, user);
|
|
66
|
+
const selected = websites.find((site) => site._id === preferred) ?? websites[0];
|
|
67
|
+
return {
|
|
68
|
+
websites: websites.map((site) => toContextWebsite(site, activity)),
|
|
69
|
+
selectedId: selected?._id ?? null,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async function selectContextWebsite(context, user, websiteId) {
|
|
73
|
+
const website = await (0, tenant_website_1.requireTenantWebsite)(context, websiteId);
|
|
74
|
+
await (0, interface_database_decorators_1.GetModel)(db_1.MarketingPreferencesModel, (0, request_tenant_1.getRequestTenantId)(context)).setWebsiteId(user._id, website._id);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/services/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { StatGroupItem } from "@antelopejs/interface-dms/base/stat-group";
|
|
2
|
+
import type { BlockText } from "@antelopejs/interface-dms/base/types/composed-text";
|
|
3
|
+
import type { Website } from "@/db/tables/websites.table";
|
|
4
|
+
import type { TopDimension } from "@/types";
|
|
5
|
+
import type { ComparisonKind } from "./period";
|
|
6
|
+
import { type RollupRead, type RollupTotals } from "./rollups";
|
|
7
|
+
export declare const KPI_METRICS: {
|
|
8
|
+
readonly pageviews: (totals: RollupTotals) => number;
|
|
9
|
+
readonly sessions: (totals: RollupTotals) => number;
|
|
10
|
+
readonly "new-visitors": (totals: RollupTotals) => number;
|
|
11
|
+
readonly "custom-events": (totals: RollupTotals) => number;
|
|
12
|
+
};
|
|
13
|
+
export type KpiMetric = keyof typeof KPI_METRICS;
|
|
14
|
+
export declare function isKpiMetric(value: unknown): value is KpiMetric;
|
|
15
|
+
export interface KpiPayload {
|
|
16
|
+
value: number;
|
|
17
|
+
previousValue?: number;
|
|
18
|
+
delta?: number;
|
|
19
|
+
sparkline: number[];
|
|
20
|
+
}
|
|
21
|
+
export declare function kpiPayload(read: RollupRead, metric: KpiMetric): KpiPayload;
|
|
22
|
+
interface ChartPoint {
|
|
23
|
+
x: number;
|
|
24
|
+
y: number | null;
|
|
25
|
+
}
|
|
26
|
+
interface ChartSeries {
|
|
27
|
+
name: string;
|
|
28
|
+
data: ChartPoint[];
|
|
29
|
+
color?: string;
|
|
30
|
+
strokeDashArray?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface TrafficPayload {
|
|
33
|
+
value: number;
|
|
34
|
+
previousValue?: number;
|
|
35
|
+
delta?: number;
|
|
36
|
+
series: ChartSeries[];
|
|
37
|
+
comparisonSeries?: ChartSeries[];
|
|
38
|
+
}
|
|
39
|
+
export declare function trafficPayload(read: RollupRead, metric: KpiMetric, website: Website, comparison: ComparisonKind): Promise<TrafficPayload>;
|
|
40
|
+
export declare function qualityItems(read: RollupRead, comparison: ComparisonKind): StatGroupItem[];
|
|
41
|
+
export interface TopRow {
|
|
42
|
+
id: string;
|
|
43
|
+
title: string;
|
|
44
|
+
value: number;
|
|
45
|
+
description?: BlockText;
|
|
46
|
+
share: number;
|
|
47
|
+
delta?: number | null;
|
|
48
|
+
to?: string;
|
|
49
|
+
icon?: string;
|
|
50
|
+
tag?: string;
|
|
51
|
+
}
|
|
52
|
+
export type TopLabelKind = "raw" | "channel" | "country" | "language" | "device";
|
|
53
|
+
export interface TopTabDefinition {
|
|
54
|
+
id: string;
|
|
55
|
+
label: string;
|
|
56
|
+
dimension: TopDimension;
|
|
57
|
+
labelKind?: TopLabelKind;
|
|
58
|
+
link?: (key: string) => string;
|
|
59
|
+
}
|
|
60
|
+
export interface TopTabPayload {
|
|
61
|
+
id: string;
|
|
62
|
+
label: string;
|
|
63
|
+
labelKind: TopLabelKind;
|
|
64
|
+
total: number;
|
|
65
|
+
items: TopRow[];
|
|
66
|
+
}
|
|
67
|
+
export declare function pagesLink(path?: string): string;
|
|
68
|
+
export declare function acquisitionLink(channel?: string): string;
|
|
69
|
+
export declare function eventFunnelLink(name: string): string;
|
|
70
|
+
export declare function isTopGroup(value: unknown): value is string;
|
|
71
|
+
export declare function topGroupPayload(read: RollupRead, group: string): TopTabPayload[];
|
|
72
|
+
export declare function goalEventNames(website: Website): Promise<Set<string>>;
|
|
73
|
+
export declare function devicesPayload(read: RollupRead): TopRow[];
|
|
74
|
+
export {};
|