@iann29/rastro 0.1.0-alpha.4 → 0.1.0-alpha.5

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 (71) hide show
  1. package/README.md +128 -29
  2. package/agent/manifest.json +1 -1
  3. package/dist/client/index.d.ts +69 -11
  4. package/dist/client/index.d.ts.map +1 -1
  5. package/dist/client/index.js +19 -1
  6. package/dist/client/index.js.map +1 -1
  7. package/dist/component/_generated/api.d.ts +6 -0
  8. package/dist/component/_generated/api.d.ts.map +1 -1
  9. package/dist/component/_generated/api.js.map +1 -1
  10. package/dist/component/_generated/component.d.ts +19 -1
  11. package/dist/component/_generated/component.d.ts.map +1 -1
  12. package/dist/component/constants.d.ts +1 -0
  13. package/dist/component/constants.d.ts.map +1 -1
  14. package/dist/component/constants.js +1 -0
  15. package/dist/component/constants.js.map +1 -1
  16. package/dist/component/eventStore.d.ts +1 -0
  17. package/dist/component/eventStore.d.ts.map +1 -1
  18. package/dist/component/http.d.ts.map +1 -1
  19. package/dist/component/http.js +40 -29
  20. package/dist/component/http.js.map +1 -1
  21. package/dist/component/identity.d.ts +13 -0
  22. package/dist/component/identity.d.ts.map +1 -0
  23. package/dist/component/identity.js +58 -0
  24. package/dist/component/identity.js.map +1 -0
  25. package/dist/component/ingest.d.ts +1 -0
  26. package/dist/component/ingest.d.ts.map +1 -1
  27. package/dist/component/ingest.js +25 -6
  28. package/dist/component/ingest.js.map +1 -1
  29. package/dist/component/reports.d.ts +10 -1
  30. package/dist/component/reports.d.ts.map +1 -1
  31. package/dist/component/reports.js +22 -15
  32. package/dist/component/reports.js.map +1 -1
  33. package/dist/component/sanitize.d.ts.map +1 -1
  34. package/dist/component/sanitize.js +4 -1
  35. package/dist/component/sanitize.js.map +1 -1
  36. package/dist/component/schema.d.ts +37 -6
  37. package/dist/component/schema.js +13 -0
  38. package/dist/component/schema.js.map +1 -1
  39. package/dist/component/useragent.d.ts +9 -0
  40. package/dist/component/useragent.d.ts.map +1 -0
  41. package/dist/component/useragent.js +152 -0
  42. package/dist/component/useragent.js.map +1 -0
  43. package/dist/component/validators.d.ts +16 -10
  44. package/dist/component/validators.d.ts.map +1 -1
  45. package/dist/component/validators.js +3 -1
  46. package/dist/component/validators.js.map +1 -1
  47. package/dist/component/visitors.d.ts +19 -0
  48. package/dist/component/visitors.d.ts.map +1 -0
  49. package/dist/component/visitors.js +86 -0
  50. package/dist/component/visitors.js.map +1 -0
  51. package/dist/tracker/generated.d.ts +4 -4
  52. package/dist/tracker/generated.d.ts.map +1 -1
  53. package/dist/tracker/generated.js +4 -4
  54. package/dist/tracker/generated.js.map +1 -1
  55. package/dist/tracker/tracker.js +23 -11
  56. package/dist/tracker/tracker.js.map +1 -1
  57. package/dist/tracker.min.js +1 -1
  58. package/docs/federation.md +1 -1
  59. package/package.json +12 -8
  60. package/src/component/_generated/api.ts +6 -0
  61. package/src/component/_generated/component.ts +18 -1
  62. package/src/component/constants.ts +1 -0
  63. package/src/component/http.ts +55 -34
  64. package/src/component/identity.ts +74 -0
  65. package/src/component/ingest.ts +29 -3
  66. package/src/component/reports.ts +21 -14
  67. package/src/component/sanitize.ts +4 -1
  68. package/src/component/schema.ts +15 -0
  69. package/src/component/useragent.ts +171 -0
  70. package/src/component/validators.ts +3 -0
  71. package/src/component/visitors.ts +105 -0
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Privacy-first, real-time web analytics built as an isolated Convex component.
6
6
 
7
- Amage Rastro combines a 1,000-byte gzip browser tracker with reactive traffic
7
+ Amage Rastro combines a 1.1 KB gzip browser tracker with reactive traffic
8
8
  metrics, a live visitor atlas, journey timelines, trusted payment attribution,
9
9
  goals, funnels, affiliates, and multi-site reports. Data and functions stay
10
10
  inside your Convex deployment.
@@ -34,19 +34,20 @@ caveats are reported separately rather than collapsed into one capacity claim.
34
34
 
35
35
  ## What ships
36
36
 
37
- | Capability | Implementation |
38
- | --------------------------- | ---------------------------------------------------------------------------------------------------- |
39
- | Live visitor map | Reactive live sessions with coarse city-level coordinates and TTL expiry |
40
- | Traffic analytics | Sharded hour/day rollups, time series, top pages, sources, countries, devices, browsers, and events |
41
- | Journey replay | Bounded pageview/click/custom-event timelines; no DOM, keystroke, or form-value recording |
42
- | Payment conversion tracking | Trusted server-side ledger with idempotent event IDs and canonical site currency |
43
- | Goals and funnels | Exact pageview/custom-event goals and ordered conversion funnels |
44
- | Affiliates | Referral attribution, trusted revenue, and commission accounting |
45
- | Cross-site analytics | Reports over up to ten authorized site IDs with a preloaded pseudonymous visitor ID |
46
- | Automatic GeoIP | Opt-in native request metadata plus IPinfo/IPWhois fallback; bounded quota and no raw-IP persistence |
47
- | Auto-captured clicks | Anchors, buttons, outbound links, and explicit `data-rastro-event` controls |
48
- | Cookieless mode | Session-scoped pseudonymous IDs in `sessionStorage`; no cookies |
49
- | Tiny tracker | 1,846 bytes raw, 1,000 bytes gzip; the test suite enforces `< 1,024` bytes |
37
+ | Capability | Implementation |
38
+ | --------------------------- | -------------------------------------------------------------------------------------------------------- |
39
+ | Live visitor map | Reactive live sessions with coarse city-level coordinates and TTL expiry |
40
+ | Traffic analytics | Sharded hour/day rollups, time series, top pages, sources, countries, devices, browsers, and events |
41
+ | Journey replay | Bounded pageview/click/custom-event timelines; no DOM, keystroke, or form-value recording |
42
+ | Payment conversion tracking | Trusted server-side ledger with idempotent event IDs and canonical site currency |
43
+ | Goals and funnels | Exact pageview/custom-event goals and ordered conversion funnels |
44
+ | Affiliates | Referral attribution, trusted revenue, and commission accounting |
45
+ | Cross-site analytics | Reports over up to ten authorized site IDs with a preloaded pseudonymous visitor ID |
46
+ | Automatic GeoIP | Opt-in native request metadata plus IPinfo/IPWhois fallback; bounded quota and no raw-IP persistence |
47
+ | Auto-captured clicks | Anchors, buttons, and `data-rastro-event` controls with a bounded visible label; outbound origin+path |
48
+ | Bot filtering | Self-declared crawlers, unfurlers, monitors, HTTP libraries, and headless browsers rejected at ingestion |
49
+ | Cookieless mode | Session-scoped pseudonymous IDs in `sessionStorage`; no cookies |
50
+ | Tiny tracker | 2,132 bytes raw, 1,127 bytes gzip; the test suite enforces `< 1,280` bytes gzip |
50
51
 
51
52
  ## Quickstart
52
53
 
@@ -175,6 +176,40 @@ the internal `geo:probe` action. If health reports no usable client IP, use
175
176
  trusted Vercel/Cloudflare geographic headers with `RASTRO_TRUST_PROXY` or fix
176
177
  the deployment's proxy forwarding.
177
178
 
179
+ ### Browser and device classification
180
+
181
+ The tracker sends no client identification. Ingestion derives `browser`, `os`,
182
+ and `device` from headers the browser attaches itself, and persists only those
183
+ three normalized values; the raw `User-Agent` never reaches a mutation or a
184
+ component table.
185
+
186
+ Chromium attaches the low-entropy `Sec-CH-UA`, `Sec-CH-UA-Mobile`, and
187
+ `Sec-CH-UA-Platform` client hints to cross-origin requests from secure origins,
188
+ with no `Accept-CH` opt-in required of the tracked site. They are preferred when
189
+ present, because they are the only signal separating Brave, Opera, Vivaldi,
190
+ Samsung Internet, Yandex, and bare Chromium from Chrome: Brave ships Chrome's
191
+ `User-Agent` verbatim by design. Hint brands are allowlisted, so an unrecognized
192
+ or forged brand falls back to the `User-Agent` instead of entering the browser
193
+ dimension verbatim.
194
+
195
+ The `User-Agent` remains the fallback for Firefox and Safari, which implement no
196
+ client hints, and for insecure origins, which receive none. Known limits of that
197
+ path:
198
+
199
+ - iPadOS 13+ requests sites with a Macintosh `User-Agent` by default and Safari
200
+ sends no hints, so those sessions are reported as desktop macOS.
201
+ - Without hints every Android client is reported as mobile;
202
+ `Sec-CH-UA-Mobile: ?0` on the Android platform is the only available tablet
203
+ signal, because the explicit `Sec-CH-UA-Form-Factors` hint is high entropy and
204
+ would require an `Accept-CH` opt-in and a permissions-policy delegation from
205
+ every tracked site.
206
+ - Known bots are rejected at ingestion by `User-Agent`: self-declared crawlers,
207
+ link unfurlers, uptime monitors, HTTP libraries, headless browsers, and any
208
+ agent carrying a URL. The response keeps the usual counters with `rejected`
209
+ set and adds `X-Rastro-Rejected: bot`; overview metadata reports
210
+ `botDetection` as `userAgent`. A scripted browser that spoofs a stock
211
+ `User-Agent` is still counted as an ordinary session.
212
+
178
213
  ### 3. Create a site
179
214
 
180
215
  Components cannot read the host app's authentication state. The host must
@@ -332,6 +367,12 @@ For declarative click capture:
332
367
  </button>
333
368
  ```
334
369
 
370
+ Auto-captured clicks record the control's visible text, bounded to 64 characters
371
+ and whitespace-normalized, so journeys read "Clicked «View pricing»" without
372
+ annotation. `data-rastro-label` replaces that text; use it on controls whose
373
+ copy may contain personal data. Input values are never read. Outbound links keep
374
+ their origin and pathname; internal links keep the pathname.
375
+
335
376
  Properties accept bounded string, number, boolean, or null values. Never send
336
377
  emails, names, form values, secrets, or other personal data as analytics
337
378
  properties.
@@ -342,6 +383,46 @@ session or with a timestamp in another minute is allowed. The tracker preserves
342
383
  timestamps when retrying. Trusted payment event IDs remain separately
343
384
  payload-bound by the site's financial ledger.
344
385
 
386
+ ## Attribute campaigns
387
+
388
+ The tracker reads `utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, and
389
+ `utm_content` from the landing URL, keeps them in `sessionStorage` for the rest
390
+ of the session, and sends them as properties of every pageview; no other query
391
+ parameter ever leaves the page. A session's `source` is the lowercase
392
+ `utm_source` when present and the referrer host otherwise, so campaign traffic
393
+ no longer reads as `direct`. `utmSource`, `utmMedium`, and `utmCampaign` stay on
394
+ the session for journeys, and `overview.topCampaigns` ranks `utm_campaign` by
395
+ event volume next to `topSources`.
396
+
397
+ ## Identify visitors after signup
398
+
399
+ Anonymous sessions carry a random `visitorId` until the host supplies a
400
+ pseudonymous one through `data-visitor` or the `RastroScript` `visitorId` prop.
401
+ To keep the anonymous history when a visitor creates an account or signs in,
402
+ link the two ids from the trusted server path, never from the browser:
403
+
404
+ ```js
405
+ const { visitorId: anonymousVisitorId } = window.rastro("context");
406
+ // Send anonymousVisitorId with the signup or sign-in request.
407
+ ```
408
+
409
+ ```ts
410
+ await analytics.linkVisitor(ctx, {
411
+ siteId,
412
+ visitorId: user.analyticsId, // the value later passed to the tracker
413
+ previousVisitorId: anonymousVisitorId,
414
+ });
415
+ ```
416
+
417
+ `visitorJourney` for either id then returns one chronological journey; every
418
+ event keeps the id it was recorded with. Links are idempotent, an anonymous id
419
+ belongs to at most one identity, a linked id cannot be linked again, chains and
420
+ identity merges are rejected, and an identity holds at most ten aliases. The
421
+ tracker still sets no cookie: the host's own session identifies the account and
422
+ the anonymous id lives only in `sessionStorage`. Linking anonymous history to an
423
+ account turns it into personal data under the host's privacy policy; disclose it
424
+ and offer an opt-out.
425
+
345
426
  ## Attribute trusted payments
346
427
 
347
428
  Browser-created conversion events are untrusted telemetry and never affect
@@ -428,8 +509,8 @@ functions.
428
509
 
429
510
  ### Federated dashboard backend
430
511
 
431
- The reference control plane in `example/` can connect a central dashboard while
432
- telemetry remains in the customer's deployment. It uses
512
+ The reference control plane in `control-plane/` can connect a central dashboard
513
+ while telemetry remains in the customer's deployment. It uses
433
514
  `exposeFederatedAnalyticsApi` with issuer and connection-resolver options. The
434
515
  helper constructs its authorization boundary internally; it cannot accept a
435
516
  permissive host authorizer. Its surface contains a public protocol v1 manifest,
@@ -455,7 +536,7 @@ runbook.
455
536
  The `Rastro` class wraps the component boundary for host functions:
456
537
 
457
538
  - Sites: `createSite`, `updateSite`, `getSite`, `listSites`
458
- - Ingestion: `ingest`, `trackConversion`
539
+ - Ingestion: `ingest`, `trackConversion`, `linkVisitor`
459
540
  - Reports: `overview`, `liveVisitors`, `listSessions`, `sessionJourney`,
460
541
  `listConversions`, `visitorJourney`, `goalsReport`, `funnelsReport`,
461
542
  `affiliatesReport`, `dataCoverage`
@@ -472,10 +553,15 @@ cost stays constant instead of increasing with an offset.
472
553
 
473
554
  Overview responses label visitor values as either HLL-estimated unique visitors
474
555
  or legacy `bucketOccurrences`; legacy aggregate rows are never presented as
475
- exact uniques. Breakdown metadata likewise identifies page, source, country,
476
- device, browser, and event rankings as event-volume counts. Feature status is
477
- explicit: outbound-link event volume is supported, while session replay, error
478
- insights, and bot detection are currently unsupported.
556
+ exact uniques. Anonymous sessions from the same device and network within one
557
+ UTC day count as one visitor through a salted daily key, so cookieless visitor
558
+ counts no longer collapse into session counts; runtimes without a client IP fall
559
+ back to one visitor per session, which `/rastro/health` reports as
560
+ `uniqueVisitors: "session"` instead of `"dailyHash"`. Breakdown metadata
561
+ likewise identifies page, source, country, device, browser, and event rankings
562
+ as event-volume counts. Feature status is explicit: outbound-link event volume
563
+ is supported, bot detection rejects self-declared agents by `User-Agent`, and
564
+ session replay and error insights are currently unsupported.
479
565
 
480
566
  All report ranges use integer Unix milliseconds with inclusive `from` and `to`
481
567
  boundaries. Range metadata reports `boundary: "inclusive"` and
@@ -637,13 +723,20 @@ Amage Rastro's default tracker:
637
723
  - sets no cookies;
638
724
  - stores a pseudonymous session ID and referral slug in `sessionStorage`;
639
725
  - never persists raw visitor IP addresses in component tables;
726
+ - counts anonymous unique visitors through a salted hash of the request IP and
727
+ `User-Agent` that rotates every UTC day, derived in the HTTP action from a
728
+ per-deployment secret; a host-supplied `visitorId` always takes precedence,
729
+ and the raw IP never reaches a mutation or a table;
730
+ - never persists the raw `User-Agent`, only a normalized browser, operating
731
+ system, and device;
640
732
  - processes an IP only when an edge supplies geography or an operator enables a
641
733
  GeoIP provider, which receives that IP under its own privacy terms;
642
734
  - stores only country, city, and coordinates rounded to one decimal place;
643
- - does not record the DOM, screenshots, keystrokes, form values, or arbitrary
644
- page text;
645
- - captures only bounded paths, explicit properties, button/anchor targets, and
646
- outbound pathnames;
735
+ - does not record the DOM, screenshots, keystrokes, form values, input contents,
736
+ or arbitrary page text;
737
+ - captures only bounded paths, explicit properties, the visible label of a
738
+ clicked link or button (at most 64 characters, replaced by `data-rastro-label`
739
+ when present), and outbound link origins and pathnames;
647
740
  - strips query strings and fragments from stored paths and links.
648
741
 
649
742
  Cookieless does not automatically mean consent-exempt in every jurisdiction.
@@ -666,6 +759,10 @@ synapse dev --once
666
759
  npm run dev:frontend
667
760
  ```
668
761
 
762
+ The root `convex.json` targets the control plane in `control-plane/convex`. The
763
+ reference consumer host in `example/` is a separate Convex app; see
764
+ [`example/README.md`](example/README.md) to run, seed, and pair it.
765
+
669
766
  Quality gates:
670
767
 
671
768
  ```bash
@@ -683,11 +780,13 @@ affiliate commission, cross-site journeys, keyset pagination beyond 1,000 rows,
683
780
  retention, request metadata and GeoIP, exact byte boundaries, HTTP routes, React
684
781
  integration, and tracker size/behavior.
685
782
 
686
- ## Synapse demo
783
+ ## Synapse deployments
687
784
 
688
- The active private development project is `ianProjects / Rastro Analytics`. The
689
- public-facing site URL is resolved from `.env.local`; credentials and
690
- `.synapse/` are gitignored.
785
+ The repository root is linked to the private Synapse project whose DEV and PROD
786
+ deployments run the control plane in `control-plane/`. The public-facing site
787
+ URL is resolved from `.env.local`; credentials and `.synapse/` are gitignored.
788
+ The consumer host in `example/` is a separate Convex app with its own deployment
789
+ link; run its CLI commands from that directory.
691
790
 
692
791
  ## License
693
792
 
@@ -17,7 +17,7 @@
17
17
  "algorithm": "sha256",
18
18
  "agent": "711faf2ca11ee22432cb8b51c7f64fb7e25045a6509391fc8532f08b2fdf3e11",
19
19
  "llms": "8c1da1fea23f95a618c4d636840b793195fceedf05f81394df74e1ed5e3fc4da",
20
- "protocol": "6d15aa19469d1e5e008949f1f42417875137ba040bb2bf4427841a5aa0caea77",
20
+ "protocol": "3a5cba45befc3ff0b56828cb207d8ce67ddc0df6bf0280a977d4db8d7f50aaee",
21
21
  "setup": "04c61ecef029a99ba95e1002439dbd1e42ca1ce351e6deb0988fb556ffce649e",
22
22
  "upgrading": "9ff81b8a5e4a615e284916aeae8c7602f3249093599f60b97066a614db406c5a"
23
23
  }
@@ -18,6 +18,8 @@ export type IngestInput = FunctionArgs<ComponentApi["ingest"]["ingestBatch"]>;
18
18
  export type IngestResult = FunctionReturnType<ComponentApi["ingest"]["ingestBatch"]>;
19
19
  export type TrackConversionInput = Omit<FunctionArgs<ComponentApi["ingest"]["trackConversion"]>, "affiliateSlug">;
20
20
  export type TrackConversionOutput = FunctionReturnType<ComponentApi["ingest"]["trackConversion"]>;
21
+ export type LinkVisitorInput = FunctionArgs<ComponentApi["visitors"]["link"]>;
22
+ export type LinkVisitorOutput = FunctionReturnType<ComponentApi["visitors"]["link"]>;
21
23
  export type OverviewInput = FunctionArgs<ComponentApi["reports"]["overview"]>;
22
24
  export type Overview = Infer<typeof hostOverviewValidator>;
23
25
  export type LiveVisitorsInput = FunctionArgs<ComponentApi["reports"]["liveVisitors"]>;
@@ -146,6 +148,10 @@ export declare class Rastro {
146
148
  duplicates: number;
147
149
  rejected: number;
148
150
  }>;
151
+ linkVisitor(ctx: MutationCtx, args: LinkVisitorInput): Promise<{
152
+ aliasCount: number;
153
+ linked: boolean;
154
+ }>;
149
155
  overview(ctx: QueryCtx | MutationCtx | ActionCtx, args: OverviewInput): Promise<{
150
156
  currency: string;
151
157
  from: number;
@@ -153,6 +159,7 @@ export declare class Rastro {
153
159
  metadata: {
154
160
  breakdowns: {
155
161
  topBrowsers: "eventVolume";
162
+ topCampaigns: "eventVolume";
156
163
  topCountries: "eventVolume";
157
164
  topDevices: "eventVolume";
158
165
  topEvents: "eventVolume";
@@ -168,7 +175,7 @@ export declare class Rastro {
168
175
  state: "complete" | "partial" | "retained" | "unavailable";
169
176
  };
170
177
  features: {
171
- botDetection: "unsupported";
178
+ botDetection: "userAgent";
172
179
  errorInsights: "unsupported";
173
180
  outboundLinks: "eventVolume";
174
181
  sessionReplay: "unsupported";
@@ -205,6 +212,11 @@ export declare class Rastro {
205
212
  revenueCents: number;
206
213
  value: string;
207
214
  }>;
215
+ topCampaigns: Array<{
216
+ count: number;
217
+ revenueCents: number;
218
+ value: string;
219
+ }>;
208
220
  topCountries: Array<{
209
221
  count: number;
210
222
  revenueCents: number;
@@ -303,6 +315,7 @@ export declare class Rastro {
303
315
  utmMedium?: string;
304
316
  utmSource?: string;
305
317
  visitorId: string;
318
+ visitorKey?: string;
306
319
  }>;
307
320
  pageStatus?: "SplitRecommended" | "SplitRequired" | null;
308
321
  splitCursor?: string | null;
@@ -598,7 +611,7 @@ export declare class Rastro {
598
611
  hasMore: boolean;
599
612
  }>;
600
613
  }
601
- export type AnalyticsOperation = "site.create" | "site.update" | "site.get" | "site.list" | "ingest" | "conversion.track" | "report.overview" | "report.live" | "report.sessions" | "report.sessionJourney" | "report.conversions" | "report.visitorJourney" | "report.goals" | "report.funnels" | "report.affiliates" | "goal.upsert" | "goal.list" | "goal.remove" | "funnel.upsert" | "funnel.list" | "funnel.remove" | "affiliate.upsert" | "affiliate.list" | "affiliate.remove" | "retention.cleanup" | "retention.policy" | "retention.status" | "coverage.read";
614
+ 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" | "goal.upsert" | "goal.list" | "goal.remove" | "funnel.upsert" | "funnel.list" | "funnel.remove" | "affiliate.upsert" | "affiliate.list" | "affiliate.remove" | "retention.cleanup" | "retention.policy" | "retention.status" | "coverage.read";
602
615
  export type AnalyticsAuthorizationRequest = {
603
616
  operation: AnalyticsOperation;
604
617
  siteIds: string[];
@@ -613,6 +626,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
613
626
  metadata: {
614
627
  breakdowns: {
615
628
  topBrowsers: "eventVolume";
629
+ topCampaigns: "eventVolume";
616
630
  topCountries: "eventVolume";
617
631
  topDevices: "eventVolume";
618
632
  topEvents: "eventVolume";
@@ -628,7 +642,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
628
642
  state: "complete" | "partial" | "retained" | "unavailable";
629
643
  };
630
644
  features: {
631
- botDetection: "unsupported";
645
+ botDetection: "userAgent";
632
646
  errorInsights: "unsupported";
633
647
  outboundLinks: "eventVolume";
634
648
  sessionReplay: "unsupported";
@@ -665,6 +679,11 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
665
679
  revenueCents: number;
666
680
  value: string;
667
681
  }[];
682
+ topCampaigns: {
683
+ count: number;
684
+ revenueCents: number;
685
+ value: string;
686
+ }[];
668
687
  topCountries: {
669
688
  count: number;
670
689
  revenueCents: number;
@@ -779,6 +798,19 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
779
798
  count: import("convex/values").VFloat64<number, "required">;
780
799
  revenueCents: import("convex/values").VFloat64<number, "required">;
781
800
  }, "required", "count" | "revenueCents" | "value">, "required">;
801
+ topCampaigns: import("convex/values").VArray<{
802
+ count: number;
803
+ revenueCents: number;
804
+ value: string;
805
+ }[], import("convex/values").VObject<{
806
+ count: number;
807
+ revenueCents: number;
808
+ value: string;
809
+ }, {
810
+ value: import("convex/values").VString<string, "required">;
811
+ count: import("convex/values").VFloat64<number, "required">;
812
+ revenueCents: import("convex/values").VFloat64<number, "required">;
813
+ }, "required", "count" | "revenueCents" | "value">, "required">;
782
814
  topPages: import("convex/values").VArray<{
783
815
  count: number;
784
816
  revenueCents: number;
@@ -860,6 +892,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
860
892
  metadata: import("convex/values").VObject<{
861
893
  breakdowns: {
862
894
  topBrowsers: "eventVolume";
895
+ topCampaigns: "eventVolume";
863
896
  topCountries: "eventVolume";
864
897
  topDevices: "eventVolume";
865
898
  topEvents: "eventVolume";
@@ -875,7 +908,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
875
908
  state: "complete" | "partial" | "retained" | "unavailable";
876
909
  };
877
910
  features: {
878
- botDetection: "unsupported";
911
+ botDetection: "userAgent";
879
912
  errorInsights: "unsupported";
880
913
  outboundLinks: "eventVolume";
881
914
  sessionReplay: "unsupported";
@@ -909,6 +942,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
909
942
  }, "required", "basis" | "exact" | "legacyIncomplete" | "precision" | "sketchVersion">;
910
943
  breakdowns: import("convex/values").VObject<{
911
944
  topBrowsers: "eventVolume";
945
+ topCampaigns: "eventVolume";
912
946
  topCountries: "eventVolume";
913
947
  topDevices: "eventVolume";
914
948
  topEvents: "eventVolume";
@@ -917,13 +951,14 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
917
951
  topSources: "eventVolume";
918
952
  }, {
919
953
  topSources: import("convex/values").VLiteral<"eventVolume", "required">;
954
+ topCampaigns: import("convex/values").VLiteral<"eventVolume", "required">;
920
955
  topPages: import("convex/values").VLiteral<"eventVolume", "required">;
921
956
  topCountries: import("convex/values").VLiteral<"eventVolume", "required">;
922
957
  topDevices: import("convex/values").VLiteral<"eventVolume", "required">;
923
958
  topBrowsers: import("convex/values").VLiteral<"eventVolume", "required">;
924
959
  topEvents: import("convex/values").VLiteral<"eventVolume", "required">;
925
960
  topGoals: import("convex/values").VLiteral<"goalCompletionVolume", "required">;
926
- }, "required", "topBrowsers" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topPages" | "topSources">;
961
+ }, "required", "topBrowsers" | "topCampaigns" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topPages" | "topSources">;
927
962
  coverage: import("convex/values").VObject<{
928
963
  availableFrom: number | null;
929
964
  availableThrough: number | null;
@@ -949,7 +984,7 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
949
984
  timezone: import("convex/values").VLiteral<"UTC", "required">;
950
985
  }, "required", "boundary" | "from" | "timezone" | "to">;
951
986
  features: import("convex/values").VObject<{
952
- botDetection: "unsupported";
987
+ botDetection: "userAgent";
953
988
  errorInsights: "unsupported";
954
989
  outboundLinks: "eventVolume";
955
990
  sessionReplay: "unsupported";
@@ -957,10 +992,10 @@ declare const hostOverviewValidator: import("convex/values").VObject<{
957
992
  sessionReplay: import("convex/values").VLiteral<"unsupported", "required">;
958
993
  errorInsights: import("convex/values").VLiteral<"unsupported", "required">;
959
994
  outboundLinks: import("convex/values").VLiteral<"eventVolume", "required">;
960
- botDetection: import("convex/values").VLiteral<"unsupported", "required">;
995
+ botDetection: import("convex/values").VLiteral<"userAgent", "required">;
961
996
  }, "required", "botDetection" | "errorInsights" | "outboundLinks" | "sessionReplay">;
962
- }, "required", "breakdowns" | "breakdowns.topBrowsers" | "breakdowns.topCountries" | "breakdowns.topDevices" | "breakdowns.topEvents" | "breakdowns.topGoals" | "breakdowns.topPages" | "breakdowns.topSources" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "features" | "features.botDetection" | "features.errorInsights" | "features.outboundLinks" | "features.sessionReplay" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to" | "visitors" | "visitors.basis" | "visitors.exact" | "visitors.legacyIncomplete" | "visitors.precision" | "visitors.sketchVersion">;
963
- }, "required", "currency" | "from" | "interval" | "metadata" | "metadata.breakdowns" | "metadata.breakdowns.topBrowsers" | "metadata.breakdowns.topCountries" | "metadata.breakdowns.topDevices" | "metadata.breakdowns.topEvents" | "metadata.breakdowns.topGoals" | "metadata.breakdowns.topPages" | "metadata.breakdowns.topSources" | "metadata.coverage" | "metadata.coverage.availableFrom" | "metadata.coverage.availableThrough" | "metadata.coverage.generation" | "metadata.coverage.retainedBefore" | "metadata.coverage.state" | "metadata.features" | "metadata.features.botDetection" | "metadata.features.errorInsights" | "metadata.features.outboundLinks" | "metadata.features.sessionReplay" | "metadata.range" | "metadata.range.boundary" | "metadata.range.from" | "metadata.range.timezone" | "metadata.range.to" | "metadata.visitors" | "metadata.visitors.basis" | "metadata.visitors.exact" | "metadata.visitors.legacyIncomplete" | "metadata.visitors.precision" | "metadata.visitors.sketchVersion" | "timeSeries" | "to" | "topBrowsers" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topPages" | "topSources" | "totals" | "totals.clicks" | "totals.conversions" | "totals.customEvents" | "totals.events" | "totals.outboundClicks" | "totals.pageviews" | "totals.revenueCents" | "totals.sessions" | "totals.visitors">;
997
+ }, "required", "breakdowns" | "breakdowns.topBrowsers" | "breakdowns.topCampaigns" | "breakdowns.topCountries" | "breakdowns.topDevices" | "breakdowns.topEvents" | "breakdowns.topGoals" | "breakdowns.topPages" | "breakdowns.topSources" | "coverage" | "coverage.availableFrom" | "coverage.availableThrough" | "coverage.generation" | "coverage.retainedBefore" | "coverage.state" | "features" | "features.botDetection" | "features.errorInsights" | "features.outboundLinks" | "features.sessionReplay" | "range" | "range.boundary" | "range.from" | "range.timezone" | "range.to" | "visitors" | "visitors.basis" | "visitors.exact" | "visitors.legacyIncomplete" | "visitors.precision" | "visitors.sketchVersion">;
998
+ }, "required", "currency" | "from" | "interval" | "metadata" | "metadata.breakdowns" | "metadata.breakdowns.topBrowsers" | "metadata.breakdowns.topCampaigns" | "metadata.breakdowns.topCountries" | "metadata.breakdowns.topDevices" | "metadata.breakdowns.topEvents" | "metadata.breakdowns.topGoals" | "metadata.breakdowns.topPages" | "metadata.breakdowns.topSources" | "metadata.coverage" | "metadata.coverage.availableFrom" | "metadata.coverage.availableThrough" | "metadata.coverage.generation" | "metadata.coverage.retainedBefore" | "metadata.coverage.state" | "metadata.features" | "metadata.features.botDetection" | "metadata.features.errorInsights" | "metadata.features.outboundLinks" | "metadata.features.sessionReplay" | "metadata.range" | "metadata.range.boundary" | "metadata.range.from" | "metadata.range.timezone" | "metadata.range.to" | "metadata.visitors" | "metadata.visitors.basis" | "metadata.visitors.exact" | "metadata.visitors.legacyIncomplete" | "metadata.visitors.precision" | "metadata.visitors.sketchVersion" | "timeSeries" | "to" | "topBrowsers" | "topCampaigns" | "topCountries" | "topDevices" | "topEvents" | "topGoals" | "topPages" | "topSources" | "totals" | "totals.clicks" | "totals.conversions" | "totals.customEvents" | "totals.events" | "totals.outboundClicks" | "totals.pageviews" | "totals.revenueCents" | "totals.sessions" | "totals.visitors">;
964
999
  declare const hostGoalsReportValidator: import("convex/values").VObject<{
965
1000
  goals: {
966
1001
  _creationTime: number;
@@ -1442,6 +1477,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
1442
1477
  latitude?: number | undefined;
1443
1478
  longitude?: number | undefined;
1444
1479
  os?: string | undefined;
1480
+ visitorKey?: string | undefined;
1445
1481
  } | undefined;
1446
1482
  events: {
1447
1483
  affiliateSlug?: string | undefined;
@@ -1483,6 +1519,14 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
1483
1519
  duplicates: number;
1484
1520
  rejected: number;
1485
1521
  }>>;
1522
+ linkVisitor: import("convex/server").RegisteredMutation<"public", {
1523
+ previousVisitorId: string;
1524
+ siteId: string;
1525
+ visitorId: string;
1526
+ }, Promise<{
1527
+ aliasCount: number;
1528
+ linked: boolean;
1529
+ }>>;
1486
1530
  overview: import("convex/server").RegisteredQuery<"public", {
1487
1531
  from: number;
1488
1532
  interval?: "day" | "hour" | undefined;
@@ -1495,6 +1539,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
1495
1539
  metadata: {
1496
1540
  breakdowns: {
1497
1541
  topBrowsers: "eventVolume";
1542
+ topCampaigns: "eventVolume";
1498
1543
  topCountries: "eventVolume";
1499
1544
  topDevices: "eventVolume";
1500
1545
  topEvents: "eventVolume";
@@ -1510,7 +1555,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
1510
1555
  state: "complete" | "partial" | "retained" | "unavailable";
1511
1556
  };
1512
1557
  features: {
1513
- botDetection: "unsupported";
1558
+ botDetection: "userAgent";
1514
1559
  errorInsights: "unsupported";
1515
1560
  outboundLinks: "eventVolume";
1516
1561
  sessionReplay: "unsupported";
@@ -1547,6 +1592,11 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
1547
1592
  revenueCents: number;
1548
1593
  value: string;
1549
1594
  }>;
1595
+ topCampaigns: Array<{
1596
+ count: number;
1597
+ revenueCents: number;
1598
+ value: string;
1599
+ }>;
1550
1600
  topCountries: Array<{
1551
1601
  count: number;
1552
1602
  revenueCents: number;
@@ -1661,6 +1711,7 @@ export declare function exposeAnalyticsApi(component: ComponentApi, options: {
1661
1711
  utmMedium?: string;
1662
1712
  utmSource?: string;
1663
1713
  visitorId: string;
1714
+ visitorKey?: string;
1664
1715
  }>;
1665
1716
  pageStatus?: "SplitRecommended" | "SplitRequired" | null;
1666
1717
  splitCursor?: string | null;
@@ -2111,6 +2162,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2111
2162
  metadata: {
2112
2163
  breakdowns: {
2113
2164
  topBrowsers: "eventVolume";
2165
+ topCampaigns: "eventVolume";
2114
2166
  topCountries: "eventVolume";
2115
2167
  topDevices: "eventVolume";
2116
2168
  topEvents: "eventVolume";
@@ -2126,7 +2178,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2126
2178
  state: "complete" | "partial" | "retained" | "unavailable";
2127
2179
  };
2128
2180
  features: {
2129
- botDetection: "unsupported";
2181
+ botDetection: "userAgent";
2130
2182
  errorInsights: "unsupported";
2131
2183
  outboundLinks: "eventVolume";
2132
2184
  sessionReplay: "unsupported";
@@ -2163,6 +2215,11 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2163
2215
  revenueCents: number;
2164
2216
  value: string;
2165
2217
  }>;
2218
+ topCampaigns: Array<{
2219
+ count: number;
2220
+ revenueCents: number;
2221
+ value: string;
2222
+ }>;
2166
2223
  topCountries: Array<{
2167
2224
  count: number;
2168
2225
  revenueCents: number;
@@ -2277,6 +2334,7 @@ export declare function exposeFederatedAnalyticsApi(component: ComponentApi, opt
2277
2334
  utmMedium?: string;
2278
2335
  utmSource?: string;
2279
2336
  visitorId: string;
2337
+ visitorKey?: string;
2280
2338
  }>;
2281
2339
  pageStatus?: "SplitRecommended" | "SplitRequired" | null;
2282
2340
  splitCursor?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,9 @@ export class Rastro {
27
27
  trackConversion(ctx, args) {
28
28
  return ctx.runMutation(this.component.ingest.trackConversion, args);
29
29
  }
30
+ linkVisitor(ctx, args) {
31
+ return ctx.runMutation(this.component.visitors.link, args);
32
+ }
30
33
  overview(ctx, args) {
31
34
  return ctx.runQuery(this.component.reports.overview, args);
32
35
  }
@@ -128,6 +131,7 @@ const hostSessionValidator = v.object({
128
131
  utmSource: v.optional(v.string()),
129
132
  utmMedium: v.optional(v.string()),
130
133
  utmCampaign: v.optional(v.string()),
134
+ visitorKey: v.optional(v.string()),
131
135
  country: v.optional(v.string()),
132
136
  city: v.optional(v.string()),
133
137
  latitude: v.optional(v.number()),
@@ -284,6 +288,7 @@ const hostOverviewValidator = v.object({
284
288
  totals: hostMetricTotalsValidator,
285
289
  timeSeries: v.array(hostMetricTotalsValidator.extend({ timestamp: v.number() })),
286
290
  topSources: v.array(hostTopItemValidator),
291
+ topCampaigns: v.array(hostTopItemValidator),
287
292
  topPages: v.array(hostTopItemValidator),
288
293
  topCountries: v.array(hostTopItemValidator),
289
294
  topDevices: v.array(hostTopItemValidator),
@@ -300,6 +305,7 @@ const hostOverviewValidator = v.object({
300
305
  }),
301
306
  breakdowns: v.object({
302
307
  topSources: v.literal("eventVolume"),
308
+ topCampaigns: v.literal("eventVolume"),
303
309
  topPages: v.literal("eventVolume"),
304
310
  topCountries: v.literal("eventVolume"),
305
311
  topDevices: v.literal("eventVolume"),
@@ -313,7 +319,7 @@ const hostOverviewValidator = v.object({
313
319
  sessionReplay: v.literal("unsupported"),
314
320
  errorInsights: v.literal("unsupported"),
315
321
  outboundLinks: v.literal("eventVolume"),
316
- botDetection: v.literal("unsupported"),
322
+ botDetection: v.literal("userAgent"),
317
323
  }),
318
324
  }),
319
325
  });
@@ -463,6 +469,18 @@ export function exposeAnalyticsApi(component, options) {
463
469
  return await rastro.trackConversion(ctx, args);
464
470
  },
465
471
  }),
472
+ linkVisitor: mutationGeneric({
473
+ args: {
474
+ siteId: v.string(),
475
+ visitorId: v.string(),
476
+ previousVisitorId: v.string(),
477
+ },
478
+ returns: v.object({ linked: v.boolean(), aliasCount: v.number() }),
479
+ handler: async (ctx, args) => {
480
+ await options.authorize(ctx, { operation: "visitor.link", siteIds: [args.siteId] });
481
+ return await rastro.linkVisitor(ctx, args);
482
+ },
483
+ }),
466
484
  overview: queryGeneric({
467
485
  args: {
468
486
  siteIds: v.array(v.string()),