@iann29/rastro 0.1.0-alpha.1 → 0.1.0-alpha.11

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 (179) hide show
  1. package/README.md +693 -69
  2. package/agent/integration.md +801 -0
  3. package/agent/manifest.json +205 -0
  4. package/agent/manifest.schema.json +444 -0
  5. package/dist/client/federation.d.ts +381 -0
  6. package/dist/client/federation.d.ts.map +1 -0
  7. package/dist/client/federation.js +274 -0
  8. package/dist/client/federation.js.map +1 -0
  9. package/dist/client/index.d.ts +2673 -15
  10. package/dist/client/index.d.ts.map +1 -1
  11. package/dist/client/index.js +565 -33
  12. package/dist/client/index.js.map +1 -1
  13. package/dist/component/_generated/api.d.ts +22 -0
  14. package/dist/component/_generated/api.d.ts.map +1 -1
  15. package/dist/component/_generated/api.js.map +1 -1
  16. package/dist/component/_generated/component.d.ts +315 -4
  17. package/dist/component/_generated/component.d.ts.map +1 -1
  18. package/dist/component/_generated/server.d.ts +4 -0
  19. package/dist/component/_generated/server.d.ts.map +1 -1
  20. package/dist/component/_generated/server.js.map +1 -1
  21. package/dist/component/affiliates.d.ts.map +1 -1
  22. package/dist/component/affiliates.js +6 -2
  23. package/dist/component/affiliates.js.map +1 -1
  24. package/dist/component/cardinality.d.ts +12 -0
  25. package/dist/component/cardinality.d.ts.map +1 -0
  26. package/dist/component/cardinality.js +94 -0
  27. package/dist/component/cardinality.js.map +1 -0
  28. package/dist/component/constants.d.ts +28 -1
  29. package/dist/component/constants.d.ts.map +1 -1
  30. package/dist/component/constants.js +44 -1
  31. package/dist/component/constants.js.map +1 -1
  32. package/dist/component/convex.config.d.ts +6 -1
  33. package/dist/component/convex.config.js +9 -1
  34. package/dist/component/convex.config.js.map +1 -1
  35. package/dist/component/coverage.d.ts +27 -0
  36. package/dist/component/coverage.d.ts.map +1 -0
  37. package/dist/component/coverage.js +56 -0
  38. package/dist/component/coverage.js.map +1 -0
  39. package/dist/component/diagnostics.d.ts +9 -0
  40. package/dist/component/diagnostics.d.ts.map +1 -0
  41. package/dist/component/diagnostics.js +47 -0
  42. package/dist/component/diagnostics.js.map +1 -0
  43. package/dist/component/errors.d.ts +1 -1
  44. package/dist/component/errors.d.ts.map +1 -1
  45. package/dist/component/errors.js.map +1 -1
  46. package/dist/component/eventStore.d.ts +21 -9
  47. package/dist/component/eventStore.d.ts.map +1 -1
  48. package/dist/component/eventStore.js +142 -152
  49. package/dist/component/eventStore.js.map +1 -1
  50. package/dist/component/funnels.d.ts.map +1 -1
  51. package/dist/component/funnels.js +5 -3
  52. package/dist/component/funnels.js.map +1 -1
  53. package/dist/component/geo.d.ts +73 -0
  54. package/dist/component/geo.d.ts.map +1 -0
  55. package/dist/component/geo.js +648 -0
  56. package/dist/component/geo.js.map +1 -0
  57. package/dist/component/goals.d.ts.map +1 -1
  58. package/dist/component/goals.js +8 -5
  59. package/dist/component/goals.js.map +1 -1
  60. package/dist/component/guards.d.ts.map +1 -1
  61. package/dist/component/guards.js.map +1 -1
  62. package/dist/component/http.d.ts.map +1 -1
  63. package/dist/component/http.js +281 -62
  64. package/dist/component/http.js.map +1 -1
  65. package/dist/component/identity.d.ts +13 -0
  66. package/dist/component/identity.d.ts.map +1 -0
  67. package/dist/component/identity.js +58 -0
  68. package/dist/component/identity.js.map +1 -0
  69. package/dist/component/ingest.d.ts +3 -1
  70. package/dist/component/ingest.d.ts.map +1 -1
  71. package/dist/component/ingest.js +498 -95
  72. package/dist/component/ingest.js.map +1 -1
  73. package/dist/component/live.d.ts.map +1 -1
  74. package/dist/component/live.js +7 -6
  75. package/dist/component/live.js.map +1 -1
  76. package/dist/component/localTime.d.ts +25 -0
  77. package/dist/component/localTime.d.ts.map +1 -0
  78. package/dist/component/localTime.js +126 -0
  79. package/dist/component/localTime.js.map +1 -0
  80. package/dist/component/reports.d.ts +266 -10
  81. package/dist/component/reports.d.ts.map +1 -1
  82. package/dist/component/reports.js +1243 -137
  83. package/dist/component/reports.js.map +1 -1
  84. package/dist/component/retention.d.ts +75 -1
  85. package/dist/component/retention.d.ts.map +1 -1
  86. package/dist/component/retention.js +561 -38
  87. package/dist/component/retention.js.map +1 -1
  88. package/dist/component/rollupStore.d.ts +320 -0
  89. package/dist/component/rollupStore.d.ts.map +1 -0
  90. package/dist/component/rollupStore.js +596 -0
  91. package/dist/component/rollupStore.js.map +1 -0
  92. package/dist/component/rollups.d.ts +20 -0
  93. package/dist/component/rollups.d.ts.map +1 -0
  94. package/dist/component/rollups.js +73 -0
  95. package/dist/component/rollups.js.map +1 -0
  96. package/dist/component/sanitize.d.ts +24 -1
  97. package/dist/component/sanitize.d.ts.map +1 -1
  98. package/dist/component/sanitize.js +96 -16
  99. package/dist/component/sanitize.js.map +1 -1
  100. package/dist/component/schema.d.ts +687 -65
  101. package/dist/component/schema.js +187 -20
  102. package/dist/component/schema.js.map +1 -1
  103. package/dist/component/sites.d.ts +12 -0
  104. package/dist/component/sites.d.ts.map +1 -1
  105. package/dist/component/sites.js +41 -7
  106. package/dist/component/sites.js.map +1 -1
  107. package/dist/component/useragent.d.ts +9 -0
  108. package/dist/component/useragent.d.ts.map +1 -0
  109. package/dist/component/useragent.js +152 -0
  110. package/dist/component/useragent.js.map +1 -0
  111. package/dist/component/validators.d.ts +124 -69
  112. package/dist/component/validators.d.ts.map +1 -1
  113. package/dist/component/validators.js +35 -14
  114. package/dist/component/validators.js.map +1 -1
  115. package/dist/component/visitors.d.ts +19 -0
  116. package/dist/component/visitors.d.ts.map +1 -0
  117. package/dist/component/visitors.js +86 -0
  118. package/dist/component/visitors.js.map +1 -0
  119. package/dist/component/vitals.d.ts +41 -0
  120. package/dist/component/vitals.d.ts.map +1 -0
  121. package/dist/component/vitals.js +115 -0
  122. package/dist/component/vitals.js.map +1 -0
  123. package/dist/react/index.d.ts.map +1 -1
  124. package/dist/react/index.js.map +1 -1
  125. package/dist/tracker/generated.d.ts +11 -4
  126. package/dist/tracker/generated.d.ts.map +1 -1
  127. package/dist/tracker/generated.js +11 -4
  128. package/dist/tracker/generated.js.map +1 -1
  129. package/dist/tracker/tracker.d.ts +1 -1
  130. package/dist/tracker/tracker.d.ts.map +1 -1
  131. package/dist/tracker/tracker.js +57 -20
  132. package/dist/tracker/tracker.js.map +1 -1
  133. package/dist/tracker/vitals.d.ts +10 -0
  134. package/dist/tracker/vitals.d.ts.map +1 -0
  135. package/dist/tracker/vitals.js +140 -0
  136. package/dist/tracker/vitals.js.map +1 -0
  137. package/dist/tracker.min.js +1 -1
  138. package/dist/vitals.min.js +1 -0
  139. package/docs/benchmarks/2026-08-20-realistic.md +76 -76
  140. package/docs/benchmarks/2026-08-21-formal-certification.md +353 -0
  141. package/docs/benchmarks/2026-08-30-alpha6-recertification.md +206 -0
  142. package/docs/federation-setup.md +464 -0
  143. package/docs/federation.md +352 -0
  144. package/docs/upgrading.md +344 -0
  145. package/llms.txt +72 -0
  146. package/package.json +55 -11
  147. package/scripts/benchmark-ingest.mjs +175 -73
  148. package/scripts/generate-federation-keys.mjs +20 -0
  149. package/src/component/_generated/api.ts +22 -0
  150. package/src/component/_generated/component.ts +381 -4
  151. package/src/component/_generated/server.ts +4 -0
  152. package/src/component/affiliates.ts +20 -5
  153. package/src/component/cardinality.ts +117 -0
  154. package/src/component/constants.ts +44 -1
  155. package/src/component/convex.config.ts +11 -1
  156. package/src/component/coverage.ts +71 -0
  157. package/src/component/diagnostics.ts +65 -0
  158. package/src/component/errors.ts +2 -1
  159. package/src/component/eventStore.ts +217 -193
  160. package/src/component/funnels.ts +19 -16
  161. package/src/component/geo.ts +835 -0
  162. package/src/component/goals.ts +29 -21
  163. package/src/component/guards.ts +3 -1
  164. package/src/component/http.ts +404 -70
  165. package/src/component/identity.ts +74 -0
  166. package/src/component/ingest.ts +894 -188
  167. package/src/component/live.ts +13 -7
  168. package/src/component/localTime.ts +167 -0
  169. package/src/component/reports.ts +1872 -197
  170. package/src/component/retention.ts +788 -96
  171. package/src/component/rollupStore.ts +799 -0
  172. package/src/component/rollups.ts +82 -0
  173. package/src/component/sanitize.ts +144 -29
  174. package/src/component/schema.ts +217 -21
  175. package/src/component/sites.ts +59 -12
  176. package/src/component/useragent.ts +171 -0
  177. package/src/component/validators.ts +49 -14
  178. package/src/component/visitors.ts +116 -0
  179. package/src/component/vitals.ts +146 -0
@@ -39,6 +39,8 @@ declare const _default: import("convex/server").SchemaDefinition<{
39
39
  entryPath: string;
40
40
  eventCount: number;
41
41
  exitPath: string;
42
+ geoLookupAttemptedAt?: number | undefined;
43
+ lastPageviewAt?: number | undefined;
42
44
  lastSeenAt: number;
43
45
  latitude?: number | undefined;
44
46
  longitude?: number | undefined;
@@ -54,10 +56,12 @@ declare const _default: import("convex/server").SchemaDefinition<{
54
56
  utmMedium?: string | undefined;
55
57
  utmSource?: string | undefined;
56
58
  visitorId: string;
59
+ visitorKey?: string | undefined;
57
60
  }, {
58
61
  siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
59
62
  sessionId: import("convex/values").VString<string, "required">;
60
63
  visitorId: import("convex/values").VString<string, "required">;
64
+ visitorKey: import("convex/values").VString<string | undefined, "optional">;
61
65
  startedAt: import("convex/values").VFloat64<number, "required">;
62
66
  lastSeenAt: import("convex/values").VFloat64<number, "required">;
63
67
  entryPath: import("convex/values").VString<string, "required">;
@@ -84,7 +88,9 @@ declare const _default: import("convex/server").SchemaDefinition<{
84
88
  affiliateId: import("convex/values").VId<import("convex/values").GenericId<"affiliates"> | undefined, "optional">;
85
89
  affiliateAttributedAt: import("convex/values").VFloat64<number | undefined, "optional">;
86
90
  affiliateExpiresAt: import("convex/values").VFloat64<number | undefined, "optional">;
87
- }, "required", "affiliateAttributedAt" | "affiliateExpiresAt" | "affiliateId" | "affiliateSlug" | "browser" | "city" | "conversionCount" | "country" | "currency" | "device" | "durationMs" | "entryPath" | "eventCount" | "exitPath" | "lastSeenAt" | "latitude" | "longitude" | "os" | "pageviewCount" | "referrer" | "revenueCents" | "sessionId" | "siteId" | "source" | "startedAt" | "utmCampaign" | "utmMedium" | "utmSource" | "visitorId">, {
91
+ geoLookupAttemptedAt: import("convex/values").VFloat64<number | undefined, "optional">;
92
+ lastPageviewAt: import("convex/values").VFloat64<number | undefined, "optional">;
93
+ }, "required", "affiliateAttributedAt" | "affiliateExpiresAt" | "affiliateId" | "affiliateSlug" | "browser" | "city" | "conversionCount" | "country" | "currency" | "device" | "durationMs" | "entryPath" | "eventCount" | "exitPath" | "geoLookupAttemptedAt" | "lastPageviewAt" | "lastSeenAt" | "latitude" | "longitude" | "os" | "pageviewCount" | "referrer" | "revenueCents" | "sessionId" | "siteId" | "source" | "startedAt" | "utmCampaign" | "utmMedium" | "utmSource" | "visitorId" | "visitorKey">, {
88
94
  by_siteId_and_lastSeenAt: ["siteId", "lastSeenAt", "_creationTime"];
89
95
  by_siteId_and_sessionId: ["siteId", "sessionId", "_creationTime"];
90
96
  by_siteId_and_startedAt: ["siteId", "startedAt", "_creationTime"];
@@ -102,9 +108,11 @@ declare const _default: import("convex/server").SchemaDefinition<{
102
108
  lastSeenAt: number;
103
109
  latitude?: number | undefined;
104
110
  longitude?: number | undefined;
111
+ movedAt?: number | undefined;
105
112
  os: string;
106
113
  pageviewCount: number;
107
114
  path: string;
115
+ previousPath?: string | undefined;
108
116
  recentHeartbeatEventIds?: string[] | undefined;
109
117
  sessionId: string;
110
118
  siteId: import("convex/values").GenericId<"sites">;
@@ -132,7 +140,9 @@ declare const _default: import("convex/server").SchemaDefinition<{
132
140
  lastHeartbeatEventId: import("convex/values").VString<string | undefined, "optional">;
133
141
  recentHeartbeatEventIds: import("convex/values").VArray<string[] | undefined, import("convex/values").VString<string, "required">, "optional">;
134
142
  eventCount: import("convex/values").VFloat64<number, "required">;
135
- }, "required", "browser" | "city" | "country" | "device" | "eventCount" | "expiresAt" | "expiryChainDeadline" | "lastHeartbeatEventId" | "lastSeenAt" | "latitude" | "longitude" | "os" | "pageviewCount" | "path" | "recentHeartbeatEventIds" | "sessionId" | "siteId" | "source" | "startedAt" | "visitorId">, {
143
+ previousPath: import("convex/values").VString<string | undefined, "optional">;
144
+ movedAt: import("convex/values").VFloat64<number | undefined, "optional">;
145
+ }, "required", "browser" | "city" | "country" | "device" | "eventCount" | "expiresAt" | "expiryChainDeadline" | "lastHeartbeatEventId" | "lastSeenAt" | "latitude" | "longitude" | "movedAt" | "os" | "pageviewCount" | "path" | "previousPath" | "recentHeartbeatEventIds" | "sessionId" | "siteId" | "source" | "startedAt" | "visitorId">, {
136
146
  by_siteId_and_expiresAt: ["siteId", "expiresAt", "_creationTime"];
137
147
  by_siteId_and_lastSeenAt: ["siteId", "lastSeenAt", "_creationTime"];
138
148
  by_siteId_and_sessionId: ["siteId", "sessionId", "_creationTime"];
@@ -146,67 +156,33 @@ declare const _default: import("convex/server").SchemaDefinition<{
146
156
  }, "required", "scheduledAt" | "siteId">, {
147
157
  by_siteId: ["siteId", "_creationTime"];
148
158
  }, {}, {}>;
149
- events: import("convex/server").TableDefinition<import("convex/values").VObject<{
150
- affiliateSlug?: string | undefined;
151
- browser?: string | undefined;
152
- city?: string | undefined;
153
- country?: string | undefined;
154
- currency?: string | undefined;
155
- device?: string | undefined;
156
- eventId: string;
157
- href?: string | undefined;
158
- latitude?: number | undefined;
159
- longitude?: number | undefined;
160
- name?: string | undefined;
161
- os?: string | undefined;
162
- path: string;
163
- properties?: Record<string, string | number | boolean | null> | undefined;
164
- referrer?: string | undefined;
165
- revenueCents?: number | undefined;
166
- sequence: number;
167
- sessionId: string;
159
+ geoLookupBudgets: import("convex/server").TableDefinition<import("convex/values").VObject<{
160
+ count: number;
161
+ dayStart: number;
168
162
  siteId: import("convex/values").GenericId<"sites">;
169
- target?: string | undefined;
170
- timestamp: number;
171
- type: "click" | "conversion" | "custom" | "heartbeat" | "outbound" | "pageview";
172
- visitorId: string;
173
163
  }, {
174
164
  siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
175
- eventId: import("convex/values").VString<string, "required">;
176
- sessionId: import("convex/values").VString<string, "required">;
177
- visitorId: import("convex/values").VString<string, "required">;
178
- type: import("convex/values").VUnion<"click" | "conversion" | "custom" | "heartbeat" | "outbound" | "pageview", [import("convex/values").VLiteral<"pageview", "required">, import("convex/values").VLiteral<"click", "required">, import("convex/values").VLiteral<"custom", "required">, import("convex/values").VLiteral<"conversion", "required">, import("convex/values").VLiteral<"heartbeat", "required">, import("convex/values").VLiteral<"outbound", "required">], "required", never>;
179
- name: import("convex/values").VString<string | undefined, "optional">;
180
- path: import("convex/values").VString<string, "required">;
181
- referrer: import("convex/values").VString<string | undefined, "optional">;
182
- timestamp: import("convex/values").VFloat64<number, "required">;
183
- sequence: import("convex/values").VFloat64<number, "required">;
184
- target: import("convex/values").VString<string | undefined, "optional">;
185
- href: import("convex/values").VString<string | undefined, "optional">;
186
- properties: import("convex/values").VRecord<Record<string, string | number | boolean | null> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean | null, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">, import("convex/values").VNull<null, "required">], "required", never>, "optional", string>;
187
- revenueCents: import("convex/values").VFloat64<number | undefined, "optional">;
188
- currency: import("convex/values").VString<string | undefined, "optional">;
189
- affiliateSlug: import("convex/values").VString<string | undefined, "optional">;
190
- country: import("convex/values").VString<string | undefined, "optional">;
191
- city: import("convex/values").VString<string | undefined, "optional">;
192
- latitude: import("convex/values").VFloat64<number | undefined, "optional">;
193
- longitude: import("convex/values").VFloat64<number | undefined, "optional">;
194
- browser: import("convex/values").VString<string | undefined, "optional">;
195
- os: import("convex/values").VString<string | undefined, "optional">;
196
- device: import("convex/values").VString<string | undefined, "optional">;
197
- }, "required", "affiliateSlug" | "browser" | "city" | "country" | "currency" | "device" | "eventId" | "href" | "latitude" | "longitude" | "name" | "os" | "path" | "properties" | "referrer" | "revenueCents" | "sequence" | "sessionId" | "siteId" | "target" | "timestamp" | "type" | "visitorId" | `properties.${string}`>, {
198
- by_siteId_and_eventId: ["siteId", "eventId", "_creationTime"];
199
- by_siteId_and_sessionId_and_timestamp: ["siteId", "sessionId", "timestamp", "_creationTime"];
200
- by_siteId_and_timestamp: ["siteId", "timestamp", "_creationTime"];
165
+ dayStart: import("convex/values").VFloat64<number, "required">;
166
+ count: import("convex/values").VFloat64<number, "required">;
167
+ }, "required", "count" | "dayStart" | "siteId">, {
168
+ by_siteId: ["siteId", "_creationTime"];
201
169
  }, {}, {}>;
202
170
  eventBatches: import("convex/server").TableDefinition<import("convex/values").VObject<{
203
171
  bucketStart: number;
204
172
  events: {
205
173
  affiliateSlug?: string | undefined;
174
+ aggregateCountry?: string | undefined;
175
+ browser?: string | undefined;
176
+ city?: string | undefined;
177
+ country?: string | undefined;
206
178
  currency?: string | undefined;
179
+ device?: string | undefined;
207
180
  eventId: string;
208
181
  href?: string | undefined;
182
+ latitude?: number | undefined;
183
+ longitude?: number | undefined;
209
184
  name?: string | undefined;
185
+ os?: string | undefined;
210
186
  path: string;
211
187
  properties?: Record<string, string | number | boolean | null> | undefined;
212
188
  referrer?: string | undefined;
@@ -215,9 +191,12 @@ declare const _default: import("convex/server").SchemaDefinition<{
215
191
  sessionId: string;
216
192
  target?: string | undefined;
217
193
  timestamp: number;
218
- type: "click" | "conversion" | "custom" | "heartbeat" | "outbound" | "pageview";
194
+ type: "click" | "conversion" | "custom" | "heartbeat" | "leave" | "outbound" | "pageview" | "vital";
195
+ value?: number | undefined;
219
196
  visitorId: string;
197
+ visitorKey?: string | undefined;
220
198
  }[];
199
+ migrationVersion?: 1 | undefined;
221
200
  sessionId: string;
222
201
  siteId: import("convex/values").GenericId<"sites">;
223
202
  visitorId: string;
@@ -228,10 +207,18 @@ declare const _default: import("convex/server").SchemaDefinition<{
228
207
  bucketStart: import("convex/values").VFloat64<number, "required">;
229
208
  events: import("convex/values").VArray<{
230
209
  affiliateSlug?: string | undefined;
210
+ aggregateCountry?: string | undefined;
211
+ browser?: string | undefined;
212
+ city?: string | undefined;
213
+ country?: string | undefined;
231
214
  currency?: string | undefined;
215
+ device?: string | undefined;
232
216
  eventId: string;
233
217
  href?: string | undefined;
218
+ latitude?: number | undefined;
219
+ longitude?: number | undefined;
234
220
  name?: string | undefined;
221
+ os?: string | undefined;
235
222
  path: string;
236
223
  properties?: Record<string, string | number | boolean | null> | undefined;
237
224
  referrer?: string | undefined;
@@ -240,14 +227,24 @@ declare const _default: import("convex/server").SchemaDefinition<{
240
227
  sessionId: string;
241
228
  target?: string | undefined;
242
229
  timestamp: number;
243
- type: "click" | "conversion" | "custom" | "heartbeat" | "outbound" | "pageview";
230
+ type: "click" | "conversion" | "custom" | "heartbeat" | "leave" | "outbound" | "pageview" | "vital";
231
+ value?: number | undefined;
244
232
  visitorId: string;
233
+ visitorKey?: string | undefined;
245
234
  }[], import("convex/values").VObject<{
246
235
  affiliateSlug?: string | undefined;
236
+ aggregateCountry?: string | undefined;
237
+ browser?: string | undefined;
238
+ city?: string | undefined;
239
+ country?: string | undefined;
247
240
  currency?: string | undefined;
241
+ device?: string | undefined;
248
242
  eventId: string;
249
243
  href?: string | undefined;
244
+ latitude?: number | undefined;
245
+ longitude?: number | undefined;
250
246
  name?: string | undefined;
247
+ os?: string | undefined;
251
248
  path: string;
252
249
  properties?: Record<string, string | number | boolean | null> | undefined;
253
250
  referrer?: string | undefined;
@@ -256,13 +253,15 @@ declare const _default: import("convex/server").SchemaDefinition<{
256
253
  sessionId: string;
257
254
  target?: string | undefined;
258
255
  timestamp: number;
259
- type: "click" | "conversion" | "custom" | "heartbeat" | "outbound" | "pageview";
256
+ type: "click" | "conversion" | "custom" | "heartbeat" | "leave" | "outbound" | "pageview" | "vital";
257
+ value?: number | undefined;
260
258
  visitorId: string;
259
+ visitorKey?: string | undefined;
261
260
  }, {
262
261
  eventId: import("convex/values").VString<string, "required">;
263
262
  sessionId: import("convex/values").VString<string, "required">;
264
263
  visitorId: import("convex/values").VString<string, "required">;
265
- type: import("convex/values").VUnion<"click" | "conversion" | "custom" | "heartbeat" | "outbound" | "pageview", [import("convex/values").VLiteral<"pageview", "required">, import("convex/values").VLiteral<"click", "required">, import("convex/values").VLiteral<"custom", "required">, import("convex/values").VLiteral<"conversion", "required">, import("convex/values").VLiteral<"heartbeat", "required">, import("convex/values").VLiteral<"outbound", "required">], "required", never>;
264
+ type: import("convex/values").VUnion<"click" | "conversion" | "custom" | "heartbeat" | "leave" | "outbound" | "pageview" | "vital", [import("convex/values").VLiteral<"pageview", "required">, import("convex/values").VLiteral<"click", "required">, import("convex/values").VLiteral<"custom", "required">, import("convex/values").VLiteral<"conversion", "required">, import("convex/values").VLiteral<"heartbeat", "required">, import("convex/values").VLiteral<"leave", "required">, import("convex/values").VLiteral<"outbound", "required">, import("convex/values").VLiteral<"vital", "required">], "required", never>;
266
265
  name: import("convex/values").VString<string | undefined, "optional">;
267
266
  path: import("convex/values").VString<string, "required">;
268
267
  referrer: import("convex/values").VString<string | undefined, "optional">;
@@ -274,35 +273,58 @@ declare const _default: import("convex/server").SchemaDefinition<{
274
273
  revenueCents: import("convex/values").VFloat64<number | undefined, "optional">;
275
274
  currency: import("convex/values").VString<string | undefined, "optional">;
276
275
  affiliateSlug: import("convex/values").VString<string | undefined, "optional">;
277
- }, "required", "affiliateSlug" | "currency" | "eventId" | "href" | "name" | "path" | "properties" | "referrer" | "revenueCents" | "sequence" | "sessionId" | "target" | "timestamp" | "type" | "visitorId" | `properties.${string}`>, "required">;
278
- }, "required", "bucketStart" | "events" | "sessionId" | "siteId" | "visitorId">, {
276
+ value: import("convex/values").VFloat64<number | undefined, "optional">;
277
+ country: import("convex/values").VString<string | undefined, "optional">;
278
+ city: import("convex/values").VString<string | undefined, "optional">;
279
+ latitude: import("convex/values").VFloat64<number | undefined, "optional">;
280
+ longitude: import("convex/values").VFloat64<number | undefined, "optional">;
281
+ browser: import("convex/values").VString<string | undefined, "optional">;
282
+ os: import("convex/values").VString<string | undefined, "optional">;
283
+ device: import("convex/values").VString<string | undefined, "optional">;
284
+ visitorKey: import("convex/values").VString<string | undefined, "optional">;
285
+ aggregateCountry: import("convex/values").VString<string | undefined, "optional">;
286
+ }, "required", "affiliateSlug" | "aggregateCountry" | "browser" | "city" | "country" | "currency" | "device" | "eventId" | "href" | "latitude" | "longitude" | "name" | "os" | "path" | "properties" | "referrer" | "revenueCents" | "sequence" | "sessionId" | "target" | "timestamp" | "type" | "value" | "visitorId" | "visitorKey" | `properties.${string}`>, "required">;
287
+ migrationVersion: import("convex/values").VLiteral<1 | undefined, "optional">;
288
+ }, "required", "bucketStart" | "events" | "migrationVersion" | "sessionId" | "siteId" | "visitorId">, {
279
289
  by_siteId_and_bucketStart: ["siteId", "bucketStart", "_creationTime"];
280
290
  by_siteId_and_sessionId_and_bucketStart: ["siteId", "sessionId", "bucketStart", "_creationTime"];
291
+ by_siteId_and_visitorId_and_bucketStart: ["siteId", "visitorId", "bucketStart", "_creationTime"];
281
292
  }, {}, {}>;
282
293
  aggregateBuckets: import("convex/server").TableDefinition<import("convex/values").VObject<{
283
294
  bucketStart: number;
284
295
  clicks: number;
296
+ continuedSessions?: number | undefined;
285
297
  conversions: number;
286
298
  customEvents: number;
287
299
  dimensions: {
288
300
  count: number;
301
+ pageviews?: number | undefined;
289
302
  revenueCents: number;
303
+ sessions?: number | undefined;
290
304
  slot: number;
291
- type: "browser" | "country" | "device" | "event" | "goal" | "page" | "source";
305
+ type: "browser" | "campaign" | "country" | "device" | "event" | "goal" | "page" | "source";
292
306
  value: string;
293
307
  }[];
308
+ durationMs?: number | undefined;
294
309
  events: number;
295
- granularity: "day" | "hour";
310
+ granularity: "day" | "hour" | "localDay";
311
+ newVisitors?: number | undefined;
296
312
  outboundClicks: number;
297
313
  pageviews: number;
298
314
  revenueCents: number;
299
315
  sessions: number;
300
316
  shard: number;
301
317
  siteId: import("convex/values").GenericId<"sites">;
318
+ visitorSketch?: {
319
+ precision: number;
320
+ registers: ArrayBuffer;
321
+ version: 1;
322
+ } | undefined;
323
+ visitorSketchComplete?: boolean | undefined;
302
324
  visitors: number;
303
325
  }, {
304
326
  siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
305
- granularity: import("convex/values").VUnion<"day" | "hour", [import("convex/values").VLiteral<"hour", "required">, import("convex/values").VLiteral<"day", "required">], "required", never>;
327
+ granularity: import("convex/values").VUnion<"day" | "hour" | "localDay", [import("convex/values").VLiteral<"hour", "required">, import("convex/values").VLiteral<"day", "required">, import("convex/values").VLiteral<"localDay", "required">], "required", never>;
306
328
  bucketStart: import("convex/values").VFloat64<number, "required">;
307
329
  shard: import("convex/values").VFloat64<number, "required">;
308
330
  events: import("convex/values").VFloat64<number, "required">;
@@ -312,31 +334,606 @@ declare const _default: import("convex/server").SchemaDefinition<{
312
334
  outboundClicks: import("convex/values").VFloat64<number, "required">;
313
335
  sessions: import("convex/values").VFloat64<number, "required">;
314
336
  visitors: import("convex/values").VFloat64<number, "required">;
337
+ visitorSketch: import("convex/values").VObject<{
338
+ precision: number;
339
+ registers: ArrayBuffer;
340
+ version: 1;
341
+ } | undefined, {
342
+ version: import("convex/values").VLiteral<1, "required">;
343
+ precision: import("convex/values").VFloat64<number, "required">;
344
+ registers: import("convex/values").VBytes<ArrayBuffer, "required">;
345
+ }, "optional", "precision" | "registers" | "version">;
346
+ visitorSketchComplete: import("convex/values").VBoolean<boolean | undefined, "optional">;
315
347
  conversions: import("convex/values").VFloat64<number, "required">;
316
348
  revenueCents: import("convex/values").VFloat64<number, "required">;
317
349
  dimensions: import("convex/values").VArray<{
318
350
  count: number;
351
+ pageviews?: number | undefined;
319
352
  revenueCents: number;
353
+ sessions?: number | undefined;
320
354
  slot: number;
321
- type: "browser" | "country" | "device" | "event" | "goal" | "page" | "source";
355
+ type: "browser" | "campaign" | "country" | "device" | "event" | "goal" | "page" | "source";
322
356
  value: string;
323
357
  }[], import("convex/values").VObject<{
324
358
  count: number;
359
+ pageviews?: number | undefined;
325
360
  revenueCents: number;
361
+ sessions?: number | undefined;
326
362
  slot: number;
327
- type: "browser" | "country" | "device" | "event" | "goal" | "page" | "source";
363
+ type: "browser" | "campaign" | "country" | "device" | "event" | "goal" | "page" | "source";
328
364
  value: string;
329
365
  }, {
330
- type: import("convex/values").VUnion<"browser" | "country" | "device" | "event" | "goal" | "page" | "source", [import("convex/values").VLiteral<"source", "required">, import("convex/values").VLiteral<"page", "required">, import("convex/values").VLiteral<"country", "required">, import("convex/values").VLiteral<"device", "required">, import("convex/values").VLiteral<"browser", "required">, import("convex/values").VLiteral<"event", "required">, import("convex/values").VLiteral<"goal", "required">], "required", never>;
366
+ type: import("convex/values").VUnion<"browser" | "campaign" | "country" | "device" | "event" | "goal" | "page" | "source", [import("convex/values").VLiteral<"source", "required">, import("convex/values").VLiteral<"campaign", "required">, import("convex/values").VLiteral<"page", "required">, import("convex/values").VLiteral<"country", "required">, import("convex/values").VLiteral<"device", "required">, import("convex/values").VLiteral<"browser", "required">, import("convex/values").VLiteral<"event", "required">, import("convex/values").VLiteral<"goal", "required">], "required", never>;
331
367
  slot: import("convex/values").VFloat64<number, "required">;
332
368
  value: import("convex/values").VString<string, "required">;
333
369
  count: import("convex/values").VFloat64<number, "required">;
334
370
  revenueCents: import("convex/values").VFloat64<number, "required">;
335
- }, "required", "count" | "revenueCents" | "slot" | "type" | "value">, "required">;
336
- }, "required", "bucketStart" | "clicks" | "conversions" | "customEvents" | "dimensions" | "events" | "granularity" | "outboundClicks" | "pageviews" | "revenueCents" | "sessions" | "shard" | "siteId" | "visitors">, {
371
+ pageviews: import("convex/values").VFloat64<number | undefined, "optional">;
372
+ sessions: import("convex/values").VFloat64<number | undefined, "optional">;
373
+ }, "required", "count" | "pageviews" | "revenueCents" | "sessions" | "slot" | "type" | "value">, "required">;
374
+ durationMs: import("convex/values").VFloat64<number | undefined, "optional">;
375
+ continuedSessions: import("convex/values").VFloat64<number | undefined, "optional">;
376
+ newVisitors: import("convex/values").VFloat64<number | undefined, "optional">;
377
+ }, "required", "bucketStart" | "clicks" | "continuedSessions" | "conversions" | "customEvents" | "dimensions" | "durationMs" | "events" | "granularity" | "newVisitors" | "outboundClicks" | "pageviews" | "revenueCents" | "sessions" | "shard" | "siteId" | "visitorSketch" | "visitorSketch.precision" | "visitorSketch.registers" | "visitorSketch.version" | "visitorSketchComplete" | "visitors">, {
337
378
  by_siteId_and_granularity_and_bucketStart: ["siteId", "granularity", "bucketStart", "_creationTime"];
338
379
  by_siteId_and_granularity_and_bucketStart_and_shard: ["siteId", "granularity", "bucketStart", "shard", "_creationTime"];
339
380
  }, {}, {}>;
381
+ routeDailyRollups: import("convex/server").TableDefinition<import("convex/values").VObject<{
382
+ bucketStart: number;
383
+ continued: number;
384
+ dwellMs: number;
385
+ dwellSamples: number;
386
+ entries: number;
387
+ generation: 1;
388
+ outgoing: {
389
+ count: number;
390
+ route: string;
391
+ }[];
392
+ pageviews: number;
393
+ route: string;
394
+ shard: number;
395
+ siteId: import("convex/values").GenericId<"sites">;
396
+ visitorSketch: {
397
+ precision: number;
398
+ registers: ArrayBuffer;
399
+ version: 1;
400
+ };
401
+ }, {
402
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
403
+ bucketStart: import("convex/values").VFloat64<number, "required">;
404
+ shard: import("convex/values").VFloat64<number, "required">;
405
+ generation: import("convex/values").VLiteral<1, "required">;
406
+ route: import("convex/values").VString<string, "required">;
407
+ pageviews: import("convex/values").VFloat64<number, "required">;
408
+ entries: import("convex/values").VFloat64<number, "required">;
409
+ continued: import("convex/values").VFloat64<number, "required">;
410
+ dwellMs: import("convex/values").VFloat64<number, "required">;
411
+ dwellSamples: import("convex/values").VFloat64<number, "required">;
412
+ visitorSketch: import("convex/values").VObject<{
413
+ precision: number;
414
+ registers: ArrayBuffer;
415
+ version: 1;
416
+ }, {
417
+ version: import("convex/values").VLiteral<1, "required">;
418
+ precision: import("convex/values").VFloat64<number, "required">;
419
+ registers: import("convex/values").VBytes<ArrayBuffer, "required">;
420
+ }, "required", "precision" | "registers" | "version">;
421
+ outgoing: import("convex/values").VArray<{
422
+ count: number;
423
+ route: string;
424
+ }[], import("convex/values").VObject<{
425
+ count: number;
426
+ route: string;
427
+ }, {
428
+ route: import("convex/values").VString<string, "required">;
429
+ count: import("convex/values").VFloat64<number, "required">;
430
+ }, "required", "count" | "route">, "required">;
431
+ }, "required", "bucketStart" | "continued" | "dwellMs" | "dwellSamples" | "entries" | "generation" | "outgoing" | "pageviews" | "route" | "shard" | "siteId" | "visitorSketch" | "visitorSketch.precision" | "visitorSketch.registers" | "visitorSketch.version">, {
432
+ by_siteId_and_bucketStart: ["siteId", "bucketStart", "_creationTime"];
433
+ by_siteId_and_route_and_bucketStart_and_shard: ["siteId", "route", "bucketStart", "shard", "_creationTime"];
434
+ }, {}, {}>;
435
+ goalDailyRollups: import("convex/server").TableDefinition<import("convex/values").VObject<{
436
+ bucketStart: number;
437
+ completions: number;
438
+ generation: 1;
439
+ goalId: import("convex/values").GenericId<"goals">;
440
+ goalKey: string;
441
+ shard: number;
442
+ siteId: import("convex/values").GenericId<"sites">;
443
+ valueCents: number;
444
+ }, {
445
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
446
+ goalId: import("convex/values").VId<import("convex/values").GenericId<"goals">, "required">;
447
+ bucketStart: import("convex/values").VFloat64<number, "required">;
448
+ shard: import("convex/values").VFloat64<number, "required">;
449
+ generation: import("convex/values").VLiteral<1, "required">;
450
+ goalKey: import("convex/values").VString<string, "required">;
451
+ completions: import("convex/values").VFloat64<number, "required">;
452
+ valueCents: import("convex/values").VFloat64<number, "required">;
453
+ }, "required", "bucketStart" | "completions" | "generation" | "goalId" | "goalKey" | "shard" | "siteId" | "valueCents">, {
454
+ by_siteId_and_bucketStart: ["siteId", "bucketStart", "_creationTime"];
455
+ by_siteId_and_goalId_and_bucketStart: ["siteId", "goalId", "bucketStart", "_creationTime"];
456
+ by_siteId_and_goalId_and_bucketStart_and_shard: ["siteId", "goalId", "bucketStart", "shard", "_creationTime"];
457
+ }, {}, {}>;
458
+ funnelDailyRollups: import("convex/server").TableDefinition<import("convex/values").VObject<{
459
+ bucketStart: number;
460
+ funnelId: import("convex/values").GenericId<"funnels">;
461
+ generation: 1;
462
+ shard: number;
463
+ siteId: import("convex/values").GenericId<"sites">;
464
+ steps: {
465
+ completions: number;
466
+ entrants: number;
467
+ step: number;
468
+ }[];
469
+ }, {
470
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
471
+ funnelId: import("convex/values").VId<import("convex/values").GenericId<"funnels">, "required">;
472
+ bucketStart: import("convex/values").VFloat64<number, "required">;
473
+ shard: import("convex/values").VFloat64<number, "required">;
474
+ generation: import("convex/values").VLiteral<1, "required">;
475
+ steps: import("convex/values").VArray<{
476
+ completions: number;
477
+ entrants: number;
478
+ step: number;
479
+ }[], import("convex/values").VObject<{
480
+ completions: number;
481
+ entrants: number;
482
+ step: number;
483
+ }, {
484
+ step: import("convex/values").VFloat64<number, "required">;
485
+ entrants: import("convex/values").VFloat64<number, "required">;
486
+ completions: import("convex/values").VFloat64<number, "required">;
487
+ }, "required", "completions" | "entrants" | "step">, "required">;
488
+ }, "required", "bucketStart" | "funnelId" | "generation" | "shard" | "siteId" | "steps">, {
489
+ by_siteId_and_bucketStart: ["siteId", "bucketStart", "_creationTime"];
490
+ by_siteId_and_funnelId_and_bucketStart: ["siteId", "funnelId", "bucketStart", "_creationTime"];
491
+ by_siteId_and_funnelId_and_bucketStart_and_shard: ["siteId", "funnelId", "bucketStart", "shard", "_creationTime"];
492
+ }, {}, {}>;
493
+ vitalRollups: import("convex/server").TableDefinition<import("convex/values").VObject<{
494
+ bucketStart: number;
495
+ device: string;
496
+ metrics: {
497
+ count: number;
498
+ histogram: number[];
499
+ metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
500
+ sum: number;
501
+ }[];
502
+ page: string;
503
+ shard: number;
504
+ siteId: import("convex/values").GenericId<"sites">;
505
+ }, {
506
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
507
+ bucketStart: import("convex/values").VFloat64<number, "required">;
508
+ device: import("convex/values").VString<string, "required">;
509
+ page: import("convex/values").VString<string, "required">;
510
+ shard: import("convex/values").VFloat64<number, "required">;
511
+ metrics: import("convex/values").VArray<{
512
+ count: number;
513
+ histogram: number[];
514
+ metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
515
+ sum: number;
516
+ }[], import("convex/values").VObject<{
517
+ count: number;
518
+ histogram: number[];
519
+ metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
520
+ sum: number;
521
+ }, {
522
+ metric: import("convex/values").VUnion<"CLS" | "FCP" | "INP" | "LCP" | "TTFB", [import("convex/values").VLiteral<"LCP", "required">, import("convex/values").VLiteral<"CLS", "required">, import("convex/values").VLiteral<"INP", "required">, import("convex/values").VLiteral<"FCP", "required">, import("convex/values").VLiteral<"TTFB", "required">], "required", never>;
523
+ count: import("convex/values").VFloat64<number, "required">;
524
+ sum: import("convex/values").VFloat64<number, "required">;
525
+ histogram: import("convex/values").VArray<number[], import("convex/values").VFloat64<number, "required">, "required">;
526
+ }, "required", "count" | "histogram" | "metric" | "sum">, "required">;
527
+ }, "required", "bucketStart" | "device" | "metrics" | "page" | "shard" | "siteId">, {
528
+ by_key: ["siteId", "bucketStart", "device", "page", "shard", "_creationTime"];
529
+ by_siteId_and_bucketStart: ["siteId", "bucketStart", "_creationTime"];
530
+ }, {}, {}>;
531
+ affiliateDailyRollups: import("convex/server").TableDefinition<import("convex/values").VObject<{
532
+ affiliateId: import("convex/values").GenericId<"affiliates">;
533
+ affiliateSlug: string;
534
+ bucketStart: number;
535
+ commissionCents: number;
536
+ conversions: number;
537
+ generation: 1;
538
+ revenueCents: number;
539
+ shard: number;
540
+ siteId: import("convex/values").GenericId<"sites">;
541
+ visitorSketch: {
542
+ precision: number;
543
+ registers: ArrayBuffer;
544
+ version: 1;
545
+ };
546
+ visits: number;
547
+ }, {
548
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
549
+ affiliateId: import("convex/values").VId<import("convex/values").GenericId<"affiliates">, "required">;
550
+ bucketStart: import("convex/values").VFloat64<number, "required">;
551
+ shard: import("convex/values").VFloat64<number, "required">;
552
+ generation: import("convex/values").VLiteral<1, "required">;
553
+ affiliateSlug: import("convex/values").VString<string, "required">;
554
+ visits: import("convex/values").VFloat64<number, "required">;
555
+ visitorSketch: import("convex/values").VObject<{
556
+ precision: number;
557
+ registers: ArrayBuffer;
558
+ version: 1;
559
+ }, {
560
+ version: import("convex/values").VLiteral<1, "required">;
561
+ precision: import("convex/values").VFloat64<number, "required">;
562
+ registers: import("convex/values").VBytes<ArrayBuffer, "required">;
563
+ }, "required", "precision" | "registers" | "version">;
564
+ conversions: import("convex/values").VFloat64<number, "required">;
565
+ revenueCents: import("convex/values").VFloat64<number, "required">;
566
+ commissionCents: import("convex/values").VFloat64<number, "required">;
567
+ }, "required", "affiliateId" | "affiliateSlug" | "bucketStart" | "commissionCents" | "conversions" | "generation" | "revenueCents" | "shard" | "siteId" | "visitorSketch" | "visitorSketch.precision" | "visitorSketch.registers" | "visitorSketch.version" | "visits">, {
568
+ by_siteId_and_affiliateId_and_bucketStart: ["siteId", "affiliateId", "bucketStart", "_creationTime"];
569
+ by_siteId_and_affiliateId_and_bucketStart_and_shard: ["siteId", "affiliateId", "bucketStart", "shard", "_creationTime"];
570
+ by_siteId_and_bucketStart: ["siteId", "bucketStart", "_creationTime"];
571
+ }, {}, {}>;
572
+ reportRollupQueue: import("convex/server").TableDefinition<import("convex/values").VObject<{
573
+ affiliates: {
574
+ affiliateId: import("convex/values").GenericId<"affiliates">;
575
+ affiliateSlug: string;
576
+ bucketStart: number;
577
+ commissionCents: number;
578
+ conversions: number;
579
+ revenueCents: number;
580
+ shard: number;
581
+ visitorKeys: string[];
582
+ visits: number;
583
+ }[];
584
+ createdAt: number;
585
+ funnelSteps: {
586
+ bucketStart: number;
587
+ completions: number;
588
+ entrants: number;
589
+ funnelId: import("convex/values").GenericId<"funnels">;
590
+ shard: number;
591
+ step: number;
592
+ }[];
593
+ funnels: {
594
+ bucketStart: number;
595
+ funnelId: import("convex/values").GenericId<"funnels">;
596
+ shard: number;
597
+ steps: {
598
+ completions: number;
599
+ entrants: number;
600
+ step: number;
601
+ }[];
602
+ }[];
603
+ goals: {
604
+ bucketStart: number;
605
+ completions: number;
606
+ goalId: import("convex/values").GenericId<"goals">;
607
+ goalKey: string;
608
+ shard: number;
609
+ valueCents: number;
610
+ }[];
611
+ routes: {
612
+ bucketStart: number;
613
+ continued: number;
614
+ dwellMs: number;
615
+ dwellSamples: number;
616
+ entries: number;
617
+ outgoing: {
618
+ count: number;
619
+ route: string;
620
+ }[];
621
+ pageviews: number;
622
+ route: string;
623
+ shard: number;
624
+ visitorKeys: string[];
625
+ }[];
626
+ siteId: import("convex/values").GenericId<"sites">;
627
+ vitals: {
628
+ bucketStart: number;
629
+ device: string;
630
+ metrics: {
631
+ count: number;
632
+ histogram: number[];
633
+ metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
634
+ sum: number;
635
+ }[];
636
+ page: string;
637
+ shard: number;
638
+ }[];
639
+ }, {
640
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
641
+ createdAt: import("convex/values").VFloat64<number, "required">;
642
+ goals: import("convex/values").VArray<{
643
+ bucketStart: number;
644
+ completions: number;
645
+ goalId: import("convex/values").GenericId<"goals">;
646
+ goalKey: string;
647
+ shard: number;
648
+ valueCents: number;
649
+ }[], import("convex/values").VObject<{
650
+ bucketStart: number;
651
+ completions: number;
652
+ goalId: import("convex/values").GenericId<"goals">;
653
+ goalKey: string;
654
+ shard: number;
655
+ valueCents: number;
656
+ }, {
657
+ goalId: import("convex/values").VId<import("convex/values").GenericId<"goals">, "required">;
658
+ bucketStart: import("convex/values").VFloat64<number, "required">;
659
+ shard: import("convex/values").VFloat64<number, "required">;
660
+ goalKey: import("convex/values").VString<string, "required">;
661
+ completions: import("convex/values").VFloat64<number, "required">;
662
+ valueCents: import("convex/values").VFloat64<number, "required">;
663
+ }, "required", "bucketStart" | "completions" | "goalId" | "goalKey" | "shard" | "valueCents">, "required">;
664
+ funnels: import("convex/values").VArray<{
665
+ bucketStart: number;
666
+ funnelId: import("convex/values").GenericId<"funnels">;
667
+ shard: number;
668
+ steps: {
669
+ completions: number;
670
+ entrants: number;
671
+ step: number;
672
+ }[];
673
+ }[], import("convex/values").VObject<{
674
+ bucketStart: number;
675
+ funnelId: import("convex/values").GenericId<"funnels">;
676
+ shard: number;
677
+ steps: {
678
+ completions: number;
679
+ entrants: number;
680
+ step: number;
681
+ }[];
682
+ }, {
683
+ funnelId: import("convex/values").VId<import("convex/values").GenericId<"funnels">, "required">;
684
+ bucketStart: import("convex/values").VFloat64<number, "required">;
685
+ shard: import("convex/values").VFloat64<number, "required">;
686
+ steps: import("convex/values").VArray<{
687
+ completions: number;
688
+ entrants: number;
689
+ step: number;
690
+ }[], import("convex/values").VObject<{
691
+ completions: number;
692
+ entrants: number;
693
+ step: number;
694
+ }, {
695
+ step: import("convex/values").VFloat64<number, "required">;
696
+ entrants: import("convex/values").VFloat64<number, "required">;
697
+ completions: import("convex/values").VFloat64<number, "required">;
698
+ }, "required", "completions" | "entrants" | "step">, "required">;
699
+ }, "required", "bucketStart" | "funnelId" | "shard" | "steps">, "required">;
700
+ funnelSteps: import("convex/values").VArray<{
701
+ bucketStart: number;
702
+ completions: number;
703
+ entrants: number;
704
+ funnelId: import("convex/values").GenericId<"funnels">;
705
+ shard: number;
706
+ step: number;
707
+ }[], import("convex/values").VObject<{
708
+ bucketStart: number;
709
+ completions: number;
710
+ entrants: number;
711
+ funnelId: import("convex/values").GenericId<"funnels">;
712
+ shard: number;
713
+ step: number;
714
+ }, {
715
+ funnelId: import("convex/values").VId<import("convex/values").GenericId<"funnels">, "required">;
716
+ bucketStart: import("convex/values").VFloat64<number, "required">;
717
+ step: import("convex/values").VFloat64<number, "required">;
718
+ shard: import("convex/values").VFloat64<number, "required">;
719
+ entrants: import("convex/values").VFloat64<number, "required">;
720
+ completions: import("convex/values").VFloat64<number, "required">;
721
+ }, "required", "bucketStart" | "completions" | "entrants" | "funnelId" | "shard" | "step">, "required">;
722
+ affiliates: import("convex/values").VArray<{
723
+ affiliateId: import("convex/values").GenericId<"affiliates">;
724
+ affiliateSlug: string;
725
+ bucketStart: number;
726
+ commissionCents: number;
727
+ conversions: number;
728
+ revenueCents: number;
729
+ shard: number;
730
+ visitorKeys: string[];
731
+ visits: number;
732
+ }[], import("convex/values").VObject<{
733
+ affiliateId: import("convex/values").GenericId<"affiliates">;
734
+ affiliateSlug: string;
735
+ bucketStart: number;
736
+ commissionCents: number;
737
+ conversions: number;
738
+ revenueCents: number;
739
+ shard: number;
740
+ visitorKeys: string[];
741
+ visits: number;
742
+ }, {
743
+ affiliateId: import("convex/values").VId<import("convex/values").GenericId<"affiliates">, "required">;
744
+ bucketStart: import("convex/values").VFloat64<number, "required">;
745
+ shard: import("convex/values").VFloat64<number, "required">;
746
+ affiliateSlug: import("convex/values").VString<string, "required">;
747
+ visits: import("convex/values").VFloat64<number, "required">;
748
+ visitorKeys: import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">;
749
+ conversions: import("convex/values").VFloat64<number, "required">;
750
+ revenueCents: import("convex/values").VFloat64<number, "required">;
751
+ commissionCents: import("convex/values").VFloat64<number, "required">;
752
+ }, "required", "affiliateId" | "affiliateSlug" | "bucketStart" | "commissionCents" | "conversions" | "revenueCents" | "shard" | "visitorKeys" | "visits">, "required">;
753
+ routes: import("convex/values").VArray<{
754
+ bucketStart: number;
755
+ continued: number;
756
+ dwellMs: number;
757
+ dwellSamples: number;
758
+ entries: number;
759
+ outgoing: {
760
+ count: number;
761
+ route: string;
762
+ }[];
763
+ pageviews: number;
764
+ route: string;
765
+ shard: number;
766
+ visitorKeys: string[];
767
+ }[], import("convex/values").VObject<{
768
+ bucketStart: number;
769
+ continued: number;
770
+ dwellMs: number;
771
+ dwellSamples: number;
772
+ entries: number;
773
+ outgoing: {
774
+ count: number;
775
+ route: string;
776
+ }[];
777
+ pageviews: number;
778
+ route: string;
779
+ shard: number;
780
+ visitorKeys: string[];
781
+ }, {
782
+ route: import("convex/values").VString<string, "required">;
783
+ bucketStart: import("convex/values").VFloat64<number, "required">;
784
+ shard: import("convex/values").VFloat64<number, "required">;
785
+ pageviews: import("convex/values").VFloat64<number, "required">;
786
+ entries: import("convex/values").VFloat64<number, "required">;
787
+ continued: import("convex/values").VFloat64<number, "required">;
788
+ dwellMs: import("convex/values").VFloat64<number, "required">;
789
+ dwellSamples: import("convex/values").VFloat64<number, "required">;
790
+ visitorKeys: import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">;
791
+ outgoing: import("convex/values").VArray<{
792
+ count: number;
793
+ route: string;
794
+ }[], import("convex/values").VObject<{
795
+ count: number;
796
+ route: string;
797
+ }, {
798
+ route: import("convex/values").VString<string, "required">;
799
+ count: import("convex/values").VFloat64<number, "required">;
800
+ }, "required", "count" | "route">, "required">;
801
+ }, "required", "bucketStart" | "continued" | "dwellMs" | "dwellSamples" | "entries" | "outgoing" | "pageviews" | "route" | "shard" | "visitorKeys">, "required">;
802
+ vitals: import("convex/values").VArray<{
803
+ bucketStart: number;
804
+ device: string;
805
+ metrics: {
806
+ count: number;
807
+ histogram: number[];
808
+ metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
809
+ sum: number;
810
+ }[];
811
+ page: string;
812
+ shard: number;
813
+ }[], import("convex/values").VObject<{
814
+ bucketStart: number;
815
+ device: string;
816
+ metrics: {
817
+ count: number;
818
+ histogram: number[];
819
+ metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
820
+ sum: number;
821
+ }[];
822
+ page: string;
823
+ shard: number;
824
+ }, {
825
+ bucketStart: import("convex/values").VFloat64<number, "required">;
826
+ device: import("convex/values").VString<string, "required">;
827
+ page: import("convex/values").VString<string, "required">;
828
+ shard: import("convex/values").VFloat64<number, "required">;
829
+ metrics: import("convex/values").VArray<{
830
+ count: number;
831
+ histogram: number[];
832
+ metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
833
+ sum: number;
834
+ }[], import("convex/values").VObject<{
835
+ count: number;
836
+ histogram: number[];
837
+ metric: "CLS" | "FCP" | "INP" | "LCP" | "TTFB";
838
+ sum: number;
839
+ }, {
840
+ metric: import("convex/values").VUnion<"CLS" | "FCP" | "INP" | "LCP" | "TTFB", [import("convex/values").VLiteral<"LCP", "required">, import("convex/values").VLiteral<"CLS", "required">, import("convex/values").VLiteral<"INP", "required">, import("convex/values").VLiteral<"FCP", "required">, import("convex/values").VLiteral<"TTFB", "required">], "required", never>;
841
+ count: import("convex/values").VFloat64<number, "required">;
842
+ sum: import("convex/values").VFloat64<number, "required">;
843
+ histogram: import("convex/values").VArray<number[], import("convex/values").VFloat64<number, "required">, "required">;
844
+ }, "required", "count" | "histogram" | "metric" | "sum">, "required">;
845
+ }, "required", "bucketStart" | "device" | "metrics" | "page" | "shard">, "required">;
846
+ }, "required", "affiliates" | "createdAt" | "funnelSteps" | "funnels" | "goals" | "routes" | "siteId" | "vitals">, {
847
+ by_siteId_and_createdAt: ["siteId", "createdAt", "_creationTime"];
848
+ }, {}, {}>;
849
+ rollupFoldStates: import("convex/server").TableDefinition<import("convex/values").VObject<{
850
+ leaseUntil: number;
851
+ siteId: import("convex/values").GenericId<"sites">;
852
+ token: string;
853
+ }, {
854
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
855
+ leaseUntil: import("convex/values").VFloat64<number, "required">;
856
+ token: import("convex/values").VString<string, "required">;
857
+ }, "required", "leaseUntil" | "siteId" | "token">, {
858
+ by_siteId: ["siteId", "_creationTime"];
859
+ }, {}, {}>;
860
+ analyticsCoverage: import("convex/server").TableDefinition<import("convex/values").VObject<{
861
+ countersSince?: number | undefined;
862
+ generation: 1;
863
+ localDaySince?: number | undefined;
864
+ retained: {
865
+ before: number;
866
+ dataset: string;
867
+ }[];
868
+ rollupCompleteFrom: number;
869
+ siteId: import("convex/values").GenericId<"sites">;
870
+ siteMapSince?: number | undefined;
871
+ updatedAt: number;
872
+ }, {
873
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
874
+ generation: import("convex/values").VLiteral<1, "required">;
875
+ rollupCompleteFrom: import("convex/values").VFloat64<number, "required">;
876
+ siteMapSince: import("convex/values").VFloat64<number | undefined, "optional">;
877
+ countersSince: import("convex/values").VFloat64<number | undefined, "optional">;
878
+ localDaySince: import("convex/values").VFloat64<number | undefined, "optional">;
879
+ retained: import("convex/values").VArray<{
880
+ before: number;
881
+ dataset: string;
882
+ }[], import("convex/values").VObject<{
883
+ before: number;
884
+ dataset: string;
885
+ }, {
886
+ dataset: import("convex/values").VString<string, "required">;
887
+ before: import("convex/values").VFloat64<number, "required">;
888
+ }, "required", "before" | "dataset">, "required">;
889
+ updatedAt: import("convex/values").VFloat64<number, "required">;
890
+ }, "required", "countersSince" | "generation" | "localDaySince" | "retained" | "rollupCompleteFrom" | "siteId" | "siteMapSince" | "updatedAt">, {
891
+ by_siteId: ["siteId", "_creationTime"];
892
+ }, {}, {}>;
893
+ retentionPolicies: import("convex/server").TableDefinition<import("convex/values").VObject<{
894
+ aggregatesDays: number;
895
+ conversionsDays: number;
896
+ eventsDays: number;
897
+ reportsDays: number;
898
+ sessionsDays: number;
899
+ siteId: import("convex/values").GenericId<"sites">;
900
+ updatedAt: number;
901
+ }, {
902
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
903
+ eventsDays: import("convex/values").VFloat64<number, "required">;
904
+ sessionsDays: import("convex/values").VFloat64<number, "required">;
905
+ conversionsDays: import("convex/values").VFloat64<number, "required">;
906
+ aggregatesDays: import("convex/values").VFloat64<number, "required">;
907
+ reportsDays: import("convex/values").VFloat64<number, "required">;
908
+ updatedAt: import("convex/values").VFloat64<number, "required">;
909
+ }, "required", "aggregatesDays" | "conversionsDays" | "eventsDays" | "reportsDays" | "sessionsDays" | "siteId" | "updatedAt">, {
910
+ by_siteId: ["siteId", "_creationTime"];
911
+ }, {}, {}>;
912
+ retentionStates: import("convex/server").TableDefinition<import("convex/values").VObject<{
913
+ attempt: number;
914
+ before: number;
915
+ deleted: number;
916
+ generation: number;
917
+ kind: string;
918
+ leaseExpiresAt?: number | undefined;
919
+ scheduledAt?: number | undefined;
920
+ siteId: import("convex/values").GenericId<"sites">;
921
+ status: "complete" | "pending" | "running";
922
+ updatedAt: number;
923
+ }, {
924
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
925
+ kind: import("convex/values").VString<string, "required">;
926
+ before: import("convex/values").VFloat64<number, "required">;
927
+ status: import("convex/values").VUnion<"complete" | "pending" | "running", [import("convex/values").VLiteral<"pending", "required">, import("convex/values").VLiteral<"running", "required">, import("convex/values").VLiteral<"complete", "required">], "required", never>;
928
+ generation: import("convex/values").VFloat64<number, "required">;
929
+ attempt: import("convex/values").VFloat64<number, "required">;
930
+ leaseExpiresAt: import("convex/values").VFloat64<number | undefined, "optional">;
931
+ scheduledAt: import("convex/values").VFloat64<number | undefined, "optional">;
932
+ deleted: import("convex/values").VFloat64<number, "required">;
933
+ updatedAt: import("convex/values").VFloat64<number, "required">;
934
+ }, "required", "attempt" | "before" | "deleted" | "generation" | "kind" | "leaseExpiresAt" | "scheduledAt" | "siteId" | "status" | "updatedAt">, {
935
+ by_siteId_and_kind: ["siteId", "kind", "_creationTime"];
936
+ }, {}, {}>;
340
937
  goals: import("convex/server").TableDefinition<import("convex/values").VObject<{
341
938
  active: boolean;
342
939
  createdAt: number;
@@ -490,6 +1087,31 @@ declare const _default: import("convex/server").SchemaDefinition<{
490
1087
  by_siteId: ["siteId", "_creationTime"];
491
1088
  by_siteId_and_slug: ["siteId", "slug", "_creationTime"];
492
1089
  }, {}, {}>;
1090
+ visitorSecrets: import("convex/server").TableDefinition<import("convex/values").VObject<{
1091
+ createdAt: number;
1092
+ key: "current";
1093
+ value: string;
1094
+ }, {
1095
+ key: import("convex/values").VLiteral<"current", "required">;
1096
+ value: import("convex/values").VString<string, "required">;
1097
+ createdAt: import("convex/values").VFloat64<number, "required">;
1098
+ }, "required", "createdAt" | "key" | "value">, {
1099
+ by_key: ["key", "_creationTime"];
1100
+ }, {}, {}>;
1101
+ visitorAliases: import("convex/server").TableDefinition<import("convex/values").VObject<{
1102
+ linkedAt: number;
1103
+ previousVisitorId: string;
1104
+ siteId: import("convex/values").GenericId<"sites">;
1105
+ visitorId: string;
1106
+ }, {
1107
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
1108
+ visitorId: import("convex/values").VString<string, "required">;
1109
+ previousVisitorId: import("convex/values").VString<string, "required">;
1110
+ linkedAt: import("convex/values").VFloat64<number, "required">;
1111
+ }, "required", "linkedAt" | "previousVisitorId" | "siteId" | "visitorId">, {
1112
+ by_siteId_and_previousVisitorId: ["siteId", "previousVisitorId", "_creationTime"];
1113
+ by_siteId_and_visitorId: ["siteId", "visitorId", "_creationTime"];
1114
+ }, {}, {}>;
493
1115
  visitorAttributions: import("convex/server").TableDefinition<import("convex/values").VObject<{
494
1116
  affiliateId: import("convex/values").GenericId<"affiliates">;
495
1117
  affiliateSlug: string;