@iann29/rastro 0.1.0-alpha.7 → 0.1.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -32
- package/agent/integration.md +14 -6
- package/agent/manifest.json +9 -7
- package/agent/manifest.schema.json +8 -5
- package/dist/client/federation.d.ts +13 -8
- package/dist/client/federation.d.ts.map +1 -1
- package/dist/client/federation.js +4 -1
- package/dist/client/federation.js.map +1 -1
- package/dist/client/index.d.ts +419 -17
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +55 -2
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/component.d.ts +71 -7
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/constants.d.ts +6 -1
- package/dist/component/constants.d.ts.map +1 -1
- package/dist/component/constants.js +13 -1
- package/dist/component/constants.js.map +1 -1
- package/dist/component/coverage.d.ts +1 -0
- package/dist/component/coverage.d.ts.map +1 -1
- package/dist/component/coverage.js +13 -2
- package/dist/component/coverage.js.map +1 -1
- package/dist/component/eventStore.d.ts +1 -1
- package/dist/component/http.d.ts.map +1 -1
- package/dist/component/http.js +2 -0
- package/dist/component/http.js.map +1 -1
- package/dist/component/ingest.d.ts +1 -1
- package/dist/component/ingest.d.ts.map +1 -1
- package/dist/component/ingest.js +173 -3
- package/dist/component/ingest.js.map +1 -1
- package/dist/component/reports.d.ts +77 -3
- package/dist/component/reports.d.ts.map +1 -1
- package/dist/component/reports.js +275 -3
- package/dist/component/reports.js.map +1 -1
- package/dist/component/retention.d.ts +4 -4
- package/dist/component/retention.d.ts.map +1 -1
- package/dist/component/retention.js +12 -2
- package/dist/component/retention.js.map +1 -1
- package/dist/component/sanitize.d.ts +9 -0
- package/dist/component/sanitize.d.ts.map +1 -1
- package/dist/component/sanitize.js +25 -0
- package/dist/component/sanitize.js.map +1 -1
- package/dist/component/schema.d.ts +69 -7
- package/dist/component/schema.js +25 -0
- package/dist/component/schema.js.map +1 -1
- package/dist/component/validators.d.ts +7 -7
- package/dist/component/validators.d.ts.map +1 -1
- package/dist/component/validators.js +1 -1
- package/dist/component/validators.js.map +1 -1
- package/dist/tracker/generated.d.ts +4 -4
- package/dist/tracker/generated.d.ts.map +1 -1
- package/dist/tracker/generated.js +4 -4
- package/dist/tracker/generated.js.map +1 -1
- package/dist/tracker/tracker.d.ts +1 -1
- package/dist/tracker/tracker.d.ts.map +1 -1
- package/dist/tracker/tracker.js +24 -2
- package/dist/tracker/tracker.js.map +1 -1
- package/dist/tracker.min.js +1 -1
- package/docs/federation-setup.md +2 -0
- package/docs/federation.md +4 -0
- package/docs/upgrading.md +91 -10
- package/llms.txt +3 -1
- package/package.json +1 -1
- package/src/component/_generated/component.ts +58 -1
- package/src/component/constants.ts +13 -1
- package/src/component/coverage.ts +12 -1
- package/src/component/http.ts +2 -0
- package/src/component/ingest.ts +278 -1
- package/src/component/reports.ts +364 -2
- package/src/component/retention.ts +16 -1
- package/src/component/sanitize.ts +31 -0
- package/src/component/schema.ts +26 -0
- package/src/component/validators.ts +1 -0
package/README.md
CHANGED
|
@@ -38,21 +38,22 @@ capacity claim.
|
|
|
38
38
|
|
|
39
39
|
## What ships
|
|
40
40
|
|
|
41
|
-
| Capability | Implementation
|
|
42
|
-
| --------------------------- |
|
|
43
|
-
| Live visitor map | Reactive live sessions with
|
|
44
|
-
| Traffic analytics | Sharded hour/day rollups, time series, top pages, sources, countries, devices, browsers, and events
|
|
45
|
-
| Field Web Vitals | Opt-in tracker module reporting LCP, CLS, INP, FCP, and TTFB into bounded per-page daily histograms
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
41
|
+
| Capability | Implementation |
|
|
42
|
+
| --------------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
43
|
+
| Live visitor map | Reactive live sessions with city-level coordinates, realtime departures, and a 90-second safety net |
|
|
44
|
+
| Traffic analytics | Sharded hour/day rollups, time series, top pages, sources, countries, devices, browsers, and events |
|
|
45
|
+
| Field Web Vitals | Opt-in tracker module reporting LCP, CLS, INP, FCP, and TTFB into bounded per-page daily histograms |
|
|
46
|
+
| Site map | Daily per-route rollups: entries, derived exits and bounces, time on page, and route-to-route transitions |
|
|
47
|
+
| Journey replay | Bounded pageview/click/custom-event timelines; no DOM, keystroke, or form-value recording |
|
|
48
|
+
| Payment conversion tracking | Trusted server-side ledger with idempotent event IDs and canonical site currency |
|
|
49
|
+
| Goals and funnels | Exact pageview/custom-event goals and ordered conversion funnels |
|
|
50
|
+
| Affiliates | Referral attribution, trusted revenue, and commission accounting |
|
|
51
|
+
| Cross-site analytics | Reports over up to ten authorized site IDs with a preloaded pseudonymous visitor ID |
|
|
52
|
+
| Automatic GeoIP | Opt-in native request metadata plus IPinfo/IPWhois fallback; bounded quota and no raw-IP persistence |
|
|
53
|
+
| Auto-captured clicks | Anchors, buttons, and `data-rastro-event` controls with a bounded visible label; outbound origin+path |
|
|
54
|
+
| Bot filtering | Self-declared crawlers, unfurlers, monitors, HTTP libraries, and headless browsers rejected at ingestion |
|
|
55
|
+
| Cookieless mode | No cookies: persistent pseudonymous visitor id in `localStorage`, per-tab session id in `sessionStorage` |
|
|
56
|
+
| Tiny tracker | 2,132 bytes raw, 1,127 bytes gzip; the test suite enforces `< 1,280` bytes gzip |
|
|
56
57
|
|
|
57
58
|
## Quickstart
|
|
58
59
|
|
|
@@ -448,9 +449,10 @@ event keeps the id it was recorded with. Links are idempotent, an anonymous id
|
|
|
448
449
|
belongs to at most one identity, a linked id cannot be linked again, chains and
|
|
449
450
|
identity merges are rejected, and an identity holds at most ten aliases. The
|
|
450
451
|
tracker still sets no cookie: the host's own session identifies the account and
|
|
451
|
-
the anonymous
|
|
452
|
-
|
|
453
|
-
|
|
452
|
+
the anonymous ids live in the browser's own storage (the visitor id in
|
|
453
|
+
`localStorage`, the session id in `sessionStorage`). Linking anonymous history
|
|
454
|
+
to an account turns it into personal data under the host's privacy policy;
|
|
455
|
+
disclose it and offer an opt-out.
|
|
454
456
|
|
|
455
457
|
## Attribute trusted payments
|
|
456
458
|
|
|
@@ -513,6 +515,7 @@ export const {
|
|
|
513
515
|
goalsReport,
|
|
514
516
|
funnelsReport,
|
|
515
517
|
affiliatesReport,
|
|
518
|
+
siteMap,
|
|
516
519
|
} = exposeAnalyticsApi(components.rastroAnalytics, {
|
|
517
520
|
authorize: async (ctx, request) => {
|
|
518
521
|
const identity = await ctx.auth.getUserIdentity();
|
|
@@ -568,7 +571,7 @@ The `Rastro` class wraps the component boundary for host functions:
|
|
|
568
571
|
- Ingestion: `ingest`, `trackConversion`, `linkVisitor`
|
|
569
572
|
- Reports: `overview`, `liveVisitors`, `listSessions`, `sessionJourney`,
|
|
570
573
|
`listConversions`, `visitorJourney`, `goalsReport`, `funnelsReport`,
|
|
571
|
-
`affiliatesReport`, `dataCoverage`
|
|
574
|
+
`affiliatesReport`, `vitalsReport`, `siteMap`, `dataCoverage`
|
|
572
575
|
- Configuration: `upsertGoal`, `listGoals`, `removeGoal`, `upsertFunnel`,
|
|
573
576
|
`listFunnels`, `removeFunnel`, `upsertAffiliate`, `listAffiliates`,
|
|
574
577
|
`removeAffiliate`
|
|
@@ -580,12 +583,25 @@ indexed and bounded. Component pagination uses scope-bound opaque keyset cursors
|
|
|
580
583
|
because native `.paginate()` is not supported inside Convex components; page
|
|
581
584
|
cost stays constant instead of increasing with an offset.
|
|
582
585
|
|
|
586
|
+
`siteMap` reads the daily route rollups newest day first and returns per-route
|
|
587
|
+
totals — pageviews, estimated visitors, entries, derived exits and bounces
|
|
588
|
+
(`exits = entries + transitions in − transitions out`,
|
|
589
|
+
`bounces = entries − sessions that continued`), and time on page — plus
|
|
590
|
+
route-to-route transition counts and a per-route daily series. Numeric, UUID,
|
|
591
|
+
and long hexadecimal path segments collapse to `:id` in the map only; the
|
|
592
|
+
package exports `normalizeRoute` so dashboards bucket live visitors by the same
|
|
593
|
+
rule, and `liveVisitors` reports `previousPath` and `movedAt` when a visitor
|
|
594
|
+
moves between routes. Map coverage begins at the first ingest after the upgrade
|
|
595
|
+
that introduced the rollups.
|
|
596
|
+
|
|
583
597
|
Overview responses label visitor values as either HLL-estimated unique visitors
|
|
584
598
|
or legacy `bucketOccurrences`; legacy aggregate rows are never presented as
|
|
585
|
-
exact uniques. Anonymous
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
599
|
+
exact uniques. Anonymous visitors carry a persistent pseudonymous id from the
|
|
600
|
+
tracker's `localStorage`, so the same person counts once across tabs, days, and
|
|
601
|
+
returns. When storage is blocked or an old cached tracker reports no id,
|
|
602
|
+
sessions from the same device and network within one UTC day still fold into one
|
|
603
|
+
visitor through a salted daily key; runtimes without a client IP fall back to
|
|
604
|
+
one visitor per session, which `/rastro/health` reports as
|
|
589
605
|
`uniqueVisitors: "session"` instead of `"dailyHash"`. Breakdown metadata
|
|
590
606
|
likewise identifies page, source, country, device, browser, and event rankings
|
|
591
607
|
as event-volume counts. Feature status is explicit: outbound-link event volume
|
|
@@ -623,15 +639,23 @@ boundaries use different bucket alignment.
|
|
|
623
639
|
device classes are fixed (desktop, mobile, tablet, unknown)
|
|
624
640
|
- Web Vitals report: complete reads bounded to 5,000 rollup rows across at most
|
|
625
641
|
90 UTC days; wider saturated ranges fail with `REPORT_INCOMPLETE`
|
|
642
|
+
- Site map routes per site-day shard: 200 tracked route rows, then `(other)`; 24
|
|
643
|
+
outgoing-transition slots per route row
|
|
644
|
+
- Site map report: reads newest day first, bounded to 8,000 rollup rows across
|
|
645
|
+
at most 90 UTC days; older days beyond the budget are declared as partial
|
|
646
|
+
coverage instead of failing the report
|
|
626
647
|
- Primary aggregate shards: 256 hourly and 128 daily, derived from stable
|
|
627
648
|
session identity
|
|
628
649
|
- Funnel and affiliate aggregate shards: 16
|
|
629
650
|
- Site ingress budget: 4,096 deterministic per-minute shards, each capped at 300
|
|
630
651
|
events and 512 KiB (1,228,800 admitted events/minute at uniform load)
|
|
631
652
|
- Rate-window storage: one reusable row per active session and site shard
|
|
632
|
-
- Live session timeout:
|
|
633
|
-
|
|
634
|
-
that
|
|
653
|
+
- Live session timeout: a `leave` beacon on `pagehide` retires the visitor about
|
|
654
|
+
ten seconds after they leave and a back/forward-cache return revives them
|
|
655
|
+
immediately; the safety net for a browser that never says goodbye is 90
|
|
656
|
+
seconds since the last event or heartbeat (heartbeats fire every 20 seconds,
|
|
657
|
+
within background-tab throttling), with one bounded five-second expiry sweep
|
|
658
|
+
per site; legacy per-session jobs hand off to that sweep during the cutover
|
|
635
659
|
- Clock alignment: the tracker and the vitals module stamp each batch with
|
|
636
660
|
`sentAt`; when that clock is more than 30 seconds from the server's, every
|
|
637
661
|
event in the batch is re-anchored by the offset before ingestion, so a visitor
|
|
@@ -770,10 +794,13 @@ deployments need no legacy-event migration.
|
|
|
770
794
|
Amage Rastro's default tracker:
|
|
771
795
|
|
|
772
796
|
- sets no cookies;
|
|
773
|
-
- stores a pseudonymous session ID and referral slug in `sessionStorage
|
|
797
|
+
- stores a pseudonymous session ID and referral slug in `sessionStorage`, and a
|
|
798
|
+
persistent pseudonymous visitor ID in `localStorage` — scoped to the site's
|
|
799
|
+
origin, never shared across sites, gone when the visitor clears site data;
|
|
774
800
|
- never persists raw visitor IP addresses in component tables;
|
|
775
|
-
- counts
|
|
776
|
-
|
|
801
|
+
- counts unique visitors by that persistent pseudonymous ID; when storage is
|
|
802
|
+
blocked or the id is absent, a salted hash of the request IP and `User-Agent`
|
|
803
|
+
that rotates every UTC day takes over, derived in the HTTP action from a
|
|
777
804
|
per-deployment secret; a host-supplied `visitorId` always takes precedence,
|
|
778
805
|
and the raw IP never reaches a mutation or a table;
|
|
779
806
|
- never persists the raw `User-Agent`, only a normalized browser, operating
|
|
@@ -792,9 +819,10 @@ The optional Web Vitals module inherits this contract: it reports at most five
|
|
|
792
819
|
timing numbers per page load (milliseconds, or CLS scaled by 1000) against the
|
|
793
820
|
landing path, and nothing else.
|
|
794
821
|
|
|
795
|
-
Cookieless does not automatically mean consent-exempt in every jurisdiction
|
|
796
|
-
|
|
797
|
-
policy, and
|
|
822
|
+
Cookieless does not automatically mean consent-exempt in every jurisdiction, and
|
|
823
|
+
the persistent visitor ID is an identifier under most privacy laws. Review your
|
|
824
|
+
collection purpose, custom properties, identity strategy, retention policy, and
|
|
825
|
+
local law.
|
|
798
826
|
|
|
799
827
|
The example Live Atlas uses MapLibre with OpenFreeMap Positron. Map tiles are
|
|
800
828
|
requested by the dashboard viewer; Amage Rastro visitor/session data is rendered
|
package/agent/integration.md
CHANGED
|
@@ -471,6 +471,7 @@ export const {
|
|
|
471
471
|
funnelsReport,
|
|
472
472
|
affiliatesReport,
|
|
473
473
|
vitalsReport,
|
|
474
|
+
siteMap,
|
|
474
475
|
dataCoverage,
|
|
475
476
|
} = federated;
|
|
476
477
|
```
|
|
@@ -495,6 +496,7 @@ requires both a valid JWT and a matching, non-revoked local grant.
|
|
|
495
496
|
| `funnelsReport` | one site and complete UTC-day range | Read-only definitions/steps plus aggregates; max 90 days |
|
|
496
497
|
| `affiliatesReport` | one site and complete UTC-day range | Read-only affiliate definitions plus aggregates |
|
|
497
498
|
| `vitalsReport` | one site and complete UTC-day range | Web Vitals p75/ratings per metric, page, and device; max 90 days |
|
|
499
|
+
| `siteMap` | site IDs and complete UTC-day range | Routes with derived exits/bounces plus transitions; max 90 days |
|
|
498
500
|
| `dataCoverage` | one site and inclusive integer range | Coverage metadata; echoes site ID, no event/visitor/session IDs |
|
|
499
501
|
|
|
500
502
|
The federated surface deliberately excludes ingestion, site mutation, retention
|
|
@@ -564,17 +566,23 @@ Do not mark integration complete until all checks pass:
|
|
|
564
566
|
and organization IDs.
|
|
565
567
|
4. Open the deployment selector and load Overview for an authorized site.
|
|
566
568
|
5. Trigger a real browser pageview and observe the Live view update reactively.
|
|
567
|
-
6.
|
|
569
|
+
6. Where the manifest advertises the optional `siteMap` capability, confirm
|
|
570
|
+
`/rastro/health` reports `features.siteMap: "dailyRollup"` and open **Mapa**
|
|
571
|
+
for an authorized site. A fresh host correctly shows an empty map naming the
|
|
572
|
+
date its coverage starts; the map only holds pageviews ingested after the
|
|
573
|
+
upgrade that introduced it.
|
|
574
|
+
7. In the host's `convex-test` suite, use a mocked Rastro identity to query a
|
|
568
575
|
known site outside the grant and require `FEDERATION_SITE_DENIED`.
|
|
569
|
-
|
|
576
|
+
8. In the same suite, call without an identity and require
|
|
570
577
|
`FEDERATION_UNAUTHENTICATED`.
|
|
571
|
-
|
|
578
|
+
9. Also require the stable failures for a foreign issuer, missing
|
|
572
579
|
`analytics:read`, mismatched connection/organization, duplicate site IDs, and
|
|
573
580
|
eleven requested or granted sites. Prove existing auth providers still pass
|
|
574
581
|
their own tests.
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
582
|
+
10. Keep the authenticated dashboard open, revoke the local grant, refresh a
|
|
583
|
+
report, and require `FEDERATION_CONNECTION_DENIED` before central
|
|
584
|
+
revocation.
|
|
585
|
+
11. Reprovision only if the rehearsal requires restoring the development grant.
|
|
578
586
|
|
|
579
587
|
Use this assertion shape in the host's existing `convex-test` harness after
|
|
580
588
|
registering its schema, modules, component, and `api.rastroFederation`:
|
package/agent/manifest.json
CHANGED
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
"upgrading": "https://www.amagerastro.com/docs/reference/upgrading.md",
|
|
16
16
|
"integrity": {
|
|
17
17
|
"algorithm": "sha256",
|
|
18
|
-
"agent": "
|
|
19
|
-
"llms": "
|
|
20
|
-
"protocol": "
|
|
21
|
-
"setup": "
|
|
22
|
-
"upgrading": "
|
|
18
|
+
"agent": "b641b6cdecc0c23291e169bceef6308d1679392bec0b5c9e11715b6740be83b3",
|
|
19
|
+
"llms": "0dab84ee468ef3f22c7560bd0080957218f66d3014a660be0e93bbef1de0ccd5",
|
|
20
|
+
"protocol": "57fe1d40b81a872a027294945dc577b4a6346562620f2772074dc534c11c9190",
|
|
21
|
+
"setup": "5e7cd04a7b285a887404fe3cdae918a63374822e656395df2b50f57736e0fd54",
|
|
22
|
+
"upgrading": "7679c82a8353549687cfda2b09a858d4fe0fe41f172366084d05f95d755e0626"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"controlPlane": {
|
|
@@ -68,7 +68,8 @@
|
|
|
68
68
|
"funnelsReport": "funnelsReport",
|
|
69
69
|
"affiliatesReport": "affiliatesReport",
|
|
70
70
|
"dataCoverage": "dataCoverage",
|
|
71
|
-
"vitalsReport": "vitalsReport"
|
|
71
|
+
"vitalsReport": "vitalsReport",
|
|
72
|
+
"siteMap": "siteMap"
|
|
72
73
|
},
|
|
73
74
|
"capabilities": [
|
|
74
75
|
"siteSummaries",
|
|
@@ -82,7 +83,8 @@
|
|
|
82
83
|
"funnels",
|
|
83
84
|
"affiliates",
|
|
84
85
|
"dataCoverage",
|
|
85
|
-
"vitals"
|
|
86
|
+
"vitals",
|
|
87
|
+
"siteMap"
|
|
86
88
|
],
|
|
87
89
|
"limits": {
|
|
88
90
|
"maxSitesPerRequest": 10,
|
|
@@ -168,7 +168,8 @@
|
|
|
168
168
|
"funnelsReport",
|
|
169
169
|
"affiliatesReport",
|
|
170
170
|
"dataCoverage",
|
|
171
|
-
"vitalsReport"
|
|
171
|
+
"vitalsReport",
|
|
172
|
+
"siteMap"
|
|
172
173
|
],
|
|
173
174
|
"properties": {
|
|
174
175
|
"manifest": { "const": "manifest" },
|
|
@@ -184,14 +185,15 @@
|
|
|
184
185
|
"funnelsReport": { "const": "funnelsReport" },
|
|
185
186
|
"affiliatesReport": { "const": "affiliatesReport" },
|
|
186
187
|
"dataCoverage": { "const": "dataCoverage" },
|
|
187
|
-
"vitalsReport": { "const": "vitalsReport" }
|
|
188
|
+
"vitalsReport": { "const": "vitalsReport" },
|
|
189
|
+
"siteMap": { "const": "siteMap" }
|
|
188
190
|
},
|
|
189
191
|
"additionalProperties": false
|
|
190
192
|
},
|
|
191
193
|
"capabilities": {
|
|
192
194
|
"type": "array",
|
|
193
|
-
"minItems":
|
|
194
|
-
"maxItems":
|
|
195
|
+
"minItems": 13,
|
|
196
|
+
"maxItems": 13,
|
|
195
197
|
"uniqueItems": true,
|
|
196
198
|
"items": {
|
|
197
199
|
"enum": [
|
|
@@ -206,7 +208,8 @@
|
|
|
206
208
|
"funnels",
|
|
207
209
|
"affiliates",
|
|
208
210
|
"dataCoverage",
|
|
209
|
-
"vitals"
|
|
211
|
+
"vitals",
|
|
212
|
+
"siteMap"
|
|
210
213
|
]
|
|
211
214
|
}
|
|
212
215
|
},
|
|
@@ -54,8 +54,9 @@ export declare const FEDERATED_ANALYTICS_CONNECTOR_MANIFEST: Readonly<{
|
|
|
54
54
|
readonly affiliatesReport: "affiliatesReport";
|
|
55
55
|
readonly dataCoverage: "dataCoverage";
|
|
56
56
|
readonly vitalsReport: "vitalsReport";
|
|
57
|
+
readonly siteMap: "siteMap";
|
|
57
58
|
}>;
|
|
58
|
-
readonly capabilities: readonly ["siteSummaries", "overview", "liveVisitors", "sessions", "sessionJourney", "conversions", "visitorJourney", "goals", "funnels", "affiliates", "dataCoverage", "vitals"];
|
|
59
|
+
readonly capabilities: readonly ["siteSummaries", "overview", "liveVisitors", "sessions", "sessionJourney", "conversions", "visitorJourney", "goals", "funnels", "affiliates", "dataCoverage", "vitals", "siteMap"];
|
|
59
60
|
readonly limits: Readonly<{
|
|
60
61
|
readonly maxSitesPerRequest: 10;
|
|
61
62
|
readonly maxSitesPerConnection: 10;
|
|
@@ -97,7 +98,7 @@ export interface FederatedAnalyticsAuthorizerOptions {
|
|
|
97
98
|
resolveConnection: ResolveFederatedAnalyticsConnection;
|
|
98
99
|
}
|
|
99
100
|
export declare const federatedAnalyticsManifestValidator: import("convex/values").VObject<{
|
|
100
|
-
capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[];
|
|
101
|
+
capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[];
|
|
101
102
|
functions: {
|
|
102
103
|
affiliatesReport: "affiliatesReport";
|
|
103
104
|
connectionStatus: "connectionStatus";
|
|
@@ -111,6 +112,7 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
|
|
|
111
112
|
manifest: "manifest";
|
|
112
113
|
overview: "overview";
|
|
113
114
|
sessionJourney: "sessionJourney";
|
|
115
|
+
siteMap: "siteMap";
|
|
114
116
|
visitorJourney: "visitorJourney";
|
|
115
117
|
vitalsReport: "vitalsReport";
|
|
116
118
|
};
|
|
@@ -141,6 +143,7 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
|
|
|
141
143
|
manifest: "manifest";
|
|
142
144
|
overview: "overview";
|
|
143
145
|
sessionJourney: "sessionJourney";
|
|
146
|
+
siteMap: "siteMap";
|
|
144
147
|
visitorJourney: "visitorJourney";
|
|
145
148
|
vitalsReport: "vitalsReport";
|
|
146
149
|
}, {
|
|
@@ -158,8 +161,9 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
|
|
|
158
161
|
affiliatesReport: import("convex/values").VLiteral<"affiliatesReport", "required">;
|
|
159
162
|
dataCoverage: import("convex/values").VLiteral<"dataCoverage", "required">;
|
|
160
163
|
vitalsReport: import("convex/values").VLiteral<"vitalsReport", "required">;
|
|
161
|
-
|
|
162
|
-
|
|
164
|
+
siteMap: import("convex/values").VLiteral<"siteMap", "required">;
|
|
165
|
+
}, "required", "affiliatesReport" | "connectionStatus" | "dataCoverage" | "funnelsReport" | "goalsReport" | "listConversions" | "listSessions" | "listSites" | "liveVisitors" | "manifest" | "overview" | "sessionJourney" | "siteMap" | "visitorJourney" | "vitalsReport">;
|
|
166
|
+
capabilities: import("convex/values").VArray<("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[], import("convex/values").VUnion<"affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "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">], "required", never>, "required">;
|
|
163
167
|
limits: import("convex/values").VObject<{
|
|
164
168
|
maxJourneyEvents: number;
|
|
165
169
|
maxLiveVisitors: number;
|
|
@@ -173,16 +177,16 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
|
|
|
173
177
|
maxLiveVisitors: import("convex/values").VFloat64<number, "required">;
|
|
174
178
|
maxJourneyEvents: import("convex/values").VFloat64<number, "required">;
|
|
175
179
|
}, "required", "maxJourneyEvents" | "maxLiveVisitors" | "maxReportRangeDays" | "maxSitesPerConnection" | "maxSitesPerRequest">;
|
|
176
|
-
}, "required", "capabilities" | "functions" | "functions.affiliatesReport" | "functions.connectionStatus" | "functions.dataCoverage" | "functions.funnelsReport" | "functions.goalsReport" | "functions.listConversions" | "functions.listSessions" | "functions.listSites" | "functions.liveVisitors" | "functions.manifest" | "functions.overview" | "functions.sessionJourney" | "functions.visitorJourney" | "functions.vitalsReport" | "limits" | "limits.maxJourneyEvents" | "limits.maxLiveVisitors" | "limits.maxReportRangeDays" | "limits.maxSitesPerConnection" | "limits.maxSitesPerRequest" | "moduleName" | "protocol" | "protocolVersion">;
|
|
180
|
+
}, "required", "capabilities" | "functions" | "functions.affiliatesReport" | "functions.connectionStatus" | "functions.dataCoverage" | "functions.funnelsReport" | "functions.goalsReport" | "functions.listConversions" | "functions.listSessions" | "functions.listSites" | "functions.liveVisitors" | "functions.manifest" | "functions.overview" | "functions.sessionJourney" | "functions.siteMap" | "functions.visitorJourney" | "functions.vitalsReport" | "limits" | "limits.maxJourneyEvents" | "limits.maxLiveVisitors" | "limits.maxReportRangeDays" | "limits.maxSitesPerConnection" | "limits.maxSitesPerRequest" | "moduleName" | "protocol" | "protocolVersion">;
|
|
177
181
|
export declare const federatedAnalyticsConnectionStatusValidator: import("convex/values").VObject<{
|
|
178
|
-
capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[];
|
|
182
|
+
capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[];
|
|
179
183
|
protocolVersion: 1;
|
|
180
184
|
siteCount: number;
|
|
181
185
|
status: "connected";
|
|
182
186
|
}, {
|
|
183
187
|
status: import("convex/values").VLiteral<"connected", "required">;
|
|
184
188
|
protocolVersion: import("convex/values").VLiteral<1, "required">;
|
|
185
|
-
capabilities: import("convex/values").VArray<("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[], import("convex/values").VUnion<"affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "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">], "required", never>, "required">;
|
|
189
|
+
capabilities: import("convex/values").VArray<("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[], import("convex/values").VUnion<"affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "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">], "required", never>, "required">;
|
|
186
190
|
siteCount: import("convex/values").VFloat64<number, "required">;
|
|
187
191
|
}, "required", "capabilities" | "protocolVersion" | "siteCount" | "status">;
|
|
188
192
|
export declare const federatedSiteSummaryValidator: import("convex/values").VObject<{
|
|
@@ -217,8 +221,9 @@ export declare function createFederatedAnalyticsManifest(): {
|
|
|
217
221
|
affiliatesReport: "affiliatesReport";
|
|
218
222
|
dataCoverage: "dataCoverage";
|
|
219
223
|
vitalsReport: "vitalsReport";
|
|
224
|
+
siteMap: "siteMap";
|
|
220
225
|
};
|
|
221
|
-
capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[];
|
|
226
|
+
capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteMap" | "siteSummaries" | "visitorJourney" | "vitals")[];
|
|
222
227
|
limits: {
|
|
223
228
|
maxSitesPerRequest: 10;
|
|
224
229
|
maxSitesPerConnection: 10;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQlD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAEhE,eAAO,MAAM,0BAA0B;2BACvB,sBAAsB;6BACpB,wBAAwB;0BAC3B,oBAAoB;EACxB,CAAC;AAEZ,eAAO,MAAM,mCAAmC,mBAAmB,CAAC;AAEpE,eAAO,MAAM,+BAA+B;8BACzB,4BAA4B;8BAC5B,4BAA4B;6BAC7B,2BAA2B;gCACxB,8BAA8B;4BAClC,0BAA0B;0BAC5B,wBAAwB;EAC5B,CAAC;AAGZ;;;;GAIG;AACH,eAAO,MAAM,sCAAsC;uBACvC,UAAU;+BACF,kBAAkB;wBACzB,WAAW;uBACZ,UAAU;2BACN,cAAc;2BACd,cAAc;6BACZ,gBAAgB;8BACf,iBAAiB;6BAClB,gBAAgB;0BACnB,aAAa;4BACX,eAAe;+BACZ,kBAAkB;2BACtB,cAAc;EACnB,CAAC;AACZ,eAAO,MAAM,yCAAyC,yKAY3C,CAAC;
|
|
1
|
+
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,10 +51,12 @@ export const FEDERATED_ANALYTICS_REQUIRED_CAPABILITIES = Object.freeze([
|
|
|
51
51
|
const FEDERATED_ANALYTICS_FUNCTION_NAMES = Object.freeze({
|
|
52
52
|
...FEDERATED_ANALYTICS_REQUIRED_FUNCTIONS,
|
|
53
53
|
vitalsReport: "vitalsReport",
|
|
54
|
+
siteMap: "siteMap",
|
|
54
55
|
});
|
|
55
56
|
const FEDERATED_ANALYTICS_CAPABILITIES = Object.freeze([
|
|
56
57
|
...FEDERATED_ANALYTICS_REQUIRED_CAPABILITIES,
|
|
57
58
|
"vitals",
|
|
59
|
+
"siteMap",
|
|
58
60
|
]);
|
|
59
61
|
const FEDERATED_ANALYTICS_LIMITS = Object.freeze({
|
|
60
62
|
maxSitesPerRequest: MAX_REPORT_SITES,
|
|
@@ -73,7 +75,7 @@ export const FEDERATED_ANALYTICS_CONNECTOR_MANIFEST = Object.freeze({
|
|
|
73
75
|
});
|
|
74
76
|
const MAX_CLAIM_LENGTH = 128;
|
|
75
77
|
const MAX_PERMISSIONS = 16;
|
|
76
|
-
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"));
|
|
78
|
+
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"));
|
|
77
79
|
export const federatedAnalyticsManifestValidator = v.object({
|
|
78
80
|
protocol: v.literal(FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.protocol),
|
|
79
81
|
protocolVersion: v.literal(FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.protocolVersion),
|
|
@@ -93,6 +95,7 @@ export const federatedAnalyticsManifestValidator = v.object({
|
|
|
93
95
|
affiliatesReport: v.literal("affiliatesReport"),
|
|
94
96
|
dataCoverage: v.literal("dataCoverage"),
|
|
95
97
|
vitalsReport: v.literal("vitalsReport"),
|
|
98
|
+
siteMap: v.literal("siteMap"),
|
|
96
99
|
}),
|
|
97
100
|
capabilities: v.array(federatedAnalyticsCapabilityValidator),
|
|
98
101
|
limits: v.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAC;IACtD,YAAY,EAAE,sBAAsB;IACpC,cAAc,EAAE,wBAAwB;IACxC,WAAW,EAAE,oBAAoB;CACzB,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,mCAAmC,GAAG,gBAAgB,CAAC;AAEpE,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3D,eAAe,EAAE,4BAA4B;IAC7C,eAAe,EAAE,4BAA4B;IAC7C,cAAc,EAAE,2BAA2B;IAC3C,iBAAiB,EAAE,8BAA8B;IACjD,aAAa,EAAE,0BAA0B;IACzC,WAAW,EAAE,wBAAwB;CAC7B,CAAC,CAAC;AAEZ,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AACjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,MAAM,CAAC,MAAM,CAAC;IAClE,QAAQ,EAAE,UAAU;IACpB,gBAAgB,EAAE,kBAAkB;IACpC,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;CACpB,CAAC,CAAC;AACZ,MAAM,CAAC,MAAM,yCAAyC,GAAG,MAAM,CAAC,MAAM,CAAC;IACrE,eAAe;IACf,UAAU;IACV,cAAc;IACd,UAAU;IACV,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,OAAO;IACP,SAAS;IACT,YAAY;IACZ,cAAc;CACN,CAAC,CAAC;AACZ,MAAM,kCAAkC,GAAG,MAAM,CAAC,MAAM,CAAC;IACvD,GAAG,sCAAsC;IACzC,YAAY,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAC;IACtD,YAAY,EAAE,sBAAsB;IACpC,cAAc,EAAE,wBAAwB;IACxC,WAAW,EAAE,oBAAoB;CACzB,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,mCAAmC,GAAG,gBAAgB,CAAC;AAEpE,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3D,eAAe,EAAE,4BAA4B;IAC7C,eAAe,EAAE,4BAA4B;IAC7C,cAAc,EAAE,2BAA2B;IAC3C,iBAAiB,EAAE,8BAA8B;IACjD,aAAa,EAAE,0BAA0B;IACzC,WAAW,EAAE,wBAAwB;CAC7B,CAAC,CAAC;AAEZ,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AACjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,MAAM,CAAC,MAAM,CAAC;IAClE,QAAQ,EAAE,UAAU;IACpB,gBAAgB,EAAE,kBAAkB;IACpC,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;CACpB,CAAC,CAAC;AACZ,MAAM,CAAC,MAAM,yCAAyC,GAAG,MAAM,CAAC,MAAM,CAAC;IACrE,eAAe;IACf,UAAU;IACV,cAAc;IACd,UAAU;IACV,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,OAAO;IACP,SAAS;IACT,YAAY;IACZ,cAAc;CACN,CAAC,CAAC;AACZ,MAAM,kCAAkC,GAAG,MAAM,CAAC,MAAM,CAAC;IACvD,GAAG,sCAAsC;IACzC,YAAY,EAAE,cAAc;IAC5B,OAAO,EAAE,SAAS;CACV,CAAC,CAAC;AACZ,MAAM,gCAAgC,GAAG,MAAM,CAAC,MAAM,CAAC;IACrD,GAAG,yCAAyC;IAC5C,QAAQ;IACR,SAAS;CACD,CAAC,CAAC;AACZ,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,kBAAkB,EAAE,gBAAgB;IACpC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,qBAAqB;IACzC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,sCAAsC,GAAG,MAAM,CAAC,MAAM,CAAC;IAClE,QAAQ,EAAE,wBAAwB;IAClC,eAAe,EAAE,CAAC;IAClB,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,kCAAkC;IAC7C,YAAY,EAAE,gCAAgC;IAC9C,MAAM,EAAE,0BAA0B;CAC1B,CAAC,CAAC;AAEZ,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,eAAe,GAAG,EAAE,CAAC;AAmD3B,MAAM,qCAAqC,GAAG,CAAC,CAAC,KAAK,CACnD,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAC1B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EACzB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAC3B,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EACxB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAC3B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAClB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EACpB,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EACvB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EACzB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EACnB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1D,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,QAAQ,CAAC;IACpE,eAAe,EAAE,CAAC,CAAC,OAAO,CACxB,sCAAsC,CAAC,eAAe,CACvD;IACD,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,UAAU,CAAC;IACxE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC/B,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC/C,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACjC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC/B,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QACvC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QACvC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC3C,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC7C,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC3C,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QACrC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QACzC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC/C,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QACvC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QACvC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;KAC9B,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,qCAAqC,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC9B,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE;QACjC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC9B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;QAC3B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;KAC7B,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2CAA2C,GAAG,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC9B,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,qCAAqC,CAAC;IAC5D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;CACxB,CAAC,CAAC;AAEH,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,GAAG,sCAAsC;QACzC,SAAS,EAAE,EAAE,GAAG,sCAAsC,CAAC,SAAS,EAAE;QAClE,YAAY,EAAE,CAAC,GAAG,sCAAsC,CAAC,YAAY,CAAC;QACtE,MAAM,EAAE,EAAE,GAAG,sCAAsC,CAAC,MAAM,EAAE;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4CAA4C,CAC1D,OAA4C;IAE5C,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,KAAK,EACV,GAAkC,EAClC,gBAAoC,EACG,EAAE;QACzC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CACF,+BAA+B,CAAC,eAAe,EAC/C,gDAAgD,CACjD,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACvC,IAAI,CACF,+BAA+B,CAAC,eAAe,EAC/C,2CAA2C,CAC5C,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;QACvE,MAAM,cAAc,GAAG,QAAQ,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,QAAQ,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;QACrE,IACE,CAAC,cAAc,CAAC,YAAY,CAAC;YAC7B,CAAC,cAAc,CAAC,cAAc,CAAC;YAC/B,CAAC,aAAa,CAAC,WAAW,EAAE,eAAe,CAAC;YAC5C,CAAC,WAAW,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAC1D,CAAC;YACD,IAAI,CACF,+BAA+B,CAAC,cAAc,EAC9C,wCAAwC,CACzC,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;YACtD,YAAY;YACZ,cAAc;YACd,QAAQ;SACT,CAAC,CAAC;QACH,IACE,CAAC,UAAU;YACX,UAAU,CAAC,SAAS,KAAK,SAAS;YAClC,UAAU,CAAC,YAAY,KAAK,YAAY;YACxC,UAAU,CAAC,cAAc,KAAK,cAAc;YAC5C,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,uBAAuB,CAAC;YAC3D,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAC/B,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,CAAC,MAAM,EAC9D,CAAC;YACD,IAAI,CACF,+BAA+B,CAAC,iBAAiB,EACjD,8CAA8C,CAC/C,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,IACE,gBAAgB,CAAC,MAAM,KAAK,CAAC;gBAC7B,gBAAgB,CAAC,MAAM,GAAG,gBAAgB;gBAC1C,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM;gBAC1D,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAC1D,CAAC;gBACD,IAAI,CACF,+BAA+B,CAAC,aAAa,EAC7C,2CAA2C,CAC5C,CAAC;YACJ,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACnE,IAAI,CACF,+BAA+B,CAAC,WAAW,EAC3C,4CAA4C,CAC7C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC;QAChB,KAAK,CAAC,MAAM,IAAI,gBAAgB,CACjC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,KAAc,EACd,aAAqB;IAErB,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,MAAM,IAAI,aAAa;QAC7B,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,IAAiC,EAAE,OAAe;IAC9D,MAAM,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC"}
|