@iann29/rastro 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -82,7 +82,7 @@ Never append `/rastro/tracker.js` to the functions URL.
82
82
  npm install @iann29/rastro
83
83
  ```
84
84
 
85
- The untagged npm `latest` channel is `0.1.0`. Pin the exact version in the host;
85
+ The untagged npm `latest` channel is `0.3.0`. Pin the exact version in the host;
86
86
  the changelog and the upgrading guide say what each release changes.
87
87
 
88
88
  ### 2. Mount the component
@@ -659,6 +659,8 @@ const analytics = new Rastro(components.rastroAnalytics);
659
659
  export const {
660
660
  overview,
661
661
  liveVisitors,
662
+ getSession,
663
+ revenueSummary,
662
664
  listSessions,
663
665
  sessionJourney,
664
666
  listConversions,
@@ -764,19 +766,19 @@ sessions from the same device and network within one UTC day still fold into one
764
766
  visitor through a salted daily key; runtimes without a client IP fall back to
765
767
  one visitor per session, which `/rastro/health` reports as
766
768
  `uniqueVisitors: "session"` instead of `"dailyHash"`. Breakdown metadata says
767
- what each ranking counts: pages by pageviews and sources, campaigns, countries,
768
- devices, and browsers by sessions once every bucket in the range carries those
769
- counters (recorded since alpha.11), and raw event volume for ranges that reach
770
- back before them; events always rank by volume. Totals carry the engagement
771
- counters recorded since the same stamp — summed session duration, sessions that
772
- reached a second pageview, and first-ever sessions of a visitor — and
773
- `metadata.engagement` reports `counted` when the whole range has them, so bounce
774
- rate, average duration, pages per session, and the share of new visitors derive
775
- from one response; `unavailable` means the range reaches back before the
776
- counters and those four stay blank. Feature status is explicit: outbound-link
777
- event volume is supported (with `topOutbound` naming the destinations), bot
778
- detection rejects self-declared agents by `User-Agent`, and session replay and
779
- error insights are currently unsupported.
769
+ what each ranking counts: pages by pageviews and sources, campaigns, mediums,
770
+ countries, devices, and browsers by sessions once every bucket in the range
771
+ carries those counters (recorded since alpha.11), and raw event volume for
772
+ ranges that reach back before them; events and outbound destinations always rank
773
+ by volume. Totals carry the engagement counters recorded since the same stamp —
774
+ summed session duration, sessions that reached a second pageview, and first-ever
775
+ sessions of a visitor — and `metadata.engagement` reports `counted` when the
776
+ whole range has them, so bounce rate, average duration, pages per session, and
777
+ the share of new visitors derive from one response; `unavailable` means the
778
+ range reaches back before the counters and those four stay blank. Feature status
779
+ is explicit: outbound-link event volume is supported (with `topOutbound` naming
780
+ the destinations), bot detection rejects self-declared agents by `User-Agent`,
781
+ and session replay and error insights are currently unsupported.
780
782
 
781
783
  All report ranges use integer Unix milliseconds with inclusive `from` and `to`
782
784
  boundaries, and range metadata reports `boundary: "inclusive"`. Hourly overview
@@ -1001,7 +1003,8 @@ Amage Rastro's default tracker:
1001
1003
  or arbitrary page text;
1002
1004
  - captures only bounded paths, explicit properties, the visible label of a
1003
1005
  clicked link or button (at most 64 characters, replaced by `data-rastro-label`
1004
- when present), and outbound link origins and pathnames;
1006
+ when present), and outbound link origins and pathnames (the overview ranks
1007
+ destinations by host alone);
1005
1008
  - strips query strings and fragments from stored paths and links.
1006
1009
 
1007
1010
  The optional Web Vitals module inherits this contract: it reports at most five
@@ -493,6 +493,8 @@ export const {
493
493
  listSites,
494
494
  overview,
495
495
  liveVisitors,
496
+ getSession,
497
+ revenueSummary,
496
498
  listSessions,
497
499
  sessionJourney,
498
500
  listConversions,
@@ -552,6 +554,8 @@ permission rejects the token with `FEDERATION_INVALID_CLAIMS`.
552
554
  | `listSites` | `{}` | Only `siteId`, `name`, `currency`, `timezone`, `cookieless` |
553
555
  | `overview` | `siteIds`, `from`, `to`, optional hour/day interval | Aggregate metrics and time series |
554
556
  | `liveVisitors` | `siteIds`, `now`, optional limit | At most 500 visitors seen in the last five minutes, with intent facts |
557
+ | `getSession` | one `siteId`, `sessionId` | Selected session metadata, or null when no retained session exists |
558
+ | `revenueSummary` | `siteIds`, inclusive `from`/`to` | Period commissions; pair with overview totals/currency |
555
559
  | `listSessions` | one `siteId`, range, `{numItems,cursor}` keyset options | Paginated sessions |
556
560
  | `sessionJourney` | one site/session, range, `{numItems,cursor}` options | Paginated bounded events |
557
561
  | `listConversions` | one site, range, `{numItems,cursor}` options | Paginated trusted server-side conversion ledger |
@@ -15,11 +15,11 @@
15
15
  "upgrading": "https://www.amagerastro.com/docs/reference/upgrading.md",
16
16
  "integrity": {
17
17
  "algorithm": "sha256",
18
- "agent": "36afaee7c37f8ccf8b17e2b8c9fcb35de137745f59b9e387b1e7d89d6c70a524",
18
+ "agent": "e26de56729dd0b474669d2b40292afb314224200da4e70f6dabd407ce7aea6e7",
19
19
  "llms": "08e9581c9ee626642753db971e9c4da22d131ddb62870cca402d2e93ce4f7567",
20
- "protocol": "a297bf4dc610b3f0658fa131a2dc9a61b04a3bffe49320e27a58f0abe1ae716e",
21
- "setup": "f0777e3ce5785ab1d6c9e13dae0ef3c3ca59f1c1d84bbeb7e61f8b909f236d16",
22
- "upgrading": "8f37826ce035431103ffe3fe47f7f302b134886be5f4c4252a60e536d6f6cce7"
20
+ "protocol": "f2be7e3db250824d0c1293eb31b2e4514ebed8b21fe4974d4f4797fd86abe04f",
21
+ "setup": "bf2509a87a8eab9c047276b813f029bb2c9ddd58c0e54754432e3fef7891f3c9",
22
+ "upgrading": "a6ed4626b3502a60c646448bdd512ab63e148322e0855ba819a77478db987f8d"
23
23
  }
24
24
  },
25
25
  "controlPlane": {
@@ -68,6 +68,8 @@
68
68
  "funnelsReport": "funnelsReport",
69
69
  "affiliatesReport": "affiliatesReport",
70
70
  "dataCoverage": "dataCoverage",
71
+ "getSession": "getSession",
72
+ "revenueSummary": "revenueSummary",
71
73
  "vitalsReport": "vitalsReport",
72
74
  "siteMap": "siteMap",
73
75
  "siteSettings": "siteSettings",
@@ -97,6 +99,8 @@
97
99
  "funnels",
98
100
  "affiliates",
99
101
  "dataCoverage",
102
+ "sessionDetails",
103
+ "revenueSummary",
100
104
  "vitals",
101
105
  "siteMap",
102
106
  "localDays",
@@ -168,6 +168,8 @@
168
168
  "funnelsReport",
169
169
  "affiliatesReport",
170
170
  "dataCoverage",
171
+ "getSession",
172
+ "revenueSummary",
171
173
  "vitalsReport",
172
174
  "siteMap",
173
175
  "siteSettings",
@@ -199,6 +201,8 @@
199
201
  "funnelsReport": { "const": "funnelsReport" },
200
202
  "affiliatesReport": { "const": "affiliatesReport" },
201
203
  "dataCoverage": { "const": "dataCoverage" },
204
+ "getSession": { "const": "getSession" },
205
+ "revenueSummary": { "const": "revenueSummary" },
202
206
  "vitalsReport": { "const": "vitalsReport" },
203
207
  "siteMap": { "const": "siteMap" },
204
208
  "siteSettings": { "const": "siteSettings" },
@@ -221,7 +225,7 @@
221
225
  "capabilities": {
222
226
  "type": "array",
223
227
  "minItems": 15,
224
- "maxItems": 15,
228
+ "maxItems": 17,
225
229
  "uniqueItems": true,
226
230
  "items": {
227
231
  "enum": [
@@ -236,6 +240,8 @@
236
240
  "funnels",
237
241
  "affiliates",
238
242
  "dataCoverage",
243
+ "sessionDetails",
244
+ "revenueSummary",
239
245
  "vitals",
240
246
  "siteMap",
241
247
  "localDays",
@@ -1,9 +1,11 @@
1
- import type { UserIdentity } from "convex/server";
1
+ import type { GenericDataModel, GenericMutationCtx, UserIdentity } from "convex/server";
2
2
  import type { AnalyticsAuthorizationContext } from "./index.js";
3
3
  export declare const FEDERATED_ANALYTICS_CLAIMS: Readonly<{
4
4
  readonly connectionId: "rastro_connection_id";
5
5
  readonly organizationId: "rastro_organization_id";
6
6
  readonly permissions: "rastro_permissions";
7
+ readonly version: "rastro_connection_version";
8
+ readonly transferTo: "rastro_transfer_to";
7
9
  /**
8
10
  * Optional: the sites the token may read, a subset of the grant. A public
9
11
  * link's token carries the sites the link was created for.
@@ -126,10 +128,12 @@ export declare const FEDERATED_ANALYTICS_CONNECTOR_MANIFEST: Readonly<{
126
128
  readonly retentionStatus: "retentionStatus";
127
129
  readonly setRetentionPolicy: "setRetentionPolicy";
128
130
  readonly disableRetentionPolicy: "disableRetentionPolicy";
131
+ readonly getSession: "getSession";
132
+ readonly revenueSummary: "revenueSummary";
129
133
  readonly vitalsReport: "vitalsReport";
130
134
  readonly siteMap: "siteMap";
131
135
  }>;
132
- readonly capabilities: readonly ["siteSummaries", "overview", "liveVisitors", "sessions", "sessionJourney", "conversions", "visitorJourney", "goals", "funnels", "affiliates", "dataCoverage", "vitals", "siteMap", "localDays", "configure"];
136
+ readonly capabilities: readonly ["siteSummaries", "overview", "liveVisitors", "sessions", "sessionJourney", "conversions", "visitorJourney", "goals", "funnels", "affiliates", "dataCoverage", "sessionDetails", "revenueSummary", "vitals", "siteMap", "localDays", "configure"];
133
137
  readonly limits: Readonly<{
134
138
  readonly maxSitesPerRequest: 10;
135
139
  readonly maxSitesPerConnection: 10;
@@ -139,12 +143,14 @@ export declare const FEDERATED_ANALYTICS_CONNECTOR_MANIFEST: Readonly<{
139
143
  }>;
140
144
  }>;
141
145
  export type FederatedAnalyticsErrorCode = (typeof FEDERATED_ANALYTICS_ERROR_CODES)[keyof typeof FEDERATED_ANALYTICS_ERROR_CODES];
142
- export type FederatedAnalyticsCapability = (typeof FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.capabilities)[number];
146
+ export type FederatedAnalyticsCapability = (typeof FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.capabilities)[number] | "transfer";
143
147
  export type FederatedAnalyticsPermission = (typeof FEDERATED_ANALYTICS_PERMISSIONS)[number];
144
148
  export type FederatedAnalyticsManifest = ReturnType<typeof createFederatedAnalyticsManifest>;
145
149
  export interface FederatedAnalyticsConnection {
146
150
  connectionId: string;
147
151
  organizationId: string;
152
+ /** Incremented on transfer, invalidating tokens even after a round trip. */
153
+ version?: number;
148
154
  siteIds: readonly string[];
149
155
  /**
150
156
  * What the host lets this connection do. Absent means read only; listing
@@ -192,16 +198,23 @@ export type ResolveFederatedAnalyticsConnection = (ctx: AnalyticsAuthorizationCo
192
198
  export interface FederatedAnalyticsAuthorizerOptions {
193
199
  issuer: string;
194
200
  resolveConnection: ResolveFederatedAnalyticsConnection;
201
+ /** Opt in by atomically persisting both fields on the authoritative grant. */
202
+ transferConnection?: (ctx: GenericMutationCtx<GenericDataModel>, connection: {
203
+ connectionId: string;
204
+ organizationId: string;
205
+ version: number;
206
+ }) => Promise<void>;
195
207
  }
196
208
  export declare const federatedAnalyticsPermissionValidator: import("convex/values").VUnion<"analytics:configure" | "analytics:public" | "analytics:read", [import("convex/values").VLiteral<"analytics:read", "required">, import("convex/values").VLiteral<"analytics:configure", "required">, import("convex/values").VLiteral<"analytics:public", "required">], "required", never>;
197
209
  export declare const federatedAnalyticsManifestValidator: import("convex/values").VObject<{
198
- capabilities: ("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[];
210
+ capabilities: ("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "revenueSummary" | "sessionDetails" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "transfer" | "visitorJourney" | "vitals")[];
199
211
  functions: {
200
212
  affiliatesReport: "affiliatesReport";
201
213
  connectionStatus: "connectionStatus";
202
214
  dataCoverage: "dataCoverage";
203
215
  disableRetentionPolicy: "disableRetentionPolicy";
204
216
  funnelsReport: "funnelsReport";
217
+ getSession: "getSession";
205
218
  goalsReport: "goalsReport";
206
219
  listAffiliates: "listAffiliates";
207
220
  listConversions: "listConversions";
@@ -216,10 +229,12 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
216
229
  removeFunnel: "removeFunnel";
217
230
  removeGoal: "removeGoal";
218
231
  retentionStatus: "retentionStatus";
232
+ revenueSummary: "revenueSummary";
219
233
  sessionJourney: "sessionJourney";
220
234
  setRetentionPolicy: "setRetentionPolicy";
221
235
  siteMap: "siteMap";
222
236
  siteSettings: "siteSettings";
237
+ transferConnection?: "transferConnection" | undefined;
223
238
  updateSite: "updateSite";
224
239
  upsertAffiliate: "upsertAffiliate";
225
240
  upsertFunnel: "upsertFunnel";
@@ -247,6 +262,7 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
247
262
  dataCoverage: "dataCoverage";
248
263
  disableRetentionPolicy: "disableRetentionPolicy";
249
264
  funnelsReport: "funnelsReport";
265
+ getSession: "getSession";
250
266
  goalsReport: "goalsReport";
251
267
  listAffiliates: "listAffiliates";
252
268
  listConversions: "listConversions";
@@ -261,10 +277,12 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
261
277
  removeFunnel: "removeFunnel";
262
278
  removeGoal: "removeGoal";
263
279
  retentionStatus: "retentionStatus";
280
+ revenueSummary: "revenueSummary";
264
281
  sessionJourney: "sessionJourney";
265
282
  setRetentionPolicy: "setRetentionPolicy";
266
283
  siteMap: "siteMap";
267
284
  siteSettings: "siteSettings";
285
+ transferConnection?: "transferConnection" | undefined;
268
286
  updateSite: "updateSite";
269
287
  upsertAffiliate: "upsertAffiliate";
270
288
  upsertFunnel: "upsertFunnel";
@@ -285,6 +303,8 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
285
303
  funnelsReport: import("convex/values").VLiteral<"funnelsReport", "required">;
286
304
  affiliatesReport: import("convex/values").VLiteral<"affiliatesReport", "required">;
287
305
  dataCoverage: import("convex/values").VLiteral<"dataCoverage", "required">;
306
+ getSession: import("convex/values").VLiteral<"getSession", "required">;
307
+ revenueSummary: import("convex/values").VLiteral<"revenueSummary", "required">;
288
308
  vitalsReport: import("convex/values").VLiteral<"vitalsReport", "required">;
289
309
  siteMap: import("convex/values").VLiteral<"siteMap", "required">;
290
310
  siteSettings: import("convex/values").VLiteral<"siteSettings", "required">;
@@ -301,8 +321,9 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
301
321
  retentionStatus: import("convex/values").VLiteral<"retentionStatus", "required">;
302
322
  setRetentionPolicy: import("convex/values").VLiteral<"setRetentionPolicy", "required">;
303
323
  disableRetentionPolicy: import("convex/values").VLiteral<"disableRetentionPolicy", "required">;
304
- }, "required", "affiliatesReport" | "connectionStatus" | "dataCoverage" | "disableRetentionPolicy" | "funnelsReport" | "goalsReport" | "listAffiliates" | "listConversions" | "listFunnels" | "listGoals" | "listSessions" | "listSites" | "liveVisitors" | "manifest" | "overview" | "removeAffiliate" | "removeFunnel" | "removeGoal" | "retentionStatus" | "sessionJourney" | "setRetentionPolicy" | "siteMap" | "siteSettings" | "updateSite" | "upsertAffiliate" | "upsertFunnel" | "upsertGoal" | "visitorJourney" | "vitalsReport">;
305
- capabilities: import("convex/values").VArray<("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[], import("convex/values").VUnion<"affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals", [import("convex/values").VLiteral<"siteSummaries", "required">, import("convex/values").VLiteral<"overview", "required">, import("convex/values").VLiteral<"liveVisitors", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"sessionJourney", "required">, import("convex/values").VLiteral<"conversions", "required">, import("convex/values").VLiteral<"visitorJourney", "required">, import("convex/values").VLiteral<"goals", "required">, import("convex/values").VLiteral<"funnels", "required">, import("convex/values").VLiteral<"affiliates", "required">, import("convex/values").VLiteral<"dataCoverage", "required">, import("convex/values").VLiteral<"vitals", "required">, import("convex/values").VLiteral<"siteMap", "required">, import("convex/values").VLiteral<"localDays", "required">, import("convex/values").VLiteral<"configure", "required">], "required", never>, "required">;
324
+ transferConnection: import("convex/values").VLiteral<"transferConnection" | undefined, "optional">;
325
+ }, "required", "affiliatesReport" | "connectionStatus" | "dataCoverage" | "disableRetentionPolicy" | "funnelsReport" | "getSession" | "goalsReport" | "listAffiliates" | "listConversions" | "listFunnels" | "listGoals" | "listSessions" | "listSites" | "liveVisitors" | "manifest" | "overview" | "removeAffiliate" | "removeFunnel" | "removeGoal" | "retentionStatus" | "revenueSummary" | "sessionJourney" | "setRetentionPolicy" | "siteMap" | "siteSettings" | "transferConnection" | "updateSite" | "upsertAffiliate" | "upsertFunnel" | "upsertGoal" | "visitorJourney" | "vitalsReport">;
326
+ capabilities: import("convex/values").VArray<("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "revenueSummary" | "sessionDetails" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "transfer" | "visitorJourney" | "vitals")[], import("convex/values").VUnion<"affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "revenueSummary" | "sessionDetails" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "transfer" | "visitorJourney" | "vitals", [import("convex/values").VLiteral<"siteSummaries", "required">, import("convex/values").VLiteral<"overview", "required">, import("convex/values").VLiteral<"liveVisitors", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"sessionJourney", "required">, import("convex/values").VLiteral<"conversions", "required">, import("convex/values").VLiteral<"visitorJourney", "required">, import("convex/values").VLiteral<"goals", "required">, import("convex/values").VLiteral<"funnels", "required">, import("convex/values").VLiteral<"affiliates", "required">, import("convex/values").VLiteral<"dataCoverage", "required">, import("convex/values").VLiteral<"sessionDetails", "required">, import("convex/values").VLiteral<"revenueSummary", "required">, import("convex/values").VLiteral<"vitals", "required">, import("convex/values").VLiteral<"siteMap", "required">, import("convex/values").VLiteral<"localDays", "required">, import("convex/values").VLiteral<"configure", "required">, import("convex/values").VLiteral<"transfer", "required">], "required", never>, "required">;
306
327
  limits: import("convex/values").VObject<{
307
328
  maxJourneyEvents: number;
308
329
  maxLiveVisitors: number;
@@ -316,9 +337,9 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
316
337
  maxLiveVisitors: import("convex/values").VFloat64<number, "required">;
317
338
  maxJourneyEvents: import("convex/values").VFloat64<number, "required">;
318
339
  }, "required", "maxJourneyEvents" | "maxLiveVisitors" | "maxReportRangeDays" | "maxSitesPerConnection" | "maxSitesPerRequest">;
319
- }, "required", "capabilities" | "functions" | "functions.affiliatesReport" | "functions.connectionStatus" | "functions.dataCoverage" | "functions.disableRetentionPolicy" | "functions.funnelsReport" | "functions.goalsReport" | "functions.listAffiliates" | "functions.listConversions" | "functions.listFunnels" | "functions.listGoals" | "functions.listSessions" | "functions.listSites" | "functions.liveVisitors" | "functions.manifest" | "functions.overview" | "functions.removeAffiliate" | "functions.removeFunnel" | "functions.removeGoal" | "functions.retentionStatus" | "functions.sessionJourney" | "functions.setRetentionPolicy" | "functions.siteMap" | "functions.siteSettings" | "functions.updateSite" | "functions.upsertAffiliate" | "functions.upsertFunnel" | "functions.upsertGoal" | "functions.visitorJourney" | "functions.vitalsReport" | "limits" | "limits.maxJourneyEvents" | "limits.maxLiveVisitors" | "limits.maxReportRangeDays" | "limits.maxSitesPerConnection" | "limits.maxSitesPerRequest" | "moduleName" | "protocol" | "protocolVersion">;
340
+ }, "required", "capabilities" | "functions" | "functions.affiliatesReport" | "functions.connectionStatus" | "functions.dataCoverage" | "functions.disableRetentionPolicy" | "functions.funnelsReport" | "functions.getSession" | "functions.goalsReport" | "functions.listAffiliates" | "functions.listConversions" | "functions.listFunnels" | "functions.listGoals" | "functions.listSessions" | "functions.listSites" | "functions.liveVisitors" | "functions.manifest" | "functions.overview" | "functions.removeAffiliate" | "functions.removeFunnel" | "functions.removeGoal" | "functions.retentionStatus" | "functions.revenueSummary" | "functions.sessionJourney" | "functions.setRetentionPolicy" | "functions.siteMap" | "functions.siteSettings" | "functions.transferConnection" | "functions.updateSite" | "functions.upsertAffiliate" | "functions.upsertFunnel" | "functions.upsertGoal" | "functions.visitorJourney" | "functions.vitalsReport" | "limits" | "limits.maxJourneyEvents" | "limits.maxLiveVisitors" | "limits.maxReportRangeDays" | "limits.maxSitesPerConnection" | "limits.maxSitesPerRequest" | "moduleName" | "protocol" | "protocolVersion">;
320
341
  export declare const federatedAnalyticsConnectionStatusValidator: import("convex/values").VObject<{
321
- capabilities: ("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[];
342
+ capabilities: ("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "revenueSummary" | "sessionDetails" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "transfer" | "visitorJourney" | "vitals")[];
322
343
  permissions: ("analytics:configure" | "analytics:public" | "analytics:read")[];
323
344
  protocolVersion: 1;
324
345
  siteCount: number;
@@ -326,7 +347,7 @@ export declare const federatedAnalyticsConnectionStatusValidator: import("convex
326
347
  }, {
327
348
  status: import("convex/values").VLiteral<"connected", "required">;
328
349
  protocolVersion: import("convex/values").VLiteral<1, "required">;
329
- capabilities: import("convex/values").VArray<("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[], import("convex/values").VUnion<"affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals", [import("convex/values").VLiteral<"siteSummaries", "required">, import("convex/values").VLiteral<"overview", "required">, import("convex/values").VLiteral<"liveVisitors", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"sessionJourney", "required">, import("convex/values").VLiteral<"conversions", "required">, import("convex/values").VLiteral<"visitorJourney", "required">, import("convex/values").VLiteral<"goals", "required">, import("convex/values").VLiteral<"funnels", "required">, import("convex/values").VLiteral<"affiliates", "required">, import("convex/values").VLiteral<"dataCoverage", "required">, import("convex/values").VLiteral<"vitals", "required">, import("convex/values").VLiteral<"siteMap", "required">, import("convex/values").VLiteral<"localDays", "required">, import("convex/values").VLiteral<"configure", "required">], "required", never>, "required">;
350
+ capabilities: import("convex/values").VArray<("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "revenueSummary" | "sessionDetails" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "transfer" | "visitorJourney" | "vitals")[], import("convex/values").VUnion<"affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "revenueSummary" | "sessionDetails" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "transfer" | "visitorJourney" | "vitals", [import("convex/values").VLiteral<"siteSummaries", "required">, import("convex/values").VLiteral<"overview", "required">, import("convex/values").VLiteral<"liveVisitors", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"sessionJourney", "required">, import("convex/values").VLiteral<"conversions", "required">, import("convex/values").VLiteral<"visitorJourney", "required">, import("convex/values").VLiteral<"goals", "required">, import("convex/values").VLiteral<"funnels", "required">, import("convex/values").VLiteral<"affiliates", "required">, import("convex/values").VLiteral<"dataCoverage", "required">, import("convex/values").VLiteral<"sessionDetails", "required">, import("convex/values").VLiteral<"revenueSummary", "required">, import("convex/values").VLiteral<"vitals", "required">, import("convex/values").VLiteral<"siteMap", "required">, import("convex/values").VLiteral<"localDays", "required">, import("convex/values").VLiteral<"configure", "required">, import("convex/values").VLiteral<"transfer", "required">], "required", never>, "required">;
330
351
  permissions: import("convex/values").VArray<("analytics:configure" | "analytics:public" | "analytics:read")[], import("convex/values").VUnion<"analytics:configure" | "analytics:public" | "analytics:read", [import("convex/values").VLiteral<"analytics:read", "required">, import("convex/values").VLiteral<"analytics:configure", "required">, import("convex/values").VLiteral<"analytics:public", "required">], "required", never>, "required">;
331
352
  siteCount: import("convex/values").VFloat64<number, "required">;
332
353
  }, "required", "capabilities" | "permissions" | "protocolVersion" | "siteCount" | "status">;
@@ -373,7 +394,7 @@ export declare const federatedSiteSummaryValidator: import("convex/values").VObj
373
394
  since: import("convex/values").VFloat64<number, "required">;
374
395
  }, "required", "since" | "timezone">, import("convex/values").VNull<null, "required">], "required", "since" | "timezone">;
375
396
  }, "required", "cookieless" | "currency" | "localDays" | "localDays.since" | "localDays.timezone" | "name" | "siteId" | "timezone">;
376
- export declare function createFederatedAnalyticsManifest(): {
397
+ export declare function createFederatedAnalyticsManifest(transfer?: boolean): {
377
398
  protocol: "amage-rastro-analytics";
378
399
  protocolVersion: 1;
379
400
  moduleName: "rastroFederation";
@@ -405,10 +426,13 @@ export declare function createFederatedAnalyticsManifest(): {
405
426
  retentionStatus: "retentionStatus";
406
427
  setRetentionPolicy: "setRetentionPolicy";
407
428
  disableRetentionPolicy: "disableRetentionPolicy";
429
+ getSession: "getSession";
430
+ revenueSummary: "revenueSummary";
408
431
  vitalsReport: "vitalsReport";
409
432
  siteMap: "siteMap";
433
+ transferConnection?: "transferConnection" | undefined;
410
434
  };
411
- capabilities: ("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[];
435
+ capabilities: ("affiliates" | "configure" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "localDays" | "overview" | "revenueSummary" | "sessionDetails" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "transfer" | "visitorJourney" | "vitals")[];
412
436
  limits: {
413
437
  maxSitesPerRequest: 10;
414
438
  maxSitesPerConnection: 10;
@@ -418,4 +442,6 @@ export declare function createFederatedAnalyticsManifest(): {
418
442
  };
419
443
  };
420
444
  export declare function createFederatedAnalyticsConnectionAuthorizer(options: FederatedAnalyticsAuthorizerOptions): (ctx: AnalyticsAuthorizationContext, requestedSiteIds?: readonly string[], requiredPermission?: FederatedAnalyticsPermission) => Promise<AuthorizedFederatedAnalyticsConnection>;
445
+ /** Only a server-issued, destination-bound intent may change a local grant. */
446
+ export declare function transferFederatedAnalyticsConnection(ctx: GenericMutationCtx<GenericDataModel>, options: FederatedAnalyticsAuthorizerOptions): Promise<null>;
421
447
  //# sourceMappingURL=federation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export const FEDERATED_ANALYTICS_CLAIMS = Object.freeze({
4
4
  connectionId: "rastro_connection_id",
5
5
  organizationId: "rastro_organization_id",
6
6
  permissions: "rastro_permissions",
7
+ version: "rastro_connection_version",
8
+ transferTo: "rastro_transfer_to",
7
9
  /**
8
10
  * Optional: the sites the token may read, a subset of the grant. A public
9
11
  * link's token carries the sites the link was created for.
@@ -113,12 +115,16 @@ export const FEDERATED_ANALYTICS_PUBLIC_FUNCTIONS = Object.freeze({
113
115
  });
114
116
  const FEDERATED_ANALYTICS_FUNCTION_NAMES = Object.freeze({
115
117
  ...FEDERATED_ANALYTICS_REQUIRED_FUNCTIONS,
118
+ getSession: "getSession",
119
+ revenueSummary: "revenueSummary",
116
120
  vitalsReport: "vitalsReport",
117
121
  siteMap: "siteMap",
118
122
  ...FEDERATED_ANALYTICS_CONFIGURE_FUNCTIONS,
119
123
  });
120
124
  const FEDERATED_ANALYTICS_CAPABILITIES = Object.freeze([
121
125
  ...FEDERATED_ANALYTICS_REQUIRED_CAPABILITIES,
126
+ "sessionDetails",
127
+ "revenueSummary",
122
128
  "vitals",
123
129
  "siteMap",
124
130
  // The daily overview answers whole calendar days in the site's timezone
@@ -143,7 +149,7 @@ export const FEDERATED_ANALYTICS_CONNECTOR_MANIFEST = Object.freeze({
143
149
  });
144
150
  const MAX_CLAIM_LENGTH = 128;
145
151
  const MAX_PERMISSIONS = 16;
146
- const federatedAnalyticsCapabilityValidator = v.union(v.literal("siteSummaries"), v.literal("overview"), v.literal("liveVisitors"), v.literal("sessions"), v.literal("sessionJourney"), v.literal("conversions"), v.literal("visitorJourney"), v.literal("goals"), v.literal("funnels"), v.literal("affiliates"), v.literal("dataCoverage"), v.literal("vitals"), v.literal("siteMap"), v.literal("localDays"), v.literal("configure"));
152
+ const federatedAnalyticsCapabilityValidator = v.union(v.literal("siteSummaries"), v.literal("overview"), v.literal("liveVisitors"), v.literal("sessions"), v.literal("sessionJourney"), v.literal("conversions"), v.literal("visitorJourney"), v.literal("goals"), v.literal("funnels"), v.literal("affiliates"), v.literal("dataCoverage"), v.literal("sessionDetails"), v.literal("revenueSummary"), v.literal("vitals"), v.literal("siteMap"), v.literal("localDays"), v.literal("configure"), v.literal("transfer"));
147
153
  export const federatedAnalyticsPermissionValidator = v.union(v.literal(FEDERATED_ANALYTICS_READ_PERMISSION), v.literal(FEDERATED_ANALYTICS_CONFIGURE_PERMISSION), v.literal(FEDERATED_ANALYTICS_PUBLIC_PERMISSION));
148
154
  export const federatedAnalyticsManifestValidator = v.object({
149
155
  protocol: v.literal(FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.protocol),
@@ -163,6 +169,8 @@ export const federatedAnalyticsManifestValidator = v.object({
163
169
  funnelsReport: v.literal("funnelsReport"),
164
170
  affiliatesReport: v.literal("affiliatesReport"),
165
171
  dataCoverage: v.literal("dataCoverage"),
172
+ getSession: v.literal("getSession"),
173
+ revenueSummary: v.literal("revenueSummary"),
166
174
  vitalsReport: v.literal("vitalsReport"),
167
175
  siteMap: v.literal("siteMap"),
168
176
  siteSettings: v.literal("siteSettings"),
@@ -179,6 +187,7 @@ export const federatedAnalyticsManifestValidator = v.object({
179
187
  retentionStatus: v.literal("retentionStatus"),
180
188
  setRetentionPolicy: v.literal("setRetentionPolicy"),
181
189
  disableRetentionPolicy: v.literal("disableRetentionPolicy"),
190
+ transferConnection: v.optional(v.literal("transferConnection")),
182
191
  }),
183
192
  capabilities: v.array(federatedAnalyticsCapabilityValidator),
184
193
  limits: v.object({
@@ -241,11 +250,19 @@ export const federatedSiteSummaryValidator = v.object({
241
250
  cookieless: v.boolean(),
242
251
  localDays: v.union(v.object({ timezone: v.string(), since: v.number() }), v.null()),
243
252
  });
244
- export function createFederatedAnalyticsManifest() {
253
+ export function createFederatedAnalyticsManifest(transfer = false) {
245
254
  return {
246
255
  ...FEDERATED_ANALYTICS_CONNECTOR_MANIFEST,
247
- functions: { ...FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.functions },
248
- capabilities: [...FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.capabilities],
256
+ functions: {
257
+ ...FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.functions,
258
+ ...(transfer
259
+ ? { transferConnection: "transferConnection" }
260
+ : {}),
261
+ },
262
+ capabilities: [
263
+ ...FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.capabilities,
264
+ ...(transfer ? ["transfer"] : []),
265
+ ],
249
266
  limits: { ...FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.limits },
250
267
  };
251
268
  }
@@ -268,8 +285,11 @@ export function createFederatedAnalyticsConnectionAuthorizer(options) {
268
285
  const organizationId = identity[FEDERATED_ANALYTICS_CLAIMS.organizationId];
269
286
  const permissions = identity[FEDERATED_ANALYTICS_CLAIMS.permissions];
270
287
  const claimedSiteIds = identity[FEDERATED_ANALYTICS_CLAIMS.siteIds];
288
+ const version = identity[FEDERATED_ANALYTICS_CLAIMS.version] ?? 0;
271
289
  if (!isBoundedClaim(connectionId) ||
272
290
  !isBoundedClaim(organizationId) ||
291
+ !Number.isSafeInteger(version) ||
292
+ version < 0 ||
273
293
  !isStringArray(permissions, MAX_PERMISSIONS) ||
274
294
  !(permissions.includes(FEDERATED_ANALYTICS_READ_PERMISSION) ||
275
295
  permissions.includes(FEDERATED_ANALYTICS_PUBLIC_PERMISSION)) ||
@@ -288,6 +308,7 @@ export function createFederatedAnalyticsConnectionAuthorizer(options) {
288
308
  connection.revokedAt !== undefined ||
289
309
  connection.connectionId !== connectionId ||
290
310
  connection.organizationId !== organizationId ||
311
+ (connection.version ?? 0) !== version ||
291
312
  !isStringArray(connection.siteIds, MAX_CONNECTION_SITE_IDS) ||
292
313
  connection.siteIds.length === 0 ||
293
314
  new Set(connection.siteIds).size !== connection.siteIds.length ||
@@ -329,6 +350,61 @@ export function createFederatedAnalyticsConnectionAuthorizer(options) {
329
350
  return { ...connection, siteIds, effectivePermissions };
330
351
  };
331
352
  }
353
+ /** Only a server-issued, destination-bound intent may change a local grant. */
354
+ export async function transferFederatedAnalyticsConnection(ctx, options) {
355
+ const identity = await ctx.auth.getUserIdentity();
356
+ const connectionId = identity?.[FEDERATED_ANALYTICS_CLAIMS.connectionId];
357
+ const source = identity?.[FEDERATED_ANALYTICS_CLAIMS.organizationId];
358
+ const target = identity?.[FEDERATED_ANALYTICS_CLAIMS.transferTo];
359
+ const version = identity?.[FEDERATED_ANALYTICS_CLAIMS.version];
360
+ const permissions = identity?.[FEDERATED_ANALYTICS_CLAIMS.permissions];
361
+ if (!options.transferConnection ||
362
+ !identity ||
363
+ identity.issuer !== options.issuer ||
364
+ !isBoundedClaim(connectionId) ||
365
+ !isBoundedClaim(source) ||
366
+ !isBoundedClaim(target) ||
367
+ source === target ||
368
+ typeof version !== "number" ||
369
+ !Number.isSafeInteger(version) ||
370
+ version < 0 ||
371
+ !Number.isSafeInteger(version + 1) ||
372
+ identity[FEDERATED_ANALYTICS_CLAIMS.siteIds] !== undefined ||
373
+ !isStringArray(permissions, MAX_PERMISSIONS) ||
374
+ !permissions.includes(FEDERATED_ANALYTICS_READ_PERMISSION) ||
375
+ !permissions.includes(FEDERATED_ANALYTICS_CONFIGURE_PERMISSION)) {
376
+ fail(FEDERATED_ANALYTICS_ERROR_CODES.CONNECTION_DENIED, "Invalid transfer authorization");
377
+ }
378
+ // A lost response can be retried with the same signed intent. Checking the
379
+ // generation prevents an old intent from replaying after a later transfer.
380
+ const transferred = await options.resolveConnection(ctx, {
381
+ connectionId,
382
+ organizationId: target,
383
+ identity,
384
+ });
385
+ if (transferred?.connectionId === connectionId &&
386
+ transferred.organizationId === target &&
387
+ transferred.version === version + 1 &&
388
+ transferred.revokedAt === undefined)
389
+ return null;
390
+ await createFederatedAnalyticsConnectionAuthorizer(options)(ctx, undefined, FEDERATED_ANALYTICS_CONFIGURE_PERMISSION);
391
+ await options.transferConnection(ctx, {
392
+ connectionId,
393
+ organizationId: target,
394
+ version: version + 1,
395
+ });
396
+ const updated = await options.resolveConnection(ctx, {
397
+ connectionId,
398
+ organizationId: target,
399
+ identity,
400
+ });
401
+ if (updated?.connectionId !== connectionId ||
402
+ updated.organizationId !== target ||
403
+ updated.version !== version + 1) {
404
+ fail(FEDERATED_ANALYTICS_ERROR_CODES.CONNECTION_DENIED, "Transfer callback must persist organization and version");
405
+ }
406
+ return null;
407
+ }
332
408
  function isBoundedClaim(value) {
333
409
  return (typeof value === "string" &&
334
410
  value.length > 0 &&
@@ -1 +1 @@
1
- {"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"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"}