@iann29/rastro 0.1.0-alpha.7 → 0.1.0-alpha.9

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 (73) hide show
  1. package/README.md +60 -32
  2. package/agent/integration.md +14 -6
  3. package/agent/manifest.json +9 -7
  4. package/agent/manifest.schema.json +8 -5
  5. package/dist/client/federation.d.ts +13 -8
  6. package/dist/client/federation.d.ts.map +1 -1
  7. package/dist/client/federation.js +4 -1
  8. package/dist/client/federation.js.map +1 -1
  9. package/dist/client/index.d.ts +419 -17
  10. package/dist/client/index.d.ts.map +1 -1
  11. package/dist/client/index.js +55 -2
  12. package/dist/client/index.js.map +1 -1
  13. package/dist/component/_generated/component.d.ts +71 -7
  14. package/dist/component/_generated/component.d.ts.map +1 -1
  15. package/dist/component/constants.d.ts +6 -1
  16. package/dist/component/constants.d.ts.map +1 -1
  17. package/dist/component/constants.js +13 -1
  18. package/dist/component/constants.js.map +1 -1
  19. package/dist/component/coverage.d.ts +1 -0
  20. package/dist/component/coverage.d.ts.map +1 -1
  21. package/dist/component/coverage.js +13 -2
  22. package/dist/component/coverage.js.map +1 -1
  23. package/dist/component/eventStore.d.ts +1 -1
  24. package/dist/component/http.d.ts.map +1 -1
  25. package/dist/component/http.js +2 -0
  26. package/dist/component/http.js.map +1 -1
  27. package/dist/component/ingest.d.ts +1 -1
  28. package/dist/component/ingest.d.ts.map +1 -1
  29. package/dist/component/ingest.js +173 -3
  30. package/dist/component/ingest.js.map +1 -1
  31. package/dist/component/reports.d.ts +77 -3
  32. package/dist/component/reports.d.ts.map +1 -1
  33. package/dist/component/reports.js +275 -3
  34. package/dist/component/reports.js.map +1 -1
  35. package/dist/component/retention.d.ts +4 -4
  36. package/dist/component/retention.d.ts.map +1 -1
  37. package/dist/component/retention.js +12 -2
  38. package/dist/component/retention.js.map +1 -1
  39. package/dist/component/sanitize.d.ts +9 -0
  40. package/dist/component/sanitize.d.ts.map +1 -1
  41. package/dist/component/sanitize.js +25 -0
  42. package/dist/component/sanitize.js.map +1 -1
  43. package/dist/component/schema.d.ts +69 -7
  44. package/dist/component/schema.js +25 -0
  45. package/dist/component/schema.js.map +1 -1
  46. package/dist/component/validators.d.ts +7 -7
  47. package/dist/component/validators.d.ts.map +1 -1
  48. package/dist/component/validators.js +1 -1
  49. package/dist/component/validators.js.map +1 -1
  50. package/dist/tracker/generated.d.ts +4 -4
  51. package/dist/tracker/generated.d.ts.map +1 -1
  52. package/dist/tracker/generated.js +4 -4
  53. package/dist/tracker/generated.js.map +1 -1
  54. package/dist/tracker/tracker.d.ts +1 -1
  55. package/dist/tracker/tracker.d.ts.map +1 -1
  56. package/dist/tracker/tracker.js +24 -2
  57. package/dist/tracker/tracker.js.map +1 -1
  58. package/dist/tracker.min.js +1 -1
  59. package/docs/federation-setup.md +2 -0
  60. package/docs/federation.md +4 -0
  61. package/docs/upgrading.md +91 -10
  62. package/llms.txt +3 -1
  63. package/package.json +1 -1
  64. package/src/component/_generated/component.ts +58 -1
  65. package/src/component/constants.ts +13 -1
  66. package/src/component/coverage.ts +12 -1
  67. package/src/component/http.ts +2 -0
  68. package/src/component/ingest.ts +278 -1
  69. package/src/component/reports.ts +364 -2
  70. package/src/component/retention.ts +16 -1
  71. package/src/component/sanitize.ts +31 -0
  72. package/src/component/schema.ts +26 -0
  73. package/src/component/validators.ts +1 -0
@@ -6,6 +6,7 @@ import { type FederatedAnalyticsAuthorizerOptions, type FederatedAnalyticsConnec
6
6
  export { eventPropertiesValidator, eventTypeValidator, funnelStepValidator, goalMatchTypeValidator, ingestContextValidator, ingestResultValidator, trackerEventValidator, vitalMetricValidator, };
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
+ export { normalizeRoute } from "../component/sanitize.js";
9
10
  export type { VitalMetric } from "../component/vitals.js";
10
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";
11
12
  export type { FederatedAnalyticsCapability, FederatedAnalyticsAuthorizerOptions, FederatedAnalyticsConnection, FederatedAnalyticsConnectionStatus, FederatedAnalyticsErrorCode, FederatedAnalyticsIdentity, FederatedAnalyticsManifest, FederatedSiteSummary, ResolveFederatedAnalyticsConnection, } from "./federation.js";
@@ -42,6 +43,8 @@ export type AffiliatesReportInput = FunctionArgs<ComponentApi["reports"]["affili
42
43
  export type AffiliatesReport = Infer<typeof hostAffiliatesReportValidator>;
43
44
  export type VitalsReportInput = FunctionArgs<ComponentApi["reports"]["vitalsReport"]>;
44
45
  export type VitalsReport = Infer<typeof hostVitalsReportValidator>;
46
+ export type SiteMapInput = FunctionArgs<ComponentApi["reports"]["siteMap"]>;
47
+ export type SiteMap = Infer<typeof hostSiteMapValidator>;
45
48
  export type UpsertGoalInput = FunctionArgs<ComponentApi["goals"]["upsert"]>;
46
49
  export type UpsertGoalOutput = FunctionReturnType<ComponentApi["goals"]["upsert"]>;
47
50
  export type Goal = FunctionReturnType<ComponentApi["goals"]["list"]>[number];
@@ -72,7 +75,7 @@ export type DataCoverage = {
72
75
  from: number;
73
76
  to: number;
74
77
  datasets: Array<{
75
- dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals";
78
+ dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
76
79
  coverage: CoverageStatus;
77
80
  }>;
78
81
  };
@@ -105,7 +108,7 @@ export type RetentionStatus = {
105
108
  }>;
106
109
  backlog: number;
107
110
  };
108
- export type RetentionKind = "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "vitalRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
111
+ export type RetentionKind = "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "vitalRollups" | "siteMapRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
109
112
  export type RunRetentionPolicyInput = {
110
113
  siteId: string;
111
114
  kind: RetentionKind;
@@ -275,9 +278,11 @@ export declare class Rastro {
275
278
  lastSeenAt: number;
276
279
  latitude?: number;
277
280
  longitude?: number;
281
+ movedAt?: number;
278
282
  os: string;
279
283
  pageviewCount: number;
280
284
  path: string;
285
+ previousPath?: string;
281
286
  sessionId: string;
282
287
  siteId: string;
283
288
  source: string;
@@ -351,7 +356,7 @@ export declare class Rastro {
351
356
  siteId: string;
352
357
  target?: string;
353
358
  timestamp: number;
354
- type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
359
+ type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "leave" | "outbound" | "vital";
355
360
  visitorId: string;
356
361
  }>;
357
362
  pageStatus?: "SplitRecommended" | "SplitRequired" | null;
@@ -406,7 +411,7 @@ export declare class Rastro {
406
411
  siteId: string;
407
412
  target?: string;
408
413
  timestamp: number;
409
- type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
414
+ type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "leave" | "outbound" | "vital";
410
415
  visitorId: string;
411
416
  }[]>;
412
417
  goalsReport(ctx: QueryCtx | MutationCtx | ActionCtx, args: GoalsReportInput): Promise<{
@@ -572,6 +577,64 @@ export declare class Rastro {
572
577
  }>;
573
578
  truncated: boolean;
574
579
  }>;
580
+ siteMap(ctx: QueryCtx | MutationCtx | ActionCtx, args: SiteMapInput): Promise<{
581
+ from: number;
582
+ metadata: {
583
+ basis: "dailyRollup" | "boundedLegacy";
584
+ coverage: {
585
+ availableFrom: number | null;
586
+ availableThrough: number | null;
587
+ generation: number | null;
588
+ retainedBefore: number | null;
589
+ state: "complete" | "partial" | "retained" | "unavailable";
590
+ };
591
+ limits: {
592
+ routesPerDay: number;
593
+ rows: number;
594
+ transitionSlots: number;
595
+ };
596
+ range: {
597
+ boundary: "inclusive";
598
+ from: number;
599
+ timezone: "UTC";
600
+ to: number;
601
+ };
602
+ visitors: {
603
+ basis: "estimatedUnique";
604
+ exact: boolean;
605
+ };
606
+ };
607
+ routes: Array<{
608
+ bounces: number;
609
+ daily: Array<{
610
+ bucketStart: number;
611
+ pageviews: number;
612
+ }>;
613
+ dwellMs: number;
614
+ dwellSamples: number;
615
+ entries: number;
616
+ exits: number;
617
+ pageviews: number;
618
+ route: string;
619
+ transitionsIn: number;
620
+ transitionsOut: number;
621
+ visitors: number;
622
+ }>;
623
+ to: number;
624
+ transitions: Array<{
625
+ count: number;
626
+ from: string;
627
+ to: string;
628
+ }>;
629
+ truncated: {
630
+ routes: boolean;
631
+ transitions: boolean;
632
+ };
633
+ window: {
634
+ from: number;
635
+ to: number;
636
+ } | null;
637
+ }>;
575
638
  upsertGoal(ctx: MutationCtx, args: UpsertGoalInput): Promise<string>;
576
639
  listGoals(ctx: QueryCtx | MutationCtx | ActionCtx, siteId: string): Promise<{
577
640
  _creationTime: number;
@@ -633,7 +696,7 @@ export declare class Rastro {
633
696
  retainedBefore: number | null;
634
697
  state: "complete" | "partial" | "retained" | "unavailable";
635
698
  };
636
- dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals";
699
+ dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
637
700
  }>;
638
701
  from: number;
639
702
  siteId: string;
@@ -646,7 +709,7 @@ export declare class Rastro {
646
709
  jobs: Array<{
647
710
  before: number;
648
711
  deleted: number;
649
- kind: "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "vitalRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
712
+ kind: "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "vitalRollups" | "siteMapRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
650
713
  scheduledAt: number | null;
651
714
  status: "pending" | "running" | "complete";
652
715
  updatedAt: number;
@@ -666,7 +729,7 @@ export declare class Rastro {
666
729
  hasMore: boolean;
667
730
  }>;
668
731
  }
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";
732
+ 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" | "report.siteMap" | "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";
670
733
  export type AnalyticsAuthorizationRequest = {
671
734
  operation: AnalyticsOperation;
672
735
  siteIds: string[];
@@ -1700,6 +1763,216 @@ declare const hostVitalsReportValidator: import("convex/values").VObject<{
1700
1763
  }, "required", "boundary" | "from" | "timezone" | "to">;
1701
1764
  }, "required", "basis" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to">;
1702
1765
  }, "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">;
1766
+ declare const hostSiteMapValidator: import("convex/values").VObject<{
1767
+ from: number;
1768
+ metadata: {
1769
+ basis: "boundedLegacy" | "dailyRollup";
1770
+ coverage: {
1771
+ availableFrom: number | null;
1772
+ availableThrough: number | null;
1773
+ generation: number | null;
1774
+ retainedBefore: number | null;
1775
+ state: "complete" | "partial" | "retained" | "unavailable";
1776
+ };
1777
+ limits: {
1778
+ routesPerDay: number;
1779
+ rows: number;
1780
+ transitionSlots: number;
1781
+ };
1782
+ range: {
1783
+ boundary: "inclusive";
1784
+ from: number;
1785
+ timezone: "UTC";
1786
+ to: number;
1787
+ };
1788
+ visitors: {
1789
+ basis: "estimatedUnique";
1790
+ exact: boolean;
1791
+ };
1792
+ };
1793
+ routes: {
1794
+ bounces: number;
1795
+ daily: {
1796
+ bucketStart: number;
1797
+ pageviews: number;
1798
+ }[];
1799
+ dwellMs: number;
1800
+ dwellSamples: number;
1801
+ entries: number;
1802
+ exits: number;
1803
+ pageviews: number;
1804
+ route: string;
1805
+ transitionsIn: number;
1806
+ transitionsOut: number;
1807
+ visitors: number;
1808
+ }[];
1809
+ to: number;
1810
+ transitions: {
1811
+ count: number;
1812
+ from: string;
1813
+ to: string;
1814
+ }[];
1815
+ truncated: {
1816
+ routes: boolean;
1817
+ transitions: boolean;
1818
+ };
1819
+ window: {
1820
+ from: number;
1821
+ to: number;
1822
+ } | null;
1823
+ }, {
1824
+ from: import("convex/values").VFloat64<number, "required">;
1825
+ to: import("convex/values").VFloat64<number, "required">;
1826
+ window: import("convex/values").VUnion<{
1827
+ from: number;
1828
+ to: number;
1829
+ } | null, [import("convex/values").VObject<{
1830
+ from: number;
1831
+ to: number;
1832
+ }, {
1833
+ from: import("convex/values").VFloat64<number, "required">;
1834
+ to: import("convex/values").VFloat64<number, "required">;
1835
+ }, "required", "from" | "to">, import("convex/values").VNull<null, "required">], "required", "from" | "to">;
1836
+ routes: import("convex/values").VArray<{
1837
+ bounces: number;
1838
+ daily: {
1839
+ bucketStart: number;
1840
+ pageviews: number;
1841
+ }[];
1842
+ dwellMs: number;
1843
+ dwellSamples: number;
1844
+ entries: number;
1845
+ exits: number;
1846
+ pageviews: number;
1847
+ route: string;
1848
+ transitionsIn: number;
1849
+ transitionsOut: number;
1850
+ visitors: number;
1851
+ }[], import("convex/values").VObject<{
1852
+ bounces: number;
1853
+ daily: {
1854
+ bucketStart: number;
1855
+ pageviews: number;
1856
+ }[];
1857
+ dwellMs: number;
1858
+ dwellSamples: number;
1859
+ entries: number;
1860
+ exits: number;
1861
+ pageviews: number;
1862
+ route: string;
1863
+ transitionsIn: number;
1864
+ transitionsOut: number;
1865
+ visitors: number;
1866
+ }, {
1867
+ route: import("convex/values").VString<string, "required">;
1868
+ pageviews: import("convex/values").VFloat64<number, "required">;
1869
+ visitors: import("convex/values").VFloat64<number, "required">;
1870
+ entries: import("convex/values").VFloat64<number, "required">;
1871
+ exits: import("convex/values").VFloat64<number, "required">;
1872
+ bounces: import("convex/values").VFloat64<number, "required">;
1873
+ transitionsIn: import("convex/values").VFloat64<number, "required">;
1874
+ transitionsOut: import("convex/values").VFloat64<number, "required">;
1875
+ dwellMs: import("convex/values").VFloat64<number, "required">;
1876
+ dwellSamples: import("convex/values").VFloat64<number, "required">;
1877
+ daily: import("convex/values").VArray<{
1878
+ bucketStart: number;
1879
+ pageviews: number;
1880
+ }[], import("convex/values").VObject<{
1881
+ bucketStart: number;
1882
+ pageviews: number;
1883
+ }, {
1884
+ bucketStart: import("convex/values").VFloat64<number, "required">;
1885
+ pageviews: import("convex/values").VFloat64<number, "required">;
1886
+ }, "required", "bucketStart" | "pageviews">, "required">;
1887
+ }, "required", "bounces" | "daily" | "dwellMs" | "dwellSamples" | "entries" | "exits" | "pageviews" | "route" | "transitionsIn" | "transitionsOut" | "visitors">, "required">;
1888
+ transitions: import("convex/values").VArray<{
1889
+ count: number;
1890
+ from: string;
1891
+ to: string;
1892
+ }[], import("convex/values").VObject<{
1893
+ count: number;
1894
+ from: string;
1895
+ to: string;
1896
+ }, {
1897
+ from: import("convex/values").VString<string, "required">;
1898
+ to: import("convex/values").VString<string, "required">;
1899
+ count: import("convex/values").VFloat64<number, "required">;
1900
+ }, "required", "count" | "from" | "to">, "required">;
1901
+ truncated: import("convex/values").VObject<{
1902
+ routes: boolean;
1903
+ transitions: boolean;
1904
+ }, {
1905
+ routes: import("convex/values").VBoolean<boolean, "required">;
1906
+ transitions: import("convex/values").VBoolean<boolean, "required">;
1907
+ }, "required", "routes" | "transitions">;
1908
+ metadata: import("convex/values").VObject<{
1909
+ basis: "boundedLegacy" | "dailyRollup";
1910
+ coverage: {
1911
+ availableFrom: number | null;
1912
+ availableThrough: number | null;
1913
+ generation: number | null;
1914
+ retainedBefore: number | null;
1915
+ state: "complete" | "partial" | "retained" | "unavailable";
1916
+ };
1917
+ limits: {
1918
+ routesPerDay: number;
1919
+ rows: number;
1920
+ transitionSlots: number;
1921
+ };
1922
+ range: {
1923
+ boundary: "inclusive";
1924
+ from: number;
1925
+ timezone: "UTC";
1926
+ to: number;
1927
+ };
1928
+ visitors: {
1929
+ basis: "estimatedUnique";
1930
+ exact: boolean;
1931
+ };
1932
+ }, {
1933
+ basis: import("convex/values").VUnion<"boundedLegacy" | "dailyRollup", [import("convex/values").VLiteral<"dailyRollup", "required">, import("convex/values").VLiteral<"boundedLegacy", "required">], "required", never>;
1934
+ coverage: import("convex/values").VObject<{
1935
+ availableFrom: number | null;
1936
+ availableThrough: number | null;
1937
+ generation: number | null;
1938
+ retainedBefore: number | null;
1939
+ state: "complete" | "partial" | "retained" | "unavailable";
1940
+ }, {
1941
+ 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>;
1942
+ generation: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
1943
+ availableFrom: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
1944
+ availableThrough: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
1945
+ retainedBefore: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
1946
+ }, "required", "availableFrom" | "availableThrough" | "generation" | "retainedBefore" | "state">;
1947
+ range: import("convex/values").VObject<{
1948
+ boundary: "inclusive";
1949
+ from: number;
1950
+ timezone: "UTC";
1951
+ to: number;
1952
+ }, {
1953
+ from: import("convex/values").VFloat64<number, "required">;
1954
+ to: import("convex/values").VFloat64<number, "required">;
1955
+ boundary: import("convex/values").VLiteral<"inclusive", "required">;
1956
+ timezone: import("convex/values").VLiteral<"UTC", "required">;
1957
+ }, "required", "boundary" | "from" | "timezone" | "to">;
1958
+ visitors: import("convex/values").VObject<{
1959
+ basis: "estimatedUnique";
1960
+ exact: boolean;
1961
+ }, {
1962
+ basis: import("convex/values").VLiteral<"estimatedUnique", "required">;
1963
+ exact: import("convex/values").VBoolean<boolean, "required">;
1964
+ }, "required", "basis" | "exact">;
1965
+ limits: import("convex/values").VObject<{
1966
+ routesPerDay: number;
1967
+ rows: number;
1968
+ transitionSlots: number;
1969
+ }, {
1970
+ routesPerDay: import("convex/values").VFloat64<number, "required">;
1971
+ transitionSlots: import("convex/values").VFloat64<number, "required">;
1972
+ rows: import("convex/values").VFloat64<number, "required">;
1973
+ }, "required", "routesPerDay" | "rows" | "transitionSlots">;
1974
+ }, "required", "basis" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "limits" | "limits.routesPerDay" | "limits.rows" | "limits.transitionSlots" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to" | "visitors" | "visitors.basis" | "visitors.exact">;
1975
+ }, "required", "from" | "metadata" | "metadata.basis" | "metadata.coverage" | "metadata.coverage.availableFrom" | "metadata.coverage.availableThrough" | "metadata.coverage.generation" | "metadata.coverage.retainedBefore" | "metadata.coverage.state" | "metadata.limits" | "metadata.limits.routesPerDay" | "metadata.limits.rows" | "metadata.limits.transitionSlots" | "metadata.range" | "metadata.range.boundary" | "metadata.range.from" | "metadata.range.timezone" | "metadata.range.to" | "metadata.visitors" | "metadata.visitors.basis" | "metadata.visitors.exact" | "routes" | "to" | "transitions" | "truncated" | "truncated.routes" | "truncated.transitions" | "window" | "window.from" | "window.to">;
1703
1976
  export declare function exposeAnalyticsApi(component: ComponentApi, options: {
1704
1977
  authorize: AnalyticsAuthorizer;
1705
1978
  }): {
@@ -1777,7 +2050,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
1777
2050
  sessionId: string;
1778
2051
  target?: string | undefined;
1779
2052
  timestamp: number;
1780
- type: "click" | "conversion" | "custom" | "heartbeat" | "outbound" | "pageview" | "vital";
2053
+ type: "click" | "conversion" | "custom" | "heartbeat" | "leave" | "outbound" | "pageview" | "vital";
1781
2054
  value?: number | undefined;
1782
2055
  visitorId: string;
1783
2056
  }[];
@@ -1940,9 +2213,11 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
1940
2213
  lastSeenAt: number;
1941
2214
  latitude?: number;
1942
2215
  longitude?: number;
2216
+ movedAt?: number;
1943
2217
  os: string;
1944
2218
  pageviewCount: number;
1945
2219
  path: string;
2220
+ previousPath?: string;
1946
2221
  sessionId: string;
1947
2222
  siteId: string;
1948
2223
  source: string;
@@ -2041,7 +2316,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2041
2316
  siteId: string;
2042
2317
  target?: string;
2043
2318
  timestamp: number;
2044
- type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
2319
+ type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "leave" | "outbound" | "vital";
2045
2320
  visitorId: string;
2046
2321
  }>;
2047
2322
  pageStatus?: "SplitRecommended" | "SplitRequired" | null;
@@ -2114,7 +2389,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2114
2389
  siteId: string;
2115
2390
  target?: string;
2116
2391
  timestamp: number;
2117
- type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
2392
+ type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "leave" | "outbound" | "vital";
2118
2393
  visitorId: string;
2119
2394
  }[]>>;
2120
2395
  goalsReport: import("convex/server").RegisteredQuery<"public", {
@@ -2296,6 +2571,68 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2296
2571
  }>;
2297
2572
  truncated: boolean;
2298
2573
  }>>;
2574
+ siteMap: import("convex/server").RegisteredQuery<"public", {
2575
+ from: number;
2576
+ siteIds: string[];
2577
+ to: number;
2578
+ }, Promise<{
2579
+ from: number;
2580
+ metadata: {
2581
+ basis: "dailyRollup" | "boundedLegacy";
2582
+ coverage: {
2583
+ availableFrom: number | null;
2584
+ availableThrough: number | null;
2585
+ generation: number | null;
2586
+ retainedBefore: number | null;
2587
+ state: "complete" | "partial" | "retained" | "unavailable";
2588
+ };
2589
+ limits: {
2590
+ routesPerDay: number;
2591
+ rows: number;
2592
+ transitionSlots: number;
2593
+ };
2594
+ range: {
2595
+ boundary: "inclusive";
2596
+ from: number;
2597
+ timezone: "UTC";
2598
+ to: number;
2599
+ };
2600
+ visitors: {
2601
+ basis: "estimatedUnique";
2602
+ exact: boolean;
2603
+ };
2604
+ };
2605
+ routes: Array<{
2606
+ bounces: number;
2607
+ daily: Array<{
2608
+ bucketStart: number;
2609
+ pageviews: number;
2610
+ }>;
2611
+ dwellMs: number;
2612
+ dwellSamples: number;
2613
+ entries: number;
2614
+ exits: number;
2615
+ pageviews: number;
2616
+ route: string;
2617
+ transitionsIn: number;
2618
+ transitionsOut: number;
2619
+ visitors: number;
2620
+ }>;
2621
+ to: number;
2622
+ transitions: Array<{
2623
+ count: number;
2624
+ from: string;
2625
+ to: string;
2626
+ }>;
2627
+ truncated: {
2628
+ routes: boolean;
2629
+ transitions: boolean;
2630
+ };
2631
+ window: {
2632
+ from: number;
2633
+ to: number;
2634
+ } | null;
2635
+ }>>;
2299
2636
  dataCoverage: import("convex/server").RegisteredQuery<"public", {
2300
2637
  from: number;
2301
2638
  siteId: string;
@@ -2309,7 +2646,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2309
2646
  retainedBefore: number | null;
2310
2647
  state: "complete" | "partial" | "retained" | "unavailable";
2311
2648
  };
2312
- dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals";
2649
+ dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
2313
2650
  }>;
2314
2651
  from: number;
2315
2652
  siteId: string;
@@ -2322,7 +2659,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2322
2659
  jobs: Array<{
2323
2660
  before: number;
2324
2661
  deleted: number;
2325
- kind: "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "vitalRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
2662
+ kind: "events" | "sessions" | "conversions" | "goalCompletions" | "aggregateHour" | "aggregateDay" | "funnelProgress" | "funnelSteps" | "affiliateStats" | "goalRollups" | "funnelRollups" | "affiliateRollups" | "vitalRollups" | "siteMapRollups" | "attributions" | "liveSessions" | "ingestWindows" | "siteIngestWindows";
2326
2663
  scheduledAt: number | null;
2327
2664
  status: "pending" | "running" | "complete";
2328
2665
  updatedAt: number;
@@ -2349,7 +2686,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
2349
2686
  }, Promise<null>>;
2350
2687
  runRetentionPolicy: import("convex/server").RegisteredMutation<"public", {
2351
2688
  batchSize?: number | undefined;
2352
- kind: "affiliateRollups" | "affiliateStats" | "aggregateDay" | "aggregateHour" | "attributions" | "conversions" | "events" | "funnelProgress" | "funnelRollups" | "funnelSteps" | "goalCompletions" | "goalRollups" | "ingestWindows" | "liveSessions" | "sessions" | "siteIngestWindows" | "vitalRollups";
2689
+ kind: "affiliateRollups" | "affiliateStats" | "aggregateDay" | "aggregateHour" | "attributions" | "conversions" | "events" | "funnelProgress" | "funnelRollups" | "funnelSteps" | "goalCompletions" | "goalRollups" | "ingestWindows" | "liveSessions" | "sessions" | "siteIngestWindows" | "siteMapRollups" | "vitalRollups";
2353
2690
  siteId: string;
2354
2691
  }, Promise<{
2355
2692
  before: number;
@@ -2479,8 +2816,9 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2479
2816
  affiliatesReport: "affiliatesReport";
2480
2817
  dataCoverage: "dataCoverage";
2481
2818
  vitalsReport: "vitalsReport";
2819
+ siteMap: "siteMap";
2482
2820
  };
2483
- capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[];
2821
+ capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[];
2484
2822
  limits: {
2485
2823
  maxSitesPerRequest: 10;
2486
2824
  maxSitesPerConnection: 10;
@@ -2619,9 +2957,11 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2619
2957
  lastSeenAt: number;
2620
2958
  latitude?: number;
2621
2959
  longitude?: number;
2960
+ movedAt?: number;
2622
2961
  os: string;
2623
2962
  pageviewCount: number;
2624
2963
  path: string;
2964
+ previousPath?: string;
2625
2965
  sessionId: string;
2626
2966
  siteId: string;
2627
2967
  source: string;
@@ -2720,7 +3060,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2720
3060
  siteId: string;
2721
3061
  target?: string;
2722
3062
  timestamp: number;
2723
- type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
3063
+ type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "leave" | "outbound" | "vital";
2724
3064
  visitorId: string;
2725
3065
  }>;
2726
3066
  pageStatus?: "SplitRecommended" | "SplitRequired" | null;
@@ -2793,7 +3133,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2793
3133
  siteId: string;
2794
3134
  target?: string;
2795
3135
  timestamp: number;
2796
- type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "outbound" | "vital";
3136
+ type: "pageview" | "click" | "custom" | "conversion" | "heartbeat" | "leave" | "outbound" | "vital";
2797
3137
  visitorId: string;
2798
3138
  }[]>>;
2799
3139
  goalsReport: import("convex/server").RegisteredQuery<"public", {
@@ -2975,6 +3315,68 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2975
3315
  }>;
2976
3316
  truncated: boolean;
2977
3317
  }>>;
3318
+ siteMap: import("convex/server").RegisteredQuery<"public", {
3319
+ from: number;
3320
+ siteIds: string[];
3321
+ to: number;
3322
+ }, Promise<{
3323
+ from: number;
3324
+ metadata: {
3325
+ basis: "dailyRollup" | "boundedLegacy";
3326
+ coverage: {
3327
+ availableFrom: number | null;
3328
+ availableThrough: number | null;
3329
+ generation: number | null;
3330
+ retainedBefore: number | null;
3331
+ state: "complete" | "partial" | "retained" | "unavailable";
3332
+ };
3333
+ limits: {
3334
+ routesPerDay: number;
3335
+ rows: number;
3336
+ transitionSlots: number;
3337
+ };
3338
+ range: {
3339
+ boundary: "inclusive";
3340
+ from: number;
3341
+ timezone: "UTC";
3342
+ to: number;
3343
+ };
3344
+ visitors: {
3345
+ basis: "estimatedUnique";
3346
+ exact: boolean;
3347
+ };
3348
+ };
3349
+ routes: Array<{
3350
+ bounces: number;
3351
+ daily: Array<{
3352
+ bucketStart: number;
3353
+ pageviews: number;
3354
+ }>;
3355
+ dwellMs: number;
3356
+ dwellSamples: number;
3357
+ entries: number;
3358
+ exits: number;
3359
+ pageviews: number;
3360
+ route: string;
3361
+ transitionsIn: number;
3362
+ transitionsOut: number;
3363
+ visitors: number;
3364
+ }>;
3365
+ to: number;
3366
+ transitions: Array<{
3367
+ count: number;
3368
+ from: string;
3369
+ to: string;
3370
+ }>;
3371
+ truncated: {
3372
+ routes: boolean;
3373
+ transitions: boolean;
3374
+ };
3375
+ window: {
3376
+ from: number;
3377
+ to: number;
3378
+ } | null;
3379
+ }>>;
2978
3380
  dataCoverage: import("convex/server").RegisteredQuery<"public", {
2979
3381
  from: number;
2980
3382
  siteId: string;
@@ -2988,7 +3390,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2988
3390
  retainedBefore: number | null;
2989
3391
  state: "complete" | "partial" | "retained" | "unavailable";
2990
3392
  };
2991
- dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals";
3393
+ dataset: "overviewHour" | "overviewDay" | "events" | "sessions" | "conversions" | "goals" | "funnels" | "affiliates" | "vitals" | "siteMap";
2992
3394
  }>;
2993
3395
  from: number;
2994
3396
  siteId: string;