@hexclave/shared 1.0.14 → 1.0.16
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/apps/apps-config.d.ts +6 -0
- package/dist/apps/apps-config.js +6 -0
- package/dist/apps/apps-config.js.map +1 -1
- package/dist/config/schema.d.ts +107 -107
- package/dist/config-authoring.d.ts.map +1 -1
- package/dist/config-authoring.js.map +1 -1
- package/dist/config-authoring.test.js +1 -1
- package/dist/config-authoring.test.js.map +1 -1
- package/dist/config-rendering.d.ts +2 -2
- package/dist/config-rendering.js +16 -0
- package/dist/config-rendering.js.map +1 -1
- package/dist/esm/apps/apps-config.d.ts +6 -0
- package/dist/esm/apps/apps-config.js +6 -0
- package/dist/esm/apps/apps-config.js.map +1 -1
- package/dist/esm/config/schema.d.ts +107 -107
- package/dist/esm/config-authoring.d.ts.map +1 -1
- package/dist/esm/config-authoring.js.map +1 -1
- package/dist/esm/config-authoring.test.js +1 -1
- package/dist/esm/config-authoring.test.js.map +1 -1
- package/dist/esm/config-rendering.d.ts +2 -2
- package/dist/esm/config-rendering.js +16 -2
- package/dist/esm/config-rendering.js.map +1 -1
- package/dist/esm/hexclave-config-file.d.ts +24 -1
- package/dist/esm/hexclave-config-file.d.ts.map +1 -1
- package/dist/esm/hexclave-config-file.js +69 -2
- package/dist/esm/hexclave-config-file.js.map +1 -1
- package/dist/esm/interface/admin-interface.d.ts +19 -1
- package/dist/esm/interface/admin-interface.d.ts.map +1 -1
- package/dist/esm/interface/admin-interface.js +14 -0
- package/dist/esm/interface/admin-interface.js.map +1 -1
- package/dist/esm/interface/admin-metrics.d.ts +115 -21
- package/dist/esm/interface/admin-metrics.d.ts.map +1 -1
- package/dist/esm/interface/admin-metrics.js +61 -1
- package/dist/esm/interface/admin-metrics.js.map +1 -1
- package/dist/esm/interface/conversations.d.ts +42 -42
- package/dist/esm/interface/crud/current-user.d.ts +15 -15
- package/dist/esm/interface/crud/email-outbox.d.ts +220 -220
- package/dist/esm/interface/crud/invoices.d.ts +2 -2
- package/dist/esm/interface/crud/products.d.ts +17 -17
- package/dist/esm/interface/crud/products.d.ts.map +1 -1
- package/dist/esm/interface/crud/project-api-keys.d.ts +4 -4
- package/dist/esm/interface/crud/projects.d.ts +59 -59
- package/dist/esm/interface/crud/team-member-profiles.d.ts +26 -26
- package/dist/esm/interface/crud/transactions.d.ts +15 -15
- package/dist/esm/interface/crud/transactions.d.ts.map +1 -1
- package/dist/esm/interface/crud/users.d.ts +18 -18
- package/dist/esm/interface/webhooks.d.ts +4 -4
- package/dist/esm/known-errors.d.ts +5 -5
- package/dist/esm/schema-fields.d.ts +8 -8
- package/dist/esm/sessions.d.ts +7 -7
- package/dist/esm/utils/analytics-clickmap-overlay.d.ts +18 -0
- package/dist/esm/utils/analytics-clickmap-overlay.d.ts.map +1 -0
- package/dist/esm/utils/analytics-clickmap-overlay.js +19 -0
- package/dist/esm/utils/analytics-clickmap-overlay.js.map +1 -0
- package/dist/esm/utils/dev-tool.d.ts +31 -0
- package/dist/esm/utils/dev-tool.d.ts.map +1 -0
- package/dist/esm/utils/dev-tool.js +32 -0
- package/dist/esm/utils/dev-tool.js.map +1 -0
- package/dist/esm/utils/dom.d.ts +7 -1
- package/dist/esm/utils/dom.d.ts.map +1 -1
- package/dist/esm/utils/dom.js +20 -1
- package/dist/esm/utils/dom.js.map +1 -1
- package/dist/esm/utils/elements-chain.d.ts +38 -0
- package/dist/esm/utils/elements-chain.d.ts.map +1 -0
- package/dist/esm/utils/elements-chain.js +297 -0
- package/dist/esm/utils/elements-chain.js.map +1 -0
- package/dist/hexclave-config-file.d.ts +24 -1
- package/dist/hexclave-config-file.d.ts.map +1 -1
- package/dist/hexclave-config-file.js +71 -1
- package/dist/hexclave-config-file.js.map +1 -1
- package/dist/interface/admin-interface.d.ts +19 -1
- package/dist/interface/admin-interface.d.ts.map +1 -1
- package/dist/interface/admin-interface.js +14 -0
- package/dist/interface/admin-interface.js.map +1 -1
- package/dist/interface/admin-metrics.d.ts +115 -21
- package/dist/interface/admin-metrics.d.ts.map +1 -1
- package/dist/interface/admin-metrics.js +65 -0
- package/dist/interface/admin-metrics.js.map +1 -1
- package/dist/interface/conversations.d.ts +42 -42
- package/dist/interface/crud/current-user.d.ts +15 -15
- package/dist/interface/crud/email-outbox.d.ts +220 -220
- package/dist/interface/crud/invoices.d.ts +2 -2
- package/dist/interface/crud/products.d.ts +17 -17
- package/dist/interface/crud/products.d.ts.map +1 -1
- package/dist/interface/crud/project-api-keys.d.ts +4 -4
- package/dist/interface/crud/projects.d.ts +59 -59
- package/dist/interface/crud/team-member-profiles.d.ts +26 -26
- package/dist/interface/crud/transactions.d.ts +15 -15
- package/dist/interface/crud/transactions.d.ts.map +1 -1
- package/dist/interface/crud/users.d.ts +18 -18
- package/dist/interface/webhooks.d.ts +4 -4
- package/dist/known-errors.d.ts +5 -5
- package/dist/schema-fields.d.ts +8 -8
- package/dist/sessions.d.ts +7 -7
- package/dist/utils/analytics-clickmap-overlay.d.ts +18 -0
- package/dist/utils/analytics-clickmap-overlay.d.ts.map +1 -0
- package/dist/utils/analytics-clickmap-overlay.js +23 -0
- package/dist/utils/analytics-clickmap-overlay.js.map +1 -0
- package/dist/utils/dev-tool.d.ts +31 -0
- package/dist/utils/dev-tool.d.ts.map +1 -0
- package/dist/utils/dev-tool.js +37 -0
- package/dist/utils/dev-tool.js.map +1 -0
- package/dist/utils/dom.d.ts +7 -1
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/dom.js +20 -0
- package/dist/utils/dom.js.map +1 -1
- package/dist/utils/elements-chain.d.ts +38 -0
- package/dist/utils/elements-chain.d.ts.map +1 -0
- package/dist/utils/elements-chain.js +304 -0
- package/dist/utils/elements-chain.js.map +1 -0
- package/package.json +1 -1
- package/src/apps/apps-config.ts +6 -0
- package/src/config-authoring.test.ts +1 -1
- package/src/config-authoring.ts +6 -6
- package/src/config-rendering.ts +24 -2
- package/src/hexclave-config-file.ts +90 -1
- package/src/interface/admin-interface.ts +43 -1
- package/src/interface/admin-metrics.ts +92 -4
- package/src/utils/analytics-clickmap-overlay.tsx +15 -0
- package/src/utils/dev-tool.tsx +30 -0
- package/src/utils/dom.tsx +42 -0
- package/src/utils/elements-chain.tsx +349 -0
|
@@ -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\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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"}
|
|
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.\n // Optional + default-[] for one release cycle so older clients / servers\n // 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 clickmap — 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\nexport const AnalyticsClickmapKindSchema = yupString().oneOf([\"team_user_hour_of_week\", \"session_replay_clicks\"]).defined();\nexport const AnalyticsClickmapDeviceSchema = yupString().oneOf([\"tv\", \"widescreen\", \"desktop\", \"laptop\", \"tablet\", \"mobile\"]).defined();\n\nexport const AnalyticsClickmapTokenResponseBodySchema = yupObject({\n token: yupString().defined(),\n origin: yupString().defined(),\n expires_at_millis: yupNumber().integer().defined(),\n}).defined();\n\nexport const AnalyticsClickmapCellSchema = yupObject({\n weekday: yupNumber().integer().min(1).max(7).defined(),\n hour: yupNumber().integer().min(0).max(23).defined(),\n value: yupNumber().integer().defined(),\n}).defined();\n\nexport const AnalyticsClickmapResponseBodySchema = yupObject({\n kind: AnalyticsClickmapKindSchema,\n cells: yupArray(AnalyticsClickmapCellSchema).defined(),\n // Fraction of source rows the result was computed from (1 = full scan).\n // Returned counts are pre-scaled by 1/sampling.\n sampling: yupNumber().min(0).max(1).optional().default(1),\n routes: yupArray(yupObject({\n path: yupString().defined(),\n clicks: yupNumber().integer().defined(),\n users: yupNumber().integer().defined(),\n replays: yupNumber().integer().defined(),\n }).defined()).optional().default([]),\n users: yupArray(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 clicks: yupNumber().integer().defined(),\n replays: yupNumber().integer().defined(),\n last_event_at_millis: yupNumber().defined(),\n }).defined()).optional().default([]),\n replays: yupArray(yupObject({\n id: yupString().defined(),\n user_id: yupString().nullable().defined(),\n route_path: yupString().nullable().defined(),\n viewport_width: yupNumber().integer().nullable().defined(),\n viewport_height: yupNumber().integer().nullable().defined(),\n clicks: yupNumber().integer().defined(),\n last_event_at_millis: yupNumber().defined(),\n }).defined()).optional().default([]),\n selectors: yupArray(yupObject({\n selector: yupString().defined(),\n clicks: yupNumber().integer().defined(),\n }).defined()).optional().default([]),\n // PostHog-style aggregated element identities. Resilient to DOM drift\n // because the chain encodes ancestor tags/classes/attrs/text rather than\n // a positional CSS selector.\n elements: yupArray(yupObject({\n elements_chain: yupString().defined(),\n elements_text: yupString().defined(),\n tag_name: yupString().defined(),\n href: yupString().nullable().defined(),\n clicks: yupNumber().integer().defined(),\n // Optional for one release cycle so new overlay clients can validate\n // responses from older servers that only returned aggregate click counts.\n dead_clicks: yupNumber().integer().optional().default(0),\n }).defined()).optional().default([]),\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>;\nexport type AnalyticsClickmapKind = yup.InferType<typeof AnalyticsClickmapKindSchema>;\nexport type AnalyticsClickmapDevice = yup.InferType<typeof AnalyticsClickmapDeviceSchema>;\nexport type AnalyticsClickmapCell = yup.InferType<typeof AnalyticsClickmapCellSchema>;\nexport type AnalyticsClickmapResponse = yup.InferType<typeof AnalyticsClickmapResponseBodySchema>;\nexport type AnalyticsClickmapTokenResponse = yup.InferType<typeof AnalyticsClickmapTokenResponseBodySchema>;\n\n// Single (camelCase) options shape for the clickmap SDK surface — shared by the\n// StackAdminApp interface and its implementation so the two can't drift. The\n// HexclaveAdminInterface transport layer maps these to the snake_case request body.\nexport type AnalyticsClickmapOptions = {\n kind: AnalyticsClickmapKind,\n memberUserIds?: string[],\n routePath?: string,\n routeRegex?: string,\n urlPattern?: string,\n userId?: string,\n replayId?: string,\n device?: AnalyticsClickmapDevice,\n viewportWidthMin?: number,\n viewportWidthMax?: number,\n sampling?: number,\n since: string,\n until: string,\n};\n"],"mappings":"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"}
|
|
@@ -49,16 +49,16 @@ declare const conversationSummarySchema: yup$1.ObjectSchema<{
|
|
|
49
49
|
userPrimaryEmail: string | null;
|
|
50
50
|
userProfileImageUrl: string | null;
|
|
51
51
|
subject: string;
|
|
52
|
-
status: "
|
|
52
|
+
status: "open" | "pending" | "closed";
|
|
53
53
|
priority: "low" | "normal" | "high" | "urgent";
|
|
54
|
-
source: "
|
|
54
|
+
source: "manual" | "chat" | "email" | "api";
|
|
55
55
|
lastMessageType: "message" | "internal-note" | "status-change";
|
|
56
56
|
preview: string | null;
|
|
57
57
|
lastActivityAt: string;
|
|
58
58
|
metadata: {
|
|
59
|
-
tags: string[];
|
|
60
59
|
assignedToUserId: string | null;
|
|
61
60
|
assignedToDisplayName: string | null;
|
|
61
|
+
tags: string[];
|
|
62
62
|
firstResponseDueAt: string | null;
|
|
63
63
|
firstResponseAt: string | null;
|
|
64
64
|
nextResponseDueAt: string | null;
|
|
@@ -129,9 +129,9 @@ declare const conversationMessageSchema: yup$1.ObjectSchema<{
|
|
|
129
129
|
userId: string | null;
|
|
130
130
|
teamId: string | null;
|
|
131
131
|
subject: string;
|
|
132
|
-
status: "
|
|
132
|
+
status: "open" | "pending" | "closed";
|
|
133
133
|
priority: "low" | "normal" | "high" | "urgent";
|
|
134
|
-
source: "
|
|
134
|
+
source: "manual" | "chat" | "email" | "api";
|
|
135
135
|
messageType: "message" | "internal-note" | "status-change";
|
|
136
136
|
body: string | null;
|
|
137
137
|
attachments: {}[];
|
|
@@ -139,8 +139,8 @@ declare const conversationMessageSchema: yup$1.ObjectSchema<{
|
|
|
139
139
|
createdAt: string;
|
|
140
140
|
sender: {
|
|
141
141
|
type: "user" | "agent" | "system";
|
|
142
|
-
displayName: string | null;
|
|
143
142
|
id: string | null;
|
|
143
|
+
displayName: string | null;
|
|
144
144
|
primaryEmail: string | null;
|
|
145
145
|
};
|
|
146
146
|
}, yup$1.AnyObject, {
|
|
@@ -173,29 +173,29 @@ declare const conversationListResponseSchema: yup$1.ObjectSchema<{
|
|
|
173
173
|
lastOutboundAt?: string | null | undefined;
|
|
174
174
|
closedAt?: string | null | undefined;
|
|
175
175
|
recordMetadata?: {} | null | undefined;
|
|
176
|
-
metadata: {
|
|
177
|
-
tags: string[];
|
|
178
|
-
assignedToUserId: string | null;
|
|
179
|
-
assignedToDisplayName: string | null;
|
|
180
|
-
firstResponseDueAt: string | null;
|
|
181
|
-
firstResponseAt: string | null;
|
|
182
|
-
nextResponseDueAt: string | null;
|
|
183
|
-
lastCustomerReplyAt: string | null;
|
|
184
|
-
lastAgentReplyAt: string | null;
|
|
185
|
-
};
|
|
186
|
-
source: "email" | "manual" | "chat" | "api";
|
|
187
|
-
status: "pending" | "open" | "closed";
|
|
188
|
-
priority: "low" | "normal" | "high" | "urgent";
|
|
189
|
-
subject: string;
|
|
190
176
|
conversationId: string;
|
|
191
177
|
userId: string | null;
|
|
192
178
|
teamId: string | null;
|
|
193
179
|
userDisplayName: string | null;
|
|
194
180
|
userPrimaryEmail: string | null;
|
|
195
181
|
userProfileImageUrl: string | null;
|
|
182
|
+
subject: string;
|
|
183
|
+
status: "open" | "pending" | "closed";
|
|
184
|
+
priority: "low" | "normal" | "high" | "urgent";
|
|
185
|
+
source: "manual" | "chat" | "email" | "api";
|
|
196
186
|
lastMessageType: "message" | "internal-note" | "status-change";
|
|
197
187
|
preview: string | null;
|
|
198
188
|
lastActivityAt: string;
|
|
189
|
+
metadata: {
|
|
190
|
+
assignedToUserId: string | null;
|
|
191
|
+
assignedToDisplayName: string | null;
|
|
192
|
+
tags: string[];
|
|
193
|
+
firstResponseDueAt: string | null;
|
|
194
|
+
firstResponseAt: string | null;
|
|
195
|
+
nextResponseDueAt: string | null;
|
|
196
|
+
lastCustomerReplyAt: string | null;
|
|
197
|
+
lastAgentReplyAt: string | null;
|
|
198
|
+
};
|
|
199
199
|
}[];
|
|
200
200
|
hasMore: boolean;
|
|
201
201
|
}, yup$1.AnyObject, {
|
|
@@ -211,54 +211,54 @@ declare const conversationDetailResponseSchema: yup$1.ObjectSchema<{
|
|
|
211
211
|
lastOutboundAt?: string | null | undefined;
|
|
212
212
|
closedAt?: string | null | undefined;
|
|
213
213
|
recordMetadata?: {} | null | undefined;
|
|
214
|
-
metadata: {
|
|
215
|
-
tags: string[];
|
|
216
|
-
assignedToUserId: string | null;
|
|
217
|
-
assignedToDisplayName: string | null;
|
|
218
|
-
firstResponseDueAt: string | null;
|
|
219
|
-
firstResponseAt: string | null;
|
|
220
|
-
nextResponseDueAt: string | null;
|
|
221
|
-
lastCustomerReplyAt: string | null;
|
|
222
|
-
lastAgentReplyAt: string | null;
|
|
223
|
-
};
|
|
224
|
-
source: "email" | "manual" | "chat" | "api";
|
|
225
|
-
status: "pending" | "open" | "closed";
|
|
226
|
-
priority: "low" | "normal" | "high" | "urgent";
|
|
227
|
-
subject: string;
|
|
228
214
|
conversationId: string;
|
|
229
215
|
userId: string | null;
|
|
230
216
|
teamId: string | null;
|
|
231
217
|
userDisplayName: string | null;
|
|
232
218
|
userPrimaryEmail: string | null;
|
|
233
219
|
userProfileImageUrl: string | null;
|
|
220
|
+
subject: string;
|
|
221
|
+
status: "open" | "pending" | "closed";
|
|
222
|
+
priority: "low" | "normal" | "high" | "urgent";
|
|
223
|
+
source: "manual" | "chat" | "email" | "api";
|
|
234
224
|
lastMessageType: "message" | "internal-note" | "status-change";
|
|
235
225
|
preview: string | null;
|
|
236
226
|
lastActivityAt: string;
|
|
227
|
+
metadata: {
|
|
228
|
+
assignedToUserId: string | null;
|
|
229
|
+
assignedToDisplayName: string | null;
|
|
230
|
+
tags: string[];
|
|
231
|
+
firstResponseDueAt: string | null;
|
|
232
|
+
firstResponseAt: string | null;
|
|
233
|
+
nextResponseDueAt: string | null;
|
|
234
|
+
lastCustomerReplyAt: string | null;
|
|
235
|
+
lastAgentReplyAt: string | null;
|
|
236
|
+
};
|
|
237
237
|
};
|
|
238
238
|
messages: {
|
|
239
|
-
metadata: {} | null;
|
|
240
|
-
body: string | null;
|
|
241
|
-
source: "email" | "manual" | "chat" | "api";
|
|
242
|
-
status: "pending" | "open" | "closed";
|
|
243
239
|
id: string;
|
|
244
|
-
priority: "low" | "normal" | "high" | "urgent";
|
|
245
|
-
subject: string;
|
|
246
240
|
conversationId: string;
|
|
247
241
|
userId: string | null;
|
|
248
242
|
teamId: string | null;
|
|
243
|
+
subject: string;
|
|
244
|
+
status: "open" | "pending" | "closed";
|
|
245
|
+
priority: "low" | "normal" | "high" | "urgent";
|
|
246
|
+
source: "manual" | "chat" | "email" | "api";
|
|
247
|
+
metadata: {} | null;
|
|
249
248
|
createdAt: string;
|
|
250
249
|
messageType: "message" | "internal-note" | "status-change";
|
|
250
|
+
body: string | null;
|
|
251
251
|
attachments: {}[];
|
|
252
252
|
sender: {
|
|
253
253
|
type: "user" | "agent" | "system";
|
|
254
|
-
displayName: string | null;
|
|
255
254
|
id: string | null;
|
|
255
|
+
displayName: string | null;
|
|
256
256
|
primaryEmail: string | null;
|
|
257
257
|
};
|
|
258
258
|
}[];
|
|
259
259
|
entryPoints: {
|
|
260
|
-
metadata: {} | null;
|
|
261
260
|
id: string;
|
|
261
|
+
metadata: {} | null;
|
|
262
262
|
createdAt: string;
|
|
263
263
|
updatedAt: string;
|
|
264
264
|
channelType: string;
|
|
@@ -5,21 +5,21 @@ 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
|
-
restricted_reason: {
|
|
9
|
-
type: "anonymous" | "email_not_verified" | "restricted_by_administrator";
|
|
10
|
-
} | null;
|
|
11
|
-
primary_email: string | null;
|
|
12
|
-
display_name: string | null;
|
|
13
|
-
client_metadata: {} | null;
|
|
14
|
-
client_read_only_metadata: {} | null;
|
|
15
8
|
id: string;
|
|
9
|
+
display_name: string | null;
|
|
10
|
+
primary_email: string | null;
|
|
11
|
+
profile_image_url: string | null;
|
|
12
|
+
signed_up_at_millis: number;
|
|
16
13
|
selected_team_id: string | null;
|
|
17
14
|
is_anonymous: boolean;
|
|
18
15
|
is_restricted: boolean;
|
|
16
|
+
restricted_reason: {
|
|
17
|
+
type: "anonymous" | "email_not_verified" | "restricted_by_administrator";
|
|
18
|
+
} | null;
|
|
19
19
|
requires_totp_mfa: boolean;
|
|
20
|
+
client_metadata: {} | null;
|
|
21
|
+
client_read_only_metadata: {} | null;
|
|
20
22
|
primary_email_verified: boolean;
|
|
21
|
-
profile_image_url: string | null;
|
|
22
|
-
signed_up_at_millis: number;
|
|
23
23
|
has_password: boolean;
|
|
24
24
|
otp_auth_enabled: boolean;
|
|
25
25
|
passkey_auth_enabled: boolean;
|
|
@@ -35,8 +35,8 @@ declare const currentUserCrud: ______crud0.CrudSchemaFromOptions<{
|
|
|
35
35
|
selected_team: {
|
|
36
36
|
client_metadata?: {} | null | undefined;
|
|
37
37
|
client_read_only_metadata?: {} | null | undefined;
|
|
38
|
-
display_name: string;
|
|
39
38
|
id: string;
|
|
39
|
+
display_name: string;
|
|
40
40
|
profile_image_url: string | null;
|
|
41
41
|
} | null;
|
|
42
42
|
}, yup$1.AnyObject, {
|
|
@@ -91,10 +91,10 @@ declare const currentUserCrud: ______crud0.CrudSchemaFromOptions<{
|
|
|
91
91
|
client_metadata?: {} | null | undefined;
|
|
92
92
|
client_read_only_metadata?: {} | null | undefined;
|
|
93
93
|
server_metadata?: {} | null | undefined;
|
|
94
|
-
display_name: string;
|
|
95
94
|
id: string;
|
|
96
|
-
profile_image_url: string | null;
|
|
97
95
|
created_at_millis: number;
|
|
96
|
+
display_name: string;
|
|
97
|
+
profile_image_url: string | null;
|
|
98
98
|
} | null;
|
|
99
99
|
selected_team_id: string | null;
|
|
100
100
|
profile_image_url: string | null;
|
|
@@ -173,11 +173,11 @@ declare const currentUserCrud: ______crud0.CrudSchemaFromOptions<{
|
|
|
173
173
|
requires_totp_mfa: undefined;
|
|
174
174
|
}, "">;
|
|
175
175
|
clientUpdateSchema: yup$1.ObjectSchema<{
|
|
176
|
-
primary_email: string | null | undefined;
|
|
177
176
|
display_name: string | null | undefined;
|
|
178
|
-
|
|
179
|
-
selected_team_id: string | null | undefined;
|
|
177
|
+
primary_email: string | null | undefined;
|
|
180
178
|
profile_image_url: string | null | undefined;
|
|
179
|
+
selected_team_id: string | null | undefined;
|
|
180
|
+
client_metadata: {} | null | undefined;
|
|
181
181
|
otp_auth_enabled: boolean | undefined;
|
|
182
182
|
passkey_auth_enabled: boolean | undefined;
|
|
183
183
|
totp_secret_base64: string | null | undefined;
|