@hexclave/shared 1.0.10 → 1.0.12
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/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +11 -4
- package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -1
- package/dist/config/schema.d.ts +172 -172
- package/dist/config-rendering.d.ts.map +1 -1
- package/dist/config-rendering.js +7 -2
- package/dist/config-rendering.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +11 -4
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -1
- package/dist/esm/config/schema.d.ts +172 -172
- package/dist/esm/config-rendering.d.ts.map +1 -1
- package/dist/esm/config-rendering.js +7 -2
- package/dist/esm/config-rendering.js.map +1 -1
- package/dist/esm/hexclave-config-file.d.ts.map +1 -1
- package/dist/esm/hexclave-config-file.js +2 -1
- package/dist/esm/hexclave-config-file.js.map +1 -1
- package/dist/esm/interface/admin-interface.d.ts +9 -1
- package/dist/esm/interface/admin-interface.d.ts.map +1 -1
- package/dist/esm/interface/admin-interface.js +32 -2
- package/dist/esm/interface/admin-interface.js.map +1 -1
- package/dist/esm/interface/admin-metrics.d.ts +123 -7
- package/dist/esm/interface/admin-metrics.d.ts.map +1 -1
- package/dist/esm/interface/admin-metrics.js +21 -2
- package/dist/esm/interface/admin-metrics.js.map +1 -1
- package/dist/esm/interface/conversations.d.ts +3 -3
- package/dist/esm/interface/crud/current-user.d.ts +5 -5
- package/dist/esm/interface/crud/email-outbox.d.ts +64 -64
- package/dist/esm/interface/crud/project-api-keys.d.ts +1 -1
- package/dist/esm/interface/crud/team-member-profiles.d.ts +8 -8
- package/dist/esm/interface/crud/users.d.ts +2 -2
- package/dist/esm/schema-fields.d.ts.map +1 -1
- package/dist/esm/schema-fields.js +1 -1
- package/dist/esm/schema-fields.js.map +1 -1
- package/dist/esm/sessions.d.ts +17 -7
- package/dist/esm/sessions.d.ts.map +1 -1
- package/dist/esm/sessions.js +20 -2
- package/dist/esm/sessions.js.map +1 -1
- package/dist/esm/sessions.test.d.ts +1 -0
- package/dist/esm/sessions.test.js +178 -0
- package/dist/esm/sessions.test.js.map +1 -0
- package/dist/hexclave-config-file.d.ts.map +1 -1
- package/dist/hexclave-config-file.js +2 -1
- package/dist/hexclave-config-file.js.map +1 -1
- package/dist/interface/admin-interface.d.ts +9 -1
- package/dist/interface/admin-interface.d.ts.map +1 -1
- package/dist/interface/admin-interface.js +32 -2
- package/dist/interface/admin-interface.js.map +1 -1
- package/dist/interface/admin-metrics.d.ts +123 -7
- package/dist/interface/admin-metrics.d.ts.map +1 -1
- package/dist/interface/admin-metrics.js +22 -1
- package/dist/interface/admin-metrics.js.map +1 -1
- package/dist/interface/conversations.d.ts +3 -3
- package/dist/interface/crud/current-user.d.ts +5 -5
- package/dist/interface/crud/email-outbox.d.ts +64 -64
- package/dist/interface/crud/project-api-keys.d.ts +1 -1
- package/dist/interface/crud/team-member-profiles.d.ts +8 -8
- package/dist/interface/crud/users.d.ts +2 -2
- package/dist/schema-fields.d.ts.map +1 -1
- package/dist/schema-fields.js +1 -1
- package/dist/schema-fields.js.map +1 -1
- package/dist/sessions.d.ts +17 -7
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +20 -2
- package/dist/sessions.js.map +1 -1
- package/dist/sessions.test.d.ts +1 -0
- package/dist/sessions.test.js +178 -0
- package/dist/sessions.test.js.map +1 -0
- package/package.json +1 -1
- package/src/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.ts +11 -4
- package/src/config-rendering.ts +11 -2
- package/src/hexclave-config-file.ts +7 -1
- package/src/interface/admin-interface.ts +49 -2
- package/src/interface/admin-metrics.ts +33 -2
- package/src/schema-fields.ts +4 -1
- package/src/sessions.test.ts +147 -0
- package/src/sessions.ts +26 -0
|
@@ -150,8 +150,8 @@ declare const MetricsEmailOverviewSchema: yup.ObjectSchema<{
|
|
|
150
150
|
activity: number;
|
|
151
151
|
}[];
|
|
152
152
|
daily_emails_by_status: {
|
|
153
|
-
error: number;
|
|
154
153
|
date: string;
|
|
154
|
+
error: number;
|
|
155
155
|
ok: number;
|
|
156
156
|
in_progress: number;
|
|
157
157
|
}[];
|
|
@@ -204,6 +204,13 @@ declare const MetricsTopReferrerSchema: yup.ObjectSchema<{
|
|
|
204
204
|
referrer: undefined;
|
|
205
205
|
visitors: undefined;
|
|
206
206
|
}, "">;
|
|
207
|
+
declare const MetricsNamedCountSchema: yup.ObjectSchema<{
|
|
208
|
+
name: string;
|
|
209
|
+
visitors: number;
|
|
210
|
+
}, yup.AnyObject, {
|
|
211
|
+
name: undefined;
|
|
212
|
+
visitors: undefined;
|
|
213
|
+
}, "">;
|
|
207
214
|
declare const MetricsTopRegionSchema: yup.ObjectSchema<{
|
|
208
215
|
country_code: string | null;
|
|
209
216
|
region_code: string | null;
|
|
@@ -213,6 +220,13 @@ declare const MetricsTopRegionSchema: yup.ObjectSchema<{
|
|
|
213
220
|
region_code: undefined;
|
|
214
221
|
count: undefined;
|
|
215
222
|
}, "">;
|
|
223
|
+
declare const MetricsTopCountrySchema: yup.ObjectSchema<{
|
|
224
|
+
country_code: string;
|
|
225
|
+
count: number;
|
|
226
|
+
}, yup.AnyObject, {
|
|
227
|
+
country_code: undefined;
|
|
228
|
+
count: undefined;
|
|
229
|
+
}, "">;
|
|
216
230
|
declare const MetricsAnalyticsOverviewSchema: yup.ObjectSchema<{
|
|
217
231
|
daily_page_views: {
|
|
218
232
|
date: string;
|
|
@@ -226,6 +240,18 @@ declare const MetricsAnalyticsOverviewSchema: yup.ObjectSchema<{
|
|
|
226
240
|
date: string;
|
|
227
241
|
activity: number;
|
|
228
242
|
}[];
|
|
243
|
+
hourly_page_views: {
|
|
244
|
+
date: string;
|
|
245
|
+
activity: number;
|
|
246
|
+
}[];
|
|
247
|
+
hourly_active_users: {
|
|
248
|
+
date: string;
|
|
249
|
+
activity: number;
|
|
250
|
+
}[];
|
|
251
|
+
hourly_visitors: {
|
|
252
|
+
date: string;
|
|
253
|
+
activity: number;
|
|
254
|
+
}[];
|
|
229
255
|
daily_anonymous_visitors_fallback: {
|
|
230
256
|
date: string;
|
|
231
257
|
activity: number;
|
|
@@ -252,13 +278,40 @@ declare const MetricsAnalyticsOverviewSchema: yup.ObjectSchema<{
|
|
|
252
278
|
region_code: string | null;
|
|
253
279
|
count: number;
|
|
254
280
|
} | null;
|
|
255
|
-
|
|
281
|
+
top_regions: {
|
|
282
|
+
country_code: string;
|
|
283
|
+
count: number;
|
|
284
|
+
}[];
|
|
285
|
+
bounce_rate: number;
|
|
286
|
+
daily_bounce_rate: {
|
|
287
|
+
date: string;
|
|
288
|
+
activity: number;
|
|
289
|
+
}[];
|
|
290
|
+
daily_avg_session_seconds: {
|
|
291
|
+
date: string;
|
|
292
|
+
activity: number;
|
|
293
|
+
}[];
|
|
294
|
+
top_browsers: {
|
|
295
|
+
name: string;
|
|
296
|
+
visitors: number;
|
|
297
|
+
}[];
|
|
298
|
+
top_operating_systems: {
|
|
299
|
+
name: string;
|
|
300
|
+
visitors: number;
|
|
301
|
+
}[];
|
|
302
|
+
top_devices: {
|
|
303
|
+
name: string;
|
|
304
|
+
visitors: number;
|
|
305
|
+
}[];
|
|
256
306
|
conversion_rate: number | undefined;
|
|
257
307
|
deltas: {} | undefined;
|
|
258
308
|
}, yup.AnyObject, {
|
|
259
309
|
daily_page_views: undefined;
|
|
260
310
|
daily_clicks: undefined;
|
|
261
311
|
daily_visitors: undefined;
|
|
312
|
+
hourly_page_views: never[];
|
|
313
|
+
hourly_active_users: never[];
|
|
314
|
+
hourly_visitors: never[];
|
|
262
315
|
daily_anonymous_visitors_fallback: never[];
|
|
263
316
|
daily_revenue: undefined;
|
|
264
317
|
total_revenue_cents: undefined;
|
|
@@ -275,7 +328,13 @@ declare const MetricsAnalyticsOverviewSchema: yup.ObjectSchema<{
|
|
|
275
328
|
region_code: undefined;
|
|
276
329
|
count: undefined;
|
|
277
330
|
};
|
|
278
|
-
|
|
331
|
+
top_regions: never[];
|
|
332
|
+
bounce_rate: 0;
|
|
333
|
+
daily_bounce_rate: never[];
|
|
334
|
+
daily_avg_session_seconds: never[];
|
|
335
|
+
top_browsers: never[];
|
|
336
|
+
top_operating_systems: never[];
|
|
337
|
+
top_devices: never[];
|
|
279
338
|
conversion_rate: undefined;
|
|
280
339
|
deltas: undefined;
|
|
281
340
|
}, "">;
|
|
@@ -328,6 +387,14 @@ declare const MetricsResponseBodySchema: yup.ObjectSchema<{
|
|
|
328
387
|
date: string;
|
|
329
388
|
activity: number;
|
|
330
389
|
}[];
|
|
390
|
+
hourly_users: {
|
|
391
|
+
date: string;
|
|
392
|
+
activity: number;
|
|
393
|
+
}[];
|
|
394
|
+
hourly_active_users: {
|
|
395
|
+
date: string;
|
|
396
|
+
activity: number;
|
|
397
|
+
}[];
|
|
331
398
|
users_by_country: Record<string, number>;
|
|
332
399
|
active_users_by_country: Record<string, {
|
|
333
400
|
primary_email: string | null;
|
|
@@ -422,8 +489,8 @@ declare const MetricsResponseBodySchema: yup.ObjectSchema<{
|
|
|
422
489
|
emails_by_status: Record<string, number>;
|
|
423
490
|
total_emails: number;
|
|
424
491
|
daily_emails_by_status: {
|
|
425
|
-
error: number;
|
|
426
492
|
date: string;
|
|
493
|
+
error: number;
|
|
427
494
|
ok: number;
|
|
428
495
|
in_progress: number;
|
|
429
496
|
}[];
|
|
@@ -445,9 +512,9 @@ declare const MetricsResponseBodySchema: yup.ObjectSchema<{
|
|
|
445
512
|
click_rate: number;
|
|
446
513
|
};
|
|
447
514
|
analytics_overview: {
|
|
448
|
-
bounce_rate?: number | undefined;
|
|
449
515
|
conversion_rate?: number | undefined;
|
|
450
516
|
deltas?: {} | undefined;
|
|
517
|
+
bounce_rate: number;
|
|
451
518
|
visitors: number;
|
|
452
519
|
daily_page_views: {
|
|
453
520
|
date: string;
|
|
@@ -461,6 +528,18 @@ declare const MetricsResponseBodySchema: yup.ObjectSchema<{
|
|
|
461
528
|
date: string;
|
|
462
529
|
activity: number;
|
|
463
530
|
}[];
|
|
531
|
+
hourly_page_views: {
|
|
532
|
+
date: string;
|
|
533
|
+
activity: number;
|
|
534
|
+
}[];
|
|
535
|
+
hourly_active_users: {
|
|
536
|
+
date: string;
|
|
537
|
+
activity: number;
|
|
538
|
+
}[];
|
|
539
|
+
hourly_visitors: {
|
|
540
|
+
date: string;
|
|
541
|
+
activity: number;
|
|
542
|
+
}[];
|
|
464
543
|
daily_anonymous_visitors_fallback: {
|
|
465
544
|
date: string;
|
|
466
545
|
activity: number;
|
|
@@ -486,12 +565,38 @@ declare const MetricsResponseBodySchema: yup.ObjectSchema<{
|
|
|
486
565
|
region_code: string | null;
|
|
487
566
|
count: number;
|
|
488
567
|
} | null;
|
|
568
|
+
top_regions: {
|
|
569
|
+
country_code: string;
|
|
570
|
+
count: number;
|
|
571
|
+
}[];
|
|
572
|
+
daily_bounce_rate: {
|
|
573
|
+
date: string;
|
|
574
|
+
activity: number;
|
|
575
|
+
}[];
|
|
576
|
+
daily_avg_session_seconds: {
|
|
577
|
+
date: string;
|
|
578
|
+
activity: number;
|
|
579
|
+
}[];
|
|
580
|
+
top_browsers: {
|
|
581
|
+
name: string;
|
|
582
|
+
visitors: number;
|
|
583
|
+
}[];
|
|
584
|
+
top_operating_systems: {
|
|
585
|
+
name: string;
|
|
586
|
+
visitors: number;
|
|
587
|
+
}[];
|
|
588
|
+
top_devices: {
|
|
589
|
+
name: string;
|
|
590
|
+
visitors: number;
|
|
591
|
+
}[];
|
|
489
592
|
};
|
|
490
593
|
}, yup.AnyObject, {
|
|
491
594
|
total_users: undefined;
|
|
492
595
|
live_users: 0;
|
|
493
596
|
daily_users: undefined;
|
|
494
597
|
daily_active_users: undefined;
|
|
598
|
+
hourly_users: never[];
|
|
599
|
+
hourly_active_users: never[];
|
|
495
600
|
users_by_country: undefined;
|
|
496
601
|
active_users_by_country: {};
|
|
497
602
|
recently_registered: undefined;
|
|
@@ -548,6 +653,9 @@ declare const MetricsResponseBodySchema: yup.ObjectSchema<{
|
|
|
548
653
|
daily_page_views: undefined;
|
|
549
654
|
daily_clicks: undefined;
|
|
550
655
|
daily_visitors: undefined;
|
|
656
|
+
hourly_page_views: never[];
|
|
657
|
+
hourly_active_users: never[];
|
|
658
|
+
hourly_visitors: never[];
|
|
551
659
|
daily_anonymous_visitors_fallback: never[];
|
|
552
660
|
daily_revenue: undefined;
|
|
553
661
|
total_revenue_cents: undefined;
|
|
@@ -564,7 +672,13 @@ declare const MetricsResponseBodySchema: yup.ObjectSchema<{
|
|
|
564
672
|
region_code: undefined;
|
|
565
673
|
count: undefined;
|
|
566
674
|
};
|
|
567
|
-
|
|
675
|
+
top_regions: never[];
|
|
676
|
+
bounce_rate: 0;
|
|
677
|
+
daily_bounce_rate: never[];
|
|
678
|
+
daily_avg_session_seconds: never[];
|
|
679
|
+
top_browsers: never[];
|
|
680
|
+
top_operating_systems: never[];
|
|
681
|
+
top_devices: never[];
|
|
568
682
|
conversion_rate: undefined;
|
|
569
683
|
deltas: undefined;
|
|
570
684
|
};
|
|
@@ -586,6 +700,8 @@ type MetricsEmailOverview = yup.InferType<typeof MetricsEmailOverviewSchema>;
|
|
|
586
700
|
type MetricsDailyRevenuePoint = yup.InferType<typeof MetricsDailyRevenuePointSchema>;
|
|
587
701
|
type MetricsTopReferrer = yup.InferType<typeof MetricsTopReferrerSchema>;
|
|
588
702
|
type MetricsTopRegion = yup.InferType<typeof MetricsTopRegionSchema>;
|
|
703
|
+
type MetricsTopCountry = yup.InferType<typeof MetricsTopCountrySchema>;
|
|
704
|
+
type MetricsNamedCount = yup.InferType<typeof MetricsNamedCountSchema>;
|
|
589
705
|
type MetricsAnalyticsOverview = yup.InferType<typeof MetricsAnalyticsOverviewSchema>;
|
|
590
706
|
type MetricsLoginMethodEntry = yup.InferType<typeof MetricsLoginMethodEntrySchema>;
|
|
591
707
|
type MetricsRecentUser = yup.InferType<typeof MetricsRecentUserSchema>;
|
|
@@ -593,5 +709,5 @@ type MetricsResponse = yup.InferType<typeof MetricsResponseBodySchema>;
|
|
|
593
709
|
type MetricsUserCounts = yup.InferType<typeof MetricsUserCountsSchema>;
|
|
594
710
|
type UserActivityResponse = yup.InferType<typeof UserActivityResponseBodySchema>;
|
|
595
711
|
//#endregion
|
|
596
|
-
export { MetricsActiveUsersByCountrySchema, MetricsActivitySplit, MetricsActivitySplitSchema, MetricsAnalyticsOverview, MetricsAnalyticsOverviewSchema, MetricsAuthOverview, MetricsAuthOverviewSchema, MetricsDailyEmailStatusBreakdown, MetricsDailyEmailStatusBreakdownSchema, MetricsDailyRevenuePoint, MetricsDailyRevenuePointSchema, MetricsDataPoint, MetricsDataPointSchema, MetricsDataPointsSchema, MetricsEmailOverview, MetricsEmailOverviewSchema, MetricsLoginMethodEntry, MetricsLoginMethodEntrySchema, MetricsPaymentsOverview, MetricsPaymentsOverviewSchema, MetricsRecentEmail, MetricsRecentEmailSchema, MetricsRecentUser, MetricsRecentUserSchema, MetricsResponse, MetricsResponseBodySchema, MetricsTopReferrer, MetricsTopReferrerSchema, MetricsTopRegion, MetricsTopRegionSchema, MetricsUserCounts, MetricsUserCountsSchema, UserActivityResponse, UserActivityResponseBodySchema };
|
|
712
|
+
export { MetricsActiveUsersByCountrySchema, MetricsActivitySplit, MetricsActivitySplitSchema, MetricsAnalyticsOverview, MetricsAnalyticsOverviewSchema, MetricsAuthOverview, MetricsAuthOverviewSchema, MetricsDailyEmailStatusBreakdown, MetricsDailyEmailStatusBreakdownSchema, MetricsDailyRevenuePoint, MetricsDailyRevenuePointSchema, MetricsDataPoint, MetricsDataPointSchema, MetricsDataPointsSchema, MetricsEmailOverview, MetricsEmailOverviewSchema, MetricsLoginMethodEntry, MetricsLoginMethodEntrySchema, MetricsNamedCount, MetricsNamedCountSchema, MetricsPaymentsOverview, MetricsPaymentsOverviewSchema, MetricsRecentEmail, MetricsRecentEmailSchema, MetricsRecentUser, MetricsRecentUserSchema, MetricsResponse, MetricsResponseBodySchema, MetricsTopCountry, MetricsTopCountrySchema, MetricsTopReferrer, MetricsTopReferrerSchema, MetricsTopRegion, MetricsTopRegionSchema, MetricsUserCounts, MetricsUserCountsSchema, UserActivityResponse, UserActivityResponseBodySchema };
|
|
597
713
|
//# sourceMappingURL=admin-metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-metrics.d.ts","names":[],"sources":["../../../src/interface/admin-metrics.ts"],"mappings":";;;cAWa,sBAAA,EAAsB,GAAA,CAAA,YAAA;;;GAGvB,GAAA,CAAA,SAAA;;;;cAEC,uBAAA,EAAuB,GAAA,CAAA,WAAA;;;KAA6C,GAAA,CAAA,SAAA;AAAA,cAEpE,0BAAA,EAA0B,GAAA,CAAA,YAAA;;;;;;;;;;;;;;;;;GAK3B,GAAA,CAAA,SAAA;;;;;;cAEC,yBAAA,EAAyB,GAAA,CAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS1B,GAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;cAEC,6BAAA,EAA6B,GAAA,CAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;cAW7B,wBAAA,EAAwB,GAAA,CAAA,YAAA;;;;;GAKzB,GAAA,CAAA,SAAA;;;;;;cAEC,sCAAA,EAAsC,GAAA,CAAA,YAAA;;;;;GAKvC,GAAA,CAAA,SAAA;;;;;;cAEC,0BAAA,EAA0B,GAAA,CAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkB1B,8BAAA,EAA8B,GAAA,CAAA,YAAA;;;;GAI/B,GAAA,CAAA,SAAA;;;;;cAEC,wBAAA,EAAwB,GAAA,CAAA,YAAA;;;GAGzB,GAAA,CAAA,SAAA;;;;cAEC,sBAAA,EAAsB,GAAA,CAAA,YAAA;;;;GAIvB,GAAA,CAAA,SAAA;;;;;cAEC,8BAAA,EAA8B,GAAA,CAAA,YAAA
|
|
1
|
+
{"version":3,"file":"admin-metrics.d.ts","names":[],"sources":["../../../src/interface/admin-metrics.ts"],"mappings":"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"}
|
|
@@ -70,15 +70,26 @@ const MetricsTopReferrerSchema = yupObject({
|
|
|
70
70
|
referrer: yupString().defined(),
|
|
71
71
|
visitors: yupNumber().integer().defined()
|
|
72
72
|
}).defined();
|
|
73
|
+
const MetricsNamedCountSchema = yupObject({
|
|
74
|
+
name: yupString().defined(),
|
|
75
|
+
visitors: yupNumber().integer().defined()
|
|
76
|
+
}).defined();
|
|
73
77
|
const MetricsTopRegionSchema = yupObject({
|
|
74
78
|
country_code: yupString().nullable().defined(),
|
|
75
79
|
region_code: yupString().nullable().defined(),
|
|
76
80
|
count: yupNumber().integer().defined()
|
|
77
81
|
}).defined();
|
|
82
|
+
const MetricsTopCountrySchema = yupObject({
|
|
83
|
+
country_code: yupString().defined(),
|
|
84
|
+
count: yupNumber().integer().defined()
|
|
85
|
+
}).defined();
|
|
78
86
|
const MetricsAnalyticsOverviewSchema = yupObject({
|
|
79
87
|
daily_page_views: MetricsDataPointsSchema,
|
|
80
88
|
daily_clicks: MetricsDataPointsSchema,
|
|
81
89
|
daily_visitors: MetricsDataPointsSchema,
|
|
90
|
+
hourly_page_views: yupArray(MetricsDataPointSchema).optional().default([]),
|
|
91
|
+
hourly_active_users: yupArray(MetricsDataPointSchema).optional().default([]),
|
|
92
|
+
hourly_visitors: yupArray(MetricsDataPointSchema).optional().default([]),
|
|
82
93
|
daily_anonymous_visitors_fallback: yupArray(MetricsDataPointSchema).optional().default([]),
|
|
83
94
|
daily_revenue: yupArray(MetricsDailyRevenuePointSchema).defined(),
|
|
84
95
|
total_revenue_cents: yupNumber().integer().defined(),
|
|
@@ -91,7 +102,13 @@ const MetricsAnalyticsOverviewSchema = yupObject({
|
|
|
91
102
|
revenue_per_visitor: yupNumber().defined(),
|
|
92
103
|
top_referrers: yupArray(MetricsTopReferrerSchema).defined(),
|
|
93
104
|
top_region: MetricsTopRegionSchema.nullable().defined(),
|
|
94
|
-
|
|
105
|
+
top_regions: yupArray(MetricsTopCountrySchema).optional().default([]),
|
|
106
|
+
bounce_rate: yupNumber().optional().default(0),
|
|
107
|
+
daily_bounce_rate: yupArray(MetricsDataPointSchema).optional().default([]),
|
|
108
|
+
daily_avg_session_seconds: yupArray(MetricsDataPointSchema).optional().default([]),
|
|
109
|
+
top_browsers: yupArray(MetricsNamedCountSchema).optional().default([]),
|
|
110
|
+
top_operating_systems: yupArray(MetricsNamedCountSchema).optional().default([]),
|
|
111
|
+
top_devices: yupArray(MetricsNamedCountSchema).optional().default([]),
|
|
95
112
|
conversion_rate: yupNumber().optional(),
|
|
96
113
|
deltas: yupMixed().optional()
|
|
97
114
|
}).defined();
|
|
@@ -114,6 +131,8 @@ const MetricsResponseBodySchema = yupObject({
|
|
|
114
131
|
live_users: yupNumber().integer().optional().default(0),
|
|
115
132
|
daily_users: MetricsDataPointsSchema,
|
|
116
133
|
daily_active_users: MetricsDataPointsSchema,
|
|
134
|
+
hourly_users: yupArray(MetricsDataPointSchema).optional().default([]),
|
|
135
|
+
hourly_active_users: yupArray(MetricsDataPointSchema).optional().default([]),
|
|
117
136
|
users_by_country: yupRecord(yupString().defined(), yupNumber().defined()).defined(),
|
|
118
137
|
active_users_by_country: MetricsActiveUsersByCountrySchema,
|
|
119
138
|
recently_registered: yupArray(MetricsRecentUserSchema).defined(),
|
|
@@ -130,5 +149,5 @@ const MetricsUserCountsSchema = yupObject({
|
|
|
130
149
|
}).defined();
|
|
131
150
|
|
|
132
151
|
//#endregion
|
|
133
|
-
export { MetricsActiveUsersByCountrySchema, MetricsActivitySplitSchema, MetricsAnalyticsOverviewSchema, MetricsAuthOverviewSchema, MetricsDailyEmailStatusBreakdownSchema, MetricsDailyRevenuePointSchema, MetricsDataPointSchema, MetricsDataPointsSchema, MetricsEmailOverviewSchema, MetricsLoginMethodEntrySchema, MetricsPaymentsOverviewSchema, MetricsRecentEmailSchema, MetricsRecentUserSchema, MetricsResponseBodySchema, MetricsTopReferrerSchema, MetricsTopRegionSchema, MetricsUserCountsSchema, UserActivityResponseBodySchema };
|
|
152
|
+
export { MetricsActiveUsersByCountrySchema, MetricsActivitySplitSchema, MetricsAnalyticsOverviewSchema, MetricsAuthOverviewSchema, MetricsDailyEmailStatusBreakdownSchema, MetricsDailyRevenuePointSchema, MetricsDataPointSchema, MetricsDataPointsSchema, MetricsEmailOverviewSchema, MetricsLoginMethodEntrySchema, MetricsNamedCountSchema, MetricsPaymentsOverviewSchema, MetricsRecentEmailSchema, MetricsRecentUserSchema, MetricsResponseBodySchema, MetricsTopCountrySchema, MetricsTopReferrerSchema, MetricsTopRegionSchema, MetricsUserCountsSchema, UserActivityResponseBodySchema };
|
|
134
153
|
//# sourceMappingURL=admin-metrics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-metrics.js","names":[],"sources":["../../../src/interface/admin-metrics.ts"],"sourcesContent":["import yup from \"yup\";\nimport { yupArray, yupMixed, yupNumber, yupObject, yupRecord, yupString } from \"../schema-fields\";\n\n// Single source of truth for the `/internal/metrics` endpoint shape.\n//\n// Both the backend route handler (`apps/backend/src/app/api/latest/internal/metrics/route.tsx`)\n// and the dashboard hook (`apps/dashboard/src/lib/hexclave-app-internals.ts`) import\n// these schemas. The runtime validation lives in the schemas; the static types\n// are derived via `yup.InferType` so we never have to keep parallel copies in\n// sync.\n\nexport const MetricsDataPointSchema = yupObject({\n date: yupString().defined(),\n activity: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDataPointsSchema = yupArray(MetricsDataPointSchema).defined();\n\nexport const MetricsActivitySplitSchema = yupObject({\n total: MetricsDataPointsSchema,\n new: MetricsDataPointsSchema,\n retained: MetricsDataPointsSchema,\n reactivated: MetricsDataPointsSchema,\n}).defined();\n\nexport const MetricsAuthOverviewSchema = yupObject({\n verified_users: yupNumber().integer().defined(),\n unverified_users: yupNumber().integer().defined(),\n anonymous_users: yupNumber().integer().defined(),\n total_teams: yupNumber().integer().defined(),\n mau: yupNumber().integer().defined(),\n daily_active_users_split: MetricsActivitySplitSchema,\n daily_active_teams_split: MetricsActivitySplitSchema,\n total_users_filtered: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsPaymentsOverviewSchema = yupObject({\n subscriptions_by_status: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n active_subscription_count: yupNumber().integer().defined(),\n total_one_time_purchases: yupNumber().integer().defined(),\n daily_subscriptions: MetricsDataPointsSchema,\n revenue_cents: yupNumber().integer().defined(),\n mrr_cents: yupNumber().integer().defined(),\n total_orders: yupNumber().integer().defined(),\n checkout_conversion_rate: yupNumber().defined(),\n}).defined();\n\nexport const MetricsRecentEmailSchema = yupObject({\n id: yupString().defined(),\n status: yupString().defined(),\n subject: yupString().defined(),\n created_at_millis: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDailyEmailStatusBreakdownSchema = yupObject({\n date: yupString().defined(),\n ok: yupNumber().integer().defined(),\n error: yupNumber().integer().defined(),\n in_progress: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsEmailOverviewSchema = yupObject({\n emails_by_status: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n total_emails: yupNumber().integer().defined(),\n daily_emails: MetricsDataPointsSchema,\n daily_emails_by_status: yupArray(MetricsDailyEmailStatusBreakdownSchema).defined(),\n emails_sent: yupNumber().integer().defined(),\n recent_emails: yupArray(MetricsRecentEmailSchema).defined(),\n deliverability_status: yupObject({\n delivered: yupNumber().integer().defined(),\n bounced: yupNumber().integer().defined(),\n error: yupNumber().integer().defined(),\n in_progress: yupNumber().integer().defined(),\n }).defined(),\n deliverability_rate: yupNumber().defined(),\n bounce_rate: yupNumber().defined(),\n click_rate: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDailyRevenuePointSchema = yupObject({\n date: yupString().defined(),\n new_cents: yupNumber().integer().defined(),\n refund_cents: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsTopReferrerSchema = yupObject({\n referrer: yupString().defined(),\n visitors: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsTopRegionSchema = yupObject({\n country_code: yupString().nullable().defined(),\n region_code: yupString().nullable().defined(),\n count: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsAnalyticsOverviewSchema = yupObject({\n daily_page_views: MetricsDataPointsSchema,\n daily_clicks: MetricsDataPointsSchema,\n daily_visitors: MetricsDataPointsSchema,\n // Token-refresh-derived anonymous-visitor fallback. Populated only when the\n // analytics app isn't installed (no `$page-view` events) — counts DISTINCT\n // anonymous users per day from the events table. See\n // `loadAnonymousVisitorsFromTokenRefresh` in the backend metrics route.\n //\n // Optional for one release cycle so older clients/servers don't hard-fail\n // validation during a staged rollout. Tighten to `.defined()` after.\n daily_anonymous_visitors_fallback: yupArray(MetricsDataPointSchema).optional().default([]),\n daily_revenue: yupArray(MetricsDailyRevenuePointSchema).defined(),\n total_revenue_cents: yupNumber().integer().defined(),\n total_replays: yupNumber().integer().defined(),\n recent_replays: yupNumber().integer().defined(),\n visitors: yupNumber().integer().defined(),\n anonymous_visitors_fallback: yupNumber().integer().optional().default(0),\n avg_session_seconds: yupNumber().defined(),\n online_live: yupNumber().integer().defined(),\n revenue_per_visitor: yupNumber().defined(),\n top_referrers: yupArray(MetricsTopReferrerSchema).defined(),\n top_region: MetricsTopRegionSchema.nullable().defined(),\n // dev-fallback fields (only present in non-production environments)\n bounce_rate: yupNumber().optional(),\n conversion_rate: yupNumber().optional(),\n deltas: yupMixed().optional(),\n}).defined();\n\nexport const MetricsLoginMethodEntrySchema = yupObject({\n method: yupString().defined(),\n count: yupNumber().integer().defined(),\n}).defined();\n\n// Recent user summary — a slim projection of UsersCrud[\"Admin\"][\"Read\"] with\n// just the fields the overview list views actually read. Defined here so the\n// metrics response stays self-contained and doesn't pull in users-crud.\n//\n// `.noUnknown(false)` tells our strict object validator to allow the extra\n// fields that the backend returns as part of the full users-crud payload —\n// `is_anonymous`, `has_password`, `oauth_providers`, etc. — without rejecting\n// them. Only the keys explicitly listed here are validated; extras pass through.\nexport const MetricsRecentUserSchema = yupObject({\n id: yupString().defined(),\n display_name: yupString().nullable().defined(),\n primary_email: yupString().nullable().defined(),\n profile_image_url: yupString().nullable().defined(),\n signed_up_at_millis: yupNumber().defined(),\n last_active_at_millis: yupNumber().nullable().defined(),\n}).noUnknown(false).defined();\n\n// Per-user activity heatmap — a simple list of daily event counts for a single\n// user. Backed by ClickHouse `analytics_internal.events` filtered by user_id,\n// project_id, and branch_id. See `/internal/user-activity` on the backend.\nexport const UserActivityResponseBodySchema = yupObject({\n data_points: MetricsDataPointsSchema,\n}).defined();\n\n// Recent \"currently live\" users keyed by ISO country code. Populated by\n// joining a bounded ClickHouse selection from the live `$token-refresh` window\n// with the corresponding Prisma profile rows, so the overview globe can render\n// real avatars of real users from each country. Optional for one release cycle\n// so clients talking to older servers don't fail validation on the returned\n// body.\nexport const MetricsActiveUsersByCountrySchema = yupRecord(\n yupString().defined(),\n yupArray(MetricsRecentUserSchema).defined(),\n).optional().default({});\n\nexport const MetricsResponseBodySchema = yupObject({\n total_users: yupNumber().integer().defined(),\n // Count of distinct users seen refreshing a token in the last ~2 minutes —\n // the \"who's online right now\" number rendered on the overview globe. Derived\n // from the same `$token-refresh` window that powers `active_users_by_country`,\n // so it works for every project regardless of whether the analytics app\n // (page-view-based `analytics_overview.online_live`) is installed.\n //\n // Optional for one release cycle so older servers don't fail schema\n // validation on the returned body. Tighten to `.defined()` after.\n live_users: yupNumber().integer().optional().default(0),\n daily_users: MetricsDataPointsSchema,\n daily_active_users: MetricsDataPointsSchema,\n users_by_country: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n active_users_by_country: MetricsActiveUsersByCountrySchema,\n // recently_registered/active are CRUD User objects passed through from the\n // backend. The schema only validates the fields the dashboard actually\n // reads — extra fields from UsersCrud[\"Admin\"][\"Read\"] are allowed through.\n recently_registered: yupArray(MetricsRecentUserSchema).defined(),\n recently_active: yupArray(MetricsRecentUserSchema).defined(),\n login_methods: yupArray(MetricsLoginMethodEntrySchema).defined(),\n auth_overview: MetricsAuthOverviewSchema,\n payments_overview: MetricsPaymentsOverviewSchema,\n email_overview: MetricsEmailOverviewSchema,\n analytics_overview: MetricsAnalyticsOverviewSchema,\n}).defined();\n\nexport const MetricsUserCountsSchema = yupObject({\n total_users: yupNumber().integer().defined(),\n anonymous_users: yupNumber().integer().defined(),\n}).defined();\n\n// Derived static types — single source of truth lives in the schemas above.\nexport type MetricsDataPoint = yup.InferType<typeof MetricsDataPointSchema>;\nexport type MetricsActivitySplit = yup.InferType<typeof MetricsActivitySplitSchema>;\nexport type MetricsAuthOverview = yup.InferType<typeof MetricsAuthOverviewSchema>;\nexport type MetricsPaymentsOverview = yup.InferType<typeof MetricsPaymentsOverviewSchema>;\nexport type MetricsRecentEmail = yup.InferType<typeof MetricsRecentEmailSchema>;\nexport type MetricsDailyEmailStatusBreakdown = yup.InferType<typeof MetricsDailyEmailStatusBreakdownSchema>;\nexport type MetricsEmailOverview = yup.InferType<typeof MetricsEmailOverviewSchema>;\nexport type MetricsDailyRevenuePoint = yup.InferType<typeof MetricsDailyRevenuePointSchema>;\nexport type MetricsTopReferrer = yup.InferType<typeof MetricsTopReferrerSchema>;\nexport type MetricsTopRegion = yup.InferType<typeof MetricsTopRegionSchema>;\nexport type MetricsAnalyticsOverview = yup.InferType<typeof MetricsAnalyticsOverviewSchema>;\nexport type MetricsLoginMethodEntry = yup.InferType<typeof MetricsLoginMethodEntrySchema>;\nexport type MetricsRecentUser = yup.InferType<typeof MetricsRecentUserSchema>;\nexport type MetricsResponse = yup.InferType<typeof MetricsResponseBodySchema>;\nexport type MetricsUserCounts = yup.InferType<typeof MetricsUserCountsSchema>;\nexport type UserActivityResponse = yup.InferType<typeof UserActivityResponseBodySchema>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin-metrics.js","names":[],"sources":["../../../src/interface/admin-metrics.ts"],"sourcesContent":["import yup from \"yup\";\nimport { yupArray, yupMixed, yupNumber, yupObject, yupRecord, yupString } from \"../schema-fields\";\n\n// Single source of truth for the `/internal/metrics` endpoint shape.\n//\n// Both the backend route handler (`apps/backend/src/app/api/latest/internal/metrics/route.tsx`)\n// and the dashboard hook (`apps/dashboard/src/lib/hexclave-app-internals.ts`) import\n// these schemas. The runtime validation lives in the schemas; the static types\n// are derived via `yup.InferType` so we never have to keep parallel copies in\n// sync.\n\nexport const MetricsDataPointSchema = yupObject({\n date: yupString().defined(),\n activity: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDataPointsSchema = yupArray(MetricsDataPointSchema).defined();\n\nexport const MetricsActivitySplitSchema = yupObject({\n total: MetricsDataPointsSchema,\n new: MetricsDataPointsSchema,\n retained: MetricsDataPointsSchema,\n reactivated: MetricsDataPointsSchema,\n}).defined();\n\nexport const MetricsAuthOverviewSchema = yupObject({\n verified_users: yupNumber().integer().defined(),\n unverified_users: yupNumber().integer().defined(),\n anonymous_users: yupNumber().integer().defined(),\n total_teams: yupNumber().integer().defined(),\n mau: yupNumber().integer().defined(),\n daily_active_users_split: MetricsActivitySplitSchema,\n daily_active_teams_split: MetricsActivitySplitSchema,\n total_users_filtered: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsPaymentsOverviewSchema = yupObject({\n subscriptions_by_status: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n active_subscription_count: yupNumber().integer().defined(),\n total_one_time_purchases: yupNumber().integer().defined(),\n daily_subscriptions: MetricsDataPointsSchema,\n revenue_cents: yupNumber().integer().defined(),\n mrr_cents: yupNumber().integer().defined(),\n total_orders: yupNumber().integer().defined(),\n checkout_conversion_rate: yupNumber().defined(),\n}).defined();\n\nexport const MetricsRecentEmailSchema = yupObject({\n id: yupString().defined(),\n status: yupString().defined(),\n subject: yupString().defined(),\n created_at_millis: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDailyEmailStatusBreakdownSchema = yupObject({\n date: yupString().defined(),\n ok: yupNumber().integer().defined(),\n error: yupNumber().integer().defined(),\n in_progress: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsEmailOverviewSchema = yupObject({\n emails_by_status: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n total_emails: yupNumber().integer().defined(),\n daily_emails: MetricsDataPointsSchema,\n daily_emails_by_status: yupArray(MetricsDailyEmailStatusBreakdownSchema).defined(),\n emails_sent: yupNumber().integer().defined(),\n recent_emails: yupArray(MetricsRecentEmailSchema).defined(),\n deliverability_status: yupObject({\n delivered: yupNumber().integer().defined(),\n bounced: yupNumber().integer().defined(),\n error: yupNumber().integer().defined(),\n in_progress: yupNumber().integer().defined(),\n }).defined(),\n deliverability_rate: yupNumber().defined(),\n bounce_rate: yupNumber().defined(),\n click_rate: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDailyRevenuePointSchema = yupObject({\n date: yupString().defined(),\n new_cents: yupNumber().integer().defined(),\n refund_cents: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsTopReferrerSchema = yupObject({\n referrer: yupString().defined(),\n visitors: yupNumber().integer().defined(),\n}).defined();\n\n// Named-count breakdowns used by the analytics overview for top browsers,\n// operating systems, and device classes (Desktop / Mobile / Tablet).\nexport const MetricsNamedCountSchema = yupObject({\n name: yupString().defined(),\n visitors: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsTopRegionSchema = yupObject({\n country_code: yupString().nullable().defined(),\n region_code: yupString().nullable().defined(),\n count: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsTopCountrySchema = yupObject({\n country_code: yupString().defined(),\n count: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsAnalyticsOverviewSchema = yupObject({\n daily_page_views: MetricsDataPointsSchema,\n daily_clicks: MetricsDataPointsSchema,\n daily_visitors: MetricsDataPointsSchema,\n hourly_page_views: yupArray(MetricsDataPointSchema).optional().default([]),\n hourly_active_users: yupArray(MetricsDataPointSchema).optional().default([]),\n hourly_visitors: yupArray(MetricsDataPointSchema).optional().default([]),\n // Token-refresh-derived anonymous-visitor fallback. Populated only when the\n // analytics app isn't installed (no `$page-view` events) — counts DISTINCT\n // anonymous users per day from the events table. See\n // `loadAnonymousVisitorsFromTokenRefresh` in the backend metrics route.\n //\n // Optional for one release cycle so older clients/servers don't hard-fail\n // validation during a staged rollout. Tighten to `.defined()` after.\n daily_anonymous_visitors_fallback: yupArray(MetricsDataPointSchema).optional().default([]),\n daily_revenue: yupArray(MetricsDailyRevenuePointSchema).defined(),\n total_revenue_cents: yupNumber().integer().defined(),\n total_replays: yupNumber().integer().defined(),\n recent_replays: yupNumber().integer().defined(),\n visitors: yupNumber().integer().defined(),\n anonymous_visitors_fallback: yupNumber().integer().optional().default(0),\n avg_session_seconds: yupNumber().defined(),\n online_live: yupNumber().integer().defined(),\n revenue_per_visitor: yupNumber().defined(),\n top_referrers: yupArray(MetricsTopReferrerSchema).defined(),\n top_region: MetricsTopRegionSchema.nullable().defined(),\n top_regions: yupArray(MetricsTopCountrySchema).optional().default([]),\n // Weighted across the window: sum(bounced)/sum(sessions) * 100. .optional()\n // for one release cycle so older servers (that don't return it yet) don't\n // hard-fail validation; default to 0 so consumers can read unconditionally.\n bounce_rate: yupNumber().optional().default(0),\n daily_bounce_rate: yupArray(MetricsDataPointSchema).optional().default([]),\n daily_avg_session_seconds: yupArray(MetricsDataPointSchema).optional().default([]),\n // User-Agent-derived breakdowns for the analytics overview. Computed from the\n // `data.user_agent` blob on `$page-view` events (captured client-side only,\n // no server-side fallback). Optional + default-[] for one release cycle\n // so older clients / servers without UA capture don't fail validation.\n top_browsers: yupArray(MetricsNamedCountSchema).optional().default([]),\n top_operating_systems: yupArray(MetricsNamedCountSchema).optional().default([]),\n top_devices: yupArray(MetricsNamedCountSchema).optional().default([]),\n conversion_rate: yupNumber().optional(),\n deltas: yupMixed().optional(),\n}).defined();\n\nexport const MetricsLoginMethodEntrySchema = yupObject({\n method: yupString().defined(),\n count: yupNumber().integer().defined(),\n}).defined();\n\n// Recent user summary — a slim projection of UsersCrud[\"Admin\"][\"Read\"] with\n// just the fields the overview list views actually read. Defined here so the\n// metrics response stays self-contained and doesn't pull in users-crud.\n//\n// `.noUnknown(false)` tells our strict object validator to allow the extra\n// fields that the backend returns as part of the full users-crud payload —\n// `is_anonymous`, `has_password`, `oauth_providers`, etc. — without rejecting\n// them. Only the keys explicitly listed here are validated; extras pass through.\nexport const MetricsRecentUserSchema = yupObject({\n id: yupString().defined(),\n display_name: yupString().nullable().defined(),\n primary_email: yupString().nullable().defined(),\n profile_image_url: yupString().nullable().defined(),\n signed_up_at_millis: yupNumber().defined(),\n last_active_at_millis: yupNumber().nullable().defined(),\n}).noUnknown(false).defined();\n\n// Per-user activity heatmap — a simple list of daily event counts for a single\n// user. Backed by ClickHouse `analytics_internal.events` filtered by user_id,\n// project_id, and branch_id. See `/internal/user-activity` on the backend.\nexport const UserActivityResponseBodySchema = yupObject({\n data_points: MetricsDataPointsSchema,\n}).defined();\n\n// Recent \"currently live\" users keyed by ISO country code. Populated by\n// joining a bounded ClickHouse selection from the live `$token-refresh` window\n// with the corresponding Prisma profile rows, so the overview globe can render\n// real avatars of real users from each country. Optional for one release cycle\n// so clients talking to older servers don't fail validation on the returned\n// body.\nexport const MetricsActiveUsersByCountrySchema = yupRecord(\n yupString().defined(),\n yupArray(MetricsRecentUserSchema).defined(),\n).optional().default({});\n\nexport const MetricsResponseBodySchema = yupObject({\n total_users: yupNumber().integer().defined(),\n // Count of distinct users seen refreshing a token in the last ~2 minutes —\n // the \"who's online right now\" number rendered on the overview globe. Derived\n // from the same `$token-refresh` window that powers `active_users_by_country`,\n // so it works for every project regardless of whether the analytics app\n // (page-view-based `analytics_overview.online_live`) is installed.\n //\n // Optional for one release cycle so older servers don't fail schema\n // validation on the returned body. Tighten to `.defined()` after.\n live_users: yupNumber().integer().optional().default(0),\n daily_users: MetricsDataPointsSchema,\n daily_active_users: MetricsDataPointsSchema,\n hourly_users: yupArray(MetricsDataPointSchema).optional().default([]),\n hourly_active_users: yupArray(MetricsDataPointSchema).optional().default([]),\n users_by_country: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n active_users_by_country: MetricsActiveUsersByCountrySchema,\n // recently_registered/active are CRUD User objects passed through from the\n // backend. The schema only validates the fields the dashboard actually\n // reads — extra fields from UsersCrud[\"Admin\"][\"Read\"] are allowed through.\n recently_registered: yupArray(MetricsRecentUserSchema).defined(),\n recently_active: yupArray(MetricsRecentUserSchema).defined(),\n login_methods: yupArray(MetricsLoginMethodEntrySchema).defined(),\n auth_overview: MetricsAuthOverviewSchema,\n payments_overview: MetricsPaymentsOverviewSchema,\n email_overview: MetricsEmailOverviewSchema,\n analytics_overview: MetricsAnalyticsOverviewSchema,\n}).defined();\n\nexport const MetricsUserCountsSchema = yupObject({\n total_users: yupNumber().integer().defined(),\n anonymous_users: yupNumber().integer().defined(),\n}).defined();\n\n// Derived static types — single source of truth lives in the schemas above.\nexport type MetricsDataPoint = yup.InferType<typeof MetricsDataPointSchema>;\nexport type MetricsActivitySplit = yup.InferType<typeof MetricsActivitySplitSchema>;\nexport type MetricsAuthOverview = yup.InferType<typeof MetricsAuthOverviewSchema>;\nexport type MetricsPaymentsOverview = yup.InferType<typeof MetricsPaymentsOverviewSchema>;\nexport type MetricsRecentEmail = yup.InferType<typeof MetricsRecentEmailSchema>;\nexport type MetricsDailyEmailStatusBreakdown = yup.InferType<typeof MetricsDailyEmailStatusBreakdownSchema>;\nexport type MetricsEmailOverview = yup.InferType<typeof MetricsEmailOverviewSchema>;\nexport type MetricsDailyRevenuePoint = yup.InferType<typeof MetricsDailyRevenuePointSchema>;\nexport type MetricsTopReferrer = yup.InferType<typeof MetricsTopReferrerSchema>;\nexport type MetricsTopRegion = yup.InferType<typeof MetricsTopRegionSchema>;\nexport type MetricsTopCountry = yup.InferType<typeof MetricsTopCountrySchema>;\nexport type MetricsNamedCount = yup.InferType<typeof MetricsNamedCountSchema>;\nexport type MetricsAnalyticsOverview = yup.InferType<typeof MetricsAnalyticsOverviewSchema>;\nexport type MetricsLoginMethodEntry = yup.InferType<typeof MetricsLoginMethodEntrySchema>;\nexport type MetricsRecentUser = yup.InferType<typeof MetricsRecentUserSchema>;\nexport type MetricsResponse = yup.InferType<typeof MetricsResponseBodySchema>;\nexport type MetricsUserCounts = yup.InferType<typeof MetricsUserCountsSchema>;\nexport type UserActivityResponse = yup.InferType<typeof UserActivityResponseBodySchema>;\n"],"mappings":"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"}
|
|
@@ -56,9 +56,9 @@ declare const conversationSummarySchema: yup$1.ObjectSchema<{
|
|
|
56
56
|
preview: string | null;
|
|
57
57
|
lastActivityAt: string;
|
|
58
58
|
metadata: {
|
|
59
|
+
tags: string[];
|
|
59
60
|
assignedToUserId: string | null;
|
|
60
61
|
assignedToDisplayName: string | null;
|
|
61
|
-
tags: string[];
|
|
62
62
|
firstResponseDueAt: string | null;
|
|
63
63
|
firstResponseAt: string | null;
|
|
64
64
|
nextResponseDueAt: string | null;
|
|
@@ -187,9 +187,9 @@ declare const conversationListResponseSchema: yup$1.ObjectSchema<{
|
|
|
187
187
|
preview: string | null;
|
|
188
188
|
lastActivityAt: string;
|
|
189
189
|
metadata: {
|
|
190
|
+
tags: string[];
|
|
190
191
|
assignedToUserId: string | null;
|
|
191
192
|
assignedToDisplayName: string | null;
|
|
192
|
-
tags: string[];
|
|
193
193
|
firstResponseDueAt: string | null;
|
|
194
194
|
firstResponseAt: string | null;
|
|
195
195
|
nextResponseDueAt: string | null;
|
|
@@ -225,9 +225,9 @@ declare const conversationDetailResponseSchema: yup$1.ObjectSchema<{
|
|
|
225
225
|
preview: string | null;
|
|
226
226
|
lastActivityAt: string;
|
|
227
227
|
metadata: {
|
|
228
|
+
tags: string[];
|
|
228
229
|
assignedToUserId: string | null;
|
|
229
230
|
assignedToDisplayName: string | null;
|
|
230
|
-
tags: string[];
|
|
231
231
|
firstResponseDueAt: string | null;
|
|
232
232
|
firstResponseAt: string | null;
|
|
233
233
|
nextResponseDueAt: string | null;
|
|
@@ -5,18 +5,18 @@ import { CrudTypeOf } from "../../crud";
|
|
|
5
5
|
//#region src/interface/crud/current-user.d.ts
|
|
6
6
|
declare const currentUserCrud: ______crud0.CrudSchemaFromOptions<{
|
|
7
7
|
clientReadSchema: yup$1.ObjectSchema<{
|
|
8
|
+
selected_team_id: string | null;
|
|
9
|
+
is_anonymous: boolean;
|
|
10
|
+
is_restricted: boolean;
|
|
8
11
|
restricted_reason: {
|
|
9
12
|
type: "anonymous" | "email_not_verified" | "restricted_by_administrator";
|
|
10
13
|
} | null;
|
|
14
|
+
requires_totp_mfa: boolean;
|
|
11
15
|
primary_email: string | null;
|
|
12
16
|
display_name: string | null;
|
|
13
17
|
client_metadata: {} | null;
|
|
14
18
|
client_read_only_metadata: {} | null;
|
|
15
19
|
id: string;
|
|
16
|
-
selected_team_id: string | null;
|
|
17
|
-
is_anonymous: boolean;
|
|
18
|
-
is_restricted: boolean;
|
|
19
|
-
requires_totp_mfa: boolean;
|
|
20
20
|
profile_image_url: string | null;
|
|
21
21
|
signed_up_at_millis: number;
|
|
22
22
|
primary_email_verified: boolean;
|
|
@@ -173,10 +173,10 @@ declare const currentUserCrud: ______crud0.CrudSchemaFromOptions<{
|
|
|
173
173
|
requires_totp_mfa: undefined;
|
|
174
174
|
}, "">;
|
|
175
175
|
clientUpdateSchema: yup$1.ObjectSchema<{
|
|
176
|
+
selected_team_id: string | null | undefined;
|
|
176
177
|
primary_email: string | null | undefined;
|
|
177
178
|
display_name: string | null | undefined;
|
|
178
179
|
client_metadata: {} | null | undefined;
|
|
179
|
-
selected_team_id: string | null | undefined;
|
|
180
180
|
profile_image_url: string | null | undefined;
|
|
181
181
|
otp_auth_enabled: boolean | undefined;
|
|
182
182
|
passkey_auth_enabled: boolean | undefined;
|