@iann29/rastro 0.1.0-alpha.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +246 -57
  2. package/agent/integration.md +223 -65
  3. package/agent/manifest.json +34 -13
  4. package/agent/manifest.schema.json +53 -11
  5. package/dist/client/federation.d.ts +196 -11
  6. package/dist/client/federation.d.ts.map +1 -1
  7. package/dist/client/federation.js +160 -6
  8. package/dist/client/federation.js.map +1 -1
  9. package/dist/client/heat.d.ts +37 -0
  10. package/dist/client/heat.d.ts.map +1 -0
  11. package/dist/client/heat.js +43 -0
  12. package/dist/client/heat.js.map +1 -0
  13. package/dist/client/index.d.ts +441 -98
  14. package/dist/client/index.d.ts.map +1 -1
  15. package/dist/client/index.js +207 -17
  16. package/dist/client/index.js.map +1 -1
  17. package/dist/component/_generated/api.d.ts +6 -0
  18. package/dist/component/_generated/api.d.ts.map +1 -1
  19. package/dist/component/_generated/api.js.map +1 -1
  20. package/dist/component/_generated/component.d.ts +50 -13
  21. package/dist/component/_generated/component.d.ts.map +1 -1
  22. package/dist/component/constants.d.ts +3 -0
  23. package/dist/component/constants.d.ts.map +1 -1
  24. package/dist/component/constants.js +6 -0
  25. package/dist/component/constants.js.map +1 -1
  26. package/dist/component/coverage.d.ts +9 -0
  27. package/dist/component/coverage.d.ts.map +1 -1
  28. package/dist/component/coverage.js +36 -6
  29. package/dist/component/coverage.js.map +1 -1
  30. package/dist/component/geo.d.ts +2 -0
  31. package/dist/component/geo.d.ts.map +1 -1
  32. package/dist/component/geo.js +56 -19
  33. package/dist/component/geo.js.map +1 -1
  34. package/dist/component/http.d.ts.map +1 -1
  35. package/dist/component/http.js +48 -27
  36. package/dist/component/http.js.map +1 -1
  37. package/dist/component/ingest.d.ts.map +1 -1
  38. package/dist/component/ingest.js +223 -304
  39. package/dist/component/ingest.js.map +1 -1
  40. package/dist/component/localTime.d.ts +25 -0
  41. package/dist/component/localTime.d.ts.map +1 -0
  42. package/dist/component/localTime.js +126 -0
  43. package/dist/component/localTime.js.map +1 -0
  44. package/dist/component/reports.d.ts +44 -13
  45. package/dist/component/reports.d.ts.map +1 -1
  46. package/dist/component/reports.js +193 -38
  47. package/dist/component/reports.js.map +1 -1
  48. package/dist/component/retention.js +26 -8
  49. package/dist/component/retention.js.map +1 -1
  50. package/dist/component/rollupStore.d.ts +320 -0
  51. package/dist/component/rollupStore.d.ts.map +1 -0
  52. package/dist/component/rollupStore.js +596 -0
  53. package/dist/component/rollupStore.js.map +1 -0
  54. package/dist/component/rollups.d.ts +20 -0
  55. package/dist/component/rollups.d.ts.map +1 -0
  56. package/dist/component/rollups.js +73 -0
  57. package/dist/component/rollups.js.map +1 -0
  58. package/dist/component/sanitize.d.ts +5 -0
  59. package/dist/component/sanitize.d.ts.map +1 -1
  60. package/dist/component/sanitize.js +15 -0
  61. package/dist/component/sanitize.js.map +1 -1
  62. package/dist/component/schema.d.ts +345 -11
  63. package/dist/component/schema.js +25 -0
  64. package/dist/component/schema.js.map +1 -1
  65. package/dist/component/sites.d.ts +12 -0
  66. package/dist/component/sites.d.ts.map +1 -1
  67. package/dist/component/sites.js +30 -0
  68. package/dist/component/sites.js.map +1 -1
  69. package/dist/component/validators.d.ts +34 -13
  70. package/dist/component/validators.d.ts.map +1 -1
  71. package/dist/component/validators.js +23 -2
  72. package/dist/component/validators.js.map +1 -1
  73. package/dist/tracker/generated.d.ts +3 -0
  74. package/dist/tracker/generated.d.ts.map +1 -1
  75. package/dist/tracker/generated.js +3 -0
  76. package/dist/tracker/generated.js.map +1 -1
  77. package/docs/federation-setup.md +104 -27
  78. package/docs/federation.md +168 -31
  79. package/docs/upgrading.md +158 -21
  80. package/llms.txt +8 -6
  81. package/package.json +2 -1
  82. package/src/component/_generated/api.ts +6 -0
  83. package/src/component/_generated/component.ts +47 -12
  84. package/src/component/constants.ts +6 -0
  85. package/src/component/coverage.ts +46 -6
  86. package/src/component/geo.ts +82 -28
  87. package/src/component/http.ts +61 -26
  88. package/src/component/ingest.ts +327 -439
  89. package/src/component/localTime.ts +167 -0
  90. package/src/component/reports.ts +261 -39
  91. package/src/component/retention.ts +25 -7
  92. package/src/component/rollupStore.ts +799 -0
  93. package/src/component/rollups.ts +82 -0
  94. package/src/component/sanitize.ts +14 -0
  95. package/src/component/schema.ts +35 -0
  96. package/src/component/sites.ts +32 -0
  97. package/src/component/validators.ts +27 -1
  98. package/src/tracker/generated.ts +12 -0
@@ -7,9 +7,12 @@ export { eventPropertiesValidator, eventTypeValidator, funnelStepValidator, goal
7
7
  export type { EventProperties, EventType, FunnelStep, IngestContext, TrackerEvent, } from "../component/validators.js";
8
8
  export { VITAL_METRICS, VITAL_THRESHOLDS } from "../component/vitals.js";
9
9
  export { normalizeRoute } from "../component/sanitize.js";
10
+ export { localDayStart, nextLocalDayStart, previousLocalDayStart, } from "../component/localTime.js";
11
+ export { HEAT_HOT_SCORE, HEAT_WARM_SCORE, visitorHeat } from "./heat.js";
12
+ export type { HeatInput, HeatLevel, HeatSignal, VisitorHeat } from "./heat.js";
10
13
  export type { VitalMetric } from "../component/vitals.js";
11
- 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";
12
- export type { FederatedAnalyticsCapability, FederatedAnalyticsAuthorizerOptions, FederatedAnalyticsConnection, FederatedAnalyticsConnectionStatus, FederatedAnalyticsErrorCode, FederatedAnalyticsIdentity, FederatedAnalyticsManifest, FederatedSiteSummary, ResolveFederatedAnalyticsConnection, } from "./federation.js";
14
+ export { effectiveFederatedPermissions, federatedPermissionSatisfies, isPublicFederatedAccess, FEDERATED_ANALYTICS_CLAIMS, FEDERATED_ANALYTICS_CONFIGURE_FUNCTIONS, FEDERATED_ANALYTICS_CONFIGURE_PERMISSION, FEDERATED_ANALYTICS_CONNECTOR_MANIFEST, FEDERATED_ANALYTICS_ERROR_CODES, FEDERATED_ANALYTICS_PERMISSIONS, FEDERATED_ANALYTICS_PUBLIC_FUNCTIONS, FEDERATED_ANALYTICS_PUBLIC_PERMISSION, FEDERATED_ANALYTICS_READ_PERMISSION, FEDERATED_ANALYTICS_REQUIRED_CAPABILITIES, FEDERATED_ANALYTICS_REQUIRED_FUNCTIONS, federatedAnalyticsPermissionValidator, } from "./federation.js";
15
+ export type { FederatedAnalyticsCapability, FederatedAnalyticsAuthorizerOptions, FederatedAnalyticsConnection, FederatedAnalyticsConnectionStatus, FederatedAnalyticsErrorCode, FederatedAnalyticsIdentity, FederatedAnalyticsManifest, FederatedAnalyticsPermission, FederatedSiteSummary, ResolveFederatedAnalyticsConnection, } from "./federation.js";
13
16
  export type CreateSiteInput = FunctionArgs<ComponentApi["sites"]["create"]>;
14
17
  export type CreateSiteOutput = FunctionReturnType<ComponentApi["sites"]["create"]>;
15
18
  export type UpdateSiteInput = FunctionArgs<ComponentApi["sites"]["update"]>;
@@ -75,7 +78,7 @@ export type DataCoverage = {
75
78
  from: number;
76
79
  to: number;
77
80
  datasets: Array<{
78
- dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
81
+ dataset: "overviewHour" | "overviewDay" | "overviewLocalDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
79
82
  coverage: CoverageStatus;
80
83
  }>;
81
84
  };
@@ -132,6 +135,11 @@ export declare class Rastro {
132
135
  timezone?: string;
133
136
  updatedAt: number;
134
137
  } | null>;
138
+ /** The calendar days a site's daily overview answers in; see `sites.localDays`. */
139
+ localDays(ctx: QueryCtx | MutationCtx | ActionCtx, siteId: string): Promise<{
140
+ since: number;
141
+ timezone: string;
142
+ } | null>;
135
143
  listSites(ctx: QueryCtx | MutationCtx | ActionCtx, args: ListSitesInput): Promise<{
136
144
  _creationTime: number;
137
145
  _id: string;
@@ -165,14 +173,16 @@ export declare class Rastro {
165
173
  interval: "hour" | "day";
166
174
  metadata: {
167
175
  breakdowns: {
168
- topBrowsers: "eventVolume";
169
- topCampaigns: "eventVolume";
170
- topCountries: "eventVolume";
171
- topDevices: "eventVolume";
176
+ topBrowsers: "pageviews" | "sessions" | "eventVolume";
177
+ topCampaigns: "pageviews" | "sessions" | "eventVolume";
178
+ topCountries: "pageviews" | "sessions" | "eventVolume";
179
+ topDevices: "pageviews" | "sessions" | "eventVolume";
172
180
  topEvents: "eventVolume";
173
181
  topGoals: "goalCompletionVolume";
174
- topPages: "eventVolume";
175
- topSources: "eventVolume";
182
+ topMediums: "pageviews" | "sessions" | "eventVolume";
183
+ topOutbound: "eventVolume";
184
+ topPages: "pageviews" | "sessions" | "eventVolume";
185
+ topSources: "pageviews" | "sessions" | "eventVolume";
176
186
  };
177
187
  coverage: {
178
188
  availableFrom: number | null;
@@ -181,6 +191,8 @@ export declare class Rastro {
181
191
  retainedBefore: number | null;
182
192
  state: "complete" | "partial" | "retained" | "unavailable";
183
193
  };
194
+ dimensionsSince: number | null;
195
+ engagement: "counted" | "unavailable";
184
196
  features: {
185
197
  botDetection: "userAgent";
186
198
  errorInsights: "unsupported";
@@ -190,7 +202,7 @@ export declare class Rastro {
190
202
  range: {
191
203
  boundary: "inclusive";
192
204
  from: number;
193
- timezone: "UTC";
205
+ timezone: string;
194
206
  to: number;
195
207
  };
196
208
  visitors: {
@@ -203,9 +215,12 @@ export declare class Rastro {
203
215
  };
204
216
  timeSeries: Array<{
205
217
  clicks: number;
218
+ continuedSessions: number;
206
219
  conversions: number;
207
220
  customEvents: number;
221
+ durationMs: number;
208
222
  events: number;
223
+ newVisitors: number;
209
224
  outboundClicks: number;
210
225
  pageviews: number;
211
226
  revenueCents: number;
@@ -244,6 +259,16 @@ export declare class Rastro {
244
259
  revenueCents: number;
245
260
  value: string;
246
261
  }>;
262
+ topMediums: Array<{
263
+ count: number;
264
+ revenueCents: number;
265
+ value: string;
266
+ }>;
267
+ topOutbound: Array<{
268
+ count: number;
269
+ revenueCents: number;
270
+ value: string;
271
+ }>;
247
272
  topPages: Array<{
248
273
  count: number;
249
274
  revenueCents: number;
@@ -256,9 +281,12 @@ export declare class Rastro {
256
281
  }>;
257
282
  totals: {
258
283
  clicks: number;
284
+ continuedSessions: number;
259
285
  conversions: number;
260
286
  customEvents: number;
287
+ durationMs: number;
261
288
  events: number;
289
+ newVisitors: number;
262
290
  outboundClicks: number;
263
291
  pageviews: number;
264
292
  revenueCents: number;
@@ -269,12 +297,20 @@ export declare class Rastro {
269
297
  liveVisitors(ctx: QueryCtx | MutationCtx | ActionCtx, args: LiveVisitorsInput): Promise<{
270
298
  _creationTime: number;
271
299
  _id: string;
300
+ affiliateSlug?: string;
272
301
  browser: string;
273
302
  city?: string;
303
+ conversionCount?: number;
274
304
  country?: string;
275
305
  device: string;
306
+ entryPath?: string;
276
307
  eventCount: number;
277
308
  expiresAt: number;
309
+ funnel?: {
310
+ funnelId: string;
311
+ step: number;
312
+ steps: number;
313
+ };
278
314
  lastSeenAt: number;
279
315
  latitude?: number;
280
316
  longitude?: number;
@@ -283,10 +319,12 @@ export declare class Rastro {
283
319
  pageviewCount: number;
284
320
  path: string;
285
321
  previousPath?: string;
322
+ returning?: boolean;
286
323
  sessionId: string;
287
324
  siteId: string;
288
325
  source: string;
289
326
  startedAt: number;
327
+ utmCampaign?: string;
290
328
  visitorId: string;
291
329
  }[]>;
292
330
  listSessions(ctx: QueryCtx | MutationCtx | ActionCtx, args: ListSessionsInput): Promise<{
@@ -312,6 +350,7 @@ export declare class Rastro {
312
350
  lastSeenAt: number;
313
351
  latitude?: number;
314
352
  longitude?: number;
353
+ newVisitor?: boolean;
315
354
  os: string;
316
355
  pageviewCount: number;
317
356
  referrer?: string;
@@ -441,7 +480,7 @@ export declare class Rastro {
441
480
  range: {
442
481
  boundary: "inclusive";
443
482
  from: number;
444
- timezone: "UTC";
483
+ timezone: string;
445
484
  to: number;
446
485
  };
447
486
  };
@@ -466,7 +505,7 @@ export declare class Rastro {
466
505
  range: {
467
506
  boundary: "inclusive";
468
507
  from: number;
469
- timezone: "UTC";
508
+ timezone: string;
470
509
  to: number;
471
510
  };
472
511
  };
@@ -516,7 +555,7 @@ export declare class Rastro {
516
555
  range: {
517
556
  boundary: "inclusive";
518
557
  from: number;
519
- timezone: "UTC";
558
+ timezone: string;
520
559
  to: number;
521
560
  };
522
561
  uniqueVisitors: {
@@ -539,7 +578,7 @@ export declare class Rastro {
539
578
  range: {
540
579
  boundary: "inclusive";
541
580
  from: number;
542
- timezone: "UTC";
581
+ timezone: string;
543
582
  to: number;
544
583
  };
545
584
  };
@@ -596,7 +635,7 @@ export declare class Rastro {
596
635
  range: {
597
636
  boundary: "inclusive";
598
637
  from: number;
599
- timezone: "UTC";
638
+ timezone: string;
600
639
  to: number;
601
640
  };
602
641
  visitors: {
@@ -696,7 +735,7 @@ export declare class Rastro {
696
735
  retainedBefore: number | null;
697
736
  state: "complete" | "partial" | "retained" | "unavailable";
698
737
  };
699
- dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
738
+ dataset: "overviewHour" | "overviewDay" | "overviewLocalDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
700
739
  }>;
701
740
  from: number;
702
741
  siteId: string;
@@ -743,14 +782,16 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
743
782
  interval: "day" | "hour";
744
783
  metadata: {
745
784
  breakdowns: {
746
- topBrowsers: "eventVolume";
747
- topCampaigns: "eventVolume";
748
- topCountries: "eventVolume";
749
- topDevices: "eventVolume";
785
+ topBrowsers: "eventVolume" | "pageviews" | "sessions";
786
+ topCampaigns: "eventVolume" | "pageviews" | "sessions";
787
+ topCountries: "eventVolume" | "pageviews" | "sessions";
788
+ topDevices: "eventVolume" | "pageviews" | "sessions";
750
789
  topEvents: "eventVolume";
751
790
  topGoals: "goalCompletionVolume";
752
- topPages: "eventVolume";
753
- topSources: "eventVolume";
791
+ topMediums: "eventVolume" | "pageviews" | "sessions";
792
+ topOutbound: "eventVolume";
793
+ topPages: "eventVolume" | "pageviews" | "sessions";
794
+ topSources: "eventVolume" | "pageviews" | "sessions";
754
795
  };
755
796
  coverage: {
756
797
  availableFrom: number | null;
@@ -759,6 +800,8 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
759
800
  retainedBefore: number | null;
760
801
  state: "complete" | "partial" | "retained" | "unavailable";
761
802
  };
803
+ dimensionsSince: number | null;
804
+ engagement: "counted" | "unavailable";
762
805
  features: {
763
806
  botDetection: "userAgent";
764
807
  errorInsights: "unsupported";
@@ -768,7 +811,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
768
811
  range: {
769
812
  boundary: "inclusive";
770
813
  from: number;
771
- timezone: "UTC";
814
+ timezone: string;
772
815
  to: number;
773
816
  };
774
817
  visitors: {
@@ -781,9 +824,12 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
781
824
  };
782
825
  timeSeries: {
783
826
  clicks: number;
827
+ continuedSessions: number;
784
828
  conversions: number;
785
829
  customEvents: number;
830
+ durationMs: number;
786
831
  events: number;
832
+ newVisitors: number;
787
833
  outboundClicks: number;
788
834
  pageviews: number;
789
835
  revenueCents: number;
@@ -822,6 +868,16 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
822
868
  revenueCents: number;
823
869
  value: string;
824
870
  }[];
871
+ topMediums: {
872
+ count: number;
873
+ revenueCents: number;
874
+ value: string;
875
+ }[];
876
+ topOutbound: {
877
+ count: number;
878
+ revenueCents: number;
879
+ value: string;
880
+ }[];
825
881
  topPages: {
826
882
  count: number;
827
883
  revenueCents: number;
@@ -834,9 +890,12 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
834
890
  }[];
835
891
  totals: {
836
892
  clicks: number;
893
+ continuedSessions: number;
837
894
  conversions: number;
838
895
  customEvents: number;
896
+ durationMs: number;
839
897
  events: number;
898
+ newVisitors: number;
840
899
  outboundClicks: number;
841
900
  pageviews: number;
842
901
  revenueCents: number;
@@ -850,9 +909,12 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
850
909
  currency: import("convex/values").VString<string, "required">;
851
910
  totals: import("convex/values").VObject<{
852
911
  clicks: number;
912
+ continuedSessions: number;
853
913
  conversions: number;
854
914
  customEvents: number;
915
+ durationMs: number;
855
916
  events: number;
917
+ newVisitors: number;
856
918
  outboundClicks: number;
857
919
  pageviews: number;
858
920
  revenueCents: number;
@@ -868,12 +930,18 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
868
930
  visitors: import("convex/values").VFloat64<number, "required">;
869
931
  conversions: import("convex/values").VFloat64<number, "required">;
870
932
  revenueCents: import("convex/values").VFloat64<number, "required">;
871
- }, "required", "clicks" | "conversions" | "customEvents" | "events" | "outboundClicks" | "pageviews" | "revenueCents" | "sessions" | "visitors">;
933
+ durationMs: import("convex/values").VFloat64<number, "required">;
934
+ continuedSessions: import("convex/values").VFloat64<number, "required">;
935
+ newVisitors: import("convex/values").VFloat64<number, "required">;
936
+ }, "required", "clicks" | "continuedSessions" | "conversions" | "customEvents" | "durationMs" | "events" | "newVisitors" | "outboundClicks" | "pageviews" | "revenueCents" | "sessions" | "visitors">;
872
937
  timeSeries: import("convex/values").VArray<{
873
938
  clicks: number;
939
+ continuedSessions: number;
874
940
  conversions: number;
875
941
  customEvents: number;
942
+ durationMs: number;
876
943
  events: number;
944
+ newVisitors: number;
877
945
  outboundClicks: number;
878
946
  pageviews: number;
879
947
  revenueCents: number;
@@ -882,9 +950,12 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
882
950
  visitors: number;
883
951
  }[], import("convex/values").VObject<{
884
952
  clicks: number;
953
+ continuedSessions: number;
885
954
  conversions: number;
886
955
  customEvents: number;
956
+ durationMs: number;
887
957
  events: number;
958
+ newVisitors: number;
888
959
  outboundClicks: number;
889
960
  pageviews: number;
890
961
  revenueCents: number;
@@ -901,8 +972,11 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
901
972
  visitors: import("convex/values").VFloat64<number, "required">;
902
973
  conversions: import("convex/values").VFloat64<number, "required">;
903
974
  revenueCents: import("convex/values").VFloat64<number, "required">;
975
+ durationMs: import("convex/values").VFloat64<number, "required">;
976
+ continuedSessions: import("convex/values").VFloat64<number, "required">;
977
+ newVisitors: import("convex/values").VFloat64<number, "required">;
904
978
  timestamp: import("convex/values").VFloat64<number, "required">;
905
- }, "required", "clicks" | "conversions" | "customEvents" | "events" | "outboundClicks" | "pageviews" | "revenueCents" | "sessions" | "timestamp" | "visitors">, "required">;
979
+ }, "required", "clicks" | "continuedSessions" | "conversions" | "customEvents" | "durationMs" | "events" | "newVisitors" | "outboundClicks" | "pageviews" | "revenueCents" | "sessions" | "timestamp" | "visitors">, "required">;
906
980
  topSources: import("convex/values").VArray<{
907
981
  count: number;
908
982
  revenueCents: number;
@@ -1007,16 +1081,44 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
1007
1081
  count: import("convex/values").VFloat64<number, "required">;
1008
1082
  revenueCents: import("convex/values").VFloat64<number, "required">;
1009
1083
  }, "required", "count" | "revenueCents" | "value">, "required">;
1084
+ topMediums: import("convex/values").VArray<{
1085
+ count: number;
1086
+ revenueCents: number;
1087
+ value: string;
1088
+ }[], import("convex/values").VObject<{
1089
+ count: number;
1090
+ revenueCents: number;
1091
+ value: string;
1092
+ }, {
1093
+ value: import("convex/values").VString<string, "required">;
1094
+ count: import("convex/values").VFloat64<number, "required">;
1095
+ revenueCents: import("convex/values").VFloat64<number, "required">;
1096
+ }, "required", "count" | "revenueCents" | "value">, "required">;
1097
+ topOutbound: import("convex/values").VArray<{
1098
+ count: number;
1099
+ revenueCents: number;
1100
+ value: string;
1101
+ }[], import("convex/values").VObject<{
1102
+ count: number;
1103
+ revenueCents: number;
1104
+ value: string;
1105
+ }, {
1106
+ value: import("convex/values").VString<string, "required">;
1107
+ count: import("convex/values").VFloat64<number, "required">;
1108
+ revenueCents: import("convex/values").VFloat64<number, "required">;
1109
+ }, "required", "count" | "revenueCents" | "value">, "required">;
1010
1110
  metadata: import("convex/values").VObject<{
1011
1111
  breakdowns: {
1012
- topBrowsers: "eventVolume";
1013
- topCampaigns: "eventVolume";
1014
- topCountries: "eventVolume";
1015
- topDevices: "eventVolume";
1112
+ topBrowsers: "eventVolume" | "pageviews" | "sessions";
1113
+ topCampaigns: "eventVolume" | "pageviews" | "sessions";
1114
+ topCountries: "eventVolume" | "pageviews" | "sessions";
1115
+ topDevices: "eventVolume" | "pageviews" | "sessions";
1016
1116
  topEvents: "eventVolume";
1017
1117
  topGoals: "goalCompletionVolume";
1018
- topPages: "eventVolume";
1019
- topSources: "eventVolume";
1118
+ topMediums: "eventVolume" | "pageviews" | "sessions";
1119
+ topOutbound: "eventVolume";
1120
+ topPages: "eventVolume" | "pageviews" | "sessions";
1121
+ topSources: "eventVolume" | "pageviews" | "sessions";
1020
1122
  };
1021
1123
  coverage: {
1022
1124
  availableFrom: number | null;
@@ -1025,6 +1127,8 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
1025
1127
  retainedBefore: number | null;
1026
1128
  state: "complete" | "partial" | "retained" | "unavailable";
1027
1129
  };
1130
+ dimensionsSince: number | null;
1131
+ engagement: "counted" | "unavailable";
1028
1132
  features: {
1029
1133
  botDetection: "userAgent";
1030
1134
  errorInsights: "unsupported";
@@ -1034,7 +1138,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
1034
1138
  range: {
1035
1139
  boundary: "inclusive";
1036
1140
  from: number;
1037
- timezone: "UTC";
1141
+ timezone: string;
1038
1142
  to: number;
1039
1143
  };
1040
1144
  visitors: {
@@ -1059,24 +1163,30 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
1059
1163
  precision: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
1060
1164
  }, "required", "basis" | "exact" | "legacyIncomplete" | "precision" | "sketchVersion">;
1061
1165
  breakdowns: import("convex/values").VObject<{
1062
- topBrowsers: "eventVolume";
1063
- topCampaigns: "eventVolume";
1064
- topCountries: "eventVolume";
1065
- topDevices: "eventVolume";
1166
+ topBrowsers: "eventVolume" | "pageviews" | "sessions";
1167
+ topCampaigns: "eventVolume" | "pageviews" | "sessions";
1168
+ topCountries: "eventVolume" | "pageviews" | "sessions";
1169
+ topDevices: "eventVolume" | "pageviews" | "sessions";
1066
1170
  topEvents: "eventVolume";
1067
1171
  topGoals: "goalCompletionVolume";
1068
- topPages: "eventVolume";
1069
- topSources: "eventVolume";
1172
+ topMediums: "eventVolume" | "pageviews" | "sessions";
1173
+ topOutbound: "eventVolume";
1174
+ topPages: "eventVolume" | "pageviews" | "sessions";
1175
+ topSources: "eventVolume" | "pageviews" | "sessions";
1070
1176
  }, {
1071
- topSources: import("convex/values").VLiteral<"eventVolume", "required">;
1072
- topCampaigns: import("convex/values").VLiteral<"eventVolume", "required">;
1073
- topPages: import("convex/values").VLiteral<"eventVolume", "required">;
1074
- topCountries: import("convex/values").VLiteral<"eventVolume", "required">;
1075
- topDevices: import("convex/values").VLiteral<"eventVolume", "required">;
1076
- topBrowsers: import("convex/values").VLiteral<"eventVolume", "required">;
1177
+ topSources: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1178
+ topCampaigns: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1179
+ topPages: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1180
+ topCountries: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1181
+ topDevices: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1182
+ topBrowsers: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1077
1183
  topEvents: import("convex/values").VLiteral<"eventVolume", "required">;
1078
1184
  topGoals: import("convex/values").VLiteral<"goalCompletionVolume", "required">;
1079
- }, "required", "topBrowsers" | "topCampaigns" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topPages" | "topSources">;
1185
+ topMediums: import("convex/values").VUnion<"eventVolume" | "pageviews" | "sessions", [import("convex/values").VLiteral<"pageviews", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"eventVolume", "required">], "required", never>;
1186
+ topOutbound: import("convex/values").VLiteral<"eventVolume", "required">;
1187
+ }, "required", "topBrowsers" | "topCampaigns" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topMediums" | "topOutbound" | "topPages" | "topSources">;
1188
+ dimensionsSince: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
1189
+ engagement: import("convex/values").VUnion<"counted" | "unavailable", [import("convex/values").VLiteral<"counted", "required">, import("convex/values").VLiteral<"unavailable", "required">], "required", never>;
1080
1190
  coverage: import("convex/values").VObject<{
1081
1191
  availableFrom: number | null;
1082
1192
  availableThrough: number | null;
@@ -1093,13 +1203,13 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
1093
1203
  range: import("convex/values").VObject<{
1094
1204
  boundary: "inclusive";
1095
1205
  from: number;
1096
- timezone: "UTC";
1206
+ timezone: string;
1097
1207
  to: number;
1098
1208
  }, {
1099
1209
  from: import("convex/values").VFloat64<number, "required">;
1100
1210
  to: import("convex/values").VFloat64<number, "required">;
1101
1211
  boundary: import("convex/values").VLiteral<"inclusive", "required">;
1102
- timezone: import("convex/values").VLiteral<"UTC", "required">;
1212
+ timezone: import("convex/values").VString<string, "required">;
1103
1213
  }, "required", "boundary" | "from" | "timezone" | "to">;
1104
1214
  features: import("convex/values").VObject<{
1105
1215
  botDetection: "userAgent";
@@ -1112,8 +1222,8 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
1112
1222
  outboundLinks: import("convex/values").VLiteral<"eventVolume", "required">;
1113
1223
  botDetection: import("convex/values").VLiteral<"userAgent", "required">;
1114
1224
  }, "required", "botDetection" | "errorInsights" | "outboundLinks" | "sessionReplay">;
1115
- }, "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">;
1116
- }, "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">;
1225
+ }, "required", "breakdowns" | "breakdowns.topBrowsers" | "breakdowns.topCampaigns" | "breakdowns.topCountries" | "breakdowns.topDevices" | "breakdowns.topEvents" | "breakdowns.topGoals" | "breakdowns.topMediums" | "breakdowns.topOutbound" | "breakdowns.topPages" | "breakdowns.topSources" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "dimensionsSince" | "engagement" | "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">;
1226
+ }, "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.topMediums" | "metadata.breakdowns.topOutbound" | "metadata.breakdowns.topPages" | "metadata.breakdowns.topSources" | "metadata.coverage" | "metadata.coverage.availableFrom" | "metadata.coverage.availableThrough" | "metadata.coverage.generation" | "metadata.coverage.retainedBefore" | "metadata.coverage.state" | "metadata.dimensionsSince" | "metadata.engagement" | "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" | "topMediums" | "topOutbound" | "topPages" | "topSources" | "totals" | "totals.clicks" | "totals.continuedSessions" | "totals.conversions" | "totals.customEvents" | "totals.durationMs" | "totals.events" | "totals.newVisitors" | "totals.outboundClicks" | "totals.pageviews" | "totals.revenueCents" | "totals.sessions" | "totals.visitors">;
1117
1227
  declare const hostGoalsReportValidator: import("convex/values").VObject<{
1118
1228
  goals: {
1119
1229
  _creationTime: number;
@@ -1141,7 +1251,7 @@ declare const hostGoalsReportValidator: import("convex/values").VObject<{
1141
1251
  range: {
1142
1252
  boundary: "inclusive";
1143
1253
  from: number;
1144
- timezone: "UTC";
1254
+ timezone: string;
1145
1255
  to: number;
1146
1256
  };
1147
1257
  };
@@ -1200,7 +1310,7 @@ declare const hostGoalsReportValidator: import("convex/values").VObject<{
1200
1310
  range: {
1201
1311
  boundary: "inclusive";
1202
1312
  from: number;
1203
- timezone: "UTC";
1313
+ timezone: string;
1204
1314
  to: number;
1205
1315
  };
1206
1316
  }, {
@@ -1221,13 +1331,13 @@ declare const hostGoalsReportValidator: import("convex/values").VObject<{
1221
1331
  range: import("convex/values").VObject<{
1222
1332
  boundary: "inclusive";
1223
1333
  from: number;
1224
- timezone: "UTC";
1334
+ timezone: string;
1225
1335
  to: number;
1226
1336
  }, {
1227
1337
  from: import("convex/values").VFloat64<number, "required">;
1228
1338
  to: import("convex/values").VFloat64<number, "required">;
1229
1339
  boundary: import("convex/values").VLiteral<"inclusive", "required">;
1230
- timezone: import("convex/values").VLiteral<"UTC", "required">;
1340
+ timezone: import("convex/values").VString<string, "required">;
1231
1341
  }, "required", "boundary" | "from" | "timezone" | "to">;
1232
1342
  }, "required", "basis" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to">;
1233
1343
  }, "required", "goals" | "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" | "truncated">;
@@ -1250,7 +1360,7 @@ declare const hostFunnelsReportValidator: import("convex/values").VArray<{
1250
1360
  range: {
1251
1361
  boundary: "inclusive";
1252
1362
  from: number;
1253
- timezone: "UTC";
1363
+ timezone: string;
1254
1364
  to: number;
1255
1365
  };
1256
1366
  };
@@ -1288,7 +1398,7 @@ declare const hostFunnelsReportValidator: import("convex/values").VArray<{
1288
1398
  range: {
1289
1399
  boundary: "inclusive";
1290
1400
  from: number;
1291
- timezone: "UTC";
1401
+ timezone: string;
1292
1402
  to: number;
1293
1403
  };
1294
1404
  };
@@ -1359,7 +1469,7 @@ declare const hostFunnelsReportValidator: import("convex/values").VArray<{
1359
1469
  range: {
1360
1470
  boundary: "inclusive";
1361
1471
  from: number;
1362
- timezone: "UTC";
1472
+ timezone: string;
1363
1473
  to: number;
1364
1474
  };
1365
1475
  }, {
@@ -1380,13 +1490,13 @@ declare const hostFunnelsReportValidator: import("convex/values").VArray<{
1380
1490
  range: import("convex/values").VObject<{
1381
1491
  boundary: "inclusive";
1382
1492
  from: number;
1383
- timezone: "UTC";
1493
+ timezone: string;
1384
1494
  to: number;
1385
1495
  }, {
1386
1496
  from: import("convex/values").VFloat64<number, "required">;
1387
1497
  to: import("convex/values").VFloat64<number, "required">;
1388
1498
  boundary: import("convex/values").VLiteral<"inclusive", "required">;
1389
- timezone: import("convex/values").VLiteral<"UTC", "required">;
1499
+ timezone: import("convex/values").VString<string, "required">;
1390
1500
  }, "required", "boundary" | "from" | "timezone" | "to">;
1391
1501
  }, "required", "basis" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to">;
1392
1502
  }, "required", "_creationTime" | "_id" | "active" | "conversionWindowMs" | "createdAt" | "key" | "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" | "name" | "siteId" | "steps" | "stepsReport" | "truncated" | "updatedAt">, "required">;
@@ -1420,7 +1530,7 @@ declare const hostAffiliatesReportValidator: import("convex/values").VObject<{
1420
1530
  range: {
1421
1531
  boundary: "inclusive";
1422
1532
  from: number;
1423
- timezone: "UTC";
1533
+ timezone: string;
1424
1534
  to: number;
1425
1535
  };
1426
1536
  uniqueVisitors: {
@@ -1492,7 +1602,7 @@ declare const hostAffiliatesReportValidator: import("convex/values").VObject<{
1492
1602
  range: {
1493
1603
  boundary: "inclusive";
1494
1604
  from: number;
1495
- timezone: "UTC";
1605
+ timezone: string;
1496
1606
  to: number;
1497
1607
  };
1498
1608
  uniqueVisitors: {
@@ -1517,13 +1627,13 @@ declare const hostAffiliatesReportValidator: import("convex/values").VObject<{
1517
1627
  range: import("convex/values").VObject<{
1518
1628
  boundary: "inclusive";
1519
1629
  from: number;
1520
- timezone: "UTC";
1630
+ timezone: string;
1521
1631
  to: number;
1522
1632
  }, {
1523
1633
  from: import("convex/values").VFloat64<number, "required">;
1524
1634
  to: import("convex/values").VFloat64<number, "required">;
1525
1635
  boundary: import("convex/values").VLiteral<"inclusive", "required">;
1526
- timezone: import("convex/values").VLiteral<"UTC", "required">;
1636
+ timezone: import("convex/values").VString<string, "required">;
1527
1637
  }, "required", "boundary" | "from" | "timezone" | "to">;
1528
1638
  uniqueVisitors: import("convex/values").VObject<{
1529
1639
  basis: "estimatedUnique" | "exactLegacy";
@@ -1547,7 +1657,7 @@ declare const hostVitalsReportValidator: import("convex/values").VObject<{
1547
1657
  range: {
1548
1658
  boundary: "inclusive";
1549
1659
  from: number;
1550
- timezone: "UTC";
1660
+ timezone: string;
1551
1661
  to: number;
1552
1662
  };
1553
1663
  };
@@ -1732,7 +1842,7 @@ declare const hostVitalsReportValidator: import("convex/values").VObject<{
1732
1842
  range: {
1733
1843
  boundary: "inclusive";
1734
1844
  from: number;
1735
- timezone: "UTC";
1845
+ timezone: string;
1736
1846
  to: number;
1737
1847
  };
1738
1848
  }, {
@@ -1753,13 +1863,13 @@ declare const hostVitalsReportValidator: import("convex/values").VObject<{
1753
1863
  range: import("convex/values").VObject<{
1754
1864
  boundary: "inclusive";
1755
1865
  from: number;
1756
- timezone: "UTC";
1866
+ timezone: string;
1757
1867
  to: number;
1758
1868
  }, {
1759
1869
  from: import("convex/values").VFloat64<number, "required">;
1760
1870
  to: import("convex/values").VFloat64<number, "required">;
1761
1871
  boundary: import("convex/values").VLiteral<"inclusive", "required">;
1762
- timezone: import("convex/values").VLiteral<"UTC", "required">;
1872
+ timezone: import("convex/values").VString<string, "required">;
1763
1873
  }, "required", "boundary" | "from" | "timezone" | "to">;
1764
1874
  }, "required", "basis" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to">;
1765
1875
  }, "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">;
@@ -1782,7 +1892,7 @@ declare const hostSiteMapValidator: import("convex/values").VObject<{
1782
1892
  range: {
1783
1893
  boundary: "inclusive";
1784
1894
  from: number;
1785
- timezone: "UTC";
1895
+ timezone: string;
1786
1896
  to: number;
1787
1897
  };
1788
1898
  visitors: {
@@ -1922,7 +2032,7 @@ declare const hostSiteMapValidator: import("convex/values").VObject<{
1922
2032
  range: {
1923
2033
  boundary: "inclusive";
1924
2034
  from: number;
1925
- timezone: "UTC";
2035
+ timezone: string;
1926
2036
  to: number;
1927
2037
  };
1928
2038
  visitors: {
@@ -1947,13 +2057,13 @@ declare const hostSiteMapValidator: import("convex/values").VObject<{
1947
2057
  range: import("convex/values").VObject<{
1948
2058
  boundary: "inclusive";
1949
2059
  from: number;
1950
- timezone: "UTC";
2060
+ timezone: string;
1951
2061
  to: number;
1952
2062
  }, {
1953
2063
  from: import("convex/values").VFloat64<number, "required">;
1954
2064
  to: import("convex/values").VFloat64<number, "required">;
1955
2065
  boundary: import("convex/values").VLiteral<"inclusive", "required">;
1956
- timezone: import("convex/values").VLiteral<"UTC", "required">;
2066
+ timezone: import("convex/values").VString<string, "required">;
1957
2067
  }, "required", "boundary" | "from" | "timezone" | "to">;
1958
2068
  visitors: import("convex/values").VObject<{
1959
2069
  basis: "estimatedUnique";
@@ -2096,14 +2206,16 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2096
2206
  interval: "hour" | "day";
2097
2207
  metadata: {
2098
2208
  breakdowns: {
2099
- topBrowsers: "eventVolume";
2100
- topCampaigns: "eventVolume";
2101
- topCountries: "eventVolume";
2102
- topDevices: "eventVolume";
2209
+ topBrowsers: "pageviews" | "sessions" | "eventVolume";
2210
+ topCampaigns: "pageviews" | "sessions" | "eventVolume";
2211
+ topCountries: "pageviews" | "sessions" | "eventVolume";
2212
+ topDevices: "pageviews" | "sessions" | "eventVolume";
2103
2213
  topEvents: "eventVolume";
2104
2214
  topGoals: "goalCompletionVolume";
2105
- topPages: "eventVolume";
2106
- topSources: "eventVolume";
2215
+ topMediums: "pageviews" | "sessions" | "eventVolume";
2216
+ topOutbound: "eventVolume";
2217
+ topPages: "pageviews" | "sessions" | "eventVolume";
2218
+ topSources: "pageviews" | "sessions" | "eventVolume";
2107
2219
  };
2108
2220
  coverage: {
2109
2221
  availableFrom: number | null;
@@ -2112,6 +2224,8 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2112
2224
  retainedBefore: number | null;
2113
2225
  state: "complete" | "partial" | "retained" | "unavailable";
2114
2226
  };
2227
+ dimensionsSince: number | null;
2228
+ engagement: "counted" | "unavailable";
2115
2229
  features: {
2116
2230
  botDetection: "userAgent";
2117
2231
  errorInsights: "unsupported";
@@ -2121,7 +2235,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2121
2235
  range: {
2122
2236
  boundary: "inclusive";
2123
2237
  from: number;
2124
- timezone: "UTC";
2238
+ timezone: string;
2125
2239
  to: number;
2126
2240
  };
2127
2241
  visitors: {
@@ -2134,9 +2248,12 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2134
2248
  };
2135
2249
  timeSeries: Array<{
2136
2250
  clicks: number;
2251
+ continuedSessions: number;
2137
2252
  conversions: number;
2138
2253
  customEvents: number;
2254
+ durationMs: number;
2139
2255
  events: number;
2256
+ newVisitors: number;
2140
2257
  outboundClicks: number;
2141
2258
  pageviews: number;
2142
2259
  revenueCents: number;
@@ -2175,6 +2292,16 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2175
2292
  revenueCents: number;
2176
2293
  value: string;
2177
2294
  }>;
2295
+ topMediums: Array<{
2296
+ count: number;
2297
+ revenueCents: number;
2298
+ value: string;
2299
+ }>;
2300
+ topOutbound: Array<{
2301
+ count: number;
2302
+ revenueCents: number;
2303
+ value: string;
2304
+ }>;
2178
2305
  topPages: Array<{
2179
2306
  count: number;
2180
2307
  revenueCents: number;
@@ -2187,9 +2314,12 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2187
2314
  }>;
2188
2315
  totals: {
2189
2316
  clicks: number;
2317
+ continuedSessions: number;
2190
2318
  conversions: number;
2191
2319
  customEvents: number;
2320
+ durationMs: number;
2192
2321
  events: number;
2322
+ newVisitors: number;
2193
2323
  outboundClicks: number;
2194
2324
  pageviews: number;
2195
2325
  revenueCents: number;
@@ -2204,12 +2334,20 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2204
2334
  }, Promise<{
2205
2335
  _creationTime: number;
2206
2336
  _id: string;
2337
+ affiliateSlug?: string;
2207
2338
  browser: string;
2208
2339
  city?: string;
2340
+ conversionCount?: number;
2209
2341
  country?: string;
2210
2342
  device: string;
2343
+ entryPath?: string;
2211
2344
  eventCount: number;
2212
2345
  expiresAt: number;
2346
+ funnel?: {
2347
+ funnelId: string;
2348
+ step: number;
2349
+ steps: number;
2350
+ };
2213
2351
  lastSeenAt: number;
2214
2352
  latitude?: number;
2215
2353
  longitude?: number;
@@ -2218,10 +2356,12 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2218
2356
  pageviewCount: number;
2219
2357
  path: string;
2220
2358
  previousPath?: string;
2359
+ returning?: boolean;
2221
2360
  sessionId: string;
2222
2361
  siteId: string;
2223
2362
  source: string;
2224
2363
  startedAt: number;
2364
+ utmCampaign?: string;
2225
2365
  visitorId: string;
2226
2366
  }[]>>;
2227
2367
  listSessions: import("convex/server").RegisteredQuery<"public", {
@@ -2259,6 +2399,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2259
2399
  lastSeenAt: number;
2260
2400
  latitude?: number;
2261
2401
  longitude?: number;
2402
+ newVisitor?: boolean;
2262
2403
  os: string;
2263
2404
  pageviewCount: number;
2264
2405
  referrer?: string;
@@ -2423,7 +2564,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2423
2564
  range: {
2424
2565
  boundary: "inclusive";
2425
2566
  from: number;
2426
- timezone: "UTC";
2567
+ timezone: string;
2427
2568
  to: number;
2428
2569
  };
2429
2570
  };
@@ -2452,7 +2593,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2452
2593
  range: {
2453
2594
  boundary: "inclusive";
2454
2595
  from: number;
2455
- timezone: "UTC";
2596
+ timezone: string;
2456
2597
  to: number;
2457
2598
  };
2458
2599
  };
@@ -2506,7 +2647,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2506
2647
  range: {
2507
2648
  boundary: "inclusive";
2508
2649
  from: number;
2509
- timezone: "UTC";
2650
+ timezone: string;
2510
2651
  to: number;
2511
2652
  };
2512
2653
  uniqueVisitors: {
@@ -2533,7 +2674,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2533
2674
  range: {
2534
2675
  boundary: "inclusive";
2535
2676
  from: number;
2536
- timezone: "UTC";
2677
+ timezone: string;
2537
2678
  to: number;
2538
2679
  };
2539
2680
  };
@@ -2594,7 +2735,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2594
2735
  range: {
2595
2736
  boundary: "inclusive";
2596
2737
  from: number;
2597
- timezone: "UTC";
2738
+ timezone: string;
2598
2739
  to: number;
2599
2740
  };
2600
2741
  visitors: {
@@ -2646,7 +2787,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2646
2787
  retainedBefore: number | null;
2647
2788
  state: "complete" | "partial" | "retained" | "unavailable";
2648
2789
  };
2649
- dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
2790
+ dataset: "overviewHour" | "overviewDay" | "overviewLocalDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
2650
2791
  }>;
2651
2792
  from: number;
2652
2793
  siteId: string;
@@ -2795,7 +2936,25 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2795
2936
  hasMore: boolean;
2796
2937
  }>>;
2797
2938
  };
2798
- /** Exposes only the reactive read surface used by a federated Rastro dashboard. */
2939
+ type OverviewReport = Awaited<ReturnType<Rastro["overview"]>>;
2940
+ type LiveVisitorRows = Awaited<ReturnType<Rastro["liveVisitors"]>>;
2941
+ /** The overview as a public link may show it: traffic, never money or intent. */
2942
+ export declare function redactPublicOverview(report: OverviewReport): OverviewReport;
2943
+ /**
2944
+ * The live rows as a public link may show them: where people are, not who
2945
+ * they are or what they are about to do. The visitor id can be the host's
2946
+ * signed-in user id, so it is replaced by the session id, which the tracker
2947
+ * draws at random per tab, and the intent fields the dashboard scores heat
2948
+ * from — entry path, return, campaign, affiliate, conversions, funnel step —
2949
+ * are dropped.
2950
+ */
2951
+ export declare function redactPublicLiveVisitors(rows: LiveVisitorRows): LiveVisitorRows;
2952
+ /**
2953
+ * Exposes the reactive read surface a federated Rastro dashboard subscribes to,
2954
+ * plus the configuration functions behind the `configure` capability, which
2955
+ * run only when the token and the host's grant both carry the configure
2956
+ * permission.
2957
+ */
2799
2958
  export declare function exposeFederatedAnalyticsApi(component: ComponentApi, options: FederatedAnalyticsAuthorizerOptions): {
2800
2959
  manifest: import("convex/server").RegisteredQuery<"public", {}, {
2801
2960
  protocol: "amage-rastro-analytics";
@@ -2815,10 +2974,24 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2815
2974
  funnelsReport: "funnelsReport";
2816
2975
  affiliatesReport: "affiliatesReport";
2817
2976
  dataCoverage: "dataCoverage";
2977
+ siteSettings: "siteSettings";
2978
+ updateSite: "updateSite";
2979
+ listGoals: "listGoals";
2980
+ upsertGoal: "upsertGoal";
2981
+ removeGoal: "removeGoal";
2982
+ listFunnels: "listFunnels";
2983
+ upsertFunnel: "upsertFunnel";
2984
+ removeFunnel: "removeFunnel";
2985
+ listAffiliates: "listAffiliates";
2986
+ upsertAffiliate: "upsertAffiliate";
2987
+ removeAffiliate: "removeAffiliate";
2988
+ retentionStatus: "retentionStatus";
2989
+ setRetentionPolicy: "setRetentionPolicy";
2990
+ disableRetentionPolicy: "disableRetentionPolicy";
2818
2991
  vitalsReport: "vitalsReport";
2819
2992
  siteMap: "siteMap";
2820
2993
  };
2821
- capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[];
2994
+ capabilities: ("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[];
2822
2995
  limits: {
2823
2996
  maxSitesPerRequest: 10;
2824
2997
  maxSitesPerConnection: 10;
@@ -2840,14 +3013,16 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2840
3013
  interval: "hour" | "day";
2841
3014
  metadata: {
2842
3015
  breakdowns: {
2843
- topBrowsers: "eventVolume";
2844
- topCampaigns: "eventVolume";
2845
- topCountries: "eventVolume";
2846
- topDevices: "eventVolume";
3016
+ topBrowsers: "pageviews" | "sessions" | "eventVolume";
3017
+ topCampaigns: "pageviews" | "sessions" | "eventVolume";
3018
+ topCountries: "pageviews" | "sessions" | "eventVolume";
3019
+ topDevices: "pageviews" | "sessions" | "eventVolume";
2847
3020
  topEvents: "eventVolume";
2848
3021
  topGoals: "goalCompletionVolume";
2849
- topPages: "eventVolume";
2850
- topSources: "eventVolume";
3022
+ topMediums: "pageviews" | "sessions" | "eventVolume";
3023
+ topOutbound: "eventVolume";
3024
+ topPages: "pageviews" | "sessions" | "eventVolume";
3025
+ topSources: "pageviews" | "sessions" | "eventVolume";
2851
3026
  };
2852
3027
  coverage: {
2853
3028
  availableFrom: number | null;
@@ -2856,6 +3031,8 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2856
3031
  retainedBefore: number | null;
2857
3032
  state: "complete" | "partial" | "retained" | "unavailable";
2858
3033
  };
3034
+ dimensionsSince: number | null;
3035
+ engagement: "counted" | "unavailable";
2859
3036
  features: {
2860
3037
  botDetection: "userAgent";
2861
3038
  errorInsights: "unsupported";
@@ -2865,7 +3042,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2865
3042
  range: {
2866
3043
  boundary: "inclusive";
2867
3044
  from: number;
2868
- timezone: "UTC";
3045
+ timezone: string;
2869
3046
  to: number;
2870
3047
  };
2871
3048
  visitors: {
@@ -2878,9 +3055,12 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2878
3055
  };
2879
3056
  timeSeries: Array<{
2880
3057
  clicks: number;
3058
+ continuedSessions: number;
2881
3059
  conversions: number;
2882
3060
  customEvents: number;
3061
+ durationMs: number;
2883
3062
  events: number;
3063
+ newVisitors: number;
2884
3064
  outboundClicks: number;
2885
3065
  pageviews: number;
2886
3066
  revenueCents: number;
@@ -2919,6 +3099,16 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2919
3099
  revenueCents: number;
2920
3100
  value: string;
2921
3101
  }>;
3102
+ topMediums: Array<{
3103
+ count: number;
3104
+ revenueCents: number;
3105
+ value: string;
3106
+ }>;
3107
+ topOutbound: Array<{
3108
+ count: number;
3109
+ revenueCents: number;
3110
+ value: string;
3111
+ }>;
2922
3112
  topPages: Array<{
2923
3113
  count: number;
2924
3114
  revenueCents: number;
@@ -2931,9 +3121,12 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2931
3121
  }>;
2932
3122
  totals: {
2933
3123
  clicks: number;
3124
+ continuedSessions: number;
2934
3125
  conversions: number;
2935
3126
  customEvents: number;
3127
+ durationMs: number;
2936
3128
  events: number;
3129
+ newVisitors: number;
2937
3130
  outboundClicks: number;
2938
3131
  pageviews: number;
2939
3132
  revenueCents: number;
@@ -2948,12 +3141,20 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2948
3141
  }, Promise<{
2949
3142
  _creationTime: number;
2950
3143
  _id: string;
3144
+ affiliateSlug?: string;
2951
3145
  browser: string;
2952
3146
  city?: string;
3147
+ conversionCount?: number;
2953
3148
  country?: string;
2954
3149
  device: string;
3150
+ entryPath?: string;
2955
3151
  eventCount: number;
2956
3152
  expiresAt: number;
3153
+ funnel?: {
3154
+ funnelId: string;
3155
+ step: number;
3156
+ steps: number;
3157
+ };
2957
3158
  lastSeenAt: number;
2958
3159
  latitude?: number;
2959
3160
  longitude?: number;
@@ -2962,10 +3163,12 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2962
3163
  pageviewCount: number;
2963
3164
  path: string;
2964
3165
  previousPath?: string;
3166
+ returning?: boolean;
2965
3167
  sessionId: string;
2966
3168
  siteId: string;
2967
3169
  source: string;
2968
3170
  startedAt: number;
3171
+ utmCampaign?: string;
2969
3172
  visitorId: string;
2970
3173
  }[]>>;
2971
3174
  listSessions: import("convex/server").RegisteredQuery<"public", {
@@ -3003,6 +3206,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3003
3206
  lastSeenAt: number;
3004
3207
  latitude?: number;
3005
3208
  longitude?: number;
3209
+ newVisitor?: boolean;
3006
3210
  os: string;
3007
3211
  pageviewCount: number;
3008
3212
  referrer?: string;
@@ -3167,7 +3371,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3167
3371
  range: {
3168
3372
  boundary: "inclusive";
3169
3373
  from: number;
3170
- timezone: "UTC";
3374
+ timezone: string;
3171
3375
  to: number;
3172
3376
  };
3173
3377
  };
@@ -3196,7 +3400,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3196
3400
  range: {
3197
3401
  boundary: "inclusive";
3198
3402
  from: number;
3199
- timezone: "UTC";
3403
+ timezone: string;
3200
3404
  to: number;
3201
3405
  };
3202
3406
  };
@@ -3250,7 +3454,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3250
3454
  range: {
3251
3455
  boundary: "inclusive";
3252
3456
  from: number;
3253
- timezone: "UTC";
3457
+ timezone: string;
3254
3458
  to: number;
3255
3459
  };
3256
3460
  uniqueVisitors: {
@@ -3277,7 +3481,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3277
3481
  range: {
3278
3482
  boundary: "inclusive";
3279
3483
  from: number;
3280
- timezone: "UTC";
3484
+ timezone: string;
3281
3485
  to: number;
3282
3486
  };
3283
3487
  };
@@ -3338,7 +3542,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3338
3542
  range: {
3339
3543
  boundary: "inclusive";
3340
3544
  from: number;
3341
- timezone: "UTC";
3545
+ timezone: string;
3342
3546
  to: number;
3343
3547
  };
3344
3548
  visitors: {
@@ -3390,12 +3594,151 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
3390
3594
  retainedBefore: number | null;
3391
3595
  state: "complete" | "partial" | "retained" | "unavailable";
3392
3596
  };
3393
- dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
3597
+ dataset: "overviewHour" | "overviewDay" | "overviewLocalDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
3394
3598
  }>;
3395
3599
  from: number;
3396
3600
  siteId: string;
3397
3601
  to: number;
3398
3602
  }>>;
3603
+ siteSettings: import("convex/server").RegisteredQuery<"public", {
3604
+ siteId: string;
3605
+ }, Promise<{
3606
+ siteId: string;
3607
+ name: string;
3608
+ domains: string[];
3609
+ timezone: string | null;
3610
+ currency: string;
3611
+ cookieless: boolean;
3612
+ }>>;
3613
+ updateSite: import("convex/server").RegisteredMutation<"public", {
3614
+ domains?: string[] | undefined;
3615
+ name?: string | undefined;
3616
+ siteId: string;
3617
+ timezone?: string | null | undefined;
3618
+ }, Promise<null>>;
3619
+ listGoals: import("convex/server").RegisteredQuery<"public", {
3620
+ siteId: string;
3621
+ }, Promise<{
3622
+ _creationTime: number;
3623
+ _id: string;
3624
+ active: boolean;
3625
+ createdAt: number;
3626
+ key: string;
3627
+ matchType: "pageview" | "custom";
3628
+ matchValue: string;
3629
+ name: string;
3630
+ siteId: string;
3631
+ updatedAt: number;
3632
+ valueCents?: number;
3633
+ }[]>>;
3634
+ upsertGoal: import("convex/server").RegisteredMutation<"public", {
3635
+ active?: boolean | undefined;
3636
+ goalId?: string | undefined;
3637
+ key: string;
3638
+ matchType: "custom" | "pageview";
3639
+ matchValue: string;
3640
+ name: string;
3641
+ siteId: string;
3642
+ valueCents?: number | undefined;
3643
+ }, Promise<string>>;
3644
+ removeGoal: import("convex/server").RegisteredMutation<"public", {
3645
+ goalId: string;
3646
+ siteId: string;
3647
+ }, Promise<null>>;
3648
+ listFunnels: import("convex/server").RegisteredQuery<"public", {
3649
+ siteId: string;
3650
+ }, Promise<{
3651
+ _creationTime: number;
3652
+ _id: string;
3653
+ active: boolean;
3654
+ conversionWindowMs: number;
3655
+ createdAt: number;
3656
+ key: string;
3657
+ name: string;
3658
+ siteId: string;
3659
+ steps: Array<{
3660
+ name: string;
3661
+ type: "pageview" | "custom";
3662
+ value: string;
3663
+ }>;
3664
+ updatedAt: number;
3665
+ }[]>>;
3666
+ upsertFunnel: import("convex/server").RegisteredMutation<"public", {
3667
+ active?: boolean | undefined;
3668
+ conversionWindowMs: number;
3669
+ funnelId?: string | undefined;
3670
+ key: string;
3671
+ name: string;
3672
+ siteId: string;
3673
+ steps: {
3674
+ name: string;
3675
+ type: "custom" | "pageview";
3676
+ value: string;
3677
+ }[];
3678
+ }, Promise<string>>;
3679
+ removeFunnel: import("convex/server").RegisteredMutation<"public", {
3680
+ funnelId: string;
3681
+ siteId: string;
3682
+ }, Promise<null>>;
3683
+ listAffiliates: import("convex/server").RegisteredQuery<"public", {
3684
+ siteId: string;
3685
+ }, Promise<{
3686
+ _creationTime: number;
3687
+ _id: string;
3688
+ active: boolean;
3689
+ attributionWindowDays: number;
3690
+ commissionBps: number;
3691
+ createdAt: number;
3692
+ name: string;
3693
+ siteId: string;
3694
+ slug: string;
3695
+ updatedAt: number;
3696
+ }[]>>;
3697
+ upsertAffiliate: import("convex/server").RegisteredMutation<"public", {
3698
+ active?: boolean | undefined;
3699
+ affiliateId?: string | undefined;
3700
+ attributionWindowDays: number;
3701
+ commissionBps: number;
3702
+ name: string;
3703
+ siteId: string;
3704
+ slug: string;
3705
+ }, Promise<string>>;
3706
+ removeAffiliate: import("convex/server").RegisteredMutation<"public", {
3707
+ affiliateId: string;
3708
+ siteId: string;
3709
+ }, Promise<null>>;
3710
+ retentionStatus: import("convex/server").RegisteredQuery<"public", {
3711
+ siteId: string;
3712
+ }, Promise<{
3713
+ backlog: number;
3714
+ jobs: Array<{
3715
+ before: number;
3716
+ deleted: number;
3717
+ kind: "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "vitalRollups" | "siteMapRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
3718
+ scheduledAt: number | null;
3719
+ status: "pending" | "running" | "complete";
3720
+ updatedAt: number;
3721
+ }>;
3722
+ policy: {
3723
+ aggregatesDays: number;
3724
+ conversionsDays: number;
3725
+ eventsDays: number;
3726
+ reportsDays: number;
3727
+ sessionsDays: number;
3728
+ updatedAt: number;
3729
+ } | null;
3730
+ }>>;
3731
+ setRetentionPolicy: import("convex/server").RegisteredMutation<"public", {
3732
+ aggregatesDays: number;
3733
+ conversionsDays: number;
3734
+ eventsDays: number;
3735
+ reportsDays: number;
3736
+ sessionsDays: number;
3737
+ siteId: string;
3738
+ }, Promise<null>>;
3739
+ disableRetentionPolicy: import("convex/server").RegisteredMutation<"public", {
3740
+ siteId: string;
3741
+ }, Promise<null>>;
3399
3742
  };
3400
3743
  export declare function componentHttpPaths(prefix?: string): {
3401
3744
  readonly events: `${string}/events`;