@iann29/rastro 0.1.0-alpha.4 → 0.1.0-alpha.6
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 +203 -56
- package/agent/integration.md +17 -15
- package/agent/manifest.json +6 -4
- package/agent/manifest.schema.json +8 -5
- package/dist/client/federation.d.ts +34 -8
- package/dist/client/federation.d.ts.map +1 -1
- package/dist/client/federation.js +17 -3
- package/dist/client/federation.js.map +1 -1
- package/dist/client/index.d.ts +486 -31
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +209 -41
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +8 -0
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/_generated/component.d.ts +82 -8
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/affiliates.d.ts.map +1 -1
- package/dist/component/affiliates.js +6 -2
- package/dist/component/affiliates.js.map +1 -1
- package/dist/component/cardinality.d.ts.map +1 -1
- package/dist/component/cardinality.js.map +1 -1
- package/dist/component/constants.d.ts +6 -0
- package/dist/component/constants.d.ts.map +1 -1
- package/dist/component/constants.js +12 -0
- package/dist/component/constants.js.map +1 -1
- package/dist/component/diagnostics.d.ts.map +1 -1
- package/dist/component/diagnostics.js.map +1 -1
- package/dist/component/eventStore.d.ts +3 -1
- package/dist/component/eventStore.d.ts.map +1 -1
- package/dist/component/eventStore.js +13 -10
- package/dist/component/eventStore.js.map +1 -1
- package/dist/component/funnels.d.ts.map +1 -1
- package/dist/component/funnels.js +5 -3
- package/dist/component/funnels.js.map +1 -1
- package/dist/component/geo.d.ts.map +1 -1
- package/dist/component/geo.js +3 -2
- package/dist/component/geo.js.map +1 -1
- package/dist/component/goals.d.ts.map +1 -1
- package/dist/component/goals.js +8 -5
- package/dist/component/goals.js.map +1 -1
- package/dist/component/guards.d.ts.map +1 -1
- package/dist/component/guards.js.map +1 -1
- package/dist/component/http.d.ts.map +1 -1
- package/dist/component/http.js +71 -37
- package/dist/component/http.js.map +1 -1
- package/dist/component/identity.d.ts +13 -0
- package/dist/component/identity.d.ts.map +1 -0
- package/dist/component/identity.js +58 -0
- package/dist/component/identity.js.map +1 -0
- package/dist/component/ingest.d.ts +3 -1
- package/dist/component/ingest.d.ts.map +1 -1
- package/dist/component/ingest.js +168 -29
- package/dist/component/ingest.js.map +1 -1
- package/dist/component/live.d.ts.map +1 -1
- package/dist/component/live.js +1 -3
- package/dist/component/live.js.map +1 -1
- package/dist/component/reports.d.ts +70 -4
- package/dist/component/reports.d.ts.map +1 -1
- package/dist/component/reports.js +232 -59
- package/dist/component/reports.js.map +1 -1
- package/dist/component/retention.d.ts +4 -4
- package/dist/component/retention.d.ts.map +1 -1
- package/dist/component/retention.js +54 -22
- package/dist/component/retention.js.map +1 -1
- package/dist/component/sanitize.d.ts.map +1 -1
- package/dist/component/sanitize.js +42 -11
- package/dist/component/sanitize.js.map +1 -1
- package/dist/component/schema.d.ts +83 -10
- package/dist/component/schema.js +34 -1
- package/dist/component/schema.js.map +1 -1
- package/dist/component/sites.d.ts.map +1 -1
- package/dist/component/sites.js +6 -6
- package/dist/component/sites.js.map +1 -1
- package/dist/component/useragent.d.ts +9 -0
- package/dist/component/useragent.d.ts.map +1 -0
- package/dist/component/useragent.js +152 -0
- package/dist/component/useragent.js.map +1 -0
- package/dist/component/validators.d.ts +29 -18
- package/dist/component/validators.d.ts.map +1 -1
- package/dist/component/validators.js +8 -2
- package/dist/component/validators.js.map +1 -1
- package/dist/component/visitors.d.ts +19 -0
- package/dist/component/visitors.d.ts.map +1 -0
- package/dist/component/visitors.js +86 -0
- package/dist/component/visitors.js.map +1 -0
- package/dist/component/vitals.d.ts +41 -0
- package/dist/component/vitals.d.ts.map +1 -0
- package/dist/component/vitals.js +115 -0
- package/dist/component/vitals.js.map +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/tracker/generated.d.ts +8 -4
- package/dist/tracker/generated.d.ts.map +1 -1
- package/dist/tracker/generated.js +8 -4
- package/dist/tracker/generated.js.map +1 -1
- package/dist/tracker/tracker.d.ts.map +1 -1
- package/dist/tracker/tracker.js +23 -11
- package/dist/tracker/tracker.js.map +1 -1
- package/dist/tracker/vitals.d.ts +10 -0
- package/dist/tracker/vitals.d.ts.map +1 -0
- package/dist/tracker/vitals.js +137 -0
- package/dist/tracker/vitals.js.map +1 -0
- package/dist/tracker.min.js +1 -1
- package/dist/vitals.min.js +1 -0
- package/docs/benchmarks/2026-08-20-realistic.md +71 -71
- package/docs/benchmarks/2026-08-21-formal-certification.md +50 -30
- package/docs/benchmarks/2026-08-30-alpha6-recertification.md +206 -0
- package/docs/federation.md +1 -1
- package/package.json +27 -9
- package/scripts/benchmark-ingest.mjs +101 -48
- package/src/component/_generated/api.ts +8 -0
- package/src/component/_generated/component.ts +87 -5
- package/src/component/affiliates.ts +20 -5
- package/src/component/cardinality.ts +8 -7
- package/src/component/constants.ts +12 -0
- package/src/component/diagnostics.ts +3 -2
- package/src/component/eventStore.ts +53 -46
- package/src/component/funnels.ts +19 -16
- package/src/component/geo.ts +16 -14
- package/src/component/goals.ts +29 -21
- package/src/component/guards.ts +3 -1
- package/src/component/http.ts +126 -78
- package/src/component/identity.ts +74 -0
- package/src/component/ingest.ts +349 -130
- package/src/component/live.ts +5 -4
- package/src/component/reports.ts +572 -221
- package/src/component/retention.ts +221 -98
- package/src/component/sanitize.ts +77 -27
- package/src/component/schema.ts +46 -5
- package/src/component/sites.ts +22 -11
- package/src/component/useragent.ts +171 -0
- package/src/component/validators.ts +19 -7
- package/src/component/visitors.ts +116 -0
- package/src/component/vitals.ts +146 -0
package/dist/client/index.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { FunctionArgs, FunctionReturnType, GenericActionCtx, GenericDataModel, GenericMutationCtx, GenericQueryCtx } from "convex/server";
|
|
2
2
|
import { type Infer } from "convex/values";
|
|
3
3
|
import type { ComponentApi } from "../component/_generated/component.js";
|
|
4
|
-
import { eventPropertiesValidator, eventTypeValidator, funnelStepValidator, goalMatchTypeValidator, ingestContextValidator, ingestResultValidator, trackerEventValidator } from "../component/validators.js";
|
|
4
|
+
import { eventPropertiesValidator, eventTypeValidator, funnelStepValidator, goalMatchTypeValidator, ingestContextValidator, ingestResultValidator, trackerEventValidator, vitalMetricValidator } from "../component/validators.js";
|
|
5
5
|
import { type FederatedAnalyticsAuthorizerOptions, type FederatedAnalyticsConnectionStatus, type FederatedSiteSummary } from "./federation.js";
|
|
6
|
-
export { eventPropertiesValidator, eventTypeValidator, funnelStepValidator, goalMatchTypeValidator, ingestContextValidator, ingestResultValidator, trackerEventValidator, };
|
|
6
|
+
export { eventPropertiesValidator, eventTypeValidator, funnelStepValidator, goalMatchTypeValidator, ingestContextValidator, ingestResultValidator, trackerEventValidator, vitalMetricValidator, };
|
|
7
7
|
export type { EventProperties, EventType, FunnelStep, IngestContext, TrackerEvent, } from "../component/validators.js";
|
|
8
|
-
export {
|
|
8
|
+
export { VITAL_METRICS, VITAL_THRESHOLDS } from "../component/vitals.js";
|
|
9
|
+
export type { VitalMetric } from "../component/vitals.js";
|
|
10
|
+
export { FEDERATED_ANALYTICS_CLAIMS, FEDERATED_ANALYTICS_CONNECTOR_MANIFEST, FEDERATED_ANALYTICS_ERROR_CODES, FEDERATED_ANALYTICS_READ_PERMISSION, FEDERATED_ANALYTICS_REQUIRED_CAPABILITIES, FEDERATED_ANALYTICS_REQUIRED_FUNCTIONS, } from "./federation.js";
|
|
9
11
|
export type { FederatedAnalyticsCapability, FederatedAnalyticsAuthorizerOptions, FederatedAnalyticsConnection, FederatedAnalyticsConnectionStatus, FederatedAnalyticsErrorCode, FederatedAnalyticsIdentity, FederatedAnalyticsManifest, FederatedSiteSummary, ResolveFederatedAnalyticsConnection, } from "./federation.js";
|
|
10
12
|
export type CreateSiteInput = FunctionArgs<ComponentApi["sites"]["create"]>;
|
|
11
13
|
export type CreateSiteOutput = FunctionReturnType<ComponentApi["sites"]["create"]>;
|
|
@@ -18,6 +20,8 @@ export type IngestInput = FunctionArgs<ComponentApi["ingest"]["ingestBatch"]>;
|
|
|
18
20
|
export type IngestResult = FunctionReturnType<ComponentApi["ingest"]["ingestBatch"]>;
|
|
19
21
|
export type TrackConversionInput = Omit<FunctionArgs<ComponentApi["ingest"]["trackConversion"]>, "affiliateSlug">;
|
|
20
22
|
export type TrackConversionOutput = FunctionReturnType<ComponentApi["ingest"]["trackConversion"]>;
|
|
23
|
+
export type LinkVisitorInput = FunctionArgs<ComponentApi["visitors"]["link"]>;
|
|
24
|
+
export type LinkVisitorOutput = FunctionReturnType<ComponentApi["visitors"]["link"]>;
|
|
21
25
|
export type OverviewInput = FunctionArgs<ComponentApi["reports"]["overview"]>;
|
|
22
26
|
export type Overview = Infer<typeof hostOverviewValidator>;
|
|
23
27
|
export type LiveVisitorsInput = FunctionArgs<ComponentApi["reports"]["liveVisitors"]>;
|
|
@@ -36,6 +40,8 @@ export type FunnelsReportInput = FunctionArgs<ComponentApi["reports"]["funnelsRe
|
|
|
36
40
|
export type FunnelsReport = Infer<typeof hostFunnelsReportValidator>;
|
|
37
41
|
export type AffiliatesReportInput = FunctionArgs<ComponentApi["reports"]["affiliatesReport"]>;
|
|
38
42
|
export type AffiliatesReport = Infer<typeof hostAffiliatesReportValidator>;
|
|
43
|
+
export type VitalsReportInput = FunctionArgs<ComponentApi["reports"]["vitalsReport"]>;
|
|
44
|
+
export type VitalsReport = Infer<typeof hostVitalsReportValidator>;
|
|
39
45
|
export type UpsertGoalInput = FunctionArgs<ComponentApi["goals"]["upsert"]>;
|
|
40
46
|
export type UpsertGoalOutput = FunctionReturnType<ComponentApi["goals"]["upsert"]>;
|
|
41
47
|
export type Goal = FunctionReturnType<ComponentApi["goals"]["list"]>[number];
|
|
@@ -66,7 +72,7 @@ export type DataCoverage = {
|
|
|
66
72
|
from: number;
|
|
67
73
|
to: number;
|
|
68
74
|
datasets: Array<{
|
|
69
|
-
dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates";
|
|
75
|
+
dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals";
|
|
70
76
|
coverage: CoverageStatus;
|
|
71
77
|
}>;
|
|
72
78
|
};
|
|
@@ -99,7 +105,7 @@ export type RetentionStatus = {
|
|
|
99
105
|
}>;
|
|
100
106
|
backlog: number;
|
|
101
107
|
};
|
|
102
|
-
export type RetentionKind = "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
|
|
108
|
+
export type RetentionKind = "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "vitalRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
|
|
103
109
|
export type RunRetentionPolicyInput = {
|
|
104
110
|
siteId: string;
|
|
105
111
|
kind: RetentionKind;
|
|
@@ -146,6 +152,10 @@ export declare class Rastro {
|
|
|
146
152
|
duplicates: number;
|
|
147
153
|
rejected: number;
|
|
148
154
|
}>;
|
|
155
|
+
linkVisitor(ctx: MutationCtx, args: LinkVisitorInput): Promise<{
|
|
156
|
+
aliasCount: number;
|
|
157
|
+
linked: boolean;
|
|
158
|
+
}>;
|
|
149
159
|
overview(ctx: QueryCtx | MutationCtx | ActionCtx, args: OverviewInput): Promise<{
|
|
150
160
|
currency: string;
|
|
151
161
|
from: number;
|
|
@@ -153,6 +163,7 @@ export declare class Rastro {
|
|
|
153
163
|
metadata: {
|
|
154
164
|
breakdowns: {
|
|
155
165
|
topBrowsers: "eventVolume";
|
|
166
|
+
topCampaigns: "eventVolume";
|
|
156
167
|
topCountries: "eventVolume";
|
|
157
168
|
topDevices: "eventVolume";
|
|
158
169
|
topEvents: "eventVolume";
|
|
@@ -168,7 +179,7 @@ export declare class Rastro {
|
|
|
168
179
|
state: "complete" | "partial" | "retained" | "unavailable";
|
|
169
180
|
};
|
|
170
181
|
features: {
|
|
171
|
-
botDetection: "
|
|
182
|
+
botDetection: "userAgent";
|
|
172
183
|
errorInsights: "unsupported";
|
|
173
184
|
outboundLinks: "eventVolume";
|
|
174
185
|
sessionReplay: "unsupported";
|
|
@@ -205,6 +216,11 @@ export declare class Rastro {
|
|
|
205
216
|
revenueCents: number;
|
|
206
217
|
value: string;
|
|
207
218
|
}>;
|
|
219
|
+
topCampaigns: Array<{
|
|
220
|
+
count: number;
|
|
221
|
+
revenueCents: number;
|
|
222
|
+
value: string;
|
|
223
|
+
}>;
|
|
208
224
|
topCountries: Array<{
|
|
209
225
|
count: number;
|
|
210
226
|
revenueCents: number;
|
|
@@ -303,6 +319,7 @@ export declare class Rastro {
|
|
|
303
319
|
utmMedium?: string;
|
|
304
320
|
utmSource?: string;
|
|
305
321
|
visitorId: string;
|
|
322
|
+
visitorKey?: string;
|
|
306
323
|
}>;
|
|
307
324
|
pageStatus?: "SplitRecommended" | "SplitRequired" | null;
|
|
308
325
|
splitCursor?: string | null;
|
|
@@ -334,7 +351,7 @@ export declare class Rastro {
|
|
|
334
351
|
siteId: string;
|
|
335
352
|
target?: string;
|
|
336
353
|
timestamp: number;
|
|
337
|
-
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound";
|
|
354
|
+
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
|
|
338
355
|
visitorId: string;
|
|
339
356
|
}>;
|
|
340
357
|
pageStatus?: "SplitRecommended" | "SplitRequired" | null;
|
|
@@ -389,7 +406,7 @@ export declare class Rastro {
|
|
|
389
406
|
siteId: string;
|
|
390
407
|
target?: string;
|
|
391
408
|
timestamp: number;
|
|
392
|
-
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound";
|
|
409
|
+
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
|
|
393
410
|
visitorId: string;
|
|
394
411
|
}[]>;
|
|
395
412
|
goalsReport(ctx: QueryCtx | MutationCtx | ActionCtx, args: GoalsReportInput): Promise<{
|
|
@@ -504,6 +521,57 @@ export declare class Rastro {
|
|
|
504
521
|
};
|
|
505
522
|
truncated: boolean;
|
|
506
523
|
}>;
|
|
524
|
+
vitalsReport(ctx: QueryCtx | MutationCtx | ActionCtx, args: VitalsReportInput): Promise<{
|
|
525
|
+
metadata: {
|
|
526
|
+
basis: "dailyRollup" | "boundedLegacy";
|
|
527
|
+
coverage: {
|
|
528
|
+
availableFrom: number | null;
|
|
529
|
+
availableThrough: number | null;
|
|
530
|
+
generation: number | null;
|
|
531
|
+
retainedBefore: number | null;
|
|
532
|
+
state: "complete" | "partial" | "retained" | "unavailable";
|
|
533
|
+
};
|
|
534
|
+
range: {
|
|
535
|
+
boundary: "inclusive";
|
|
536
|
+
from: number;
|
|
537
|
+
timezone: "UTC";
|
|
538
|
+
to: number;
|
|
539
|
+
};
|
|
540
|
+
};
|
|
541
|
+
metrics: Array<{
|
|
542
|
+
average: number;
|
|
543
|
+
count: number;
|
|
544
|
+
devices: Array<{
|
|
545
|
+
average: number;
|
|
546
|
+
count: number;
|
|
547
|
+
device: string;
|
|
548
|
+
good: number;
|
|
549
|
+
needsImprovement: number;
|
|
550
|
+
p75: number;
|
|
551
|
+
poor: number;
|
|
552
|
+
}>;
|
|
553
|
+
good: number;
|
|
554
|
+
metric: "LCP" | "CLS" | "INP" | "FCP" | "TTFB";
|
|
555
|
+
needsImprovement: number;
|
|
556
|
+
p75: number;
|
|
557
|
+
pages: Array<{
|
|
558
|
+
average: number;
|
|
559
|
+
count: number;
|
|
560
|
+
good: number;
|
|
561
|
+
needsImprovement: number;
|
|
562
|
+
p75: number;
|
|
563
|
+
page: string;
|
|
564
|
+
poor: number;
|
|
565
|
+
}>;
|
|
566
|
+
poor: number;
|
|
567
|
+
timeSeries: Array<{
|
|
568
|
+
count: number;
|
|
569
|
+
p75: number;
|
|
570
|
+
timestamp: number;
|
|
571
|
+
}>;
|
|
572
|
+
}>;
|
|
573
|
+
truncated: boolean;
|
|
574
|
+
}>;
|
|
507
575
|
upsertGoal(ctx: MutationCtx, args: UpsertGoalInput): Promise<string>;
|
|
508
576
|
listGoals(ctx: QueryCtx | MutationCtx | ActionCtx, siteId: string): Promise<{
|
|
509
577
|
_creationTime: number;
|
|
@@ -565,7 +633,7 @@ export declare class Rastro {
|
|
|
565
633
|
retainedBefore: number | null;
|
|
566
634
|
state: "complete" | "partial" | "retained" | "unavailable";
|
|
567
635
|
};
|
|
568
|
-
dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates";
|
|
636
|
+
dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals";
|
|
569
637
|
}>;
|
|
570
638
|
from: number;
|
|
571
639
|
siteId: string;
|
|
@@ -578,7 +646,7 @@ export declare class Rastro {
|
|
|
578
646
|
jobs: Array<{
|
|
579
647
|
before: number;
|
|
580
648
|
deleted: number;
|
|
581
|
-
kind: "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
|
|
649
|
+
kind: "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "vitalRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
|
|
582
650
|
scheduledAt: number | null;
|
|
583
651
|
status: "pending" | "running" | "complete";
|
|
584
652
|
updatedAt: number;
|
|
@@ -598,7 +666,7 @@ export declare class Rastro {
|
|
|
598
666
|
hasMore: boolean;
|
|
599
667
|
}>;
|
|
600
668
|
}
|
|
601
|
-
export type AnalyticsOperation = "site.create" | "site.update" | "site.get" | "site.list" | "ingest" | "conversion.track" | "report.overview" | "report.live" | "report.sessions" | "report.sessionJourney" | "report.conversions" | "report.visitorJourney" | "report.goals" | "report.funnels" | "report.affiliates" | "goal.upsert" | "goal.list" | "goal.remove" | "funnel.upsert" | "funnel.list" | "funnel.remove" | "affiliate.upsert" | "affiliate.list" | "affiliate.remove" | "retention.cleanup" | "retention.policy" | "retention.status" | "coverage.read";
|
|
669
|
+
export type AnalyticsOperation = "site.create" | "site.update" | "site.get" | "site.list" | "ingest" | "conversion.track" | "visitor.link" | "report.overview" | "report.live" | "report.sessions" | "report.sessionJourney" | "report.conversions" | "report.visitorJourney" | "report.goals" | "report.funnels" | "report.affiliates" | "report.vitals" | "goal.upsert" | "goal.list" | "goal.remove" | "funnel.upsert" | "funnel.list" | "funnel.remove" | "affiliate.upsert" | "affiliate.list" | "affiliate.remove" | "retention.cleanup" | "retention.policy" | "retention.status" | "coverage.read";
|
|
602
670
|
export type AnalyticsAuthorizationRequest = {
|
|
603
671
|
operation: AnalyticsOperation;
|
|
604
672
|
siteIds: string[];
|
|
@@ -613,6 +681,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
|
|
|
613
681
|
metadata: {
|
|
614
682
|
breakdowns: {
|
|
615
683
|
topBrowsers: "eventVolume";
|
|
684
|
+
topCampaigns: "eventVolume";
|
|
616
685
|
topCountries: "eventVolume";
|
|
617
686
|
topDevices: "eventVolume";
|
|
618
687
|
topEvents: "eventVolume";
|
|
@@ -628,7 +697,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
|
|
|
628
697
|
state: "complete" | "partial" | "retained" | "unavailable";
|
|
629
698
|
};
|
|
630
699
|
features: {
|
|
631
|
-
botDetection: "
|
|
700
|
+
botDetection: "userAgent";
|
|
632
701
|
errorInsights: "unsupported";
|
|
633
702
|
outboundLinks: "eventVolume";
|
|
634
703
|
sessionReplay: "unsupported";
|
|
@@ -665,6 +734,11 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
|
|
|
665
734
|
revenueCents: number;
|
|
666
735
|
value: string;
|
|
667
736
|
}[];
|
|
737
|
+
topCampaigns: {
|
|
738
|
+
count: number;
|
|
739
|
+
revenueCents: number;
|
|
740
|
+
value: string;
|
|
741
|
+
}[];
|
|
668
742
|
topCountries: {
|
|
669
743
|
count: number;
|
|
670
744
|
revenueCents: number;
|
|
@@ -779,6 +853,19 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
|
|
|
779
853
|
count: import("convex/values").VFloat64<number, "required">;
|
|
780
854
|
revenueCents: import("convex/values").VFloat64<number, "required">;
|
|
781
855
|
}, "required", "count" | "revenueCents" | "value">, "required">;
|
|
856
|
+
topCampaigns: import("convex/values").VArray<{
|
|
857
|
+
count: number;
|
|
858
|
+
revenueCents: number;
|
|
859
|
+
value: string;
|
|
860
|
+
}[], import("convex/values").VObject<{
|
|
861
|
+
count: number;
|
|
862
|
+
revenueCents: number;
|
|
863
|
+
value: string;
|
|
864
|
+
}, {
|
|
865
|
+
value: import("convex/values").VString<string, "required">;
|
|
866
|
+
count: import("convex/values").VFloat64<number, "required">;
|
|
867
|
+
revenueCents: import("convex/values").VFloat64<number, "required">;
|
|
868
|
+
}, "required", "count" | "revenueCents" | "value">, "required">;
|
|
782
869
|
topPages: import("convex/values").VArray<{
|
|
783
870
|
count: number;
|
|
784
871
|
revenueCents: number;
|
|
@@ -860,6 +947,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
|
|
|
860
947
|
metadata: import("convex/values").VObject<{
|
|
861
948
|
breakdowns: {
|
|
862
949
|
topBrowsers: "eventVolume";
|
|
950
|
+
topCampaigns: "eventVolume";
|
|
863
951
|
topCountries: "eventVolume";
|
|
864
952
|
topDevices: "eventVolume";
|
|
865
953
|
topEvents: "eventVolume";
|
|
@@ -875,7 +963,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
|
|
|
875
963
|
state: "complete" | "partial" | "retained" | "unavailable";
|
|
876
964
|
};
|
|
877
965
|
features: {
|
|
878
|
-
botDetection: "
|
|
966
|
+
botDetection: "userAgent";
|
|
879
967
|
errorInsights: "unsupported";
|
|
880
968
|
outboundLinks: "eventVolume";
|
|
881
969
|
sessionReplay: "unsupported";
|
|
@@ -909,6 +997,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
|
|
|
909
997
|
}, "required", "basis" | "exact" | "legacyIncomplete" | "precision" | "sketchVersion">;
|
|
910
998
|
breakdowns: import("convex/values").VObject<{
|
|
911
999
|
topBrowsers: "eventVolume";
|
|
1000
|
+
topCampaigns: "eventVolume";
|
|
912
1001
|
topCountries: "eventVolume";
|
|
913
1002
|
topDevices: "eventVolume";
|
|
914
1003
|
topEvents: "eventVolume";
|
|
@@ -917,13 +1006,14 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
|
|
|
917
1006
|
topSources: "eventVolume";
|
|
918
1007
|
}, {
|
|
919
1008
|
topSources: import("convex/values").VLiteral<"eventVolume", "required">;
|
|
1009
|
+
topCampaigns: import("convex/values").VLiteral<"eventVolume", "required">;
|
|
920
1010
|
topPages: import("convex/values").VLiteral<"eventVolume", "required">;
|
|
921
1011
|
topCountries: import("convex/values").VLiteral<"eventVolume", "required">;
|
|
922
1012
|
topDevices: import("convex/values").VLiteral<"eventVolume", "required">;
|
|
923
1013
|
topBrowsers: import("convex/values").VLiteral<"eventVolume", "required">;
|
|
924
1014
|
topEvents: import("convex/values").VLiteral<"eventVolume", "required">;
|
|
925
1015
|
topGoals: import("convex/values").VLiteral<"goalCompletionVolume", "required">;
|
|
926
|
-
}, "required", "topBrowsers" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topPages" | "topSources">;
|
|
1016
|
+
}, "required", "topBrowsers" | "topCampaigns" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topPages" | "topSources">;
|
|
927
1017
|
coverage: import("convex/values").VObject<{
|
|
928
1018
|
availableFrom: number | null;
|
|
929
1019
|
availableThrough: number | null;
|
|
@@ -949,7 +1039,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
|
|
|
949
1039
|
timezone: import("convex/values").VLiteral<"UTC", "required">;
|
|
950
1040
|
}, "required", "boundary" | "from" | "timezone" | "to">;
|
|
951
1041
|
features: import("convex/values").VObject<{
|
|
952
|
-
botDetection: "
|
|
1042
|
+
botDetection: "userAgent";
|
|
953
1043
|
errorInsights: "unsupported";
|
|
954
1044
|
outboundLinks: "eventVolume";
|
|
955
1045
|
sessionReplay: "unsupported";
|
|
@@ -957,10 +1047,10 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
|
|
|
957
1047
|
sessionReplay: import("convex/values").VLiteral<"unsupported", "required">;
|
|
958
1048
|
errorInsights: import("convex/values").VLiteral<"unsupported", "required">;
|
|
959
1049
|
outboundLinks: import("convex/values").VLiteral<"eventVolume", "required">;
|
|
960
|
-
botDetection: import("convex/values").VLiteral<"
|
|
1050
|
+
botDetection: import("convex/values").VLiteral<"userAgent", "required">;
|
|
961
1051
|
}, "required", "botDetection" | "errorInsights" | "outboundLinks" | "sessionReplay">;
|
|
962
|
-
}, "required", "breakdowns" | "breakdowns.topBrowsers" | "breakdowns.topCountries" | "breakdowns.topDevices" | "breakdowns.topEvents" | "breakdowns.topGoals" | "breakdowns.topPages" | "breakdowns.topSources" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "features" | "features.botDetection" | "features.errorInsights" | "features.outboundLinks" | "features.sessionReplay" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to" | "visitors" | "visitors.basis" | "visitors.exact" | "visitors.legacyIncomplete" | "visitors.precision" | "visitors.sketchVersion">;
|
|
963
|
-
}, "required", "currency" | "from" | "interval" | "metadata" | "metadata.breakdowns" | "metadata.breakdowns.topBrowsers" | "metadata.breakdowns.topCountries" | "metadata.breakdowns.topDevices" | "metadata.breakdowns.topEvents" | "metadata.breakdowns.topGoals" | "metadata.breakdowns.topPages" | "metadata.breakdowns.topSources" | "metadata.coverage" | "metadata.coverage.availableFrom" | "metadata.coverage.availableThrough" | "metadata.coverage.generation" | "metadata.coverage.retainedBefore" | "metadata.coverage.state" | "metadata.features" | "metadata.features.botDetection" | "metadata.features.errorInsights" | "metadata.features.outboundLinks" | "metadata.features.sessionReplay" | "metadata.range" | "metadata.range.boundary" | "metadata.range.from" | "metadata.range.timezone" | "metadata.range.to" | "metadata.visitors" | "metadata.visitors.basis" | "metadata.visitors.exact" | "metadata.visitors.legacyIncomplete" | "metadata.visitors.precision" | "metadata.visitors.sketchVersion" | "timeSeries" | "to" | "topBrowsers" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topPages" | "topSources" | "totals" | "totals.clicks" | "totals.conversions" | "totals.customEvents" | "totals.events" | "totals.outboundClicks" | "totals.pageviews" | "totals.revenueCents" | "totals.sessions" | "totals.visitors">;
|
|
1052
|
+
}, "required", "breakdowns" | "breakdowns.topBrowsers" | "breakdowns.topCampaigns" | "breakdowns.topCountries" | "breakdowns.topDevices" | "breakdowns.topEvents" | "breakdowns.topGoals" | "breakdowns.topPages" | "breakdowns.topSources" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "features" | "features.botDetection" | "features.errorInsights" | "features.outboundLinks" | "features.sessionReplay" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to" | "visitors" | "visitors.basis" | "visitors.exact" | "visitors.legacyIncomplete" | "visitors.precision" | "visitors.sketchVersion">;
|
|
1053
|
+
}, "required", "currency" | "from" | "interval" | "metadata" | "metadata.breakdowns" | "metadata.breakdowns.topBrowsers" | "metadata.breakdowns.topCampaigns" | "metadata.breakdowns.topCountries" | "metadata.breakdowns.topDevices" | "metadata.breakdowns.topEvents" | "metadata.breakdowns.topGoals" | "metadata.breakdowns.topPages" | "metadata.breakdowns.topSources" | "metadata.coverage" | "metadata.coverage.availableFrom" | "metadata.coverage.availableThrough" | "metadata.coverage.generation" | "metadata.coverage.retainedBefore" | "metadata.coverage.state" | "metadata.features" | "metadata.features.botDetection" | "metadata.features.errorInsights" | "metadata.features.outboundLinks" | "metadata.features.sessionReplay" | "metadata.range" | "metadata.range.boundary" | "metadata.range.from" | "metadata.range.timezone" | "metadata.range.to" | "metadata.visitors" | "metadata.visitors.basis" | "metadata.visitors.exact" | "metadata.visitors.legacyIncomplete" | "metadata.visitors.precision" | "metadata.visitors.sketchVersion" | "timeSeries" | "to" | "topBrowsers" | "topCampaigns" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topPages" | "topSources" | "totals" | "totals.clicks" | "totals.conversions" | "totals.customEvents" | "totals.events" | "totals.outboundClicks" | "totals.pageviews" | "totals.revenueCents" | "totals.sessions" | "totals.visitors">;
|
|
964
1054
|
declare const hostGoalsReportValidator: import("convex/values").VObject<{
|
|
965
1055
|
goals: {
|
|
966
1056
|
_creationTime: number;
|
|
@@ -1381,6 +1471,235 @@ declare const hostAffiliatesReportValidator: import("convex/values").VObject<{
|
|
|
1381
1471
|
}, "required", "basis" | "exact">;
|
|
1382
1472
|
}, "required", "basis" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to" | "uniqueVisitors" | "uniqueVisitors.basis" | "uniqueVisitors.exact">;
|
|
1383
1473
|
}, "required", "affiliates" | "metadata" | "metadata.basis" | "metadata.coverage" | "metadata.coverage.availableFrom" | "metadata.coverage.availableThrough" | "metadata.coverage.generation" | "metadata.coverage.retainedBefore" | "metadata.coverage.state" | "metadata.range" | "metadata.range.boundary" | "metadata.range.from" | "metadata.range.timezone" | "metadata.range.to" | "metadata.uniqueVisitors" | "metadata.uniqueVisitors.basis" | "metadata.uniqueVisitors.exact" | "truncated">;
|
|
1474
|
+
declare const hostVitalsReportValidator: import("convex/values").VObject<{
|
|
1475
|
+
metadata: {
|
|
1476
|
+
basis: "boundedLegacy" | "dailyRollup";
|
|
1477
|
+
coverage: {
|
|
1478
|
+
availableFrom: number | null;
|
|
1479
|
+
availableThrough: number | null;
|
|
1480
|
+
generation: number | null;
|
|
1481
|
+
retainedBefore: number | null;
|
|
1482
|
+
state: "complete" | "partial" | "retained" | "unavailable";
|
|
1483
|
+
};
|
|
1484
|
+
range: {
|
|
1485
|
+
boundary: "inclusive";
|
|
1486
|
+
from: number;
|
|
1487
|
+
timezone: "UTC";
|
|
1488
|
+
to: number;
|
|
1489
|
+
};
|
|
1490
|
+
};
|
|
1491
|
+
metrics: {
|
|
1492
|
+
average: number;
|
|
1493
|
+
count: number;
|
|
1494
|
+
devices: {
|
|
1495
|
+
average: number;
|
|
1496
|
+
count: number;
|
|
1497
|
+
device: string;
|
|
1498
|
+
good: number;
|
|
1499
|
+
needsImprovement: number;
|
|
1500
|
+
p75: number;
|
|
1501
|
+
poor: number;
|
|
1502
|
+
}[];
|
|
1503
|
+
good: number;
|
|
1504
|
+
metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
|
|
1505
|
+
needsImprovement: number;
|
|
1506
|
+
p75: number;
|
|
1507
|
+
pages: {
|
|
1508
|
+
average: number;
|
|
1509
|
+
count: number;
|
|
1510
|
+
good: number;
|
|
1511
|
+
needsImprovement: number;
|
|
1512
|
+
p75: number;
|
|
1513
|
+
page: string;
|
|
1514
|
+
poor: number;
|
|
1515
|
+
}[];
|
|
1516
|
+
poor: number;
|
|
1517
|
+
timeSeries: {
|
|
1518
|
+
count: number;
|
|
1519
|
+
p75: number;
|
|
1520
|
+
timestamp: number;
|
|
1521
|
+
}[];
|
|
1522
|
+
}[];
|
|
1523
|
+
truncated: boolean;
|
|
1524
|
+
}, {
|
|
1525
|
+
metrics: import("convex/values").VArray<{
|
|
1526
|
+
average: number;
|
|
1527
|
+
count: number;
|
|
1528
|
+
devices: {
|
|
1529
|
+
average: number;
|
|
1530
|
+
count: number;
|
|
1531
|
+
device: string;
|
|
1532
|
+
good: number;
|
|
1533
|
+
needsImprovement: number;
|
|
1534
|
+
p75: number;
|
|
1535
|
+
poor: number;
|
|
1536
|
+
}[];
|
|
1537
|
+
good: number;
|
|
1538
|
+
metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
|
|
1539
|
+
needsImprovement: number;
|
|
1540
|
+
p75: number;
|
|
1541
|
+
pages: {
|
|
1542
|
+
average: number;
|
|
1543
|
+
count: number;
|
|
1544
|
+
good: number;
|
|
1545
|
+
needsImprovement: number;
|
|
1546
|
+
p75: number;
|
|
1547
|
+
page: string;
|
|
1548
|
+
poor: number;
|
|
1549
|
+
}[];
|
|
1550
|
+
poor: number;
|
|
1551
|
+
timeSeries: {
|
|
1552
|
+
count: number;
|
|
1553
|
+
p75: number;
|
|
1554
|
+
timestamp: number;
|
|
1555
|
+
}[];
|
|
1556
|
+
}[], import("convex/values").VObject<{
|
|
1557
|
+
average: number;
|
|
1558
|
+
count: number;
|
|
1559
|
+
devices: {
|
|
1560
|
+
average: number;
|
|
1561
|
+
count: number;
|
|
1562
|
+
device: string;
|
|
1563
|
+
good: number;
|
|
1564
|
+
needsImprovement: number;
|
|
1565
|
+
p75: number;
|
|
1566
|
+
poor: number;
|
|
1567
|
+
}[];
|
|
1568
|
+
good: number;
|
|
1569
|
+
metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
|
|
1570
|
+
needsImprovement: number;
|
|
1571
|
+
p75: number;
|
|
1572
|
+
pages: {
|
|
1573
|
+
average: number;
|
|
1574
|
+
count: number;
|
|
1575
|
+
good: number;
|
|
1576
|
+
needsImprovement: number;
|
|
1577
|
+
p75: number;
|
|
1578
|
+
page: string;
|
|
1579
|
+
poor: number;
|
|
1580
|
+
}[];
|
|
1581
|
+
poor: number;
|
|
1582
|
+
timeSeries: {
|
|
1583
|
+
count: number;
|
|
1584
|
+
p75: number;
|
|
1585
|
+
timestamp: number;
|
|
1586
|
+
}[];
|
|
1587
|
+
}, {
|
|
1588
|
+
count: import("convex/values").VFloat64<number, "required">;
|
|
1589
|
+
p75: import("convex/values").VFloat64<number, "required">;
|
|
1590
|
+
average: import("convex/values").VFloat64<number, "required">;
|
|
1591
|
+
good: import("convex/values").VFloat64<number, "required">;
|
|
1592
|
+
needsImprovement: import("convex/values").VFloat64<number, "required">;
|
|
1593
|
+
poor: import("convex/values").VFloat64<number, "required">;
|
|
1594
|
+
metric: import("convex/values").VUnion<"CLS" | "FCP" | "INP" | "LCP" | "TTFB", [import("convex/values").VLiteral<"LCP", "required">, import("convex/values").VLiteral<"CLS", "required">, import("convex/values").VLiteral<"INP", "required">, import("convex/values").VLiteral<"FCP", "required">, import("convex/values").VLiteral<"TTFB", "required">], "required", never>;
|
|
1595
|
+
devices: import("convex/values").VArray<{
|
|
1596
|
+
average: number;
|
|
1597
|
+
count: number;
|
|
1598
|
+
device: string;
|
|
1599
|
+
good: number;
|
|
1600
|
+
needsImprovement: number;
|
|
1601
|
+
p75: number;
|
|
1602
|
+
poor: number;
|
|
1603
|
+
}[], import("convex/values").VObject<{
|
|
1604
|
+
average: number;
|
|
1605
|
+
count: number;
|
|
1606
|
+
device: string;
|
|
1607
|
+
good: number;
|
|
1608
|
+
needsImprovement: number;
|
|
1609
|
+
p75: number;
|
|
1610
|
+
poor: number;
|
|
1611
|
+
}, {
|
|
1612
|
+
count: import("convex/values").VFloat64<number, "required">;
|
|
1613
|
+
p75: import("convex/values").VFloat64<number, "required">;
|
|
1614
|
+
average: import("convex/values").VFloat64<number, "required">;
|
|
1615
|
+
good: import("convex/values").VFloat64<number, "required">;
|
|
1616
|
+
needsImprovement: import("convex/values").VFloat64<number, "required">;
|
|
1617
|
+
poor: import("convex/values").VFloat64<number, "required">;
|
|
1618
|
+
device: import("convex/values").VString<string, "required">;
|
|
1619
|
+
}, "required", "average" | "count" | "device" | "good" | "needsImprovement" | "p75" | "poor">, "required">;
|
|
1620
|
+
pages: import("convex/values").VArray<{
|
|
1621
|
+
average: number;
|
|
1622
|
+
count: number;
|
|
1623
|
+
good: number;
|
|
1624
|
+
needsImprovement: number;
|
|
1625
|
+
p75: number;
|
|
1626
|
+
page: string;
|
|
1627
|
+
poor: number;
|
|
1628
|
+
}[], import("convex/values").VObject<{
|
|
1629
|
+
average: number;
|
|
1630
|
+
count: number;
|
|
1631
|
+
good: number;
|
|
1632
|
+
needsImprovement: number;
|
|
1633
|
+
p75: number;
|
|
1634
|
+
page: string;
|
|
1635
|
+
poor: number;
|
|
1636
|
+
}, {
|
|
1637
|
+
count: import("convex/values").VFloat64<number, "required">;
|
|
1638
|
+
p75: import("convex/values").VFloat64<number, "required">;
|
|
1639
|
+
average: import("convex/values").VFloat64<number, "required">;
|
|
1640
|
+
good: import("convex/values").VFloat64<number, "required">;
|
|
1641
|
+
needsImprovement: import("convex/values").VFloat64<number, "required">;
|
|
1642
|
+
poor: import("convex/values").VFloat64<number, "required">;
|
|
1643
|
+
page: import("convex/values").VString<string, "required">;
|
|
1644
|
+
}, "required", "average" | "count" | "good" | "needsImprovement" | "p75" | "page" | "poor">, "required">;
|
|
1645
|
+
timeSeries: import("convex/values").VArray<{
|
|
1646
|
+
count: number;
|
|
1647
|
+
p75: number;
|
|
1648
|
+
timestamp: number;
|
|
1649
|
+
}[], import("convex/values").VObject<{
|
|
1650
|
+
count: number;
|
|
1651
|
+
p75: number;
|
|
1652
|
+
timestamp: number;
|
|
1653
|
+
}, {
|
|
1654
|
+
timestamp: import("convex/values").VFloat64<number, "required">;
|
|
1655
|
+
count: import("convex/values").VFloat64<number, "required">;
|
|
1656
|
+
p75: import("convex/values").VFloat64<number, "required">;
|
|
1657
|
+
}, "required", "count" | "p75" | "timestamp">, "required">;
|
|
1658
|
+
}, "required", "average" | "count" | "devices" | "good" | "metric" | "needsImprovement" | "p75" | "pages" | "poor" | "timeSeries">, "required">;
|
|
1659
|
+
truncated: import("convex/values").VBoolean<boolean, "required">;
|
|
1660
|
+
metadata: import("convex/values").VObject<{
|
|
1661
|
+
basis: "boundedLegacy" | "dailyRollup";
|
|
1662
|
+
coverage: {
|
|
1663
|
+
availableFrom: number | null;
|
|
1664
|
+
availableThrough: number | null;
|
|
1665
|
+
generation: number | null;
|
|
1666
|
+
retainedBefore: number | null;
|
|
1667
|
+
state: "complete" | "partial" | "retained" | "unavailable";
|
|
1668
|
+
};
|
|
1669
|
+
range: {
|
|
1670
|
+
boundary: "inclusive";
|
|
1671
|
+
from: number;
|
|
1672
|
+
timezone: "UTC";
|
|
1673
|
+
to: number;
|
|
1674
|
+
};
|
|
1675
|
+
}, {
|
|
1676
|
+
basis: import("convex/values").VUnion<"boundedLegacy" | "dailyRollup", [import("convex/values").VLiteral<"dailyRollup", "required">, import("convex/values").VLiteral<"boundedLegacy", "required">], "required", never>;
|
|
1677
|
+
coverage: import("convex/values").VObject<{
|
|
1678
|
+
availableFrom: number | null;
|
|
1679
|
+
availableThrough: number | null;
|
|
1680
|
+
generation: number | null;
|
|
1681
|
+
retainedBefore: number | null;
|
|
1682
|
+
state: "complete" | "partial" | "retained" | "unavailable";
|
|
1683
|
+
}, {
|
|
1684
|
+
state: import("convex/values").VUnion<"complete" | "partial" | "retained" | "unavailable", [import("convex/values").VLiteral<"complete", "required">, import("convex/values").VLiteral<"partial", "required">, import("convex/values").VLiteral<"retained", "required">, import("convex/values").VLiteral<"unavailable", "required">], "required", never>;
|
|
1685
|
+
generation: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
|
|
1686
|
+
availableFrom: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
|
|
1687
|
+
availableThrough: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
|
|
1688
|
+
retainedBefore: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
|
|
1689
|
+
}, "required", "availableFrom" | "availableThrough" | "generation" | "retainedBefore" | "state">;
|
|
1690
|
+
range: import("convex/values").VObject<{
|
|
1691
|
+
boundary: "inclusive";
|
|
1692
|
+
from: number;
|
|
1693
|
+
timezone: "UTC";
|
|
1694
|
+
to: number;
|
|
1695
|
+
}, {
|
|
1696
|
+
from: import("convex/values").VFloat64<number, "required">;
|
|
1697
|
+
to: import("convex/values").VFloat64<number, "required">;
|
|
1698
|
+
boundary: import("convex/values").VLiteral<"inclusive", "required">;
|
|
1699
|
+
timezone: import("convex/values").VLiteral<"UTC", "required">;
|
|
1700
|
+
}, "required", "boundary" | "from" | "timezone" | "to">;
|
|
1701
|
+
}, "required", "basis" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to">;
|
|
1702
|
+
}, "required", "metadata" | "metadata.basis" | "metadata.coverage" | "metadata.coverage.availableFrom" | "metadata.coverage.availableThrough" | "metadata.coverage.generation" | "metadata.coverage.retainedBefore" | "metadata.coverage.state" | "metadata.range" | "metadata.range.boundary" | "metadata.range.from" | "metadata.range.timezone" | "metadata.range.to" | "metrics" | "truncated">;
|
|
1384
1703
|
export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
1385
1704
|
authorize: AnalyticsAuthorizer;
|
|
1386
1705
|
}): {
|
|
@@ -1442,6 +1761,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1442
1761
|
latitude?: number | undefined;
|
|
1443
1762
|
longitude?: number | undefined;
|
|
1444
1763
|
os?: string | undefined;
|
|
1764
|
+
visitorKey?: string | undefined;
|
|
1445
1765
|
} | undefined;
|
|
1446
1766
|
events: {
|
|
1447
1767
|
affiliateSlug?: string | undefined;
|
|
@@ -1457,7 +1777,8 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1457
1777
|
sessionId: string;
|
|
1458
1778
|
target?: string | undefined;
|
|
1459
1779
|
timestamp: number;
|
|
1460
|
-
type: "click" | "conversion" | "custom" | "heartbeat" | "outbound" | "pageview";
|
|
1780
|
+
type: "click" | "conversion" | "custom" | "heartbeat" | "outbound" | "pageview" | "vital";
|
|
1781
|
+
value?: number | undefined;
|
|
1461
1782
|
visitorId: string;
|
|
1462
1783
|
}[];
|
|
1463
1784
|
origin: string;
|
|
@@ -1483,6 +1804,14 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1483
1804
|
duplicates: number;
|
|
1484
1805
|
rejected: number;
|
|
1485
1806
|
}>>;
|
|
1807
|
+
linkVisitor: import("convex/server").RegisteredMutation<"public", {
|
|
1808
|
+
previousVisitorId: string;
|
|
1809
|
+
siteId: string;
|
|
1810
|
+
visitorId: string;
|
|
1811
|
+
}, Promise<{
|
|
1812
|
+
aliasCount: number;
|
|
1813
|
+
linked: boolean;
|
|
1814
|
+
}>>;
|
|
1486
1815
|
overview: import("convex/server").RegisteredQuery<"public", {
|
|
1487
1816
|
from: number;
|
|
1488
1817
|
interval?: "day" | "hour" | undefined;
|
|
@@ -1495,6 +1824,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1495
1824
|
metadata: {
|
|
1496
1825
|
breakdowns: {
|
|
1497
1826
|
topBrowsers: "eventVolume";
|
|
1827
|
+
topCampaigns: "eventVolume";
|
|
1498
1828
|
topCountries: "eventVolume";
|
|
1499
1829
|
topDevices: "eventVolume";
|
|
1500
1830
|
topEvents: "eventVolume";
|
|
@@ -1510,7 +1840,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1510
1840
|
state: "complete" | "partial" | "retained" | "unavailable";
|
|
1511
1841
|
};
|
|
1512
1842
|
features: {
|
|
1513
|
-
botDetection: "
|
|
1843
|
+
botDetection: "userAgent";
|
|
1514
1844
|
errorInsights: "unsupported";
|
|
1515
1845
|
outboundLinks: "eventVolume";
|
|
1516
1846
|
sessionReplay: "unsupported";
|
|
@@ -1547,6 +1877,11 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1547
1877
|
revenueCents: number;
|
|
1548
1878
|
value: string;
|
|
1549
1879
|
}>;
|
|
1880
|
+
topCampaigns: Array<{
|
|
1881
|
+
count: number;
|
|
1882
|
+
revenueCents: number;
|
|
1883
|
+
value: string;
|
|
1884
|
+
}>;
|
|
1550
1885
|
topCountries: Array<{
|
|
1551
1886
|
count: number;
|
|
1552
1887
|
revenueCents: number;
|
|
@@ -1661,6 +1996,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1661
1996
|
utmMedium?: string;
|
|
1662
1997
|
utmSource?: string;
|
|
1663
1998
|
visitorId: string;
|
|
1999
|
+
visitorKey?: string;
|
|
1664
2000
|
}>;
|
|
1665
2001
|
pageStatus?: "SplitRecommended" | "SplitRequired" | null;
|
|
1666
2002
|
splitCursor?: string | null;
|
|
@@ -1705,7 +2041,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1705
2041
|
siteId: string;
|
|
1706
2042
|
target?: string;
|
|
1707
2043
|
timestamp: number;
|
|
1708
|
-
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound";
|
|
2044
|
+
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
|
|
1709
2045
|
visitorId: string;
|
|
1710
2046
|
}>;
|
|
1711
2047
|
pageStatus?: "SplitRecommended" | "SplitRequired" | null;
|
|
@@ -1778,7 +2114,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1778
2114
|
siteId: string;
|
|
1779
2115
|
target?: string;
|
|
1780
2116
|
timestamp: number;
|
|
1781
|
-
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound";
|
|
2117
|
+
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
|
|
1782
2118
|
visitorId: string;
|
|
1783
2119
|
}[]>>;
|
|
1784
2120
|
goalsReport: import("convex/server").RegisteredQuery<"public", {
|
|
@@ -1905,6 +2241,61 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1905
2241
|
};
|
|
1906
2242
|
truncated: boolean;
|
|
1907
2243
|
}>>;
|
|
2244
|
+
vitalsReport: import("convex/server").RegisteredQuery<"public", {
|
|
2245
|
+
from: number;
|
|
2246
|
+
siteId: string;
|
|
2247
|
+
to: number;
|
|
2248
|
+
}, Promise<{
|
|
2249
|
+
metadata: {
|
|
2250
|
+
basis: "dailyRollup" | "boundedLegacy";
|
|
2251
|
+
coverage: {
|
|
2252
|
+
availableFrom: number | null;
|
|
2253
|
+
availableThrough: number | null;
|
|
2254
|
+
generation: number | null;
|
|
2255
|
+
retainedBefore: number | null;
|
|
2256
|
+
state: "complete" | "partial" | "retained" | "unavailable";
|
|
2257
|
+
};
|
|
2258
|
+
range: {
|
|
2259
|
+
boundary: "inclusive";
|
|
2260
|
+
from: number;
|
|
2261
|
+
timezone: "UTC";
|
|
2262
|
+
to: number;
|
|
2263
|
+
};
|
|
2264
|
+
};
|
|
2265
|
+
metrics: Array<{
|
|
2266
|
+
average: number;
|
|
2267
|
+
count: number;
|
|
2268
|
+
devices: Array<{
|
|
2269
|
+
average: number;
|
|
2270
|
+
count: number;
|
|
2271
|
+
device: string;
|
|
2272
|
+
good: number;
|
|
2273
|
+
needsImprovement: number;
|
|
2274
|
+
p75: number;
|
|
2275
|
+
poor: number;
|
|
2276
|
+
}>;
|
|
2277
|
+
good: number;
|
|
2278
|
+
metric: "LCP" | "CLS" | "INP" | "FCP" | "TTFB";
|
|
2279
|
+
needsImprovement: number;
|
|
2280
|
+
p75: number;
|
|
2281
|
+
pages: Array<{
|
|
2282
|
+
average: number;
|
|
2283
|
+
count: number;
|
|
2284
|
+
good: number;
|
|
2285
|
+
needsImprovement: number;
|
|
2286
|
+
p75: number;
|
|
2287
|
+
page: string;
|
|
2288
|
+
poor: number;
|
|
2289
|
+
}>;
|
|
2290
|
+
poor: number;
|
|
2291
|
+
timeSeries: Array<{
|
|
2292
|
+
count: number;
|
|
2293
|
+
p75: number;
|
|
2294
|
+
timestamp: number;
|
|
2295
|
+
}>;
|
|
2296
|
+
}>;
|
|
2297
|
+
truncated: boolean;
|
|
2298
|
+
}>>;
|
|
1908
2299
|
dataCoverage: import("convex/server").RegisteredQuery<"public", {
|
|
1909
2300
|
from: number;
|
|
1910
2301
|
siteId: string;
|
|
@@ -1918,7 +2309,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1918
2309
|
retainedBefore: number | null;
|
|
1919
2310
|
state: "complete" | "partial" | "retained" | "unavailable";
|
|
1920
2311
|
};
|
|
1921
|
-
dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates";
|
|
2312
|
+
dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals";
|
|
1922
2313
|
}>;
|
|
1923
2314
|
from: number;
|
|
1924
2315
|
siteId: string;
|
|
@@ -1931,7 +2322,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1931
2322
|
jobs: Array<{
|
|
1932
2323
|
before: number;
|
|
1933
2324
|
deleted: number;
|
|
1934
|
-
kind: "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
|
|
2325
|
+
kind: "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "vitalRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
|
|
1935
2326
|
scheduledAt: number | null;
|
|
1936
2327
|
status: "pending" | "running" | "complete";
|
|
1937
2328
|
updatedAt: number;
|
|
@@ -1958,7 +2349,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
1958
2349
|
}, Promise<null>>;
|
|
1959
2350
|
runRetentionPolicy: import("convex/server").RegisteredMutation<"public", {
|
|
1960
2351
|
batchSize?: number | undefined;
|
|
1961
|
-
kind: "affiliateRollups" | "affiliateStats" | "aggregateDay" | "aggregateHour" | "attributions" | "conversions" | "events" | "funnelProgress" | "funnelRollups" | "funnelSteps" | "goalCompletions" | "goalRollups" | "ingestWindows" | "liveSessions" | "sessions" | "siteIngestWindows";
|
|
2352
|
+
kind: "affiliateRollups" | "affiliateStats" | "aggregateDay" | "aggregateHour" | "attributions" | "conversions" | "events" | "funnelProgress" | "funnelRollups" | "funnelSteps" | "goalCompletions" | "goalRollups" | "ingestWindows" | "liveSessions" | "sessions" | "siteIngestWindows" | "vitalRollups";
|
|
1962
2353
|
siteId: string;
|
|
1963
2354
|
}, Promise<{
|
|
1964
2355
|
before: number;
|
|
@@ -2059,7 +2450,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
|
|
|
2059
2450
|
cleanupAnalytics: import("convex/server").RegisteredMutation<"public", {
|
|
2060
2451
|
batchSize?: number | undefined;
|
|
2061
2452
|
before: number;
|
|
2062
|
-
kind: "affiliateRollups" | "affiliateStats" | "aggregateDay" | "aggregateHour" | "attributions" | "conversions" | "events" | "funnelProgress" | "funnelRollups" | "funnelSteps" | "goalCompletions" | "goalRollups" | "ingestWindows" | "liveSessions" | "sessions" | "siteIngestWindows";
|
|
2453
|
+
kind: "affiliateRollups" | "affiliateStats" | "aggregateDay" | "aggregateHour" | "attributions" | "conversions" | "events" | "funnelProgress" | "funnelRollups" | "funnelSteps" | "goalCompletions" | "goalRollups" | "ingestWindows" | "liveSessions" | "sessions" | "siteIngestWindows" | "vitalRollups";
|
|
2063
2454
|
siteId: string;
|
|
2064
2455
|
}, Promise<{
|
|
2065
2456
|
before: number;
|
|
@@ -2087,8 +2478,9 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
|
|
|
2087
2478
|
funnelsReport: "funnelsReport";
|
|
2088
2479
|
affiliatesReport: "affiliatesReport";
|
|
2089
2480
|
dataCoverage: "dataCoverage";
|
|
2481
|
+
vitalsReport: "vitalsReport";
|
|
2090
2482
|
};
|
|
2091
|
-
capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney")[];
|
|
2483
|
+
capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[];
|
|
2092
2484
|
limits: {
|
|
2093
2485
|
maxSitesPerRequest: 10;
|
|
2094
2486
|
maxSitesPerConnection: 10;
|
|
@@ -2111,6 +2503,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
|
|
|
2111
2503
|
metadata: {
|
|
2112
2504
|
breakdowns: {
|
|
2113
2505
|
topBrowsers: "eventVolume";
|
|
2506
|
+
topCampaigns: "eventVolume";
|
|
2114
2507
|
topCountries: "eventVolume";
|
|
2115
2508
|
topDevices: "eventVolume";
|
|
2116
2509
|
topEvents: "eventVolume";
|
|
@@ -2126,7 +2519,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
|
|
|
2126
2519
|
state: "complete" | "partial" | "retained" | "unavailable";
|
|
2127
2520
|
};
|
|
2128
2521
|
features: {
|
|
2129
|
-
botDetection: "
|
|
2522
|
+
botDetection: "userAgent";
|
|
2130
2523
|
errorInsights: "unsupported";
|
|
2131
2524
|
outboundLinks: "eventVolume";
|
|
2132
2525
|
sessionReplay: "unsupported";
|
|
@@ -2163,6 +2556,11 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
|
|
|
2163
2556
|
revenueCents: number;
|
|
2164
2557
|
value: string;
|
|
2165
2558
|
}>;
|
|
2559
|
+
topCampaigns: Array<{
|
|
2560
|
+
count: number;
|
|
2561
|
+
revenueCents: number;
|
|
2562
|
+
value: string;
|
|
2563
|
+
}>;
|
|
2166
2564
|
topCountries: Array<{
|
|
2167
2565
|
count: number;
|
|
2168
2566
|
revenueCents: number;
|
|
@@ -2277,6 +2675,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
|
|
|
2277
2675
|
utmMedium?: string;
|
|
2278
2676
|
utmSource?: string;
|
|
2279
2677
|
visitorId: string;
|
|
2678
|
+
visitorKey?: string;
|
|
2280
2679
|
}>;
|
|
2281
2680
|
pageStatus?: "SplitRecommended" | "SplitRequired" | null;
|
|
2282
2681
|
splitCursor?: string | null;
|
|
@@ -2321,7 +2720,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
|
|
|
2321
2720
|
siteId: string;
|
|
2322
2721
|
target?: string;
|
|
2323
2722
|
timestamp: number;
|
|
2324
|
-
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound";
|
|
2723
|
+
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
|
|
2325
2724
|
visitorId: string;
|
|
2326
2725
|
}>;
|
|
2327
2726
|
pageStatus?: "SplitRecommended" | "SplitRequired" | null;
|
|
@@ -2394,7 +2793,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
|
|
|
2394
2793
|
siteId: string;
|
|
2395
2794
|
target?: string;
|
|
2396
2795
|
timestamp: number;
|
|
2397
|
-
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound";
|
|
2796
|
+
type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
|
|
2398
2797
|
visitorId: string;
|
|
2399
2798
|
}[]>>;
|
|
2400
2799
|
goalsReport: import("convex/server").RegisteredQuery<"public", {
|
|
@@ -2521,6 +2920,61 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
|
|
|
2521
2920
|
};
|
|
2522
2921
|
truncated: boolean;
|
|
2523
2922
|
}>>;
|
|
2923
|
+
vitalsReport: import("convex/server").RegisteredQuery<"public", {
|
|
2924
|
+
from: number;
|
|
2925
|
+
siteId: string;
|
|
2926
|
+
to: number;
|
|
2927
|
+
}, Promise<{
|
|
2928
|
+
metadata: {
|
|
2929
|
+
basis: "dailyRollup" | "boundedLegacy";
|
|
2930
|
+
coverage: {
|
|
2931
|
+
availableFrom: number | null;
|
|
2932
|
+
availableThrough: number | null;
|
|
2933
|
+
generation: number | null;
|
|
2934
|
+
retainedBefore: number | null;
|
|
2935
|
+
state: "complete" | "partial" | "retained" | "unavailable";
|
|
2936
|
+
};
|
|
2937
|
+
range: {
|
|
2938
|
+
boundary: "inclusive";
|
|
2939
|
+
from: number;
|
|
2940
|
+
timezone: "UTC";
|
|
2941
|
+
to: number;
|
|
2942
|
+
};
|
|
2943
|
+
};
|
|
2944
|
+
metrics: Array<{
|
|
2945
|
+
average: number;
|
|
2946
|
+
count: number;
|
|
2947
|
+
devices: Array<{
|
|
2948
|
+
average: number;
|
|
2949
|
+
count: number;
|
|
2950
|
+
device: string;
|
|
2951
|
+
good: number;
|
|
2952
|
+
needsImprovement: number;
|
|
2953
|
+
p75: number;
|
|
2954
|
+
poor: number;
|
|
2955
|
+
}>;
|
|
2956
|
+
good: number;
|
|
2957
|
+
metric: "LCP" | "CLS" | "INP" | "FCP" | "TTFB";
|
|
2958
|
+
needsImprovement: number;
|
|
2959
|
+
p75: number;
|
|
2960
|
+
pages: Array<{
|
|
2961
|
+
average: number;
|
|
2962
|
+
count: number;
|
|
2963
|
+
good: number;
|
|
2964
|
+
needsImprovement: number;
|
|
2965
|
+
p75: number;
|
|
2966
|
+
page: string;
|
|
2967
|
+
poor: number;
|
|
2968
|
+
}>;
|
|
2969
|
+
poor: number;
|
|
2970
|
+
timeSeries: Array<{
|
|
2971
|
+
count: number;
|
|
2972
|
+
p75: number;
|
|
2973
|
+
timestamp: number;
|
|
2974
|
+
}>;
|
|
2975
|
+
}>;
|
|
2976
|
+
truncated: boolean;
|
|
2977
|
+
}>>;
|
|
2524
2978
|
dataCoverage: import("convex/server").RegisteredQuery<"public", {
|
|
2525
2979
|
from: number;
|
|
2526
2980
|
siteId: string;
|
|
@@ -2534,7 +2988,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
|
|
|
2534
2988
|
retainedBefore: number | null;
|
|
2535
2989
|
state: "complete" | "partial" | "retained" | "unavailable";
|
|
2536
2990
|
};
|
|
2537
|
-
dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates";
|
|
2991
|
+
dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals";
|
|
2538
2992
|
}>;
|
|
2539
2993
|
from: number;
|
|
2540
2994
|
siteId: string;
|
|
@@ -2544,6 +2998,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
|
|
|
2544
2998
|
export declare function componentHttpPaths(prefix?: string): {
|
|
2545
2999
|
readonly events: `${string}/events`;
|
|
2546
3000
|
readonly tracker: `${string}/tracker.js`;
|
|
3001
|
+
readonly vitals: `${string}/vitals.js`;
|
|
2547
3002
|
readonly health: `${string}/health`;
|
|
2548
3003
|
};
|
|
2549
3004
|
type QueryCtx = Pick<GenericQueryCtx<GenericDataModel>, "runQuery">;
|