@iann29/rastro 0.4.0 → 0.6.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.
Files changed (112) hide show
  1. package/README.md +146 -24
  2. package/agent/integration.md +66 -29
  3. package/agent/manifest.json +19 -8
  4. package/agent/manifest.schema.json +28 -9
  5. package/dist/client/federation.d.ts +38 -8
  6. package/dist/client/federation.d.ts.map +1 -1
  7. package/dist/client/federation.js +18 -1
  8. package/dist/client/federation.js.map +1 -1
  9. package/dist/client/identity.d.ts +11 -0
  10. package/dist/client/identity.d.ts.map +1 -0
  11. package/dist/client/identity.js +123 -0
  12. package/dist/client/identity.js.map +1 -0
  13. package/dist/client/index.d.ts +501 -11
  14. package/dist/client/index.d.ts.map +1 -1
  15. package/dist/client/index.js +220 -4
  16. package/dist/client/index.js.map +1 -1
  17. package/dist/component/_generated/api.d.ts +8 -0
  18. package/dist/component/_generated/api.d.ts.map +1 -1
  19. package/dist/component/_generated/api.js.map +1 -1
  20. package/dist/component/_generated/component.d.ts +158 -1
  21. package/dist/component/_generated/component.d.ts.map +1 -1
  22. package/dist/component/constants.d.ts +2 -0
  23. package/dist/component/constants.d.ts.map +1 -1
  24. package/dist/component/constants.js +7 -0
  25. package/dist/component/constants.js.map +1 -1
  26. package/dist/component/coverage.d.ts +1 -0
  27. package/dist/component/coverage.d.ts.map +1 -1
  28. package/dist/component/coverage.js +6 -1
  29. package/dist/component/coverage.js.map +1 -1
  30. package/dist/component/eventStore.d.ts +2 -0
  31. package/dist/component/eventStore.d.ts.map +1 -1
  32. package/dist/component/http.d.ts.map +1 -1
  33. package/dist/component/http.js +51 -1
  34. package/dist/component/http.js.map +1 -1
  35. package/dist/component/ingest.d.ts +2 -0
  36. package/dist/component/ingest.d.ts.map +1 -1
  37. package/dist/component/ingest.js +72 -22
  38. package/dist/component/ingest.js.map +1 -1
  39. package/dist/component/origin.d.ts +70 -0
  40. package/dist/component/origin.d.ts.map +1 -0
  41. package/dist/component/origin.js +230 -0
  42. package/dist/component/origin.js.map +1 -0
  43. package/dist/component/people.d.ts +79 -0
  44. package/dist/component/people.d.ts.map +1 -0
  45. package/dist/component/people.js +249 -0
  46. package/dist/component/people.js.map +1 -0
  47. package/dist/component/platforms.d.ts +33 -0
  48. package/dist/component/platforms.d.ts.map +1 -0
  49. package/dist/component/platforms.js +328 -0
  50. package/dist/component/platforms.js.map +1 -0
  51. package/dist/component/reports.d.ts +35 -74
  52. package/dist/component/reports.d.ts.map +1 -1
  53. package/dist/component/reports.js +59 -14
  54. package/dist/component/reports.js.map +1 -1
  55. package/dist/component/sanitize.d.ts +5 -0
  56. package/dist/component/sanitize.d.ts.map +1 -1
  57. package/dist/component/sanitize.js +33 -1
  58. package/dist/component/sanitize.js.map +1 -1
  59. package/dist/component/schema.d.ts +101 -7
  60. package/dist/component/schema.js +45 -1
  61. package/dist/component/schema.js.map +1 -1
  62. package/dist/component/trackedLinks.d.ts +91 -0
  63. package/dist/component/trackedLinks.d.ts.map +1 -0
  64. package/dist/component/trackedLinks.js +314 -0
  65. package/dist/component/trackedLinks.js.map +1 -0
  66. package/dist/component/useragent.d.ts +6 -0
  67. package/dist/component/useragent.d.ts.map +1 -1
  68. package/dist/component/useragent.js +9 -0
  69. package/dist/component/useragent.js.map +1 -1
  70. package/dist/component/validators.d.ts +101 -11
  71. package/dist/component/validators.d.ts.map +1 -1
  72. package/dist/component/validators.js +62 -1
  73. package/dist/component/validators.js.map +1 -1
  74. package/dist/component/visitors.d.ts +38 -2
  75. package/dist/component/visitors.d.ts.map +1 -1
  76. package/dist/component/visitors.js +162 -42
  77. package/dist/component/visitors.js.map +1 -1
  78. package/dist/react/index.d.ts +9 -5
  79. package/dist/react/index.d.ts.map +1 -1
  80. package/dist/react/index.js +36 -5
  81. package/dist/react/index.js.map +1 -1
  82. package/dist/tracker/generated.d.ts +6 -6
  83. package/dist/tracker/generated.d.ts.map +1 -1
  84. package/dist/tracker/generated.js +6 -6
  85. package/dist/tracker/generated.js.map +1 -1
  86. package/dist/tracker/tracker.d.ts +3 -1
  87. package/dist/tracker/tracker.d.ts.map +1 -1
  88. package/dist/tracker/tracker.js +56 -5
  89. package/dist/tracker/tracker.js.map +1 -1
  90. package/dist/tracker.min.js +1 -1
  91. package/docs/federation.md +24 -0
  92. package/docs/identity.md +307 -0
  93. package/docs/upgrading.md +190 -19
  94. package/llms.txt +11 -2
  95. package/package.json +5 -3
  96. package/src/component/_generated/api.ts +8 -0
  97. package/src/component/_generated/component.ts +251 -1
  98. package/src/component/constants.ts +7 -0
  99. package/src/component/coverage.ts +7 -1
  100. package/src/component/http.ts +56 -1
  101. package/src/component/ingest.ts +100 -28
  102. package/src/component/origin.ts +273 -0
  103. package/src/component/people.ts +321 -0
  104. package/src/component/platforms.ts +359 -0
  105. package/src/component/reports.ts +84 -13
  106. package/src/component/sanitize.ts +39 -1
  107. package/src/component/schema.ts +53 -0
  108. package/src/component/trackedLinks.ts +384 -0
  109. package/src/component/useragent.ts +11 -0
  110. package/src/component/validators.ts +120 -0
  111. package/src/component/visitors.ts +232 -55
  112. package/src/tracker/generated.ts +6 -6
@@ -1,10 +1,61 @@
1
1
  import { type Infer } from "convex/values";
2
+ export declare const personAttributeValueValidator: import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>;
3
+ export declare const personAttributesValidator: import("convex/values").VRecord<Record<string, string | number | boolean>, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "required", string>;
4
+ export type PersonAttributes = Infer<typeof personAttributesValidator>;
5
+ export declare const personFilterValidator: import("convex/values").VUnion<{
6
+ field: "email" | "name" | "visitorId";
7
+ prefix: string;
8
+ } | {
9
+ field: "attribute";
10
+ key: string;
11
+ value: string | number | boolean;
12
+ }, [import("convex/values").VObject<{
13
+ field: "email" | "name" | "visitorId";
14
+ prefix: string;
15
+ }, {
16
+ field: import("convex/values").VUnion<"email" | "name" | "visitorId", [import("convex/values").VLiteral<"name", "required">, import("convex/values").VLiteral<"email", "required">, import("convex/values").VLiteral<"visitorId", "required">], "required", never>;
17
+ prefix: import("convex/values").VString<string, "required">;
18
+ }, "required", "field" | "prefix">, import("convex/values").VObject<{
19
+ field: "attribute";
20
+ key: string;
21
+ value: string | number | boolean;
22
+ }, {
23
+ field: import("convex/values").VLiteral<"attribute", "required">;
24
+ key: import("convex/values").VString<string, "required">;
25
+ value: import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>;
26
+ }, "required", "field" | "key" | "value">], "required", "field" | "key" | "prefix" | "value">;
27
+ export type PersonFilter = Infer<typeof personFilterValidator>;
28
+ /** A profile supplied by the product's trusted backend, shared by its visits. */
29
+ export declare const visitorProfileValidator: import("convex/values").VObject<{
30
+ attributes?: Record<string, string | number | boolean> | undefined;
31
+ email?: string | undefined;
32
+ identifiedAt: number;
33
+ name?: string | undefined;
34
+ updatedAt: number;
35
+ visitorId: string;
36
+ }, {
37
+ visitorId: import("convex/values").VString<string, "required">;
38
+ name: import("convex/values").VString<string | undefined, "optional">;
39
+ email: import("convex/values").VString<string | undefined, "optional">;
40
+ attributes: import("convex/values").VRecord<Record<string, string | number | boolean> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "optional", string>;
41
+ identifiedAt: import("convex/values").VFloat64<number, "required">;
42
+ updatedAt: import("convex/values").VFloat64<number, "required">;
43
+ }, "required", "attributes" | "email" | "identifiedAt" | "name" | "updatedAt" | "visitorId" | `attributes.${string}`>;
44
+ export type VisitorProfile = Infer<typeof visitorProfileValidator>;
45
+ export declare const identifyVisitorFields: {
46
+ visitorId: import("convex/values").VString<string, "required">;
47
+ previousVisitorId: import("convex/values").VString<string | undefined, "optional">;
48
+ name: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VString<string, "required">, import("convex/values").VNull<null, "required">], "optional", never>;
49
+ email: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VString<string, "required">, import("convex/values").VNull<null, "required">], "optional", never>;
50
+ attributes: import("convex/values").VRecord<Record<string, string | number | boolean | null> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean | null, [import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, import("convex/values").VNull<null, "required">], "required", never>, "optional", string>;
51
+ };
2
52
  export declare const eventTypeValidator: import("convex/values").VUnion<"click" | "conversion" | "custom" | "heartbeat" | "leave" | "outbound" | "pageview" | "vital", [import("convex/values").VLiteral<"pageview", "required">, import("convex/values").VLiteral<"click", "required">, import("convex/values").VLiteral<"custom", "required">, import("convex/values").VLiteral<"conversion", "required">, import("convex/values").VLiteral<"heartbeat", "required">, import("convex/values").VLiteral<"leave", "required">, import("convex/values").VLiteral<"outbound", "required">, import("convex/values").VLiteral<"vital", "required">], "required", never>;
3
53
  export declare const vitalMetricValidator: import("convex/values").VUnion<"CLS" | "FCP" | "INP" | "LCP" | "TTFB", [import("convex/values").VLiteral<"LCP", "required">, import("convex/values").VLiteral<"CLS", "required">, import("convex/values").VLiteral<"INP", "required">, import("convex/values").VLiteral<"FCP", "required">, import("convex/values").VLiteral<"TTFB", "required">], "required", never>;
4
54
  export declare const propertyValueValidator: import("convex/values").VUnion<string | number | boolean | null, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">, import("convex/values").VNull<null, "required">], "required", never>;
5
55
  export declare const eventPropertiesValidator: import("convex/values").VRecord<Record<string, string | number | boolean | null>, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean | null, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">, import("convex/values").VNull<null, "required">], "required", never>, "required", string>;
6
56
  export declare const trackerEventValidator: import("convex/values").VObject<{
7
57
  affiliateSlug?: string | undefined;
58
+ clid?: string[] | undefined;
8
59
  currency?: string | undefined;
9
60
  eventId: string;
10
61
  href?: string | undefined;
@@ -37,12 +88,14 @@ export declare const trackerEventValidator: import("convex/values").VObject<{
37
88
  currency: import("convex/values").VString<string | undefined, "optional">;
38
89
  affiliateSlug: import("convex/values").VString<string | undefined, "optional">;
39
90
  value: import("convex/values").VFloat64<number | undefined, "optional">;
40
- }, "required", "affiliateSlug" | "currency" | "eventId" | "href" | "name" | "path" | "properties" | "referrer" | "revenueCents" | "sequence" | "sessionId" | "target" | "timestamp" | "type" | "value" | "visitorId" | `properties.${string}`>;
91
+ clid: import("convex/values").VArray<string[] | undefined, import("convex/values").VString<string, "required">, "optional">;
92
+ }, "required", "affiliateSlug" | "clid" | "currency" | "eventId" | "href" | "name" | "path" | "properties" | "referrer" | "revenueCents" | "sequence" | "sessionId" | "target" | "timestamp" | "type" | "value" | "visitorId" | `properties.${string}`>;
41
93
  export declare const ingestContextValidator: import("convex/values").VObject<{
42
94
  browser?: string | undefined;
43
95
  city?: string | undefined;
44
96
  country?: string | undefined;
45
97
  device?: string | undefined;
98
+ inApp?: string | undefined;
46
99
  latitude?: number | undefined;
47
100
  longitude?: number | undefined;
48
101
  os?: string | undefined;
@@ -56,17 +109,22 @@ export declare const ingestContextValidator: import("convex/values").VObject<{
56
109
  os: import("convex/values").VString<string | undefined, "optional">;
57
110
  device: import("convex/values").VString<string | undefined, "optional">;
58
111
  visitorKey: import("convex/values").VString<string | undefined, "optional">;
59
- }, "required", "browser" | "city" | "country" | "device" | "latitude" | "longitude" | "os" | "visitorKey">;
112
+ inApp: import("convex/values").VString<string | undefined, "optional">;
113
+ }, "required", "browser" | "city" | "country" | "device" | "inApp" | "latitude" | "longitude" | "os" | "visitorKey">;
114
+ export declare const channelValidator: import("convex/values").VUnion<"affiliate" | "ai" | "direct" | "display" | "email" | "messaging" | "offline" | "organic_search" | "organic_social" | "paid_search" | "paid_social" | "referral", [import("convex/values").VLiteral<"direct", "required">, import("convex/values").VLiteral<"organic_search", "required">, import("convex/values").VLiteral<"paid_search", "required">, import("convex/values").VLiteral<"organic_social", "required">, import("convex/values").VLiteral<"paid_social", "required">, import("convex/values").VLiteral<"messaging", "required">, import("convex/values").VLiteral<"email", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"ai", "required">, import("convex/values").VLiteral<"display", "required">, import("convex/values").VLiteral<"referral", "required">, import("convex/values").VLiteral<"offline", "required">], "required", never>;
115
+ export declare const evidenceValidator: import("convex/values").VUnion<"affiliate" | "clickId" | "inApp" | "legacy" | "none" | "referrer" | "utm", [import("convex/values").VLiteral<"utm", "required">, import("convex/values").VLiteral<"clickId", "required">, import("convex/values").VLiteral<"referrer", "required">, import("convex/values").VLiteral<"inApp", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"none", "required">, import("convex/values").VLiteral<"legacy", "required">], "required", never>;
60
116
  export declare const batchedEventValidator: import("convex/values").VObject<{
61
117
  affiliateSlug?: string | undefined;
62
118
  aggregateCountry?: string | undefined;
63
119
  browser?: string | undefined;
64
120
  city?: string | undefined;
121
+ clid?: string[] | undefined;
65
122
  country?: string | undefined;
66
123
  currency?: string | undefined;
67
124
  device?: string | undefined;
68
125
  eventId: string;
69
126
  href?: string | undefined;
127
+ inApp?: string | undefined;
70
128
  latitude?: number | undefined;
71
129
  longitude?: number | undefined;
72
130
  name?: string | undefined;
@@ -100,6 +158,7 @@ export declare const batchedEventValidator: import("convex/values").VObject<{
100
158
  currency: import("convex/values").VString<string | undefined, "optional">;
101
159
  affiliateSlug: import("convex/values").VString<string | undefined, "optional">;
102
160
  value: import("convex/values").VFloat64<number | undefined, "optional">;
161
+ clid: import("convex/values").VArray<string[] | undefined, import("convex/values").VString<string, "required">, "optional">;
103
162
  country: import("convex/values").VString<string | undefined, "optional">;
104
163
  city: import("convex/values").VString<string | undefined, "optional">;
105
164
  latitude: import("convex/values").VFloat64<number | undefined, "optional">;
@@ -108,8 +167,9 @@ export declare const batchedEventValidator: import("convex/values").VObject<{
108
167
  os: import("convex/values").VString<string | undefined, "optional">;
109
168
  device: import("convex/values").VString<string | undefined, "optional">;
110
169
  visitorKey: import("convex/values").VString<string | undefined, "optional">;
170
+ inApp: import("convex/values").VString<string | undefined, "optional">;
111
171
  aggregateCountry: import("convex/values").VString<string | undefined, "optional">;
112
- }, "required", "affiliateSlug" | "aggregateCountry" | "browser" | "city" | "country" | "currency" | "device" | "eventId" | "href" | "latitude" | "longitude" | "name" | "os" | "path" | "properties" | "referrer" | "revenueCents" | "sequence" | "sessionId" | "target" | "timestamp" | "type" | "value" | "visitorId" | "visitorKey" | `properties.${string}`>;
172
+ }, "required", "affiliateSlug" | "aggregateCountry" | "browser" | "city" | "clid" | "country" | "currency" | "device" | "eventId" | "href" | "inApp" | "latitude" | "longitude" | "name" | "os" | "path" | "properties" | "referrer" | "revenueCents" | "sequence" | "sessionId" | "target" | "timestamp" | "type" | "value" | "visitorId" | "visitorKey" | `properties.${string}`>;
113
173
  export declare const siteFieldsValidator: import("convex/values").VObject<{
114
174
  cookieless: boolean;
115
175
  createdAt: number;
@@ -137,6 +197,7 @@ export declare const sessionFieldsValidator: import("convex/values").VObject<{
137
197
  affiliateId?: import("convex/values").GenericId<"affiliates"> | undefined;
138
198
  affiliateSlug?: string | undefined;
139
199
  browser: string;
200
+ channel?: "affiliate" | "ai" | "direct" | "display" | "email" | "messaging" | "offline" | "organic_search" | "organic_social" | "paid_search" | "paid_social" | "referral" | undefined;
140
201
  city?: string | undefined;
141
202
  conversionCount: number;
142
203
  country?: string | undefined;
@@ -145,6 +206,7 @@ export declare const sessionFieldsValidator: import("convex/values").VObject<{
145
206
  durationMs: number;
146
207
  entryPath: string;
147
208
  eventCount: number;
209
+ evidence?: "affiliate" | "clickId" | "inApp" | "legacy" | "none" | "referrer" | "utm" | undefined;
148
210
  exitPath: string;
149
211
  lastSeenAt: number;
150
212
  latitude?: number | undefined;
@@ -152,6 +214,7 @@ export declare const sessionFieldsValidator: import("convex/values").VObject<{
152
214
  newVisitor?: boolean | undefined;
153
215
  os: string;
154
216
  pageviewCount: number;
217
+ platform?: string | undefined;
155
218
  referrer?: string | undefined;
156
219
  revenueCents: number;
157
220
  sessionId: string;
@@ -175,6 +238,9 @@ export declare const sessionFieldsValidator: import("convex/values").VObject<{
175
238
  exitPath: import("convex/values").VString<string, "required">;
176
239
  referrer: import("convex/values").VString<string | undefined, "optional">;
177
240
  source: import("convex/values").VString<string, "required">;
241
+ platform: import("convex/values").VString<string | undefined, "optional">;
242
+ channel: import("convex/values").VUnion<"affiliate" | "ai" | "direct" | "display" | "email" | "messaging" | "offline" | "organic_search" | "organic_social" | "paid_search" | "paid_social" | "referral" | undefined, [import("convex/values").VLiteral<"direct", "required">, import("convex/values").VLiteral<"organic_search", "required">, import("convex/values").VLiteral<"paid_search", "required">, import("convex/values").VLiteral<"organic_social", "required">, import("convex/values").VLiteral<"paid_social", "required">, import("convex/values").VLiteral<"messaging", "required">, import("convex/values").VLiteral<"email", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"ai", "required">, import("convex/values").VLiteral<"display", "required">, import("convex/values").VLiteral<"referral", "required">, import("convex/values").VLiteral<"offline", "required">], "optional", never>;
243
+ evidence: import("convex/values").VUnion<"affiliate" | "clickId" | "inApp" | "legacy" | "none" | "referrer" | "utm" | undefined, [import("convex/values").VLiteral<"utm", "required">, import("convex/values").VLiteral<"clickId", "required">, import("convex/values").VLiteral<"referrer", "required">, import("convex/values").VLiteral<"inApp", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"none", "required">, import("convex/values").VLiteral<"legacy", "required">], "optional", never>;
178
244
  utmSource: import("convex/values").VString<string | undefined, "optional">;
179
245
  utmMedium: import("convex/values").VString<string | undefined, "optional">;
180
246
  utmCampaign: import("convex/values").VString<string | undefined, "optional">;
@@ -195,7 +261,7 @@ export declare const sessionFieldsValidator: import("convex/values").VObject<{
195
261
  affiliateId: import("convex/values").VId<import("convex/values").GenericId<"affiliates"> | undefined, "optional">;
196
262
  affiliateAttributedAt: import("convex/values").VFloat64<number | undefined, "optional">;
197
263
  affiliateExpiresAt: import("convex/values").VFloat64<number | undefined, "optional">;
198
- }, "required", "affiliateAttributedAt" | "affiliateExpiresAt" | "affiliateId" | "affiliateSlug" | "browser" | "city" | "conversionCount" | "country" | "currency" | "device" | "durationMs" | "entryPath" | "eventCount" | "exitPath" | "lastSeenAt" | "latitude" | "longitude" | "newVisitor" | "os" | "pageviewCount" | "referrer" | "revenueCents" | "sessionId" | "siteId" | "source" | "startedAt" | "utmCampaign" | "utmMedium" | "utmSource" | "visitorId" | "visitorKey">;
264
+ }, "required", "affiliateAttributedAt" | "affiliateExpiresAt" | "affiliateId" | "affiliateSlug" | "browser" | "channel" | "city" | "conversionCount" | "country" | "currency" | "device" | "durationMs" | "entryPath" | "eventCount" | "evidence" | "exitPath" | "lastSeenAt" | "latitude" | "longitude" | "newVisitor" | "os" | "pageviewCount" | "platform" | "referrer" | "revenueCents" | "sessionId" | "siteId" | "source" | "startedAt" | "utmCampaign" | "utmMedium" | "utmSource" | "visitorId" | "visitorKey">;
199
265
  export declare const eventFieldsValidator: import("convex/values").VObject<{
200
266
  affiliateSlug?: string | undefined;
201
267
  browser: string;
@@ -245,17 +311,17 @@ export declare const eventFieldsValidator: import("convex/values").VObject<{
245
311
  os: import("convex/values").VString<string, "required">;
246
312
  device: import("convex/values").VString<string, "required">;
247
313
  }, "required", "affiliateSlug" | "browser" | "city" | "country" | "currency" | "device" | "eventId" | "href" | "latitude" | "longitude" | "name" | "os" | "path" | "properties" | "referrer" | "revenueCents" | "sequence" | "sessionId" | "siteId" | "target" | "timestamp" | "type" | "visitorId" | `properties.${string}`>;
248
- export declare const dimensionTypeValidator: import("convex/values").VUnion<"browser" | "campaign" | "country" | "device" | "event" | "goal" | "medium" | "outbound" | "page" | "source", [import("convex/values").VLiteral<"source", "required">, import("convex/values").VLiteral<"campaign", "required">, import("convex/values").VLiteral<"page", "required">, import("convex/values").VLiteral<"country", "required">, import("convex/values").VLiteral<"device", "required">, import("convex/values").VLiteral<"browser", "required">, import("convex/values").VLiteral<"event", "required">, import("convex/values").VLiteral<"goal", "required">, import("convex/values").VLiteral<"medium", "required">, import("convex/values").VLiteral<"outbound", "required">], "required", never>;
314
+ export declare const dimensionTypeValidator: import("convex/values").VUnion<"browser" | "campaign" | "channel" | "country" | "device" | "event" | "evidence" | "goal" | "medium" | "outbound" | "page" | "platform" | "source", [import("convex/values").VLiteral<"source", "required">, import("convex/values").VLiteral<"campaign", "required">, import("convex/values").VLiteral<"page", "required">, import("convex/values").VLiteral<"country", "required">, import("convex/values").VLiteral<"device", "required">, import("convex/values").VLiteral<"browser", "required">, import("convex/values").VLiteral<"event", "required">, import("convex/values").VLiteral<"goal", "required">, import("convex/values").VLiteral<"medium", "required">, import("convex/values").VLiteral<"outbound", "required">, import("convex/values").VLiteral<"platform", "required">, import("convex/values").VLiteral<"channel", "required">, import("convex/values").VLiteral<"evidence", "required">], "required", never>;
249
315
  export declare const dimensionSlotValidator: import("convex/values").VObject<{
250
316
  count: number;
251
317
  pageviews?: number | undefined;
252
318
  revenueCents: number;
253
319
  sessions?: number | undefined;
254
320
  slot: number;
255
- type: "browser" | "campaign" | "country" | "device" | "event" | "goal" | "medium" | "outbound" | "page" | "source";
321
+ type: "browser" | "campaign" | "channel" | "country" | "device" | "event" | "evidence" | "goal" | "medium" | "outbound" | "page" | "platform" | "source";
256
322
  value: string;
257
323
  }, {
258
- type: import("convex/values").VUnion<"browser" | "campaign" | "country" | "device" | "event" | "goal" | "medium" | "outbound" | "page" | "source", [import("convex/values").VLiteral<"source", "required">, import("convex/values").VLiteral<"campaign", "required">, import("convex/values").VLiteral<"page", "required">, import("convex/values").VLiteral<"country", "required">, import("convex/values").VLiteral<"device", "required">, import("convex/values").VLiteral<"browser", "required">, import("convex/values").VLiteral<"event", "required">, import("convex/values").VLiteral<"goal", "required">, import("convex/values").VLiteral<"medium", "required">, import("convex/values").VLiteral<"outbound", "required">], "required", never>;
324
+ type: import("convex/values").VUnion<"browser" | "campaign" | "channel" | "country" | "device" | "event" | "evidence" | "goal" | "medium" | "outbound" | "page" | "platform" | "source", [import("convex/values").VLiteral<"source", "required">, import("convex/values").VLiteral<"campaign", "required">, import("convex/values").VLiteral<"page", "required">, import("convex/values").VLiteral<"country", "required">, import("convex/values").VLiteral<"device", "required">, import("convex/values").VLiteral<"browser", "required">, import("convex/values").VLiteral<"event", "required">, import("convex/values").VLiteral<"goal", "required">, import("convex/values").VLiteral<"medium", "required">, import("convex/values").VLiteral<"outbound", "required">, import("convex/values").VLiteral<"platform", "required">, import("convex/values").VLiteral<"channel", "required">, import("convex/values").VLiteral<"evidence", "required">], "required", never>;
259
325
  slot: import("convex/values").VFloat64<number, "required">;
260
326
  value: import("convex/values").VString<string, "required">;
261
327
  count: import("convex/values").VFloat64<number, "required">;
@@ -285,7 +351,7 @@ export declare const aggregateFieldsValidator: import("convex/values").VObject<{
285
351
  revenueCents: number;
286
352
  sessions?: number | undefined;
287
353
  slot: number;
288
- type: "browser" | "campaign" | "country" | "device" | "event" | "goal" | "medium" | "outbound" | "page" | "source";
354
+ type: "browser" | "campaign" | "channel" | "country" | "device" | "event" | "evidence" | "goal" | "medium" | "outbound" | "page" | "platform" | "source";
289
355
  value: string;
290
356
  }[];
291
357
  durationMs?: number | undefined;
@@ -335,7 +401,7 @@ export declare const aggregateFieldsValidator: import("convex/values").VObject<{
335
401
  revenueCents: number;
336
402
  sessions?: number | undefined;
337
403
  slot: number;
338
- type: "browser" | "campaign" | "country" | "device" | "event" | "goal" | "medium" | "outbound" | "page" | "source";
404
+ type: "browser" | "campaign" | "channel" | "country" | "device" | "event" | "evidence" | "goal" | "medium" | "outbound" | "page" | "platform" | "source";
339
405
  value: string;
340
406
  }[], import("convex/values").VObject<{
341
407
  count: number;
@@ -343,10 +409,10 @@ export declare const aggregateFieldsValidator: import("convex/values").VObject<{
343
409
  revenueCents: number;
344
410
  sessions?: number | undefined;
345
411
  slot: number;
346
- type: "browser" | "campaign" | "country" | "device" | "event" | "goal" | "medium" | "outbound" | "page" | "source";
412
+ type: "browser" | "campaign" | "channel" | "country" | "device" | "event" | "evidence" | "goal" | "medium" | "outbound" | "page" | "platform" | "source";
347
413
  value: string;
348
414
  }, {
349
- type: import("convex/values").VUnion<"browser" | "campaign" | "country" | "device" | "event" | "goal" | "medium" | "outbound" | "page" | "source", [import("convex/values").VLiteral<"source", "required">, import("convex/values").VLiteral<"campaign", "required">, import("convex/values").VLiteral<"page", "required">, import("convex/values").VLiteral<"country", "required">, import("convex/values").VLiteral<"device", "required">, import("convex/values").VLiteral<"browser", "required">, import("convex/values").VLiteral<"event", "required">, import("convex/values").VLiteral<"goal", "required">, import("convex/values").VLiteral<"medium", "required">, import("convex/values").VLiteral<"outbound", "required">], "required", never>;
415
+ type: import("convex/values").VUnion<"browser" | "campaign" | "channel" | "country" | "device" | "event" | "evidence" | "goal" | "medium" | "outbound" | "page" | "platform" | "source", [import("convex/values").VLiteral<"source", "required">, import("convex/values").VLiteral<"campaign", "required">, import("convex/values").VLiteral<"page", "required">, import("convex/values").VLiteral<"country", "required">, import("convex/values").VLiteral<"device", "required">, import("convex/values").VLiteral<"browser", "required">, import("convex/values").VLiteral<"event", "required">, import("convex/values").VLiteral<"goal", "required">, import("convex/values").VLiteral<"medium", "required">, import("convex/values").VLiteral<"outbound", "required">, import("convex/values").VLiteral<"platform", "required">, import("convex/values").VLiteral<"channel", "required">, import("convex/values").VLiteral<"evidence", "required">], "required", never>;
350
416
  slot: import("convex/values").VFloat64<number, "required">;
351
417
  value: import("convex/values").VString<string, "required">;
352
418
  count: import("convex/values").VFloat64<number, "required">;
@@ -443,6 +509,28 @@ export declare const affiliateFieldsValidator: import("convex/values").VObject<{
443
509
  createdAt: import("convex/values").VFloat64<number, "required">;
444
510
  updatedAt: import("convex/values").VFloat64<number, "required">;
445
511
  }, "required", "active" | "attributionWindowDays" | "commissionBps" | "createdAt" | "name" | "siteId" | "slug" | "updatedAt">;
512
+ export declare const trackedLinkChannelValidator: import("convex/values").VUnion<"affiliate" | "display" | "email" | "messaging" | "offline" | "organic_social" | "paid_social" | "referral", [import("convex/values").VLiteral<"organic_social", "required">, import("convex/values").VLiteral<"paid_social", "required">, import("convex/values").VLiteral<"messaging", "required">, import("convex/values").VLiteral<"email", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"display", "required">, import("convex/values").VLiteral<"referral", "required">, import("convex/values").VLiteral<"offline", "required">], "required", never>;
513
+ export declare const trackedLinkFieldsValidator: import("convex/values").VObject<{
514
+ campaign?: string | undefined;
515
+ channel: "affiliate" | "display" | "email" | "messaging" | "offline" | "organic_social" | "paid_social" | "referral";
516
+ createdAt: number;
517
+ createdBy: string;
518
+ destination: string;
519
+ disabledAt?: number | undefined;
520
+ platform: string;
521
+ siteId: import("convex/values").GenericId<"sites">;
522
+ slug: string;
523
+ }, {
524
+ siteId: import("convex/values").VId<import("convex/values").GenericId<"sites">, "required">;
525
+ slug: import("convex/values").VString<string, "required">;
526
+ destination: import("convex/values").VString<string, "required">;
527
+ platform: import("convex/values").VString<string, "required">;
528
+ channel: import("convex/values").VUnion<"affiliate" | "display" | "email" | "messaging" | "offline" | "organic_social" | "paid_social" | "referral", [import("convex/values").VLiteral<"organic_social", "required">, import("convex/values").VLiteral<"paid_social", "required">, import("convex/values").VLiteral<"messaging", "required">, import("convex/values").VLiteral<"email", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"display", "required">, import("convex/values").VLiteral<"referral", "required">, import("convex/values").VLiteral<"offline", "required">], "required", never>;
529
+ campaign: import("convex/values").VString<string | undefined, "optional">;
530
+ createdAt: import("convex/values").VFloat64<number, "required">;
531
+ createdBy: import("convex/values").VString<string, "required">;
532
+ disabledAt: import("convex/values").VFloat64<number | undefined, "optional">;
533
+ }, "required", "campaign" | "channel" | "createdAt" | "createdBy" | "destination" | "disabledAt" | "platform" | "siteId" | "slug">;
446
534
  export declare const ingestResultValidator: import("convex/values").VObject<{
447
535
  accepted: number;
448
536
  duplicates: number;
@@ -480,4 +568,6 @@ export type IngestContext = Infer<typeof ingestContextValidator>;
480
568
  export type EventProperties = Infer<typeof eventPropertiesValidator>;
481
569
  export type FunnelStep = Infer<typeof funnelStepValidator>;
482
570
  export type EventType = Infer<typeof eventTypeValidator>;
571
+ export type Channel = Infer<typeof channelValidator>;
572
+ export type Evidence = Infer<typeof evidenceValidator>;
483
573
  //# sourceMappingURL=validators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/component/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE9C,eAAO,MAAM,kBAAkB,4lBAS9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,uWAMhC,CAAC;AAEF,eAAO,MAAM,sBAAsB,0SAKlC,CAAC;AAEF,eAAO,MAAM,wBAAwB,scAGpC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8OAmBhC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;0GASjC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gWAGhC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;iIAU9B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;idAkCjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6TAwB/B,CAAC;AAEH,eAAO,MAAM,sBAAsB,otBAalC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;+FAWjC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;qDAIjC,CAAC;AAEH,eAAO,MAAM,6BAA6B,uPAMzC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uYAuBnC,CAAC;AAEH,eAAO,MAAM,sBAAsB,8LAGlC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;4HAU9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;yCAI9B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iHAShC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;6HASnC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;sDAIhC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;yKAWrC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC/D,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/component/validators.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,31 @@
1
1
  import { v } from "convex/values";
2
+ export const personAttributeValueValidator = v.union(v.string(), v.number(), v.boolean());
3
+ export const personAttributesValidator = v.record(v.string(), personAttributeValueValidator);
4
+ export const personFilterValidator = v.union(v.object({
5
+ field: v.union(v.literal("name"), v.literal("email"), v.literal("visitorId")),
6
+ prefix: v.string(),
7
+ }), v.object({
8
+ field: v.literal("attribute"),
9
+ key: v.string(),
10
+ value: personAttributeValueValidator,
11
+ }));
12
+ /** A profile supplied by the product's trusted backend, shared by its visits. */
13
+ export const visitorProfileValidator = v.object({
14
+ visitorId: v.string(),
15
+ name: v.optional(v.string()),
16
+ email: v.optional(v.string()),
17
+ attributes: v.optional(personAttributesValidator),
18
+ identifiedAt: v.number(),
19
+ updatedAt: v.number(),
20
+ });
21
+ export const identifyVisitorFields = {
22
+ visitorId: v.string(),
23
+ previousVisitorId: v.optional(v.string()),
24
+ // Omission preserves the value; null explicitly removes it.
25
+ name: v.optional(v.union(v.string(), v.null())),
26
+ email: v.optional(v.union(v.string(), v.null())),
27
+ attributes: v.optional(v.record(v.string(), v.union(personAttributeValueValidator, v.null()))),
28
+ };
2
29
  export const eventTypeValidator = v.union(v.literal("pageview"), v.literal("click"), v.literal("custom"), v.literal("conversion"), v.literal("heartbeat"), v.literal("leave"), v.literal("outbound"), v.literal("vital"));
3
30
  export const vitalMetricValidator = v.union(v.literal("LCP"), v.literal("CLS"), v.literal("INP"), v.literal("FCP"), v.literal("TTFB"));
4
31
  export const propertyValueValidator = v.union(v.string(), v.number(), v.boolean(), v.null());
@@ -22,6 +49,9 @@ export const trackerEventValidator = v.object({
22
49
  // Web Vitals measurement: milliseconds, or CLS scaled by 1000. Only "vital"
23
50
  // events carry it; sanitization strips it from every other type.
24
51
  value: v.optional(v.number()),
52
+ // The names of the click-ID keys on the landing URL (`fbclid`, `gclid`…),
53
+ // never their values; sanitization keeps only the known ones (origin.ts).
54
+ clid: v.optional(v.array(v.string())),
25
55
  });
26
56
  export const ingestContextValidator = v.object({
27
57
  country: v.optional(v.string()),
@@ -32,7 +62,18 @@ export const ingestContextValidator = v.object({
32
62
  os: v.optional(v.string()),
33
63
  device: v.optional(v.string()),
34
64
  visitorKey: v.optional(v.string()),
65
+ // The platform whose in-app browser sent the batch (useragent.ts), derived
66
+ // by the HTTP action so the raw User-Agent never reaches a mutation.
67
+ inApp: v.optional(v.string()),
35
68
  });
69
+ // How a session arrived (channel) and which rule proved it (evidence); see
70
+ // origin.ts. "legacy" is never stored: reports mark a session recorded before
71
+ // origins existed with it when they classify that session on read.
72
+ export const channelValidator = v.union(v.literal("direct"), v.literal("organic_search"), v.literal("paid_search"), v.literal("organic_social"), v.literal("paid_social"), v.literal("messaging"), v.literal("email"), v.literal("affiliate"), v.literal("ai"), v.literal("display"), v.literal("referral"),
73
+ // A link printed off the web: a QR code, a flyer, a receipt. Only a tracked
74
+ // link can say so, since the scan itself carries no referrer.
75
+ v.literal("offline"));
76
+ export const evidenceValidator = v.union(v.literal("utm"), v.literal("clickId"), v.literal("referrer"), v.literal("inApp"), v.literal("affiliate"), v.literal("none"), v.literal("legacy"));
36
77
  export const batchedEventValidator = trackerEventValidator.extend({
37
78
  ...ingestContextValidator.fields,
38
79
  aggregateCountry: v.optional(v.string()),
@@ -62,6 +103,10 @@ export const sessionFieldsValidator = v.object({
62
103
  exitPath: v.string(),
63
104
  referrer: v.optional(v.string()),
64
105
  source: v.string(),
106
+ // The first touch's origin (origin.ts); absent on sessions recorded before.
107
+ platform: v.optional(v.string()),
108
+ channel: v.optional(channelValidator),
109
+ evidence: v.optional(evidenceValidator),
65
110
  utmSource: v.optional(v.string()),
66
111
  utmMedium: v.optional(v.string()),
67
112
  utmCampaign: v.optional(v.string()),
@@ -111,7 +156,9 @@ export const eventFieldsValidator = v.object({
111
156
  export const dimensionTypeValidator = v.union(v.literal("source"), v.literal("campaign"), v.literal("page"), v.literal("country"), v.literal("device"), v.literal("browser"), v.literal("event"), v.literal("goal"),
112
157
  // Since 0.1.0: the lowercase utm_medium of the session, and the destination
113
158
  // host of an outbound click (never its path).
114
- v.literal("medium"), v.literal("outbound"));
159
+ v.literal("medium"), v.literal("outbound"),
160
+ // The session's origin platform, channel and evidence (origin.ts).
161
+ v.literal("platform"), v.literal("channel"), v.literal("evidence"));
115
162
  export const dimensionSlotValidator = v.object({
116
163
  type: dimensionTypeValidator,
117
164
  slot: v.number(),
@@ -194,6 +241,20 @@ export const affiliateFieldsValidator = v.object({
194
241
  createdAt: v.number(),
195
242
  updatedAt: v.number(),
196
243
  });
244
+ // Where a tracked link was published: chosen at creation and carried to the
245
+ // landing page as its utm_medium.
246
+ export const trackedLinkChannelValidator = v.union(v.literal("organic_social"), v.literal("paid_social"), v.literal("messaging"), v.literal("email"), v.literal("affiliate"), v.literal("display"), v.literal("referral"), v.literal("offline"));
247
+ export const trackedLinkFieldsValidator = v.object({
248
+ siteId: v.id("sites"),
249
+ slug: v.string(),
250
+ destination: v.string(),
251
+ platform: v.string(),
252
+ channel: trackedLinkChannelValidator,
253
+ campaign: v.optional(v.string()),
254
+ createdAt: v.number(),
255
+ createdBy: v.string(),
256
+ disabledAt: v.optional(v.number()),
257
+ });
197
258
  export const ingestResultValidator = v.object({
198
259
  accepted: v.number(),
199
260
  duplicates: v.number(),
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/component/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAc,MAAM,eAAe,CAAC;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CACvC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAClB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EACnB,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EACvB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EACtB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAClB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CACzC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAChB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAChB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAChB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAChB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC3C,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,OAAO,EAAE,EACX,CAAC,CAAC,IAAI,EAAE,CACT,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAC9C,CAAC,CAAC,MAAM,EAAE,EACV,sBAAsB,CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACrC,4EAA4E;IAC5E,iEAAiE;IACjE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAChE,GAAG,sBAAsB,CAAC,MAAM;IAChC,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,0EAA0E;IAC1E,0EAA0E;IAC1E,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAC3C,qBAAqB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7C,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC3C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EACnB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACjB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EACpB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EACnB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EACpB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAClB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACjB,4EAA4E;AAC5E,8CAA8C;AAC9C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EACnB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,yEAAyE;IACzE,uEAAuE;IACvE,8DAA8D;IAC9D,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAClD,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACjB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAChB,wEAAwE;AACxE,4DAA4D;AAC5D,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IACrB,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACjD,qBAAqB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;IAC3C,yEAAyE;IACzE,2EAA2E;IAC3E,sEAAsE;IACtE,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC3C,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,sBAAsB;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACnC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC9B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE;IACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACjD,CAAC,CAAC"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/component/validators.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { Id } from "./_generated/dataModel.js";
2
2
  import { type QueryCtx } from "./_generated/server.js";
3
+ import { type VisitorProfile } from "./validators.js";
3
4
  /**
4
5
  * Folds an anonymous visitor id into the pseudonymous identity the host
5
6
  * supplies after signup or sign-in. Links are one level deep: an alias can
@@ -7,13 +8,48 @@ import { type QueryCtx } from "./_generated/server.js";
7
8
  * alias can never own aliases, so journeys stay bounded and unambiguous.
8
9
  */
9
10
  export declare const link: import("convex/server").RegisteredMutation<"public", {
10
- previousVisitorId: string;
11
- siteId: import("convex/values").GenericId<"sites">;
11
+ siteId: Id<"sites">;
12
12
  visitorId: string;
13
+ previousVisitorId: string;
13
14
  }, Promise<{
14
15
  linked: boolean;
15
16
  aliasCount: number;
16
17
  }>>;
18
+ /** Upsert a person and link the pre-login visit in the same transaction. */
19
+ export declare const identify: import("convex/server").RegisteredMutation<"public", {
20
+ attributes?: Record<string, string | number | boolean | null> | undefined;
21
+ email?: string | null | undefined;
22
+ name?: string | null | undefined;
23
+ previousVisitorId?: string | undefined;
24
+ siteId: import("convex/values").GenericId<"sites">;
25
+ visitorId: string;
26
+ }, Promise<{
27
+ visitorId: string;
28
+ name?: string | undefined;
29
+ email?: string | undefined;
30
+ attributes?: Record<string, string | number | boolean> | undefined;
31
+ identifiedAt: number;
32
+ updatedAt: number;
33
+ }>>;
34
+ export declare const getProfile: import("convex/server").RegisteredQuery<"public", {
35
+ siteId: import("convex/values").GenericId<"sites">;
36
+ visitorId: string;
37
+ }, Promise<{
38
+ attributes?: Record<string, string | number | boolean> | undefined;
39
+ email?: string | undefined;
40
+ identifiedAt: number;
41
+ name?: string | undefined;
42
+ updatedAt: number;
43
+ visitorId: string;
44
+ } | null>>;
45
+ export declare function readVisitorProfile(ctx: QueryCtx, siteId: Id<"sites">, visitorId: string): Promise<VisitorProfile | null>;
46
+ /** Enrich a bounded report page; repeated sessions share one indexed lookup. */
47
+ export declare function withVisitorProfiles<Row extends {
48
+ siteId: Id<"sites">;
49
+ visitorId: string;
50
+ }>(ctx: QueryCtx, rows: Row[]): Promise<Array<Row & {
51
+ profile?: VisitorProfile;
52
+ }>>;
17
53
  /** The identity a visitor id resolves to, followed by every alias it owns. */
18
54
  export declare function resolveVisitorIdentities(ctx: QueryCtx, siteId: Id<"sites">, visitorId: string): Promise<string[]>;
19
55
  //# sourceMappingURL=visitors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"visitors.d.ts","sourceRoot":"","sources":["../../src/component/visitors.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;;;;;;GAwEf,CAAC;AAEH,8EAA8E;AAC9E,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB"}
1
+ {"version":3,"file":"visitors.d.ts","sourceRoot":"","sources":["../../src/component/visitors.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAOpD,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,eAAO,MAAM,IAAI;YAaL,EAAE,CAAC,OAAO,CAAC;eACR,MAAM;uBACE,MAAM;;;;GAP3B,CAAC;AAgFH,4EAA4E;AAC5E,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;GAkFnB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;UAKrB,CAAC;AAuBH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAMhC;AAED,gFAAgF;AAChF,wBAAsB,mBAAmB,CACvC,GAAG,SAAS;IAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAEtD,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,GAAG,EAAE,GACV,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG;IAAE,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,CAAC,CAAC,CAcpD;AAED,8EAA8E;AAC9E,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB"}