@reopt-ai/data-contract 0.2.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -4
- package/dist/{chunk-IKOEYZVT.js → chunk-2LZBZXBF.js} +9 -3
- package/dist/chunk-2LZBZXBF.js.map +1 -0
- package/dist/{chunk-LBSBZO7O.cjs → chunk-4B4AY44F.cjs} +33 -7
- package/dist/chunk-4B4AY44F.cjs.map +1 -0
- package/dist/{chunk-2SJPZP2D.js → chunk-AHXPQQKO.js} +30 -4
- package/dist/chunk-AHXPQQKO.js.map +1 -0
- package/dist/{chunk-SC7TFGTO.js → chunk-BCGR27G2.js} +130 -14
- package/dist/chunk-BCGR27G2.js.map +1 -0
- package/dist/{chunk-FRJK7OCQ.js → chunk-MFZEIH5Z.js} +7 -4
- package/dist/chunk-MFZEIH5Z.js.map +1 -0
- package/dist/{chunk-CSTC3ADG.cjs → chunk-OLSMH4RY.cjs} +9 -3
- package/dist/chunk-OLSMH4RY.cjs.map +1 -0
- package/dist/{chunk-GCLUMVPA.cjs → chunk-VQ2CD5MG.cjs} +138 -22
- package/dist/chunk-VQ2CD5MG.cjs.map +1 -0
- package/dist/{chunk-HRKELGGH.cjs → chunk-XI3VP5DN.cjs} +7 -4
- package/dist/chunk-XI3VP5DN.cjs.map +1 -0
- package/dist/client.cjs +94 -44
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +8 -4
- package/dist/client.d.ts +8 -4
- package/dist/client.js +58 -8
- package/dist/client.js.map +1 -1
- package/dist/control.cjs +14 -4
- package/dist/control.cjs.map +1 -1
- package/dist/control.d.cts +49 -7
- package/dist/control.d.ts +49 -7
- package/dist/control.js +15 -5
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +15 -4
- package/dist/index.d.ts +15 -4
- package/dist/index.js +1 -1
- package/dist/ingest.cjs +2 -2
- package/dist/ingest.d.cts +9 -7
- package/dist/ingest.d.ts +9 -7
- package/dist/ingest.js +1 -1
- package/dist/query.cjs +29 -3
- package/dist/query.cjs.map +1 -1
- package/dist/query.d.cts +317 -21
- package/dist/query.d.ts +317 -21
- package/dist/query.js +30 -4
- package/dist/report.cjs +85 -0
- package/dist/report.cjs.map +1 -0
- package/dist/report.d.cts +167 -0
- package/dist/report.d.ts +167 -0
- package/dist/report.js +85 -0
- package/dist/report.js.map +1 -0
- package/package.json +7 -2
- package/dist/chunk-2SJPZP2D.js.map +0 -1
- package/dist/chunk-CSTC3ADG.cjs.map +0 -1
- package/dist/chunk-FRJK7OCQ.js.map +0 -1
- package/dist/chunk-GCLUMVPA.cjs.map +0 -1
- package/dist/chunk-HRKELGGH.cjs.map +0 -1
- package/dist/chunk-IKOEYZVT.js.map +0 -1
- package/dist/chunk-LBSBZO7O.cjs.map +0 -1
- package/dist/chunk-SC7TFGTO.js.map +0 -1
package/dist/query.d.ts
CHANGED
|
@@ -16,10 +16,10 @@ export { zDate, zInstant } from './index.js';
|
|
|
16
16
|
|
|
17
17
|
/** Bucket width for a time series. */
|
|
18
18
|
declare const zGranularity: z.ZodEnum<{
|
|
19
|
-
|
|
19
|
+
month: "month";
|
|
20
20
|
day: "day";
|
|
21
|
+
hour: "hour";
|
|
21
22
|
week: "week";
|
|
22
|
-
month: "month";
|
|
23
23
|
}>;
|
|
24
24
|
type Granularity = z.infer<typeof zGranularity>;
|
|
25
25
|
/**
|
|
@@ -54,13 +54,29 @@ type ChannelFilter = z.infer<typeof zChannelFilter>;
|
|
|
54
54
|
* TTL, while ingest lag means the read model is genuinely behind and the right
|
|
55
55
|
* response is an "aggregating" badge, not a refresh.
|
|
56
56
|
*/
|
|
57
|
+
declare const zQuerySource: z.ZodEnum<{
|
|
58
|
+
rollup: "rollup";
|
|
59
|
+
raw: "raw";
|
|
60
|
+
mixed: "mixed";
|
|
61
|
+
}>;
|
|
62
|
+
type QuerySource = z.infer<typeof zQuerySource>;
|
|
57
63
|
declare const zQueryMeta: z.ZodObject<{
|
|
58
64
|
projectId: z.ZodString;
|
|
59
65
|
computedAt: z.ZodString;
|
|
60
66
|
cacheAgeSeconds: z.ZodNumber;
|
|
61
|
-
ingestLagSeconds: z.ZodNumber
|
|
67
|
+
ingestLagSeconds: z.ZodNullable<z.ZodNumber>;
|
|
68
|
+
ingestLagStatus: z.ZodEnum<{
|
|
69
|
+
unknown: "unknown";
|
|
70
|
+
known: "known";
|
|
71
|
+
}>;
|
|
72
|
+
ingestDeadLetterCount: z.ZodNullable<z.ZodNumber>;
|
|
62
73
|
cached: z.ZodBoolean;
|
|
63
74
|
timezone: z.ZodString;
|
|
75
|
+
source: z.ZodEnum<{
|
|
76
|
+
rollup: "rollup";
|
|
77
|
+
raw: "raw";
|
|
78
|
+
mixed: "mixed";
|
|
79
|
+
}>;
|
|
64
80
|
requestId: z.ZodString;
|
|
65
81
|
}, z.core.$strip>;
|
|
66
82
|
type QueryMeta = z.infer<typeof zQueryMeta>;
|
|
@@ -71,9 +87,19 @@ declare function zQueryEnvelope<T extends z.ZodTypeAny>(data: T): z.ZodObject<{
|
|
|
71
87
|
projectId: z.ZodString;
|
|
72
88
|
computedAt: z.ZodString;
|
|
73
89
|
cacheAgeSeconds: z.ZodNumber;
|
|
74
|
-
ingestLagSeconds: z.ZodNumber
|
|
90
|
+
ingestLagSeconds: z.ZodNullable<z.ZodNumber>;
|
|
91
|
+
ingestLagStatus: z.ZodEnum<{
|
|
92
|
+
unknown: "unknown";
|
|
93
|
+
known: "known";
|
|
94
|
+
}>;
|
|
95
|
+
ingestDeadLetterCount: z.ZodNullable<z.ZodNumber>;
|
|
75
96
|
cached: z.ZodBoolean;
|
|
76
97
|
timezone: z.ZodString;
|
|
98
|
+
source: z.ZodEnum<{
|
|
99
|
+
rollup: "rollup";
|
|
100
|
+
raw: "raw";
|
|
101
|
+
mixed: "mixed";
|
|
102
|
+
}>;
|
|
77
103
|
requestId: z.ZodString;
|
|
78
104
|
}, z.core.$strip>;
|
|
79
105
|
}, z.core.$strip>;
|
|
@@ -88,17 +114,29 @@ declare const zTimeseriesBreakdown: z.ZodObject<{
|
|
|
88
114
|
topN: z.ZodDefault<z.ZodNumber>;
|
|
89
115
|
}, z.core.$strip>;
|
|
90
116
|
type TimeseriesBreakdown = z.infer<typeof zTimeseriesBreakdown>;
|
|
117
|
+
/** Exact-match filter for a top-level event `properties` key. Multiple filters are ANDed. */
|
|
118
|
+
declare const zEventPropertyFilter: z.ZodObject<{
|
|
119
|
+
key: z.ZodString;
|
|
120
|
+
operator: z.ZodDefault<z.ZodLiteral<"eq">>;
|
|
121
|
+
value: z.ZodString;
|
|
122
|
+
}, z.core.$strip>;
|
|
123
|
+
type EventPropertyFilter = z.infer<typeof zEventPropertyFilter>;
|
|
91
124
|
declare const zEventsTimeseriesInput: z.ZodObject<{
|
|
92
125
|
projectId: z.ZodString;
|
|
93
126
|
startDate: z.ZodString;
|
|
94
127
|
endDate: z.ZodString;
|
|
95
128
|
granularity: z.ZodDefault<z.ZodEnum<{
|
|
96
|
-
|
|
129
|
+
month: "month";
|
|
97
130
|
day: "day";
|
|
131
|
+
hour: "hour";
|
|
98
132
|
week: "week";
|
|
99
|
-
month: "month";
|
|
100
133
|
}>>;
|
|
101
134
|
eventName: z.ZodOptional<z.ZodString>;
|
|
135
|
+
propertyFilters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
136
|
+
key: z.ZodString;
|
|
137
|
+
operator: z.ZodDefault<z.ZodLiteral<"eq">>;
|
|
138
|
+
value: z.ZodString;
|
|
139
|
+
}, z.core.$strip>>>;
|
|
102
140
|
breakdown: z.ZodOptional<z.ZodObject<{
|
|
103
141
|
kind: z.ZodLiteral<"property">;
|
|
104
142
|
key: z.ZodString;
|
|
@@ -106,8 +144,23 @@ declare const zEventsTimeseriesInput: z.ZodObject<{
|
|
|
106
144
|
}, z.core.$strip>>;
|
|
107
145
|
segmentId: z.ZodOptional<z.ZodString>;
|
|
108
146
|
timezone: z.ZodOptional<z.ZodString>;
|
|
147
|
+
includeInternal: z.ZodDefault<z.ZodBoolean>;
|
|
109
148
|
}, z.core.$strip>;
|
|
110
149
|
type EventsTimeseriesInput = z.input<typeof zEventsTimeseriesInput>;
|
|
150
|
+
/**
|
|
151
|
+
* Bucket start as wall-clock time in `meta.timezone`, `YYYY-MM-DD HH:MM:SS`.
|
|
152
|
+
*
|
|
153
|
+
* Pinned rather than left to the backend, because a consumer keys its chart on
|
|
154
|
+
* this string: an unspecified format is one where two backends, or two
|
|
155
|
+
* granularities, can quietly disagree and produce two different keys for the
|
|
156
|
+
* same bucket.
|
|
157
|
+
*
|
|
158
|
+
* It is wall time, not an instant — for `Asia/Seoul` a day bucket reads
|
|
159
|
+
* `2026-08-24 00:00:00`, which is `2026-08-23T15:00:00Z`. Day, week and month
|
|
160
|
+
* buckets always carry `00:00:00`, so slicing the first ten characters is a
|
|
161
|
+
* safe way to get a date key.
|
|
162
|
+
*/
|
|
163
|
+
declare const zBucketStart: z.ZodString;
|
|
111
164
|
declare const zTimeseriesPoint: z.ZodObject<{
|
|
112
165
|
date: z.ZodString;
|
|
113
166
|
count: z.ZodNumber;
|
|
@@ -115,10 +168,10 @@ declare const zTimeseriesPoint: z.ZodObject<{
|
|
|
115
168
|
type TimeseriesPoint = z.infer<typeof zTimeseriesPoint>;
|
|
116
169
|
declare const zEventsTimeseriesData: z.ZodObject<{
|
|
117
170
|
granularity: z.ZodEnum<{
|
|
118
|
-
|
|
171
|
+
month: "month";
|
|
119
172
|
day: "day";
|
|
173
|
+
hour: "hour";
|
|
120
174
|
week: "week";
|
|
121
|
-
month: "month";
|
|
122
175
|
}>;
|
|
123
176
|
timezone: z.ZodString;
|
|
124
177
|
series: z.ZodArray<z.ZodObject<{
|
|
@@ -137,10 +190,10 @@ type EventsTimeseriesData = z.infer<typeof zEventsTimeseriesData>;
|
|
|
137
190
|
declare const zEventsTimeseriesResponse: z.ZodObject<{
|
|
138
191
|
data: z.ZodObject<{
|
|
139
192
|
granularity: z.ZodEnum<{
|
|
140
|
-
|
|
193
|
+
month: "month";
|
|
141
194
|
day: "day";
|
|
195
|
+
hour: "hour";
|
|
142
196
|
week: "week";
|
|
143
|
-
month: "month";
|
|
144
197
|
}>;
|
|
145
198
|
timezone: z.ZodString;
|
|
146
199
|
series: z.ZodArray<z.ZodObject<{
|
|
@@ -159,9 +212,19 @@ declare const zEventsTimeseriesResponse: z.ZodObject<{
|
|
|
159
212
|
projectId: z.ZodString;
|
|
160
213
|
computedAt: z.ZodString;
|
|
161
214
|
cacheAgeSeconds: z.ZodNumber;
|
|
162
|
-
ingestLagSeconds: z.ZodNumber
|
|
215
|
+
ingestLagSeconds: z.ZodNullable<z.ZodNumber>;
|
|
216
|
+
ingestLagStatus: z.ZodEnum<{
|
|
217
|
+
unknown: "unknown";
|
|
218
|
+
known: "known";
|
|
219
|
+
}>;
|
|
220
|
+
ingestDeadLetterCount: z.ZodNullable<z.ZodNumber>;
|
|
163
221
|
cached: z.ZodBoolean;
|
|
164
222
|
timezone: z.ZodString;
|
|
223
|
+
source: z.ZodEnum<{
|
|
224
|
+
rollup: "rollup";
|
|
225
|
+
raw: "raw";
|
|
226
|
+
mixed: "mixed";
|
|
227
|
+
}>;
|
|
165
228
|
requestId: z.ZodString;
|
|
166
229
|
}, z.core.$strip>;
|
|
167
230
|
}, z.core.$strip>;
|
|
@@ -181,6 +244,7 @@ declare const zFunnelInput: z.ZodObject<{
|
|
|
181
244
|
utmCampaigns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
182
245
|
}, z.core.$strip>>;
|
|
183
246
|
timezone: z.ZodOptional<z.ZodString>;
|
|
247
|
+
includeInternal: z.ZodDefault<z.ZodBoolean>;
|
|
184
248
|
}, z.core.$strip>;
|
|
185
249
|
type FunnelInput = z.input<typeof zFunnelInput>;
|
|
186
250
|
declare const zFunnelStep: z.ZodObject<{
|
|
@@ -221,26 +285,36 @@ declare const zFunnelResponse: z.ZodObject<{
|
|
|
221
285
|
projectId: z.ZodString;
|
|
222
286
|
computedAt: z.ZodString;
|
|
223
287
|
cacheAgeSeconds: z.ZodNumber;
|
|
224
|
-
ingestLagSeconds: z.ZodNumber
|
|
288
|
+
ingestLagSeconds: z.ZodNullable<z.ZodNumber>;
|
|
289
|
+
ingestLagStatus: z.ZodEnum<{
|
|
290
|
+
unknown: "unknown";
|
|
291
|
+
known: "known";
|
|
292
|
+
}>;
|
|
293
|
+
ingestDeadLetterCount: z.ZodNullable<z.ZodNumber>;
|
|
225
294
|
cached: z.ZodBoolean;
|
|
226
295
|
timezone: z.ZodString;
|
|
296
|
+
source: z.ZodEnum<{
|
|
297
|
+
rollup: "rollup";
|
|
298
|
+
raw: "raw";
|
|
299
|
+
mixed: "mixed";
|
|
300
|
+
}>;
|
|
227
301
|
requestId: z.ZodString;
|
|
228
302
|
}, z.core.$strip>;
|
|
229
303
|
}, z.core.$strip>;
|
|
230
304
|
type FunnelResponse = z.infer<typeof zFunnelResponse>;
|
|
231
305
|
declare const zRetentionInterval: z.ZodEnum<{
|
|
306
|
+
month: "month";
|
|
232
307
|
day: "day";
|
|
233
308
|
week: "week";
|
|
234
|
-
month: "month";
|
|
235
309
|
}>;
|
|
236
310
|
declare const zRetentionInput: z.ZodObject<{
|
|
237
311
|
projectId: z.ZodString;
|
|
238
312
|
startDate: z.ZodString;
|
|
239
313
|
endDate: z.ZodString;
|
|
240
314
|
interval: z.ZodDefault<z.ZodEnum<{
|
|
315
|
+
month: "month";
|
|
241
316
|
day: "day";
|
|
242
317
|
week: "week";
|
|
243
|
-
month: "month";
|
|
244
318
|
}>>;
|
|
245
319
|
periods: z.ZodDefault<z.ZodNumber>;
|
|
246
320
|
startEvent: z.ZodOptional<z.ZodString>;
|
|
@@ -262,6 +336,7 @@ declare const zRetentionInput: z.ZodObject<{
|
|
|
262
336
|
utmCampaigns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
263
337
|
}, z.core.$strip>>;
|
|
264
338
|
timezone: z.ZodOptional<z.ZodString>;
|
|
339
|
+
includeInternal: z.ZodDefault<z.ZodBoolean>;
|
|
265
340
|
}, z.core.$strip>;
|
|
266
341
|
type RetentionInput = z.input<typeof zRetentionInput>;
|
|
267
342
|
declare const zRetentionCell: z.ZodObject<{
|
|
@@ -284,9 +359,9 @@ declare const zRetentionData: z.ZodObject<{
|
|
|
284
359
|
rate: z.ZodNumber;
|
|
285
360
|
}, z.core.$strip>>;
|
|
286
361
|
interval: z.ZodEnum<{
|
|
362
|
+
month: "month";
|
|
287
363
|
day: "day";
|
|
288
364
|
week: "week";
|
|
289
|
-
month: "month";
|
|
290
365
|
}>;
|
|
291
366
|
periods: z.ZodNumber;
|
|
292
367
|
retentionType: z.ZodEnum<{
|
|
@@ -312,9 +387,9 @@ declare const zRetentionResponse: z.ZodObject<{
|
|
|
312
387
|
rate: z.ZodNumber;
|
|
313
388
|
}, z.core.$strip>>;
|
|
314
389
|
interval: z.ZodEnum<{
|
|
390
|
+
month: "month";
|
|
315
391
|
day: "day";
|
|
316
392
|
week: "week";
|
|
317
|
-
month: "month";
|
|
318
393
|
}>;
|
|
319
394
|
periods: z.ZodNumber;
|
|
320
395
|
retentionType: z.ZodEnum<{
|
|
@@ -327,19 +402,237 @@ declare const zRetentionResponse: z.ZodObject<{
|
|
|
327
402
|
projectId: z.ZodString;
|
|
328
403
|
computedAt: z.ZodString;
|
|
329
404
|
cacheAgeSeconds: z.ZodNumber;
|
|
330
|
-
ingestLagSeconds: z.ZodNumber
|
|
405
|
+
ingestLagSeconds: z.ZodNullable<z.ZodNumber>;
|
|
406
|
+
ingestLagStatus: z.ZodEnum<{
|
|
407
|
+
unknown: "unknown";
|
|
408
|
+
known: "known";
|
|
409
|
+
}>;
|
|
410
|
+
ingestDeadLetterCount: z.ZodNullable<z.ZodNumber>;
|
|
331
411
|
cached: z.ZodBoolean;
|
|
332
412
|
timezone: z.ZodString;
|
|
413
|
+
source: z.ZodEnum<{
|
|
414
|
+
rollup: "rollup";
|
|
415
|
+
raw: "raw";
|
|
416
|
+
mixed: "mixed";
|
|
417
|
+
}>;
|
|
333
418
|
requestId: z.ZodString;
|
|
334
419
|
}, z.core.$strip>;
|
|
335
420
|
}, z.core.$strip>;
|
|
336
421
|
type RetentionResponse = z.infer<typeof zRetentionResponse>;
|
|
337
|
-
|
|
422
|
+
/**
|
|
423
|
+
* Session-level traffic for a brand site, served from the hourly rollups.
|
|
424
|
+
* `newVisitors` counts sessions whose device was first seen inside them;
|
|
425
|
+
* `returningVisitors` is the rest. Both are session counts, not people —
|
|
426
|
+
* "visitor" is the vocabulary the dashboards already use.
|
|
427
|
+
*/
|
|
428
|
+
declare const zTrafficOverviewInput: z.ZodObject<{
|
|
429
|
+
projectId: z.ZodString;
|
|
430
|
+
startDate: z.ZodString;
|
|
431
|
+
endDate: z.ZodString;
|
|
432
|
+
granularity: z.ZodDefault<z.ZodEnum<{
|
|
433
|
+
month: "month";
|
|
434
|
+
day: "day";
|
|
435
|
+
hour: "hour";
|
|
436
|
+
week: "week";
|
|
437
|
+
}>>;
|
|
438
|
+
timezone: z.ZodOptional<z.ZodString>;
|
|
439
|
+
}, z.core.$strip>;
|
|
440
|
+
type TrafficOverviewInput = z.input<typeof zTrafficOverviewInput>;
|
|
441
|
+
declare const zTrafficTotals: z.ZodObject<{
|
|
442
|
+
sessions: z.ZodNumber;
|
|
443
|
+
pageviews: z.ZodNumber;
|
|
444
|
+
newVisitors: z.ZodNumber;
|
|
445
|
+
returningVisitors: z.ZodNumber;
|
|
446
|
+
bounceRate: z.ZodNumber;
|
|
447
|
+
}, z.core.$strip>;
|
|
448
|
+
type TrafficTotals = z.infer<typeof zTrafficTotals>;
|
|
449
|
+
declare const zTrafficSeriesPoint: z.ZodObject<{
|
|
450
|
+
sessions: z.ZodNumber;
|
|
451
|
+
pageviews: z.ZodNumber;
|
|
452
|
+
newVisitors: z.ZodNumber;
|
|
453
|
+
returningVisitors: z.ZodNumber;
|
|
454
|
+
bounceRate: z.ZodNumber;
|
|
455
|
+
date: z.ZodString;
|
|
456
|
+
}, z.core.$strip>;
|
|
457
|
+
declare const zTrafficOverviewData: z.ZodObject<{
|
|
458
|
+
granularity: z.ZodEnum<{
|
|
459
|
+
month: "month";
|
|
460
|
+
day: "day";
|
|
461
|
+
hour: "hour";
|
|
462
|
+
week: "week";
|
|
463
|
+
}>;
|
|
464
|
+
timezone: z.ZodString;
|
|
465
|
+
totals: z.ZodObject<{
|
|
466
|
+
sessions: z.ZodNumber;
|
|
467
|
+
pageviews: z.ZodNumber;
|
|
468
|
+
newVisitors: z.ZodNumber;
|
|
469
|
+
returningVisitors: z.ZodNumber;
|
|
470
|
+
bounceRate: z.ZodNumber;
|
|
471
|
+
}, z.core.$strip>;
|
|
472
|
+
series: z.ZodArray<z.ZodObject<{
|
|
473
|
+
sessions: z.ZodNumber;
|
|
474
|
+
pageviews: z.ZodNumber;
|
|
475
|
+
newVisitors: z.ZodNumber;
|
|
476
|
+
returningVisitors: z.ZodNumber;
|
|
477
|
+
bounceRate: z.ZodNumber;
|
|
478
|
+
date: z.ZodString;
|
|
479
|
+
}, z.core.$strip>>;
|
|
480
|
+
}, z.core.$strip>;
|
|
481
|
+
type TrafficOverviewData = z.infer<typeof zTrafficOverviewData>;
|
|
482
|
+
declare const zTrafficOverviewResponse: z.ZodObject<{
|
|
483
|
+
data: z.ZodObject<{
|
|
484
|
+
granularity: z.ZodEnum<{
|
|
485
|
+
month: "month";
|
|
486
|
+
day: "day";
|
|
487
|
+
hour: "hour";
|
|
488
|
+
week: "week";
|
|
489
|
+
}>;
|
|
490
|
+
timezone: z.ZodString;
|
|
491
|
+
totals: z.ZodObject<{
|
|
492
|
+
sessions: z.ZodNumber;
|
|
493
|
+
pageviews: z.ZodNumber;
|
|
494
|
+
newVisitors: z.ZodNumber;
|
|
495
|
+
returningVisitors: z.ZodNumber;
|
|
496
|
+
bounceRate: z.ZodNumber;
|
|
497
|
+
}, z.core.$strip>;
|
|
498
|
+
series: z.ZodArray<z.ZodObject<{
|
|
499
|
+
sessions: z.ZodNumber;
|
|
500
|
+
pageviews: z.ZodNumber;
|
|
501
|
+
newVisitors: z.ZodNumber;
|
|
502
|
+
returningVisitors: z.ZodNumber;
|
|
503
|
+
bounceRate: z.ZodNumber;
|
|
504
|
+
date: z.ZodString;
|
|
505
|
+
}, z.core.$strip>>;
|
|
506
|
+
}, z.core.$strip>;
|
|
507
|
+
meta: z.ZodObject<{
|
|
508
|
+
projectId: z.ZodString;
|
|
509
|
+
computedAt: z.ZodString;
|
|
510
|
+
cacheAgeSeconds: z.ZodNumber;
|
|
511
|
+
ingestLagSeconds: z.ZodNullable<z.ZodNumber>;
|
|
512
|
+
ingestLagStatus: z.ZodEnum<{
|
|
513
|
+
unknown: "unknown";
|
|
514
|
+
known: "known";
|
|
515
|
+
}>;
|
|
516
|
+
ingestDeadLetterCount: z.ZodNullable<z.ZodNumber>;
|
|
517
|
+
cached: z.ZodBoolean;
|
|
518
|
+
timezone: z.ZodString;
|
|
519
|
+
source: z.ZodEnum<{
|
|
520
|
+
rollup: "rollup";
|
|
521
|
+
raw: "raw";
|
|
522
|
+
mixed: "mixed";
|
|
523
|
+
}>;
|
|
524
|
+
requestId: z.ZodString;
|
|
525
|
+
}, z.core.$strip>;
|
|
526
|
+
}, z.core.$strip>;
|
|
527
|
+
type TrafficOverviewResponse = z.infer<typeof zTrafficOverviewResponse>;
|
|
528
|
+
declare const zTrafficDimension: z.ZodEnum<{
|
|
529
|
+
channel: "channel";
|
|
530
|
+
referrer: "referrer";
|
|
531
|
+
utm: "utm";
|
|
532
|
+
}>;
|
|
533
|
+
type TrafficDimension = z.infer<typeof zTrafficDimension>;
|
|
534
|
+
declare const zTrafficSourcesInput: z.ZodObject<{
|
|
535
|
+
projectId: z.ZodString;
|
|
536
|
+
startDate: z.ZodString;
|
|
537
|
+
endDate: z.ZodString;
|
|
538
|
+
dimension: z.ZodEnum<{
|
|
539
|
+
channel: "channel";
|
|
540
|
+
referrer: "referrer";
|
|
541
|
+
utm: "utm";
|
|
542
|
+
}>;
|
|
543
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
544
|
+
timezone: z.ZodOptional<z.ZodString>;
|
|
545
|
+
}, z.core.$strip>;
|
|
546
|
+
type TrafficSourcesInput = z.input<typeof zTrafficSourcesInput>;
|
|
547
|
+
declare const zTrafficSourceRow: z.ZodObject<{
|
|
548
|
+
sessions: z.ZodNumber;
|
|
549
|
+
pageviews: z.ZodNumber;
|
|
550
|
+
newVisitors: z.ZodNumber;
|
|
551
|
+
returningVisitors: z.ZodNumber;
|
|
552
|
+
bounceRate: z.ZodNumber;
|
|
553
|
+
key: z.ZodString;
|
|
554
|
+
channelType: z.ZodOptional<z.ZodString>;
|
|
555
|
+
referrerName: z.ZodOptional<z.ZodString>;
|
|
556
|
+
referrerType: z.ZodOptional<z.ZodString>;
|
|
557
|
+
utmSource: z.ZodOptional<z.ZodString>;
|
|
558
|
+
utmMedium: z.ZodOptional<z.ZodString>;
|
|
559
|
+
utmCampaign: z.ZodOptional<z.ZodString>;
|
|
560
|
+
}, z.core.$strip>;
|
|
561
|
+
type TrafficSourceRow = z.infer<typeof zTrafficSourceRow>;
|
|
562
|
+
declare const zTrafficSourcesData: z.ZodObject<{
|
|
563
|
+
dimension: z.ZodEnum<{
|
|
564
|
+
channel: "channel";
|
|
565
|
+
referrer: "referrer";
|
|
566
|
+
utm: "utm";
|
|
567
|
+
}>;
|
|
568
|
+
timezone: z.ZodString;
|
|
569
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
570
|
+
sessions: z.ZodNumber;
|
|
571
|
+
pageviews: z.ZodNumber;
|
|
572
|
+
newVisitors: z.ZodNumber;
|
|
573
|
+
returningVisitors: z.ZodNumber;
|
|
574
|
+
bounceRate: z.ZodNumber;
|
|
575
|
+
key: z.ZodString;
|
|
576
|
+
channelType: z.ZodOptional<z.ZodString>;
|
|
577
|
+
referrerName: z.ZodOptional<z.ZodString>;
|
|
578
|
+
referrerType: z.ZodOptional<z.ZodString>;
|
|
579
|
+
utmSource: z.ZodOptional<z.ZodString>;
|
|
580
|
+
utmMedium: z.ZodOptional<z.ZodString>;
|
|
581
|
+
utmCampaign: z.ZodOptional<z.ZodString>;
|
|
582
|
+
}, z.core.$strip>>;
|
|
583
|
+
}, z.core.$strip>;
|
|
584
|
+
type TrafficSourcesData = z.infer<typeof zTrafficSourcesData>;
|
|
585
|
+
declare const zTrafficSourcesResponse: z.ZodObject<{
|
|
586
|
+
data: z.ZodObject<{
|
|
587
|
+
dimension: z.ZodEnum<{
|
|
588
|
+
channel: "channel";
|
|
589
|
+
referrer: "referrer";
|
|
590
|
+
utm: "utm";
|
|
591
|
+
}>;
|
|
592
|
+
timezone: z.ZodString;
|
|
593
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
594
|
+
sessions: z.ZodNumber;
|
|
595
|
+
pageviews: z.ZodNumber;
|
|
596
|
+
newVisitors: z.ZodNumber;
|
|
597
|
+
returningVisitors: z.ZodNumber;
|
|
598
|
+
bounceRate: z.ZodNumber;
|
|
599
|
+
key: z.ZodString;
|
|
600
|
+
channelType: z.ZodOptional<z.ZodString>;
|
|
601
|
+
referrerName: z.ZodOptional<z.ZodString>;
|
|
602
|
+
referrerType: z.ZodOptional<z.ZodString>;
|
|
603
|
+
utmSource: z.ZodOptional<z.ZodString>;
|
|
604
|
+
utmMedium: z.ZodOptional<z.ZodString>;
|
|
605
|
+
utmCampaign: z.ZodOptional<z.ZodString>;
|
|
606
|
+
}, z.core.$strip>>;
|
|
607
|
+
}, z.core.$strip>;
|
|
608
|
+
meta: z.ZodObject<{
|
|
609
|
+
projectId: z.ZodString;
|
|
610
|
+
computedAt: z.ZodString;
|
|
611
|
+
cacheAgeSeconds: z.ZodNumber;
|
|
612
|
+
ingestLagSeconds: z.ZodNullable<z.ZodNumber>;
|
|
613
|
+
ingestLagStatus: z.ZodEnum<{
|
|
614
|
+
unknown: "unknown";
|
|
615
|
+
known: "known";
|
|
616
|
+
}>;
|
|
617
|
+
ingestDeadLetterCount: z.ZodNullable<z.ZodNumber>;
|
|
618
|
+
cached: z.ZodBoolean;
|
|
619
|
+
timezone: z.ZodString;
|
|
620
|
+
source: z.ZodEnum<{
|
|
621
|
+
rollup: "rollup";
|
|
622
|
+
raw: "raw";
|
|
623
|
+
mixed: "mixed";
|
|
624
|
+
}>;
|
|
625
|
+
requestId: z.ZodString;
|
|
626
|
+
}, z.core.$strip>;
|
|
627
|
+
}, z.core.$strip>;
|
|
628
|
+
type TrafficSourcesResponse = z.infer<typeof zTrafficSourcesResponse>;
|
|
629
|
+
declare const QUERY_ERROR_CODES: readonly ["unauthorized", "project_scope_mismatch", "query_scope_missing", "validation_failed", "unsupported_combination", "project_purging", "rate_limited", "query_timeout", "internal_error"];
|
|
338
630
|
declare const zQueryErrorCode: z.ZodEnum<{
|
|
339
|
-
validation_failed: "validation_failed";
|
|
340
631
|
unauthorized: "unauthorized";
|
|
632
|
+
validation_failed: "validation_failed";
|
|
341
633
|
rate_limited: "rate_limited";
|
|
342
634
|
internal_error: "internal_error";
|
|
635
|
+
project_purging: "project_purging";
|
|
343
636
|
project_scope_mismatch: "project_scope_mismatch";
|
|
344
637
|
query_scope_missing: "query_scope_missing";
|
|
345
638
|
unsupported_combination: "unsupported_combination";
|
|
@@ -349,10 +642,11 @@ type QueryErrorCode = z.infer<typeof zQueryErrorCode>;
|
|
|
349
642
|
declare const zQueryError: z.ZodObject<{
|
|
350
643
|
status: z.ZodNumber;
|
|
351
644
|
code: z.ZodEnum<{
|
|
352
|
-
validation_failed: "validation_failed";
|
|
353
645
|
unauthorized: "unauthorized";
|
|
646
|
+
validation_failed: "validation_failed";
|
|
354
647
|
rate_limited: "rate_limited";
|
|
355
648
|
internal_error: "internal_error";
|
|
649
|
+
project_purging: "project_purging";
|
|
356
650
|
project_scope_mismatch: "project_scope_mismatch";
|
|
357
651
|
query_scope_missing: "query_scope_missing";
|
|
358
652
|
unsupported_combination: "unsupported_combination";
|
|
@@ -369,6 +663,8 @@ declare const QUERY_API_PATHS: {
|
|
|
369
663
|
readonly eventsTimeseries: "/api/v1/query/events/timeseries";
|
|
370
664
|
readonly funnel: "/api/v1/query/funnel";
|
|
371
665
|
readonly retention: "/api/v1/query/retention";
|
|
666
|
+
readonly trafficOverview: "/api/v1/query/traffic/overview";
|
|
667
|
+
readonly trafficSources: "/api/v1/query/traffic/sources";
|
|
372
668
|
};
|
|
373
669
|
|
|
374
|
-
export { type ChannelFilter, type EventsTimeseriesData, type EventsTimeseriesInput, type EventsTimeseriesResponse, type FunnelData, type FunnelInput, type FunnelResponse, type Granularity, QUERY_API_PATHS, QUERY_ERROR_CODES, type QueryError, type QueryErrorCode, type QueryMeta, type RetentionData, type RetentionInput, type RetentionResponse, type TimeseriesBreakdown, type TimeseriesPoint, isValidTimeZone, zChannelFilter, zEventsTimeseriesData, zEventsTimeseriesInput, zEventsTimeseriesResponse, zFunnelData, zFunnelInput, zFunnelResponse, zFunnelStep, zGranularity, zQueryEnvelope, zQueryError, zQueryErrorCode, zQueryMeta, zRetentionCell, zRetentionData, zRetentionInput, zRetentionInterval, zRetentionResponse, zTimeseriesBreakdown, zTimeseriesPoint, zTimezone };
|
|
670
|
+
export { type ChannelFilter, type EventPropertyFilter, type EventsTimeseriesData, type EventsTimeseriesInput, type EventsTimeseriesResponse, type FunnelData, type FunnelInput, type FunnelResponse, type Granularity, QUERY_API_PATHS, QUERY_ERROR_CODES, type QueryError, type QueryErrorCode, type QueryMeta, type QuerySource, type RetentionData, type RetentionInput, type RetentionResponse, type TimeseriesBreakdown, type TimeseriesPoint, type TrafficDimension, type TrafficOverviewData, type TrafficOverviewInput, type TrafficOverviewResponse, type TrafficSourceRow, type TrafficSourcesData, type TrafficSourcesInput, type TrafficSourcesResponse, type TrafficTotals, isValidTimeZone, zBucketStart, zChannelFilter, zEventPropertyFilter, zEventsTimeseriesData, zEventsTimeseriesInput, zEventsTimeseriesResponse, zFunnelData, zFunnelInput, zFunnelResponse, zFunnelStep, zGranularity, zQueryEnvelope, zQueryError, zQueryErrorCode, zQueryMeta, zQuerySource, zRetentionCell, zRetentionData, zRetentionInput, zRetentionInterval, zRetentionResponse, zTimeseriesBreakdown, zTimeseriesPoint, zTimezone, zTrafficDimension, zTrafficOverviewData, zTrafficOverviewInput, zTrafficOverviewResponse, zTrafficSeriesPoint, zTrafficSourceRow, zTrafficSourcesData, zTrafficSourcesInput, zTrafficSourcesResponse, zTrafficTotals };
|
package/dist/query.js
CHANGED
|
@@ -2,7 +2,9 @@ import {
|
|
|
2
2
|
QUERY_API_PATHS,
|
|
3
3
|
QUERY_ERROR_CODES,
|
|
4
4
|
isValidTimeZone,
|
|
5
|
+
zBucketStart,
|
|
5
6
|
zChannelFilter,
|
|
7
|
+
zEventPropertyFilter,
|
|
6
8
|
zEventsTimeseriesData,
|
|
7
9
|
zEventsTimeseriesInput,
|
|
8
10
|
zEventsTimeseriesResponse,
|
|
@@ -15,6 +17,7 @@ import {
|
|
|
15
17
|
zQueryError,
|
|
16
18
|
zQueryErrorCode,
|
|
17
19
|
zQueryMeta,
|
|
20
|
+
zQuerySource,
|
|
18
21
|
zRetentionCell,
|
|
19
22
|
zRetentionData,
|
|
20
23
|
zRetentionInput,
|
|
@@ -22,18 +25,30 @@ import {
|
|
|
22
25
|
zRetentionResponse,
|
|
23
26
|
zTimeseriesBreakdown,
|
|
24
27
|
zTimeseriesPoint,
|
|
25
|
-
zTimezone
|
|
26
|
-
|
|
28
|
+
zTimezone,
|
|
29
|
+
zTrafficDimension,
|
|
30
|
+
zTrafficOverviewData,
|
|
31
|
+
zTrafficOverviewInput,
|
|
32
|
+
zTrafficOverviewResponse,
|
|
33
|
+
zTrafficSeriesPoint,
|
|
34
|
+
zTrafficSourceRow,
|
|
35
|
+
zTrafficSourcesData,
|
|
36
|
+
zTrafficSourcesInput,
|
|
37
|
+
zTrafficSourcesResponse,
|
|
38
|
+
zTrafficTotals
|
|
39
|
+
} from "./chunk-BCGR27G2.js";
|
|
27
40
|
import {
|
|
28
41
|
zDate,
|
|
29
42
|
zInstant
|
|
30
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-2LZBZXBF.js";
|
|
31
44
|
export {
|
|
32
45
|
QUERY_API_PATHS,
|
|
33
46
|
QUERY_ERROR_CODES,
|
|
34
47
|
isValidTimeZone,
|
|
48
|
+
zBucketStart,
|
|
35
49
|
zChannelFilter,
|
|
36
50
|
zDate,
|
|
51
|
+
zEventPropertyFilter,
|
|
37
52
|
zEventsTimeseriesData,
|
|
38
53
|
zEventsTimeseriesInput,
|
|
39
54
|
zEventsTimeseriesResponse,
|
|
@@ -47,6 +62,7 @@ export {
|
|
|
47
62
|
zQueryError,
|
|
48
63
|
zQueryErrorCode,
|
|
49
64
|
zQueryMeta,
|
|
65
|
+
zQuerySource,
|
|
50
66
|
zRetentionCell,
|
|
51
67
|
zRetentionData,
|
|
52
68
|
zRetentionInput,
|
|
@@ -54,6 +70,16 @@ export {
|
|
|
54
70
|
zRetentionResponse,
|
|
55
71
|
zTimeseriesBreakdown,
|
|
56
72
|
zTimeseriesPoint,
|
|
57
|
-
zTimezone
|
|
73
|
+
zTimezone,
|
|
74
|
+
zTrafficDimension,
|
|
75
|
+
zTrafficOverviewData,
|
|
76
|
+
zTrafficOverviewInput,
|
|
77
|
+
zTrafficOverviewResponse,
|
|
78
|
+
zTrafficSeriesPoint,
|
|
79
|
+
zTrafficSourceRow,
|
|
80
|
+
zTrafficSourcesData,
|
|
81
|
+
zTrafficSourcesInput,
|
|
82
|
+
zTrafficSourcesResponse,
|
|
83
|
+
zTrafficTotals
|
|
58
84
|
};
|
|
59
85
|
//# sourceMappingURL=query.js.map
|
package/dist/report.cjs
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/report.ts
|
|
2
|
+
var _zod = require('zod');
|
|
3
|
+
var REPORT_SPEC_VERSION = 1;
|
|
4
|
+
var zReportRange = _zod.z.string().regex(/^\d+[dhm]$/, "expected a relative range such as 7d or 24h");
|
|
5
|
+
var zReportInterval = _zod.z.enum(["minute", "hour", "day", "week", "month"]);
|
|
6
|
+
var zLegacyChartType = _zod.z.enum([
|
|
7
|
+
"linear",
|
|
8
|
+
"bar",
|
|
9
|
+
"pie",
|
|
10
|
+
"metric",
|
|
11
|
+
"area",
|
|
12
|
+
"gauge",
|
|
13
|
+
"scatter",
|
|
14
|
+
"table",
|
|
15
|
+
"sparkline"
|
|
16
|
+
]);
|
|
17
|
+
var zCommon = {
|
|
18
|
+
version: _zod.z.literal(REPORT_SPEC_VERSION),
|
|
19
|
+
range: zReportRange.default("30d"),
|
|
20
|
+
segmentId: _zod.z.string().min(1).optional()
|
|
21
|
+
};
|
|
22
|
+
var zTimeseriesReportSpec = _zod.z.object({
|
|
23
|
+
...zCommon,
|
|
24
|
+
kind: _zod.z.literal("timeseries"),
|
|
25
|
+
chartType: zLegacyChartType,
|
|
26
|
+
interval: zReportInterval,
|
|
27
|
+
events: _zod.z.array(_zod.z.object({ name: _zod.z.string().min(1).max(200) })).min(1).max(20),
|
|
28
|
+
breakdowns: _zod.z.array(_zod.z.string().min(1).max(200)).max(5).default([]),
|
|
29
|
+
comparePrevious: _zod.z.boolean().default(false)
|
|
30
|
+
});
|
|
31
|
+
var zFunnelReportSpec = _zod.z.object({
|
|
32
|
+
...zCommon,
|
|
33
|
+
kind: _zod.z.literal("funnel"),
|
|
34
|
+
steps: _zod.z.array(_zod.z.string().min(1).max(200)).min(2).max(10),
|
|
35
|
+
windowSeconds: _zod.z.number().int().min(60).max(2592e3).default(86400)
|
|
36
|
+
});
|
|
37
|
+
var zRetentionReportSpec = _zod.z.object({
|
|
38
|
+
...zCommon,
|
|
39
|
+
kind: _zod.z.literal("retention"),
|
|
40
|
+
interval: _zod.z.enum(["day", "week", "month"]).default("day"),
|
|
41
|
+
periods: _zod.z.number().int().min(1).max(30).default(7),
|
|
42
|
+
startEvent: _zod.z.string().min(1).max(200).optional(),
|
|
43
|
+
returnEvent: _zod.z.string().min(1).max(200).optional(),
|
|
44
|
+
retentionType: _zod.z.enum(["bounded", "unbounded"]).default("bounded"),
|
|
45
|
+
cohortMode: _zod.z.enum(["first-ever", "first-in-window"]).default("first-ever")
|
|
46
|
+
});
|
|
47
|
+
var zPathReportSpec = _zod.z.object({
|
|
48
|
+
...zCommon,
|
|
49
|
+
kind: _zod.z.literal("path"),
|
|
50
|
+
limit: _zod.z.number().int().min(1).max(100).default(30),
|
|
51
|
+
startPage: _zod.z.string().max(2e3).optional(),
|
|
52
|
+
endPage: _zod.z.string().max(2e3).optional()
|
|
53
|
+
});
|
|
54
|
+
var zReportSpec = _zod.z.discriminatedUnion("kind", [
|
|
55
|
+
zTimeseriesReportSpec,
|
|
56
|
+
zFunnelReportSpec,
|
|
57
|
+
zRetentionReportSpec,
|
|
58
|
+
zPathReportSpec
|
|
59
|
+
]);
|
|
60
|
+
function legacyReportToSpec(input) {
|
|
61
|
+
const events = _zod.z.array(_zod.z.object({ name: _zod.z.string().min(1).max(200) })).safeParse(input.events);
|
|
62
|
+
const breakdowns = _zod.z.array(_zod.z.string().min(1).max(200)).safeParse(input.breakdowns);
|
|
63
|
+
return zTimeseriesReportSpec.parse({
|
|
64
|
+
version: REPORT_SPEC_VERSION,
|
|
65
|
+
kind: "timeseries",
|
|
66
|
+
chartType: input.chartType,
|
|
67
|
+
interval: input.interval,
|
|
68
|
+
range: input.range,
|
|
69
|
+
events: events.success && events.data.length > 0 ? events.data : [{ name: "$pageview" }],
|
|
70
|
+
breakdowns: breakdowns.success ? breakdowns.data : []
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
exports.REPORT_SPEC_VERSION = REPORT_SPEC_VERSION; exports.legacyReportToSpec = legacyReportToSpec; exports.zFunnelReportSpec = zFunnelReportSpec; exports.zLegacyChartType = zLegacyChartType; exports.zPathReportSpec = zPathReportSpec; exports.zReportInterval = zReportInterval; exports.zReportRange = zReportRange; exports.zReportSpec = zReportSpec; exports.zRetentionReportSpec = zRetentionReportSpec; exports.zTimeseriesReportSpec = zTimeseriesReportSpec;
|
|
85
|
+
//# sourceMappingURL=report.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/eric/reopt-ai/reopt-data/packages/data-contract/dist/report.cjs","../src/report.ts"],"names":[],"mappings":"AAAA;ACAA,0BAAkB;AAEX,IAAM,oBAAA,EAAsB,CAAA;AAE5B,IAAM,aAAA,EAAe,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,KAAA,CAAM,YAAA,EAAc,6CAA6C,CAAA;AACjG,IAAM,gBAAA,EAAkB,MAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAC,CAAA;AACzE,IAAM,iBAAA,EAAmB,MAAA,CAAE,IAAA,CAAK;AAAA,EACrC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,IAAM,QAAA,EAAU;AAAA,EACd,OAAA,EAAS,MAAA,CAAE,OAAA,CAAQ,mBAAmB,CAAA;AAAA,EACtC,KAAA,EAAO,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAA;AAAA,EACjC,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS;AACxC,CAAA;AAEO,IAAM,sBAAA,EAAwB,MAAA,CAAE,MAAA,CAAO;AAAA,EAC5C,GAAG,OAAA;AAAA,EACH,IAAA,EAAM,MAAA,CAAE,OAAA,CAAQ,YAAY,CAAA;AAAA,EAC5B,SAAA,EAAW,gBAAA;AAAA,EACX,QAAA,EAAU,eAAA;AAAA,EACV,MAAA,EAAQ,MAAA,CACL,KAAA,CAAM,MAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAM,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,EAAE,CAAC,CAAC,CAAA,CACpD,GAAA,CAAI,CAAC,CAAA,CACL,GAAA,CAAI,EAAE,CAAA;AAAA,EACT,UAAA,EAAY,MAAA,CAAE,KAAA,CAAM,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,EACjE,eAAA,EAAiB,MAAA,CAAE,OAAA,CAAQ,CAAA,CAAE,OAAA,CAAQ,KAAK;AAC5C,CAAC,CAAA;AAEM,IAAM,kBAAA,EAAoB,MAAA,CAAE,MAAA,CAAO;AAAA,EACxC,GAAG,OAAA;AAAA,EACH,IAAA,EAAM,MAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,KAAA,EAAO,MAAA,CAAE,KAAA,CAAM,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA;AAAA,EACxD,aAAA,EAAe,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA,CAAE,GAAA,CAAI,MAAS,CAAA,CAAE,OAAA,CAAQ,KAAM;AACvE,CAAC,CAAA;AAEM,IAAM,qBAAA,EAAuB,MAAA,CAAE,MAAA,CAAO;AAAA,EAC3C,GAAG,OAAA;AAAA,EACH,IAAA,EAAM,MAAA,CAAE,OAAA,CAAQ,WAAW,CAAA;AAAA,EAC3B,QAAA,EAAU,MAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAAA,EACxD,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA,EAClD,UAAA,EAAY,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,EAChD,WAAA,EAAa,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,EACjD,aAAA,EAAe,MAAA,CAAE,IAAA,CAAK,CAAC,SAAA,EAAW,WAAW,CAAC,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,EACjE,UAAA,EAAY,MAAA,CAAE,IAAA,CAAK,CAAC,YAAA,EAAc,iBAAiB,CAAC,CAAA,CAAE,OAAA,CAAQ,YAAY;AAC5E,CAAC,CAAA;AAEM,IAAM,gBAAA,EAAkB,MAAA,CAAE,MAAA,CAAO;AAAA,EACtC,GAAG,OAAA;AAAA,EACH,IAAA,EAAM,MAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACtB,KAAA,EAAO,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EAClD,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,GAAK,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,EAC1C,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,GAAK,CAAA,CAAE,QAAA,CAAS;AAC1C,CAAC,CAAA;AAEM,IAAM,YAAA,EAAc,MAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EACtD,qBAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAC,CAAA;AAMM,SAAS,kBAAA,CAAmB,KAAA,EAMV;AACvB,EAAA,MAAM,OAAA,EAAS,MAAA,CAAE,KAAA,CAAM,MAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAM,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,EAAE,CAAC,CAAC,CAAA,CAAE,SAAA,CAAU,KAAA,CAAM,MAAM,CAAA;AAC7F,EAAA,MAAM,WAAA,EAAa,MAAA,CAAE,KAAA,CAAM,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAC,CAAA,CAAE,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA;AACjF,EAAA,OAAO,qBAAA,CAAsB,KAAA,CAAM;AAAA,IACjC,OAAA,EAAS,mBAAA;AAAA,IACT,IAAA,EAAM,YAAA;AAAA,IACN,SAAA,EAAW,KAAA,CAAM,SAAA;AAAA,IACjB,QAAA,EAAU,KAAA,CAAM,QAAA;AAAA,IAChB,KAAA,EAAO,KAAA,CAAM,KAAA;AAAA,IACb,MAAA,EAAQ,MAAA,CAAO,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,EAAA,EAAI,MAAA,CAAO,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,YAAY,CAAC,CAAA;AAAA,IACvF,UAAA,EAAY,UAAA,CAAW,QAAA,EAAU,UAAA,CAAW,KAAA,EAAO,CAAC;AAAA,EACtD,CAAC,CAAA;AACH;ADpBA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,ycAAC","file":"/Users/eric/reopt-ai/reopt-data/packages/data-contract/dist/report.cjs","sourcesContent":[null,"import { z } from \"zod\";\n\nexport const REPORT_SPEC_VERSION = 1 as const;\n\nexport const zReportRange = z.string().regex(/^\\d+[dhm]$/, \"expected a relative range such as 7d or 24h\");\nexport const zReportInterval = z.enum([\"minute\", \"hour\", \"day\", \"week\", \"month\"]);\nexport const zLegacyChartType = z.enum([\n \"linear\",\n \"bar\",\n \"pie\",\n \"metric\",\n \"area\",\n \"gauge\",\n \"scatter\",\n \"table\",\n \"sparkline\",\n]);\n\nconst zCommon = {\n version: z.literal(REPORT_SPEC_VERSION),\n range: zReportRange.default(\"30d\"),\n segmentId: z.string().min(1).optional(),\n};\n\nexport const zTimeseriesReportSpec = z.object({\n ...zCommon,\n kind: z.literal(\"timeseries\"),\n chartType: zLegacyChartType,\n interval: zReportInterval,\n events: z\n .array(z.object({ name: z.string().min(1).max(200) }))\n .min(1)\n .max(20),\n breakdowns: z.array(z.string().min(1).max(200)).max(5).default([]),\n comparePrevious: z.boolean().default(false),\n});\n\nexport const zFunnelReportSpec = z.object({\n ...zCommon,\n kind: z.literal(\"funnel\"),\n steps: z.array(z.string().min(1).max(200)).min(2).max(10),\n windowSeconds: z.number().int().min(60).max(2_592_000).default(86_400),\n});\n\nexport const zRetentionReportSpec = z.object({\n ...zCommon,\n kind: z.literal(\"retention\"),\n interval: z.enum([\"day\", \"week\", \"month\"]).default(\"day\"),\n periods: z.number().int().min(1).max(30).default(7),\n startEvent: z.string().min(1).max(200).optional(),\n returnEvent: z.string().min(1).max(200).optional(),\n retentionType: z.enum([\"bounded\", \"unbounded\"]).default(\"bounded\"),\n cohortMode: z.enum([\"first-ever\", \"first-in-window\"]).default(\"first-ever\"),\n});\n\nexport const zPathReportSpec = z.object({\n ...zCommon,\n kind: z.literal(\"path\"),\n limit: z.number().int().min(1).max(100).default(30),\n startPage: z.string().max(2_000).optional(),\n endPage: z.string().max(2_000).optional(),\n});\n\nexport const zReportSpec = z.discriminatedUnion(\"kind\", [\n zTimeseriesReportSpec,\n zFunnelReportSpec,\n zRetentionReportSpec,\n zPathReportSpec,\n]);\n\nexport type ReportSpec = z.infer<typeof zReportSpec>;\nexport type TimeseriesReportSpec = z.infer<typeof zTimeseriesReportSpec>;\n\n/** Convert a pre-ReportSpec row into the canonical v1 representation. */\nexport function legacyReportToSpec(input: {\n chartType: z.infer<typeof zLegacyChartType>;\n interval: z.infer<typeof zReportInterval>;\n range: string;\n events: unknown;\n breakdowns: unknown;\n}): TimeseriesReportSpec {\n const events = z.array(z.object({ name: z.string().min(1).max(200) })).safeParse(input.events);\n const breakdowns = z.array(z.string().min(1).max(200)).safeParse(input.breakdowns);\n return zTimeseriesReportSpec.parse({\n version: REPORT_SPEC_VERSION,\n kind: \"timeseries\",\n chartType: input.chartType,\n interval: input.interval,\n range: input.range,\n events: events.success && events.data.length > 0 ? events.data : [{ name: \"$pageview\" }],\n breakdowns: breakdowns.success ? breakdowns.data : [],\n });\n}\n"]}
|