@modern-admin/web 0.1.1 → 0.2.1
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/lib/index.js.map +1 -1
- package/dist/standalone/assets/ai-assistant-widget-D2wY2KOL.js +2 -0
- package/dist/standalone/assets/ai-assistant-widget-D2wY2KOL.js.br +0 -0
- package/dist/standalone/assets/ai-assistant-widget-D2wY2KOL.js.gz +0 -0
- package/dist/standalone/assets/ai-assistant-widget-D2wY2KOL.js.map +1 -0
- package/dist/standalone/assets/audit-log-page-BGeo-dZh.js +2 -0
- package/dist/standalone/assets/audit-log-page-BGeo-dZh.js.br +0 -0
- package/dist/standalone/assets/audit-log-page-BGeo-dZh.js.gz +0 -0
- package/dist/standalone/assets/audit-log-page-BGeo-dZh.js.map +1 -0
- package/dist/standalone/assets/badge-6nyM5Jft.js +2 -0
- package/dist/standalone/assets/badge-6nyM5Jft.js.map +1 -0
- package/dist/standalone/assets/bot-DFDgGfNj.js +2 -0
- package/dist/standalone/assets/bot-DFDgGfNj.js.map +1 -0
- package/dist/standalone/assets/card-4cS4uWCP.js +2 -0
- package/dist/standalone/assets/card-4cS4uWCP.js.br +0 -0
- package/dist/standalone/assets/card-4cS4uWCP.js.gz +0 -0
- package/dist/standalone/assets/card-4cS4uWCP.js.map +1 -0
- package/dist/standalone/assets/clock-OCmX6DtA.js +2 -0
- package/dist/standalone/assets/clock-OCmX6DtA.js.map +1 -0
- package/dist/standalone/assets/command-D6MN0l5a.js +2 -0
- package/dist/standalone/assets/command-D6MN0l5a.js.br +0 -0
- package/dist/standalone/assets/command-D6MN0l5a.js.gz +0 -0
- package/dist/standalone/assets/command-D6MN0l5a.js.map +1 -0
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js +2 -0
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js.br +0 -0
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js.gz +0 -0
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js.map +1 -0
- package/dist/standalone/assets/dist-ByGEq5Uu.js +2 -0
- package/dist/standalone/assets/dist-ByGEq5Uu.js.br +0 -0
- package/dist/standalone/assets/dist-ByGEq5Uu.js.gz +0 -0
- package/dist/standalone/assets/dist-ByGEq5Uu.js.map +1 -0
- package/dist/standalone/assets/dist-Dpg8xy_r.js +2 -0
- package/dist/standalone/assets/dist-Dpg8xy_r.js.br +0 -0
- package/dist/standalone/assets/dist-Dpg8xy_r.js.gz +0 -0
- package/dist/standalone/assets/dist-Dpg8xy_r.js.map +1 -0
- package/dist/standalone/assets/edit-page-CYRW56vh.js +2 -0
- package/dist/standalone/assets/edit-page-CYRW56vh.js.br +0 -0
- package/dist/standalone/assets/edit-page-CYRW56vh.js.gz +0 -0
- package/dist/standalone/assets/edit-page-CYRW56vh.js.map +1 -0
- package/dist/standalone/assets/empty-6O1hDBF_.js +2 -0
- package/dist/standalone/assets/empty-6O1hDBF_.js.br +0 -0
- package/dist/standalone/assets/empty-6O1hDBF_.js.gz +0 -0
- package/dist/standalone/assets/empty-6O1hDBF_.js.map +1 -0
- package/dist/standalone/assets/file-text-CcLZq8HA.js +2 -0
- package/dist/standalone/assets/file-text-CcLZq8HA.js.map +1 -0
- package/dist/standalone/assets/folder-symlink-7nZ69llY.js +2 -0
- package/dist/standalone/assets/folder-symlink-7nZ69llY.js.br +0 -0
- package/dist/standalone/assets/folder-symlink-7nZ69llY.js.gz +0 -0
- package/dist/standalone/assets/folder-symlink-7nZ69llY.js.map +1 -0
- package/dist/standalone/assets/global-search-dialog-CTNjBSqC.js +2 -0
- package/dist/standalone/assets/global-search-dialog-CTNjBSqC.js.br +0 -0
- package/dist/standalone/assets/global-search-dialog-CTNjBSqC.js.gz +0 -0
- package/dist/standalone/assets/global-search-dialog-CTNjBSqC.js.map +1 -0
- package/dist/standalone/assets/heavy-fields-D1eCRvg3.js +181 -0
- package/dist/standalone/assets/heavy-fields-D1eCRvg3.js.br +0 -0
- package/dist/standalone/assets/heavy-fields-D1eCRvg3.js.gz +0 -0
- package/dist/standalone/assets/heavy-fields-D1eCRvg3.js.map +1 -0
- package/dist/standalone/assets/home-page-DMm-R675.js +60 -0
- package/dist/standalone/assets/home-page-DMm-R675.js.br +0 -0
- package/dist/standalone/assets/home-page-DMm-R675.js.gz +0 -0
- package/dist/standalone/assets/home-page-DMm-R675.js.map +1 -0
- package/dist/standalone/assets/icon-registry-y57AnfBQ.js +2 -0
- package/dist/standalone/assets/icon-registry-y57AnfBQ.js.br +0 -0
- package/dist/standalone/assets/icon-registry-y57AnfBQ.js.gz +0 -0
- package/dist/standalone/assets/icon-registry-y57AnfBQ.js.map +1 -0
- package/dist/standalone/assets/index-7FvUVXwS.js +15 -0
- package/dist/standalone/assets/index-7FvUVXwS.js.br +0 -0
- package/dist/standalone/assets/index-7FvUVXwS.js.gz +0 -0
- package/dist/standalone/assets/index-7FvUVXwS.js.map +1 -0
- package/dist/standalone/assets/index-DzW3oJ8_.css +2 -0
- package/dist/standalone/assets/index-DzW3oJ8_.css.br +0 -0
- package/dist/standalone/assets/index-DzW3oJ8_.css.gz +0 -0
- package/dist/standalone/assets/info-Bg70Pm3J.js +2 -0
- package/dist/standalone/assets/info-Bg70Pm3J.js.map +1 -0
- package/dist/standalone/assets/json-editor-B6CA7o0q.js +2 -0
- package/dist/standalone/assets/json-editor-B6CA7o0q.js.br +0 -0
- package/dist/standalone/assets/json-editor-B6CA7o0q.js.gz +0 -0
- package/dist/standalone/assets/json-editor-B6CA7o0q.js.map +1 -0
- package/dist/standalone/assets/key-lbuX0yk_.js +2 -0
- package/dist/standalone/assets/key-lbuX0yk_.js.map +1 -0
- package/dist/standalone/assets/key-round-CQLp1Ua9.js +2 -0
- package/dist/standalone/assets/key-round-CQLp1Ua9.js.map +1 -0
- package/dist/standalone/assets/minimize-2-Bx2cH_WS.js +2 -0
- package/dist/standalone/assets/minimize-2-Bx2cH_WS.js.map +1 -0
- package/dist/standalone/assets/pencil-BO-k3yTG.js +2 -0
- package/dist/standalone/assets/pencil-BO-k3yTG.js.map +1 -0
- package/dist/standalone/assets/plus-Dk-FzitW.js +2 -0
- package/dist/standalone/assets/plus-Dk-FzitW.js.map +1 -0
- package/dist/standalone/assets/property-renderer-9Lp1FUJh.js +7 -0
- package/dist/standalone/assets/property-renderer-9Lp1FUJh.js.br +0 -0
- package/dist/standalone/assets/property-renderer-9Lp1FUJh.js.gz +0 -0
- package/dist/standalone/assets/property-renderer-9Lp1FUJh.js.map +1 -0
- package/dist/standalone/assets/reference-BJl0yFxb.js +2 -0
- package/dist/standalone/assets/reference-BJl0yFxb.js.br +0 -0
- package/dist/standalone/assets/reference-BJl0yFxb.js.gz +0 -0
- package/dist/standalone/assets/reference-BJl0yFxb.js.map +1 -0
- package/dist/standalone/assets/refresh-cw-DGaIDN-w.js +2 -0
- package/dist/standalone/assets/refresh-cw-DGaIDN-w.js.map +1 -0
- package/dist/standalone/assets/revisions-button-BMOia5su.js +2 -0
- package/dist/standalone/assets/revisions-button-BMOia5su.js.br +0 -0
- package/dist/standalone/assets/revisions-button-BMOia5su.js.gz +0 -0
- package/dist/standalone/assets/revisions-button-BMOia5su.js.map +1 -0
- package/dist/standalone/assets/richtext-render-DnVcQ34I.js +67 -0
- package/dist/standalone/assets/richtext-render-DnVcQ34I.js.br +0 -0
- package/dist/standalone/assets/richtext-render-DnVcQ34I.js.gz +0 -0
- package/dist/standalone/assets/richtext-render-DnVcQ34I.js.map +1 -0
- package/dist/standalone/assets/rotate-ccw-BLr0QLAg.js +2 -0
- package/dist/standalone/assets/rotate-ccw-BLr0QLAg.js.map +1 -0
- package/dist/standalone/assets/router-CdkN982X.js +186 -0
- package/dist/standalone/assets/router-CdkN982X.js.br +0 -0
- package/dist/standalone/assets/router-CdkN982X.js.gz +0 -0
- package/dist/standalone/assets/router-CdkN982X.js.map +1 -0
- package/dist/standalone/assets/save-Cd3oR3Sj.js +2 -0
- package/dist/standalone/assets/save-Cd3oR3Sj.js.map +1 -0
- package/dist/standalone/assets/select-CYOkMz1v.js +2 -0
- package/dist/standalone/assets/select-CYOkMz1v.js.br +0 -0
- package/dist/standalone/assets/select-CYOkMz1v.js.gz +0 -0
- package/dist/standalone/assets/select-CYOkMz1v.js.map +1 -0
- package/dist/standalone/assets/send-D4KHQGYj.js +2 -0
- package/dist/standalone/assets/send-D4KHQGYj.js.map +1 -0
- package/dist/standalone/assets/settings-page-D_QQH4SM.js +2 -0
- package/dist/standalone/assets/settings-page-D_QQH4SM.js.br +0 -0
- package/dist/standalone/assets/settings-page-D_QQH4SM.js.gz +0 -0
- package/dist/standalone/assets/settings-page-D_QQH4SM.js.map +1 -0
- package/dist/standalone/assets/show-page-B4UVcMHh.js +2 -0
- package/dist/standalone/assets/show-page-B4UVcMHh.js.br +0 -0
- package/dist/standalone/assets/show-page-B4UVcMHh.js.gz +0 -0
- package/dist/standalone/assets/show-page-B4UVcMHh.js.map +1 -0
- package/dist/standalone/assets/sparkles-CqF0zjrF.js +2 -0
- package/dist/standalone/assets/sparkles-CqF0zjrF.js.map +1 -0
- package/dist/standalone/assets/src-WCKJSOko.js +65 -0
- package/dist/standalone/assets/src-WCKJSOko.js.br +0 -0
- package/dist/standalone/assets/src-WCKJSOko.js.gz +0 -0
- package/dist/standalone/assets/src-WCKJSOko.js.map +1 -0
- package/dist/standalone/assets/tabs-jKq6LSSb.js +2 -0
- package/dist/standalone/assets/tabs-jKq6LSSb.js.br +0 -0
- package/dist/standalone/assets/tabs-jKq6LSSb.js.gz +0 -0
- package/dist/standalone/assets/tabs-jKq6LSSb.js.map +1 -0
- package/dist/standalone/assets/textarea-CX_0QVSz.js +2 -0
- package/dist/standalone/assets/textarea-CX_0QVSz.js.map +1 -0
- package/dist/standalone/assets/trash-2-DhyKQCKv.js +2 -0
- package/dist/standalone/assets/trash-2-DhyKQCKv.js.map +1 -0
- package/dist/standalone/assets/triangle-alert-V-AHRhC-.js +2 -0
- package/dist/standalone/assets/triangle-alert-V-AHRhC-.js.map +1 -0
- package/dist/standalone/assets/undo-2-DlSB-5DM.js +2 -0
- package/dist/standalone/assets/undo-2-DlSB-5DM.js.br +0 -0
- package/dist/standalone/assets/undo-2-DlSB-5DM.js.gz +0 -0
- package/dist/standalone/assets/undo-2-DlSB-5DM.js.map +1 -0
- package/dist/standalone/assets/use-dashboard-charts-BnzZ8FtR.js +2 -0
- package/dist/standalone/assets/use-dashboard-charts-BnzZ8FtR.js.br +0 -0
- package/dist/standalone/assets/use-dashboard-charts-BnzZ8FtR.js.gz +0 -0
- package/dist/standalone/assets/use-dashboard-charts-BnzZ8FtR.js.map +1 -0
- package/dist/standalone/assets/useQueries-CG9WO2ym.js +2 -0
- package/dist/standalone/assets/useQueries-CG9WO2ym.js.br +0 -0
- package/dist/standalone/assets/useQueries-CG9WO2ym.js.gz +0 -0
- package/dist/standalone/assets/useQueries-CG9WO2ym.js.map +1 -0
- package/dist/standalone/assets/useQueries-Chw94eNX.css +1 -0
- package/dist/standalone/assets/useQueries-Chw94eNX.css.br +0 -0
- package/dist/standalone/assets/useQueries-Chw94eNX.css.gz +0 -0
- package/dist/standalone/assets/user-directory-B84RcWhn.js +5 -0
- package/dist/standalone/assets/user-directory-B84RcWhn.js.br +0 -0
- package/dist/standalone/assets/user-directory-B84RcWhn.js.gz +0 -0
- package/dist/standalone/assets/user-directory-B84RcWhn.js.map +1 -0
- package/dist/standalone/assets/uuid-DLSnbsz2.js +2 -0
- package/dist/standalone/assets/uuid-DLSnbsz2.js.map +1 -0
- package/dist/standalone/assets/wand-sparkles-BDM69Lk9.js +2 -0
- package/dist/standalone/assets/wand-sparkles-BDM69Lk9.js.map +1 -0
- package/dist/standalone/assets/with-selector-NDLhu4dT.js +2 -0
- package/dist/standalone/assets/with-selector-NDLhu4dT.js.br +0 -0
- package/dist/standalone/assets/with-selector-NDLhu4dT.js.gz +0 -0
- package/dist/standalone/assets/with-selector-NDLhu4dT.js.map +1 -0
- package/dist/standalone/assets/wizard-create-page-BybrbRRx.js +2 -0
- package/dist/standalone/assets/wizard-create-page-BybrbRRx.js.br +0 -0
- package/dist/standalone/assets/wizard-create-page-BybrbRRx.js.gz +0 -0
- package/dist/standalone/assets/wizard-create-page-BybrbRRx.js.map +1 -0
- package/dist/standalone/assets/x-C3kLunD6.js +2 -0
- package/dist/standalone/assets/x-C3kLunD6.js.map +1 -0
- package/dist/standalone/assets/zap-DIzIW2MP.js +2 -0
- package/dist/standalone/assets/zap-DIzIW2MP.js.br +0 -0
- package/dist/standalone/assets/zap-DIzIW2MP.js.gz +0 -0
- package/dist/standalone/assets/zap-DIzIW2MP.js.map +1 -0
- package/dist/standalone/assets/zod-zGqwQYFX.js +2 -0
- package/dist/standalone/assets/zod-zGqwQYFX.js.br +0 -0
- package/dist/standalone/assets/zod-zGqwQYFX.js.gz +0 -0
- package/dist/standalone/assets/zod-zGqwQYFX.js.map +1 -0
- package/dist/standalone/index.html +11 -2
- package/dist/standalone/index.html.br +0 -0
- package/dist/standalone/index.html.gz +0 -0
- package/package.json +6 -6
- package/vite.config.ts +77 -2
- package/dist/standalone/assets/index-Bq7jl8a_.css +0 -1
- package/dist/standalone/assets/index-COc2pxJ6.js +0 -546
- package/dist/standalone/assets/index-COc2pxJ6.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-page-D_QQH4SM.js","names":[],"sources":["../../../../react/src/pages/settings-shared.tsx","../../../../react/src/pages/ai-assistant-settings-section.tsx","../../../../react/src/pages/settings-page.tsx"],"sourcesContent":["// Shared layout primitives for the Settings hub. Every section in\n// `settings-page.tsx` (API keys, webhooks, AI assistant, ...) should use\n// these so the look, spacing, and mobile behavior stays uniform.\n\nimport * as React from 'react'\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Empty,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n cn,\n} from '@modern-admin/ui'\n\ntype IconComponent = React.ComponentType<{ className?: string }>\n\ninterface SettingsCardProps {\n icon: IconComponent\n title: React.ReactNode\n description?: React.ReactNode\n action?: React.ReactNode\n /** Removes default padding/header so the card body can fill edge-to-edge. */\n bodyClassName?: string\n children: React.ReactNode\n}\n\n/**\n * Unified card wrapper for a settings section. Header collapses\n * vertically on mobile and lays the action button to the right on `sm+`.\n * `CardContent` gets `min-w-0` so tables/grids inside can shrink and\n * scroll horizontally instead of forcing the parent grid wider.\n */\nexport function SettingsCard({\n icon: Icon,\n title,\n description,\n action,\n bodyClassName,\n children,\n}: SettingsCardProps): React.ReactElement {\n return (\n <Card>\n <CardHeader\n className={cn(\n 'flex-col items-start gap-2',\n action && 'sm:flex-row sm:items-center sm:justify-between',\n )}\n >\n <div className=\"flex min-w-0 flex-col gap-1.5\">\n <CardTitle className=\"flex items-center gap-2\">\n <Icon className=\"size-5\" />\n {title}\n </CardTitle>\n {description ? <CardDescription>{description}</CardDescription> : null}\n </div>\n {action}\n </CardHeader>\n <CardContent className={cn('min-w-0', bodyClassName)}>{children}</CardContent>\n </Card>\n )\n}\n\n/**\n * Horizontal-scroll wrapper for tables inside `SettingsCard`. On mobile\n * the content extends to the card edges (`-mx-6`) so the user sees the\n * left edge of the table flush with the card; from `sm+` the negative\n * margin is removed.\n */\nexport function SettingsTableScroll({ children }: { children: React.ReactNode }): React.ReactElement {\n return <div className=\"-mx-6 overflow-x-auto sm:mx-0\">{children}</div>\n}\n\ninterface SettingsEmptyProps {\n icon: IconComponent\n title: React.ReactNode\n description?: React.ReactNode\n}\n\nexport function SettingsEmpty({ icon: Icon, title, description }: SettingsEmptyProps): React.ReactElement {\n return (\n <Empty className=\"border-0\">\n <EmptyHeader>\n <EmptyMedia>\n <Icon />\n </EmptyMedia>\n <EmptyTitle>{title}</EmptyTitle>\n {description ? <EmptyDescription>{description}</EmptyDescription> : null}\n </EmptyHeader>\n </Empty>\n )\n}\n\ninterface SettingsListStateProps {\n isLoading: boolean\n error: unknown\n isEmpty: boolean\n loadingLabel: React.ReactNode\n empty: SettingsEmptyProps\n children: React.ReactNode\n}\n\n/**\n * Renders one of: loading row, destructive error banner, empty state, or\n * the actual list `children`. Keeps every section's \"list with status\"\n * surface identical.\n */\nexport function SettingsListState({\n isLoading,\n error,\n isEmpty,\n loadingLabel,\n empty,\n children,\n}: SettingsListStateProps): React.ReactElement {\n if (isLoading) {\n return <div className=\"py-8 text-center text-sm text-muted-foreground\">{loadingLabel}</div>\n }\n if (error) {\n return (\n <div className=\"rounded-md border border-destructive/50 bg-destructive/10 p-4 text-sm text-destructive\">\n {error instanceof Error ? error.message : String(error)}\n </div>\n )\n }\n if (isEmpty) {\n return <SettingsEmpty {...empty} />\n }\n return <>{children}</>\n}\n","import * as React from 'react'\nimport { useMutation, useQuery } from '@tanstack/react-query'\nimport { Badge, Button, Input, Label, Switch, Textarea } from '@modern-admin/ui'\nimport { Bot, KeyRound, Save } from 'lucide-react'\nimport { useAdminClient } from '../provider.js'\nimport { useNotify } from '../notify.js'\nimport { useI18n } from '../i18n.js'\nimport type { AiAssistantSettings } from '../client.js'\nimport { SettingsCard } from './settings-shared.js'\n\nexport function AiAssistantSettingsSection(): React.ReactElement {\n const client = useAdminClient()\n const notify = useNotify()\n const { t } = useI18n()\n const settings = useQuery({\n queryKey: ['modern-admin', 'ai-assistant', 'settings'],\n queryFn: () => client.getAiAssistantSettings(),\n })\n const [form, setForm] = React.useState({\n enabled: true,\n model: 'google/gemini-3.1-flash-lite-preview',\n apiKey: '',\n systemPrompt: '',\n })\n\n React.useEffect(() => {\n if (!settings.data) return\n setForm({\n enabled: settings.data.enabled,\n model: settings.data.model,\n apiKey: '',\n systemPrompt: settings.data.systemPrompt,\n })\n }, [settings.data])\n\n const save = useMutation({\n mutationFn: async (): Promise<AiAssistantSettings> =>\n client.updateAiAssistantSettings({\n enabled: form.enabled,\n model: form.model,\n ...(form.apiKey.trim() ? { apiKey: form.apiKey.trim() } : {}),\n systemPrompt: form.systemPrompt,\n }),\n onSuccess: () => {\n settings.refetch()\n setForm((prev) => ({ ...prev, apiKey: '' }))\n notify.success({ message: t('aiAssistant:settings.saved') })\n },\n onError: (err) => {\n notify.error({ message: err instanceof Error ? err.message : String(err) })\n },\n })\n\n if (settings.isLoading) {\n return <div className=\"py-8 text-sm text-muted-foreground\">{t('common:loading')}</div>\n }\n\n if (settings.error) {\n return (\n <div className=\"rounded-md border border-destructive/50 bg-destructive/10 p-4 text-sm text-destructive\">\n {settings.error instanceof Error ? settings.error.message : String(settings.error)}\n </div>\n )\n }\n\n const data = settings.data\n if (!data) {\n return <div className=\"py-8 text-sm text-muted-foreground\">{t('aiAssistant:settings.empty')}</div>\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n <SettingsCard\n icon={Bot}\n title={t('aiAssistant:settings.title')}\n description={t('aiAssistant:settings.description')}\n bodyClassName=\"space-y-4\"\n >\n <div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant={data.enabled ? 'secondary' : 'outline'}>\n {data.enabled ? t('aiAssistant:settings.enabled') : t('aiAssistant:settings.disabled')}\n </Badge>\n <Badge variant={data.configured ? 'secondary' : 'outline'}>\n {data.configured ? t('aiAssistant:settings.configured') : t('aiAssistant:settings.apiKeyRequired')}\n </Badge>\n <Badge variant=\"outline\">{t('aiAssistant:settings.readOnly')}</Badge>\n <Badge variant=\"outline\">{t('aiAssistant:settings.provider', { provider: data.provider })}</Badge>\n </div>\n\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"flex items-center justify-between rounded-lg border border-border p-3\">\n <div className=\"space-y-1\">\n <Label htmlFor=\"ai-assistant-enabled\">{t('aiAssistant:settings.enableLabel')}</Label>\n <p className=\"text-xs text-muted-foreground\">\n {t('aiAssistant:settings.enableHint')}\n </p>\n </div>\n <Switch\n id=\"ai-assistant-enabled\"\n checked={form.enabled}\n disabled={!data.canManage || save.isPending}\n onCheckedChange={(enabled) => setForm((prev) => ({ ...prev, enabled }))}\n />\n </div>\n\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"ai-assistant-model\">{t('aiAssistant:settings.modelLabel')}</Label>\n <Input\n id=\"ai-assistant-model\"\n value={form.model}\n disabled={!data.canManage || save.isPending}\n onChange={(e) => setForm((prev) => ({ ...prev, model: e.target.value }))}\n placeholder=\"google/gemini-3.1-flash-lite-preview\"\n />\n </div>\n </div>\n\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"ai-assistant-api-key\" className=\"flex items-center gap-2\">\n <KeyRound className=\"size-4\"/>\n {t('aiAssistant:settings.apiKeyLabel')}\n </Label>\n <Input\n id=\"ai-assistant-api-key\"\n type=\"password\"\n value={form.apiKey}\n disabled={!data.canManage || save.isPending}\n onChange={(e) => setForm((prev) => ({ ...prev, apiKey: e.target.value }))}\n placeholder={data.maskedApiKey ?? 'sk-or-v1-...'}\n />\n <p className=\"text-xs text-muted-foreground\">\n {t('aiAssistant:settings.apiKeyHint')}\n </p>\n </div>\n\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"ai-assistant-system-prompt\">{t('aiAssistant:settings.systemPromptLabel')}</Label>\n <Textarea\n id=\"ai-assistant-system-prompt\"\n value={form.systemPrompt}\n disabled={!data.canManage || save.isPending}\n onChange={(e) => setForm((prev) => ({ ...prev, systemPrompt: e.target.value }))}\n rows={8}\n placeholder={t('aiAssistant:settings.systemPromptPlaceholder')}\n />\n </div>\n\n <div className=\"flex items-center justify-between gap-3 rounded-lg border border-border p-3 text-sm\">\n <div>\n <div className=\"font-medium\">{t('aiAssistant:settings.accessTitle')}</div>\n <div className=\"text-muted-foreground\">\n {t('aiAssistant:settings.accessDescription')}\n </div>\n </div>\n <Badge variant=\"outline\">{t('aiAssistant:settings.futureToolsReady')}</Badge>\n </div>\n\n <div className=\"flex justify-end\">\n <Button onClick={() => save.mutate()} disabled={!data.canManage || save.isPending || !form.model.trim()}>\n <Save className=\"size-4\"/>\n {save.isPending ? t('aiAssistant:settings.saving') : t('aiAssistant:settings.save')}\n </Button>\n </div>\n </SettingsCard>\n </div>\n )\n}\n","// Admin Settings hub. Reachable from the user/profile dropdown menu and\n// rendered by the router for `/settings/<section>`. Currently three\n// sections: `api-keys`, `webhooks`, `ai-assistant`; the layout is built so\n// adding more sections is just a new entry in `SECTIONS` + a switch case.\n\nimport * as React from 'react'\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\nimport {\n Badge,\n Button,\n Checkbox,\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n InfoTooltip,\n Input,\n JsonEditor,\n Label,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Switch,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n cn,\n} from '@modern-admin/ui'\nimport {\n AlertTriangle,\n Bot,\n Check,\n Copy,\n Edit,\n Eye,\n EyeOff,\n KeyRound,\n Plus,\n Settings as SettingsIcon,\n Trash2,\n X,\n} from 'lucide-react'\nimport { useAdminClient } from '../provider.js'\nimport { useFeatures, useResources } from '../hooks.js'\nimport { useI18n } from '../i18n.js'\nimport { Link, useNavigate } from '../router.js'\nimport { useNotify } from '../notify.js'\nimport { useDialogs } from '../dialogs.js'\nimport type { ApiKeyRecord, WebhookInput, WebhookRecord } from '../client.js'\nimport type { ResourceJSON } from '../types.js'\nimport { getSettingsSectionExtensions } from '../extension-registry.js'\nimport { AiAssistantSettingsSection } from './ai-assistant-settings-section.js'\nimport { SettingsCard, SettingsListState, SettingsTableScroll } from './settings-shared.js'\n\nconst KEY_LIST = ['modern-admin', 'api-keys'] as const\nconst KEY_WEBHOOKS = ['modern-admin', 'webhooks'] as const\n\ntype BuiltInSectionKey = 'api-keys' | 'ai-assistant' | 'webhooks'\n\ninterface SectionDef {\n key: string\n labelKey: string\n icon: React.ComponentType<{ className?: string }>\n /** When `true`, the section is supplied by an extension (no built-in renderer). */\n isExtension?: boolean\n}\n\nconst BUILT_IN_SECTIONS: SectionDef[] = [\n { key: 'api-keys', labelKey: 'settings:apiKeys.title', icon: KeyRound },\n { key: 'webhooks', labelKey: 'settings:webhooks.title', icon: SettingsIcon },\n { key: 'ai-assistant', labelKey: 'aiAssistant:title', icon: Bot },\n]\n\nexport function SettingsPage({ section }: { section?: string }): React.ReactElement {\n const { t } = useI18n()\n const navigate = useNavigate()\n const features = useFeatures()\n // Only surface built-in sections whose backend subsystem is wired.\n // Extension sections are always shown when registered.\n const SECTIONS = React.useMemo<SectionDef[]>(\n () => [\n ...BUILT_IN_SECTIONS.filter((s) =>\n s.key === 'api-keys' ? features.apiKeys\n : s.key === 'webhooks' ? features.webhooks\n : s.key === 'ai-assistant' ? features.aiAssistant\n : true,\n ),\n ...getSettingsSectionExtensions().map((ext) => ({\n key: ext.key,\n labelKey: ext.labelKey,\n icon: ext.icon,\n isExtension: true as const,\n })),\n ],\n\n [features.apiKeys, features.webhooks, features.aiAssistant],\n )\n // Resolve the requested section. If the URL is bogus or the section is\n // disabled, fall back to the first enabled section.\n const builtInKeys: BuiltInSectionKey[] = ['api-keys', 'webhooks', 'ai-assistant']\n const isBuiltIn = (k: string): k is BuiltInSectionKey =>\n (builtInKeys as string[]).includes(k)\n const requested: string | null = section ?? null\n const active: string | null =\n requested && SECTIONS.some((s) => s.key === requested)\n ? requested\n : (SECTIONS[0]?.key ?? null)\n if (active === null) {\n // Defensive: the user menu hides Settings entirely when no section is\n // available, so users normally won't land here. Direct navigation to\n // /settings without any configured section ends up showing this.\n return (\n <div className=\"rounded-md border border-dashed bg-card p-8 text-center text-sm text-muted-foreground\">\n {t('settings:noSectionsConfigured')}\n </div>\n )\n }\n return (\n // `minmax(0,1fr)` (not bare `1fr`) lets the content column shrink below\n // its intrinsic min-width — otherwise wide tables push the whole grid\n // past the viewport at ~`lg` widths (~1000–1100px).\n <div className=\"flex flex-col gap-4 lg:grid lg:grid-cols-[14rem_minmax(0,1fr)]\">\n {/* Mobile: dropdown selector (handles many sections gracefully) */}\n <div className=\"lg:hidden\">\n <Select value={active ?? ''} onValueChange={(v) => navigate({ name: 'settings', section: v })}>\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {SECTIONS.map(({ key, labelKey, icon: Icon }) => (\n <SelectItem key={key} value={key}>\n <span className=\"flex items-center gap-2\">\n <Icon className=\"size-4\" />\n <span>{t(labelKey)}</span>\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n {/* Desktop: sidebar nav */}\n <aside className=\"hidden lg:block\">\n <nav className=\"flex flex-col gap-1\">\n {SECTIONS.map(({ key, labelKey, icon: Icon }) => (\n <Link\n key={key}\n to={{ name: 'settings', section: key }}\n className={cn(\n 'flex items-center gap-2 rounded-md px-3 py-2 text-sm hover:bg-accent',\n active === key && 'bg-accent font-medium',\n )}\n >\n <Icon className=\"size-4\" />\n <span>{t(labelKey)}</span>\n </Link>\n ))}\n </nav>\n </aside>\n <section className=\"min-w-0\">\n {active && isBuiltIn(active) && active === 'api-keys' && <ApiKeysSection />}\n {active && isBuiltIn(active) && active === 'webhooks' && <WebhooksSection />}\n {active && isBuiltIn(active) && active === 'ai-assistant' && <AiAssistantSettingsSection />}\n {active && !isBuiltIn(active) && (() => {\n const extSection = getSettingsSectionExtensions().find((e) => e.key === active)\n return extSection ? <extSection.component /> : null\n })()}\n </section>\n </div>\n )\n}\n\n// ─── API Keys section ─────────────────────────────────────────────────────────\n\nfunction ApiKeysSection(): React.ReactElement {\n const { t } = useI18n()\n const client = useAdminClient()\n const qc = useQueryClient()\n const notify = useNotify()\n const dialogs = useDialogs()\n const resources = useResources()\n const [editorOpen, setEditorOpen] = React.useState(false)\n const [editing, setEditing] = React.useState<ApiKeyRecord | null>(null)\n const [createdSecret, setCreatedSecret] = React.useState<{ key: string; record: ApiKeyRecord } | null>(null)\n\n const list = useQuery({\n queryKey: KEY_LIST,\n queryFn: () => client.listApiKeys(),\n })\n\n const deleteMut = useMutation({\n mutationFn: (id: string) => client.deleteApiKey(id),\n onSuccess: () => {\n qc.invalidateQueries({ queryKey: KEY_LIST })\n notify.success({ key: 'settings:apiKeys.notice.revoked' })\n },\n onError: (err) => notify.error({ message: err instanceof Error ? err.message : String(err) }),\n })\n\n const toggleEnabledMut = useMutation({\n mutationFn: (vars: { id: string; enabled: boolean }) =>\n client.updateApiKey(vars.id, { enabled: vars.enabled }),\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY_LIST }),\n onError: (err) => notify.error({ message: err instanceof Error ? err.message : String(err) }),\n })\n\n const onCreate = (): void => {\n setEditing(null)\n setEditorOpen(true)\n }\n\n const onEdit = (key: ApiKeyRecord): void => {\n setEditing(key)\n setEditorOpen(true)\n }\n\n const onRevoke = async (key: ApiKeyRecord): Promise<void> => {\n const ok = await dialogs.confirm({\n title: t('settings:apiKeys.confirmRevoke.title'),\n description: t('settings:apiKeys.confirmRevoke.description', { name: key.name ?? key.id }),\n confirmLabel: t('settings:apiKeys.actions.revoke'),\n destructive: true,\n })\n if (ok) deleteMut.mutate(key.id)\n }\n\n const keys = list.data?.keys ?? []\n\n return (\n <div className=\"flex flex-col gap-4\">\n <SettingsCard\n icon={KeyRound}\n title={t('settings:apiKeys.title')}\n description={t('settings:apiKeys.description')}\n action={\n <Button onClick={onCreate} size=\"sm\">\n <Plus className=\"size-4\" />\n <span>{t('settings:apiKeys.actions.create')}</span>\n </Button>\n }\n >\n <SettingsListState\n isLoading={list.isLoading}\n error={list.error}\n isEmpty={keys.length === 0}\n loadingLabel={t('common:loading')}\n empty={{\n icon: KeyRound,\n title: t('settings:apiKeys.empty.title'),\n description: t('settings:apiKeys.empty.description'),\n }}\n >\n <SettingsTableScroll>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>{t('settings:apiKeys.columns.name')}</TableHead>\n <TableHead className=\"hidden sm:table-cell\">{t('settings:apiKeys.columns.start')}</TableHead>\n <TableHead className=\"hidden md:table-cell\">{t('settings:apiKeys.columns.permissions')}</TableHead>\n <TableHead className=\"hidden md:table-cell\">{t('settings:apiKeys.columns.expiresAt')}</TableHead>\n <TableHead>{t('settings:apiKeys.columns.enabled')}</TableHead>\n <TableHead className=\"text-right\">{t('settings:apiKeys.columns.actions')}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {keys.map((k) => (\n <TableRow key={k.id}>\n <TableCell className=\"font-medium\">\n <div className=\"flex flex-col\">\n <span>{k.name ?? k.id}</span>\n {k.lastRequest && (\n <span className=\"text-xs text-muted-foreground\">\n {t('settings:apiKeys.lastUsed', { date: formatDate(k.lastRequest) })}\n </span>\n )}\n </div>\n </TableCell>\n <TableCell className=\"hidden font-mono text-xs sm:table-cell\">\n {k.start ? `${k.start}…` : '—'}\n </TableCell>\n <TableCell className=\"hidden md:table-cell\">\n <PermissionsSummary permissions={k.permissions} />\n </TableCell>\n <TableCell className=\"hidden md:table-cell text-xs\">\n {k.expiresAt ? formatDate(k.expiresAt) : t('settings:apiKeys.expiresNever')}\n </TableCell>\n <TableCell>\n <Switch\n checked={k.enabled}\n onCheckedChange={(enabled) => toggleEnabledMut.mutate({ id: k.id, enabled })}\n aria-label={t('settings:apiKeys.columns.enabled')}\n />\n </TableCell>\n <TableCell className=\"text-right\">\n <div className=\"inline-flex gap-1\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => onEdit(k)} aria-label={t('settings:apiKeys.actions.edit')}>\n <Edit className=\"size-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onRevoke(k)}\n aria-label={t('settings:apiKeys.actions.revoke')}\n disabled={deleteMut.isPending}\n >\n <Trash2 className=\"size-4 text-destructive\" />\n </Button>\n </div>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </SettingsTableScroll>\n </SettingsListState>\n </SettingsCard>\n\n <ApiKeyEditorDialog\n key={editing?.id ?? 'new'}\n open={editorOpen}\n onOpenChange={setEditorOpen}\n editing={editing}\n resources={resources}\n onCreated={(result) => {\n setEditorOpen(false)\n setCreatedSecret(result)\n qc.invalidateQueries({ queryKey: KEY_LIST })\n }}\n onUpdated={() => {\n setEditorOpen(false)\n qc.invalidateQueries({ queryKey: KEY_LIST })\n }}\n />\n\n <CreatedSecretDialog\n secret={createdSecret}\n onClose={() => setCreatedSecret(null)}\n />\n </div>\n )\n}\n\n// ─── Permissions matrix editor ────────────────────────────────────────────────\n\ninterface PermissionsState {\n /** resourceId -> Set<actionName>. `'*'` means all actions of that resource. */\n byResource: Record<string, Set<string>>\n}\n\nconst buildState = (perms: Record<string, string[]>): PermissionsState => ({\n byResource: Object.fromEntries(\n Object.entries(perms).map(([k, v]) => [k, new Set(v)]),\n ),\n})\n\nconst stateToWire = (state: PermissionsState): Record<string, string[]> => {\n const out: Record<string, string[]> = {}\n for (const [k, set] of Object.entries(state.byResource)) {\n if (set.size === 0) continue\n out[k] = Array.from(set)\n }\n return out\n}\n\nfunction PermissionsMatrix({\n resources,\n state,\n onChange,\n}: {\n resources: ResourceJSON[]\n state: PermissionsState\n onChange: (next: PermissionsState) => void\n}): React.ReactElement {\n const { t } = useI18n()\n\n const toggle = (resourceId: string, action: string): void => {\n const set = new Set(state.byResource[resourceId] ?? [])\n if (set.has(action)) set.delete(action)\n else set.add(action)\n onChange({ byResource: { ...state.byResource, [resourceId]: set } })\n }\n\n const toggleAll = (resourceId: string, actions: string[]): void => {\n const current = state.byResource[resourceId] ?? new Set<string>()\n const allSelected = actions.every((a) => current.has(a))\n const next = new Set<string>(allSelected ? [] : actions)\n onChange({ byResource: { ...state.byResource, [resourceId]: next } })\n }\n\n const resourcesWithActions = React.useMemo(\n () => resources.filter((r) => (r.actions ?? []).length > 0),\n [resources],\n )\n\n const allGloballySelected =\n resourcesWithActions.length > 0 &&\n resourcesWithActions.every((r) => {\n const actions = (r.actions ?? []).map((a) => a.name)\n const current = state.byResource[r.id] ?? new Set<string>()\n return actions.every((a) => current.has(a))\n })\n\n const toggleAllResources = (): void => {\n const select = !allGloballySelected\n const next: Record<string, Set<string>> = { ...state.byResource }\n for (const r of resources) {\n const actions = (r.actions ?? []).map((a) => a.name)\n next[r.id] = select ? new Set(actions) : new Set<string>()\n }\n onChange({ byResource: next })\n }\n\n if (resources.length === 0) {\n return (\n <p className=\"text-sm text-muted-foreground\">{t('settings:apiKeys.permissions.noResources')}</p>\n )\n }\n\n return (\n <div className=\"rounded-md border border-border\">\n {resourcesWithActions.length > 0 && (\n <div className=\"flex flex-wrap items-center justify-end gap-2 border-b border-border bg-muted/30 px-3 py-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8\"\n onClick={toggleAllResources}\n >\n {allGloballySelected ? (\n <>\n <X className=\"mr-1.5 size-3.5\" />\n {t('settings:apiKeys.permissions.clearAllResources')}\n </>\n ) : (\n <>\n <Check className=\"mr-1.5 size-3.5\" />\n {t('settings:apiKeys.permissions.selectAllResources')}\n </>\n )}\n </Button>\n </div>\n )}\n <div className=\"max-h-[24rem] overflow-y-auto\">\n <Table>\n <TableHeader className=\"sticky top-0 bg-card\">\n <TableRow>\n <TableHead className=\"w-[14rem]\">{t('settings:apiKeys.permissions.resource')}</TableHead>\n <TableHead>{t('settings:apiKeys.permissions.actions')}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {resources.map((r) => {\n const actions = (r.actions ?? []).map((a) => a.name)\n const current = state.byResource[r.id] ?? new Set<string>()\n const allSelected = actions.length > 0 && actions.every((a) => current.has(a))\n return (\n <TableRow key={r.id}>\n <TableCell className=\"align-top\">\n <div className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">{r.name}</span>\n <span className=\"text-xs text-muted-foreground\">{r.id}</span>\n <button\n type=\"button\"\n className=\"mt-1 inline-flex items-center gap-1 self-start text-xs text-primary hover:underline\"\n onClick={() => toggleAll(r.id, actions)}\n >\n {allSelected ? <X className=\"size-3\" /> : <Check className=\"size-3\" />}\n {allSelected\n ? t('settings:apiKeys.permissions.clearAll')\n : t('settings:apiKeys.permissions.selectAll')}\n </button>\n </div>\n </TableCell>\n <TableCell>\n <div className=\"flex flex-wrap gap-2\">\n {actions.map((a) => {\n const checked = current.has(a)\n return (\n <label\n key={a}\n className={cn(\n 'inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-border px-2 py-1 text-xs',\n checked && 'border-primary bg-primary/10 text-primary',\n )}\n >\n <Checkbox\n checked={checked}\n onCheckedChange={() => toggle(r.id, a)}\n className=\"size-3.5\"\n />\n <span>{a}</span>\n </label>\n )\n })}\n </div>\n </TableCell>\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n </div>\n </div>\n )\n}\n\nfunction PermissionsSummary({ permissions }: { permissions: Record<string, string[]> }): React.ReactElement {\n const { t } = useI18n()\n const entries = Object.entries(permissions)\n if (entries.length === 0) {\n return <Badge variant=\"outline\">{t('settings:apiKeys.permissions.none')}</Badge>\n }\n const totalActions = entries.reduce((sum, [, a]) => sum + a.length, 0)\n return (\n <Badge variant=\"secondary\">\n {t('settings:apiKeys.permissions.summary', { resources: entries.length, actions: totalActions })}\n </Badge>\n )\n}\n\n// ─── Editor dialog ────────────────────────────────────────────────────────────\n\nfunction ApiKeyEditorDialog({\n open,\n onOpenChange,\n editing,\n resources,\n onCreated,\n onUpdated,\n}: {\n open: boolean\n onOpenChange: (open: boolean) => void\n editing: ApiKeyRecord | null\n resources: ResourceJSON[]\n onCreated: (result: { key: string; record: ApiKeyRecord }) => void\n onUpdated: (record: ApiKeyRecord) => void\n}): React.ReactElement {\n const { t } = useI18n()\n const client = useAdminClient()\n const notify = useNotify()\n const isEdit = !!editing\n const [name, setName] = React.useState(editing?.name ?? '')\n const [expiresInDays, setExpiresInDays] = React.useState<string>(() => {\n if (!editing?.expiresAt) return ''\n const ms = new Date(editing.expiresAt).getTime() - Date.now()\n return ms > 0 ? String(Math.max(1, Math.round(ms / (24 * 60 * 60 * 1000)))) : ''\n })\n const [permissions, setPermissions] = React.useState<PermissionsState>(() =>\n buildState(editing?.permissions ?? {}),\n )\n\n const save = useMutation({\n mutationFn: async (): Promise<{ key?: string; record: ApiKeyRecord }> => {\n const wire = stateToWire(permissions)\n if (isEdit && editing) {\n const expiry = expiresInDays.trim() === '' ? null : Number(expiresInDays)\n const res = await client.updateApiKey(editing.id, {\n name: name.trim(),\n permissions: wire,\n expiresInDays: expiry === null ? null : Number.isFinite(expiry) && expiry > 0 ? expiry : undefined,\n })\n return { record: res.record }\n }\n const expiry = expiresInDays.trim() === '' ? null : Number(expiresInDays)\n return client.createApiKey({\n name: name.trim(),\n permissions: wire,\n expiresInDays: expiry === null ? null : Number.isFinite(expiry) && expiry > 0 ? expiry : undefined,\n }) as Promise<{ key: string; record: ApiKeyRecord }>\n },\n onSuccess: (result) => {\n if (isEdit) {\n notify.success({ key: 'settings:apiKeys.notice.updated' })\n onUpdated(result.record)\n } else {\n if (result.key) onCreated({ key: result.key, record: result.record })\n }\n },\n onError: (err) => notify.error({ message: err instanceof Error ? err.message : String(err) }),\n })\n\n // Sync state when dialog re-opens against a different record.\n React.useEffect(() => {\n if (!open) return\n setName(editing?.name ?? '')\n setPermissions(buildState(editing?.permissions ?? {}))\n if (!editing?.expiresAt) setExpiresInDays('')\n else {\n const ms = new Date(editing.expiresAt).getTime() - Date.now()\n setExpiresInDays(ms > 0 ? String(Math.max(1, Math.round(ms / (24 * 60 * 60 * 1000)))) : '')\n }\n }, [open, editing])\n\n const totalSelected = Object.values(permissions.byResource).reduce(\n (sum, set) => sum + (set?.size ?? 0),\n 0,\n )\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-3xl\">\n <DialogHeader>\n <DialogTitle>\n {isEdit ? t('settings:apiKeys.editor.titleEdit') : t('settings:apiKeys.editor.titleCreate')}\n </DialogTitle>\n <DialogDescription>{t('settings:apiKeys.editor.description')}</DialogDescription>\n </DialogHeader>\n <form\n className=\"flex flex-col gap-4\"\n onSubmit={(e) => {\n e.preventDefault()\n if (!name.trim()) return\n save.mutate()\n }}\n >\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor=\"api-key-name\">{t('settings:apiKeys.editor.name')}</Label>\n <Input\n id=\"api-key-name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder={t('settings:apiKeys.editor.namePlaceholder')}\n required\n maxLength={64}\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor=\"api-key-expires\">{t('settings:apiKeys.editor.expiresInDays')}</Label>\n <Input\n id=\"api-key-expires\"\n type=\"number\"\n min={1}\n max={3650}\n value={expiresInDays}\n onChange={(e) => setExpiresInDays(e.target.value)}\n placeholder={t('settings:apiKeys.editor.expiresPlaceholder')}\n />\n <span className=\"text-xs text-muted-foreground\">\n {t('settings:apiKeys.editor.expiresHint')}\n </span>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between\">\n <Label>{t('settings:apiKeys.editor.permissions')}</Label>\n <span className=\"text-xs text-muted-foreground\">\n {t('settings:apiKeys.editor.selectedActions', { count: totalSelected })}\n </span>\n </div>\n <PermissionsMatrix resources={resources} state={permissions} onChange={setPermissions} />\n </div>\n <DialogFooter>\n <Button type=\"button\" variant=\"outline\" onClick={() => onOpenChange(false)}>\n {t('common:cancel')}\n </Button>\n <Button type=\"submit\" disabled={save.isPending || !name.trim() || totalSelected === 0}>\n {save.isPending ? t('common:saving') : isEdit ? t('common:save') : t('settings:apiKeys.actions.create')}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n )\n}\n\n// ─── Webhooks section ─────────────────────────────────────────────────────────\n\nconst WEBHOOK_EVENTS = ['record.created', 'record.updated', 'record.deleted', '*']\n\nfunction WebhooksSection(): React.ReactElement {\n const { t } = useI18n()\n const client = useAdminClient()\n const qc = useQueryClient()\n const notify = useNotify()\n const dialogs = useDialogs()\n const resources = useResources()\n const [editorOpen, setEditorOpen] = React.useState(false)\n const [editing, setEditing] = React.useState<WebhookRecord | null>(null)\n const [selectedId, setSelectedId] = React.useState<string | null>(null)\n\n const list = useQuery({\n queryKey: KEY_WEBHOOKS,\n queryFn: () => client.listWebhooks(),\n })\n const deliveries = useQuery({\n queryKey: ['modern-admin', 'webhooks', selectedId, 'deliveries'],\n queryFn: () => client.listWebhookDeliveries(selectedId!),\n enabled: !!selectedId,\n })\n const deleteMut = useMutation({\n mutationFn: (id: string) => client.deleteWebhook(id),\n onSuccess: () => {\n qc.invalidateQueries({ queryKey: KEY_WEBHOOKS })\n notify.success({ key: 'settings:webhooks.notice.deleted' })\n },\n onError: (err) => notify.error({ message: err instanceof Error ? err.message : String(err) }),\n })\n const testMut = useMutation({\n mutationFn: (id: string) => client.testWebhook(id),\n onSuccess: () => {\n if (selectedId) qc.invalidateQueries({ queryKey: ['modern-admin', 'webhooks', selectedId, 'deliveries'] })\n notify.success({ key: 'settings:webhooks.notice.testQueued' })\n },\n onError: (err) => notify.error({ message: err instanceof Error ? err.message : String(err) }),\n })\n\n const webhooks = list.data?.webhooks ?? []\n\n const onDelete = async (webhook: WebhookRecord): Promise<void> => {\n const ok = await dialogs.confirm({\n title: t('settings:webhooks.confirmDelete.title'),\n description: t('settings:webhooks.confirmDelete.description', { name: webhook.name }),\n confirmLabel: t('common:delete'),\n destructive: true,\n })\n if (ok) deleteMut.mutate(webhook.id)\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n <SettingsCard\n icon={SettingsIcon}\n title={t('settings:webhooks.title')}\n description={t('settings:webhooks.description')}\n action={\n <Button size=\"sm\" onClick={() => { setEditing(null); setEditorOpen(true) }}>\n <Plus className=\"size-4\" />\n {t('settings:webhooks.actions.create')}\n </Button>\n }\n >\n <SettingsListState\n isLoading={list.isLoading}\n error={list.error}\n isEmpty={webhooks.length === 0}\n loadingLabel={t('common:loading')}\n empty={{\n icon: SettingsIcon,\n title: t('settings:webhooks.empty.title'),\n description: t('settings:webhooks.empty.description'),\n }}\n >\n <SettingsTableScroll>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>{t('settings:webhooks.columns.name')}</TableHead>\n <TableHead>{t('settings:webhooks.columns.resource')}</TableHead>\n <TableHead>{t('settings:webhooks.columns.events')}</TableHead>\n <TableHead>{t('settings:webhooks.columns.enabled')}</TableHead>\n <TableHead className=\"text-right\">{t('settings:webhooks.columns.actions')}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {webhooks.map((webhook) => (\n <TableRow key={webhook.id}>\n <TableCell>\n <button\n type=\"button\"\n className=\"text-left font-medium hover:underline\"\n onClick={() => setSelectedId(webhook.id)}\n >\n {webhook.name}\n </button>\n <div className=\"max-w-xs truncate text-xs text-muted-foreground\">{webhook.url}</div>\n </TableCell>\n <TableCell>{resourceName(resources, webhook.resourceId, t('settings:webhooks.editor.allResources'))}</TableCell>\n <TableCell className=\"max-w-xs\">\n <div className=\"flex flex-wrap gap-1\">\n {webhook.events.map((event) => <Badge key={event} variant=\"outline\">{event}</Badge>)}\n </div>\n </TableCell>\n <TableCell>{webhook.enabled ? t('common:yes') : t('common:no')}</TableCell>\n <TableCell className=\"text-right\">\n <div className=\"inline-flex gap-1\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => testMut.mutate(webhook.id)}>\n {t('settings:webhooks.actions.test')}\n </Button>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => { setEditing(webhook); setEditorOpen(true) }}>\n <Edit className=\"size-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => void onDelete(webhook)}>\n <Trash2 className=\"size-4 text-destructive\" />\n </Button>\n </div>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </SettingsTableScroll>\n </SettingsListState>\n </SettingsCard>\n\n {selectedId && (\n <SettingsCard icon={SettingsIcon} title={t('settings:webhooks.deliveries.title')}>\n {deliveries.isLoading ? (\n <div className=\"py-4 text-sm text-muted-foreground\">{t('common:loading')}</div>\n ) : (\n <SettingsTableScroll>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>{t('settings:webhooks.deliveries.status')}</TableHead>\n <TableHead>{t('settings:webhooks.deliveries.event')}</TableHead>\n <TableHead>{t('settings:webhooks.deliveries.attempt')}</TableHead>\n <TableHead>{t('settings:webhooks.deliveries.response')}</TableHead>\n <TableHead>{t('settings:webhooks.deliveries.createdAt')}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {(deliveries.data?.deliveries ?? []).map((delivery) => (\n <TableRow key={delivery.id}>\n <TableCell>{delivery.status}</TableCell>\n <TableCell>{delivery.event}</TableCell>\n <TableCell>{delivery.attempt}</TableCell>\n <TableCell className=\"max-w-sm truncate\">\n {delivery.responseStatus ?? delivery.error ?? delivery.responseBody ?? '—'}\n </TableCell>\n <TableCell>{formatDate(delivery.createdAt)}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </SettingsTableScroll>\n )}\n </SettingsCard>\n )}\n\n <WebhookEditorDialog\n key={editing?.id ?? 'new'}\n open={editorOpen}\n onOpenChange={setEditorOpen}\n webhook={editing}\n resources={resources}\n />\n </div>\n )\n}\n\nfunction WebhookEditorDialog({\n open,\n onOpenChange,\n webhook,\n resources,\n}: {\n open: boolean\n onOpenChange(open: boolean): void\n webhook: WebhookRecord | null\n resources: ResourceJSON[]\n}): React.ReactElement {\n const { t } = useI18n()\n const client = useAdminClient()\n const qc = useQueryClient()\n const notify = useNotify()\n const [name, setName] = React.useState(webhook?.name ?? '')\n const [url, setUrl] = React.useState(webhook?.url ?? '')\n const [resourceId, setResourceId] = React.useState(webhook?.resourceId ?? '')\n const [enabled, setEnabled] = React.useState(webhook?.enabled ?? true)\n const [secret, setSecret] = React.useState(webhook?.secret ?? '')\n const [events, setEvents] = React.useState<string[]>(webhook?.events ?? ['record.created', 'record.updated'])\n const [headers, setHeaders] = React.useState<Record<string, unknown>>(webhook?.headers ?? {})\n const [filters, setFilters] = React.useState<Record<string, unknown>>(webhook?.filters ?? {})\n const [payloadFields, setPayloadFields] = React.useState<string[]>(webhook?.payloadFields ?? [])\n const selectedResource = resources.find((r) => r.id === resourceId)\n\n const save = useMutation({\n mutationFn: (payload: WebhookInput) =>\n webhook ? client.updateWebhook(webhook.id, payload) : client.createWebhook(payload),\n onSuccess: () => {\n qc.invalidateQueries({ queryKey: KEY_WEBHOOKS })\n notify.success({ key: 'settings:webhooks.notice.saved' })\n onOpenChange(false)\n },\n onError: (err) => notify.error({ message: err instanceof Error ? err.message : String(err) }),\n })\n\n const toggleEvent = (event: string): void => {\n setEvents((prev) => prev.includes(event) ? prev.filter((e) => e !== event) : [...prev, event])\n }\n\n const onSubmit = (e: React.FormEvent): void => {\n e.preventDefault()\n save.mutate({\n name: name.trim(),\n url: url.trim(),\n events,\n resourceId: resourceId || null,\n enabled,\n ...(secret.trim() ? { secret: secret.trim() } : {}),\n headers: stringRecord(headers),\n filters: stringRecord(filters),\n payloadFields,\n })\n }\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-3xl\">\n <DialogHeader>\n <DialogTitle>{webhook ? t('settings:webhooks.editor.titleEdit') : t('settings:webhooks.editor.titleCreate')}</DialogTitle>\n <DialogDescription>{t('settings:webhooks.editor.description')}</DialogDescription>\n </DialogHeader>\n <form className=\"space-y-4\" onSubmit={onSubmit}>\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"space-y-1.5\">\n <Label>{t('settings:webhooks.editor.name')}</Label>\n <Input value={name} onChange={(e) => setName(e.target.value)} required />\n </div>\n <div className=\"space-y-1.5\">\n <Label>{t('settings:webhooks.editor.url')}</Label>\n <Input value={url} onChange={(e) => setUrl(e.target.value)} required type=\"url\" />\n </div>\n <div className=\"space-y-1.5\">\n <Label>{t('settings:webhooks.editor.resource')}</Label>\n <Select\n value={resourceId || '__all__'}\n onValueChange={(v) => { setResourceId(v === '__all__' ? '' : v); setPayloadFields([]) }}\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"__all__\">{t('settings:webhooks.editor.allResources')}</SelectItem>\n {resources.map((resource) => (\n <SelectItem key={resource.id} value={resource.id}>\n {resource.name}\n {resource.name !== resource.id && (\n <span className=\"ml-1.5 text-xs text-muted-foreground\">({resource.id})</span>\n )}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"space-y-1.5\">\n <div className=\"flex items-center gap-1.5\">\n <Label>{t('settings:webhooks.editor.secret')}</Label>\n <InfoTooltip\n content={t('settings:webhooks.editor.secretHint')}\n ariaLabel={t('settings:webhooks.editor.secret')}\n side=\"right\"\n />\n </div>\n <Input value={secret} onChange={(e) => setSecret(e.target.value)} type=\"password\" />\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Switch checked={enabled} onCheckedChange={setEnabled} />\n <Label>{t('settings:webhooks.editor.enabled')}</Label>\n </div>\n <div className=\"space-y-2\">\n <Label>{t('settings:webhooks.editor.events')}</Label>\n <div className=\"flex flex-wrap gap-2\">\n {WEBHOOK_EVENTS.map((event) => (\n <label key={event} className=\"flex items-center gap-2 rounded-md border px-3 py-2 text-sm\">\n <Checkbox checked={events.includes(event)} onCheckedChange={() => toggleEvent(event)} />\n {event}\n </label>\n ))}\n </div>\n </div>\n {selectedResource && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-1.5\">\n <Label>{t('settings:webhooks.editor.payloadFields')}</Label>\n <InfoTooltip\n content={t('settings:webhooks.editor.payloadFieldsHint')}\n ariaLabel={t('settings:webhooks.editor.payloadFields')}\n side=\"right\"\n />\n </div>\n <div className=\"grid gap-2 sm:grid-cols-2\">\n {selectedResource.properties.map((property) => (\n <label key={property.path} className=\"flex items-center gap-2 text-sm\">\n <Checkbox\n checked={payloadFields.includes(property.path)}\n onCheckedChange={() =>\n setPayloadFields((prev) =>\n prev.includes(property.path)\n ? prev.filter((p) => p !== property.path)\n : [...prev, property.path],\n )\n }\n />\n {property.label}\n </label>\n ))}\n </div>\n </div>\n )}\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"space-y-1.5\">\n <div className=\"flex items-center gap-1.5\">\n <Label>{t('settings:webhooks.editor.headers')}</Label>\n <InfoTooltip\n content={t('settings:webhooks.editor.headersHint')}\n ariaLabel={t('settings:webhooks.editor.headers')}\n side=\"top\"\n />\n </div>\n <JsonEditor value={headers} onChange={(next) => setHeaders(toJsonRecord(next))} />\n </div>\n <div className=\"space-y-1.5\">\n <div className=\"flex items-center gap-1.5\">\n <Label>{t('settings:webhooks.editor.filters')}</Label>\n <InfoTooltip\n content={t('settings:webhooks.editor.filtersHint')}\n ariaLabel={t('settings:webhooks.editor.filters')}\n side=\"top\"\n />\n </div>\n <JsonEditor value={filters} onChange={(next) => setFilters(toJsonRecord(next))} />\n </div>\n </div>\n <DialogFooter>\n <Button type=\"button\" variant=\"outline\" onClick={() => onOpenChange(false)}>{t('common:cancel')}</Button>\n <Button type=\"submit\" disabled={save.isPending || !name.trim() || !url.trim() || events.length === 0}>\n {save.isPending ? t('common:saving') : t('common:save')}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst resourceName = (\n resources: ResourceJSON[],\n id: string | null | undefined,\n fallback: string,\n): string => id ? (resources.find((r) => r.id === id)?.name ?? id) : fallback\n\nconst toJsonRecord = (value: unknown): Record<string, unknown> =>\n value && typeof value === 'object' && !Array.isArray(value) ? value as Record<string, unknown> : {}\n\nconst stringRecord = (value: Record<string, unknown>): Record<string, string> => {\n const out: Record<string, string> = {}\n for (const [key, item] of Object.entries(value)) {\n if (item != null && item !== '') out[key] = String(item)\n }\n return out\n}\n\n// ─── Created-secret dialog ────────────────────────────────────────────────────\n\nfunction CreatedSecretDialog({\n secret,\n onClose,\n}: {\n secret: { key: string; record: ApiKeyRecord } | null\n onClose: () => void\n}): React.ReactElement {\n const { t } = useI18n()\n const notify = useNotify()\n const [reveal, setReveal] = React.useState(false)\n const [copied, setCopied] = React.useState(false)\n\n React.useEffect(() => {\n if (!secret) {\n setReveal(false)\n setCopied(false)\n }\n }, [secret])\n\n const onCopy = async (): Promise<void> => {\n if (!secret) return\n try {\n await navigator.clipboard.writeText(secret.key)\n setCopied(true)\n notify.success({ key: 'settings:apiKeys.notice.copied' })\n setTimeout(() => setCopied(false), 1500)\n } catch {\n notify.error({ key: 'settings:apiKeys.notice.copyFailed' })\n }\n }\n\n return (\n <Dialog open={!!secret} onOpenChange={(open) => !open && onClose()}>\n <DialogContent className=\"max-w-lg\">\n <DialogHeader>\n <DialogTitle className=\"flex items-center gap-2\">\n <SettingsIcon className=\"size-5\" />\n {t('settings:apiKeys.created.title')}\n </DialogTitle>\n <DialogDescription>{t('settings:apiKeys.created.description')}</DialogDescription>\n </DialogHeader>\n <div className=\"rounded-md border border-amber-300/60 bg-amber-50 p-3 text-sm text-amber-900 dark:border-amber-300/30 dark:bg-amber-950/40 dark:text-amber-200\">\n <div className=\"flex items-start gap-2\">\n <AlertTriangle className=\"mt-0.5 size-4\" />\n <p>{t('settings:apiKeys.created.warning')}</p>\n </div>\n </div>\n <div className=\"flex items-stretch gap-2\">\n <div className=\"relative flex-1\">\n <Input\n readOnly\n type={reveal ? 'text' : 'password'}\n value={secret?.key ?? ''}\n className=\"pr-10 font-mono text-xs\"\n onFocus={(e) => e.currentTarget.select()}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute right-1 top-1/2 -translate-y-1/2\"\n onClick={() => setReveal((v) => !v)}\n aria-label={reveal ? t('settings:apiKeys.created.hide') : t('settings:apiKeys.created.reveal')}\n >\n {reveal ? <EyeOff className=\"size-4\" /> : <Eye className=\"size-4\" />}\n </Button>\n </div>\n <Button type=\"button\" onClick={onCopy} variant=\"secondary\">\n {copied ? <Check className=\"size-4\" /> : <Copy className=\"size-4\" />}\n <span className=\"hidden sm:inline\">\n {copied ? t('settings:apiKeys.created.copied') : t('settings:apiKeys.created.copy')}\n </span>\n </Button>\n </div>\n <DialogFooter>\n <Button onClick={onClose}>{t('common:done')}</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst formatDate = (input: string | Date): string => {\n try {\n return new Date(input).toLocaleString()\n } catch {\n return String(input)\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,n as t}from"./createLucideIcon-CUopU_LC.js";import{S as n}from"./with-selector-NDLhu4dT.js";import{t as r}from"./zap-DIzIW2MP.js";import{t as i}from"./trash-2-DhyKQCKv.js";import{n as a}from"./wand-sparkles-BDM69Lk9.js";import{t as o}from"./pencil-BO-k3yTG.js";import{s}from"./dist-Dpg8xy_r.js";import{$ as c,G as l,H as u,K as d,M as f,P as p,R as m,St as h,i as g,n as _}from"./router-CdkN982X.js";import{a as v,c as y,l as b,o as x,r as S,s as C,t as w,u as T}from"./property-renderer-9Lp1FUJh.js";import{a as E,i as D,n as O,t as k}from"./card-4cS4uWCP.js";import{i as A,n as j,r as M,t as N}from"./tabs-jKq6LSSb.js";import{t as P}from"./revisions-button-BMOia5su.js";import{_ as F,b as I,i as L,n as R,r as z,v as B,x as V,y as H}from"./index-7FvUVXwS.js";var U=e(t(),1),W=n();function G({parentRecordId:e,related:t,active:n}){let[r,i]=U.useState({perPage:10}),[a,o]=U.useState(n);return U.useEffect(()=>{n&&o(!0)},[n]),a?(0,W.jsx)(S,{resourceId:t.resourceId,query:r,onQueryChange:i,lockedFilters:{[t.foreignKey]:e},embedPadding:!1,features:{breadcrumbs:!1,title:!1,create:!1,export:!1,card:!1}}):null}function K({resource:e,recordId:t}){let{t:n}=c(),r=d(),i=e.showRelatedResources!==!1,a=U.useMemo(()=>i?x(e,r):[],[i,e,r]),[o,s]=U.useState(()=>a[0]?`${a[0].resourceId}::${a[0].foreignKey}`:``);if(U.useEffect(()=>{a.length!==0&&(a.some(e=>`${e.resourceId}::${e.foreignKey}`===o)||s(`${a[0].resourceId}::${a[0].foreignKey}`))},[o,a]),a.length===0)return null;let l=e=>e.label??r.find(t=>t.id===e.resourceId)?.name??e.resourceId;return(0,W.jsxs)(k,{children:[(0,W.jsx)(D,{children:(0,W.jsx)(E,{className:`text-base`,children:n(`common:relatedRecords`)})}),(0,W.jsx)(O,{children:(0,W.jsxs)(N,{value:o,onValueChange:s,children:[(0,W.jsx)(M,{className:`w-full justify-start`,children:a.map(e=>{let t=`${e.resourceId}::${e.foreignKey}`;return(0,W.jsx)(A,{value:t,children:l(e)},t)})}),a.map(e=>{let n=`${e.resourceId}::${e.foreignKey}`;return(0,W.jsx)(j,{value:n,className:`mt-4`,children:(0,W.jsx)(G,{parentRecordId:t,related:e,active:o===n})},n)})]})})]})}function q({error:e,t}){let{status:n,message:r}=h(e),i=t(n===404?`errors:notFound`:n===403?`errors:forbidden`:`errors:server`);return(0,W.jsxs)(`div`,{className:`flex items-start gap-3 rounded-lg border border-destructive/50 bg-destructive/10 p-4 dark:bg-destructive/15`,children:[(0,W.jsx)(a,{className:`mt-0.5 size-5 shrink-0 text-destructive`}),(0,W.jsxs)(`div`,{className:`space-y-1 text-sm`,children:[(0,W.jsx)(`p`,{className:`font-semibold text-destructive`,children:i}),(0,W.jsx)(`p`,{className:`text-destructive/90`,children:r})]})]})}function J({resourceId:e,recordId:t}){let n=l(e),a=u(e,t),d=f(e),h=m(e),x=p(),{t:S}=c(),A=g(),j=z(),M=L(),N=(n?.actions??[]).filter(e=>e.actionType===`record`&&![`show`,`edit`,`delete`].includes(e.name));R(`mod+e`,()=>{a.data&&A({name:`edit`,resourceId:e,recordId:t})},{description:S(`common:edit`)});let U=async()=>{await j.confirm({title:S(`common:confirmDelete`),confirmLabel:S(`common:delete`),destructive:!0})&&(await d.mutateAsync(t),A({name:`list`,resourceId:e}))};if(!n)return(0,W.jsx)(`div`,{className:`p-6`,children:S(`common:loading`)});let G=B(),J=a.data?.record?.title||t;return(0,W.jsxs)(`div`,{className:`space-y-2 sm:space-y-4`,children:[(0,W.jsx)(b,{items:[T(S(`common:home`)),{label:n.name,to:{name:`list`,resourceId:e}},{label:J}]}),(0,W.jsxs)(k,{children:[(0,W.jsxs)(D,{className:`flex flex-row items-center justify-between gap-3`,children:[(0,W.jsxs)(E,{className:`truncate`,children:[n.name,` #`,t]}),a.data&&(0,W.jsxs)(`div`,{className:`flex shrink-0 flex-wrap gap-2`,children:[x.history&&(0,W.jsx)(P,{resourceId:e,recordId:t}),(0,W.jsxs)(H,{children:[(0,W.jsx)(V,{asChild:!0,children:(0,W.jsx)(s,{variant:`outline-primary`,size:`sm`,asChild:!0,children:(0,W.jsxs)(_,{to:{name:`edit`,resourceId:e,recordId:t},"aria-label":S(`common:edit`),children:[(0,W.jsx)(o,{className:`size-4`}),(0,W.jsx)(`span`,{className:`hidden sm:inline`,children:S(`common:edit`)})]})})}),(0,W.jsxs)(I,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{children:S(`common:edit`)}),(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-0.5`,children:[(0,W.jsx)(F,{children:G}),(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`+`}),(0,W.jsx)(F,{children:`E`})]})]})]}),(0,W.jsxs)(s,{variant:`outline-destructive`,size:`sm`,disabled:d.isPending,onClick:()=>void U(),"aria-label":S(`common:delete`),children:[(0,W.jsx)(i,{className:`size-4`}),(0,W.jsx)(`span`,{className:`hidden sm:inline`,children:S(`common:delete`)})]}),N.length>0&&(0,W.jsx)(y,{actions:N,onAction:async e=>{await v(e,j)&&h.mutateAsync({recordId:t,actionName:e.name}).then(e=>{if(e.notice){let t=e.notice.type===`error`?`error`:e.notice.type===`warning`?`warning`:e.notice.type===`info`?`info`:`success`;M[t]({message:e.notice.message})}}).catch(e=>M.error({message:e.message}))},t:S,trigger:(0,W.jsxs)(s,{variant:`outline`,size:`sm`,disabled:h.isPending,"aria-label":S(`common:actions`),children:[(0,W.jsx)(r,{className:`size-4`}),(0,W.jsx)(`span`,{className:`hidden sm:inline`,children:S(`common:actions`)})]})})]})]}),(0,W.jsx)(O,{children:(0,W.jsxs)(`div`,{className:`space-y-4`,children:[a.isLoading&&(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:S(`common:loading`)}),a.isError&&(0,W.jsx)(q,{error:a.error,t:S}),a.data&&(0,W.jsx)(`dl`,{className:`[column-fill:_balance] md:columns-2`,children:C(n.properties,`show`).map(e=>(0,W.jsxs)(`div`,{className:`mb-8 break-inside-avoid`,children:[(0,W.jsx)(`dt`,{className:`text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:e.label}),(0,W.jsx)(`dd`,{className:`mt-1`,children:(0,W.jsx)(w,{property:e,value:a.data.record.params[e.path],view:`show`,populated:a.data.record.populated})})]},e.path))})]})})]}),a.data&&(0,W.jsx)(K,{resource:n,recordId:t})]})}export{J as ResourceShowPage};
|
|
2
|
+
//# sourceMappingURL=show-page-B4UVcMHh.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-page-B4UVcMHh.js","names":[],"sources":["../../../../react/src/components/related-records-tabs.tsx","../../../../react/src/pages/show-page.tsx"],"sourcesContent":["// Tabs of records that reference the open record through a foreign key.\n// Each tab embeds the full ResourceListPage filtered by a locked\n// `{ [foreignKey]: parentRecordId }` so it gets the same table, filters,\n// bulk actions, pagination, and row-click behaviour as the main list.\n//\n// Designed to live below the property card on the show page.\n\nimport * as React from 'react'\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from '@modern-admin/ui'\nimport { useResources } from '../hooks.js'\nimport { useI18n } from '../i18n.js'\nimport { ResourceListPage } from '../pages/list-page.js'\nimport { resolveRelatedResources } from '../relations.js'\nimport type { ListQueryState } from '../router.js'\nimport type { RelatedResource, ResourceJSON } from '../types.js'\n\ninterface RelatedRecordsTabProps {\n parentRecordId: string\n related: RelatedResource\n active: boolean\n}\n\nfunction RelatedRecordsTab({\n parentRecordId,\n related,\n active,\n}: RelatedRecordsTabProps): React.ReactElement | null {\n // Each tab keeps its own page/sort/filter state. Defaults: page 1, perPage 10\n // so embedded tables stay compact compared to the main list (default 20).\n const [query, setQuery] = React.useState<ListQueryState>({ perPage: 10 })\n\n // Lazy-load tab content: only mount the (heavy) ResourceListPage once the\n // user actually visits the tab. Subsequent toggles keep state thanks to\n // Radix's mount-on-activate semantics on TabsContent (we don't force unmount).\n const [hasBeenActive, setHasBeenActive] = React.useState(active)\n React.useEffect(() => {\n if (active) setHasBeenActive(true)\n }, [active])\n\n if (!hasBeenActive) return null\n\n return (\n <ResourceListPage\n resourceId={related.resourceId}\n query={query}\n onQueryChange={setQuery}\n lockedFilters={{ [related.foreignKey]: parentRecordId }}\n // The host `CardContent` already pads the tab body — don't double it,\n // or the table stops spanning the block's full width.\n embedPadding={false}\n features={{\n breadcrumbs: false,\n title: false,\n create: false,\n export: false,\n card: false,\n }}\n />\n )\n}\n\nexport interface RelatedRecordsTabsProps {\n resource: ResourceJSON\n recordId: string\n}\n\nexport function RelatedRecordsTabs({\n resource,\n recordId,\n}: RelatedRecordsTabsProps): React.ReactElement | null {\n const { t } = useI18n()\n const allResources = useResources()\n // Master switch: `showRelatedResources: false` in the resource config hides\n // the whole section regardless of configured/auto-discovered relations.\n const enabled = resource.showRelatedResources !== false\n const tabs = React.useMemo(\n () => (enabled ? resolveRelatedResources(resource, allResources) : []),\n [enabled, resource, allResources],\n )\n // Hooks must run before any early return — call useState unconditionally.\n const [active, setActive] = React.useState<string>(\n () => tabs[0] ? `${tabs[0].resourceId}::${tabs[0].foreignKey}` : '',\n )\n React.useEffect(() => {\n if (tabs.length === 0) return\n if (tabs.some((r) => `${r.resourceId}::${r.foreignKey}` === active)) return\n setActive(`${tabs[0]!.resourceId}::${tabs[0]!.foreignKey}`)\n }, [active, tabs])\n if (tabs.length === 0) return null\n\n const labelFor = (r: RelatedResource): string =>\n r.label ?? allResources.find((x) => x.id === r.resourceId)?.name ?? r.resourceId\n\n return (\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">{t('common:relatedRecords')}</CardTitle>\n </CardHeader>\n <CardContent>\n <Tabs value={active} onValueChange={setActive}>\n <TabsList className=\"w-full justify-start\">\n {tabs.map((r) => {\n const key = `${r.resourceId}::${r.foreignKey}`\n return (\n <TabsTrigger key={key} value={key}>\n {labelFor(r)}\n </TabsTrigger>\n )\n })}\n </TabsList>\n {tabs.map((r) => {\n const key = `${r.resourceId}::${r.foreignKey}`\n return (\n <TabsContent key={key} value={key} className=\"mt-4\">\n <RelatedRecordsTab\n parentRecordId={recordId}\n related={r}\n active={active === key}\n />\n </TabsContent>\n )\n })}\n </Tabs>\n </CardContent>\n </Card>\n )\n}\n","import * as React from 'react'\nimport {\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Kbd,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n getModKeyLabel,\n} from '@modern-admin/ui'\nimport { AlertCircle, Pencil, Trash2, Zap } from 'lucide-react'\nimport { useDeleteRecord, useFeatures, useInvokeRecordAction, useRecord, useResource } from '../hooks.js'\nimport { confirmGuard } from '../action-guard.js'\nimport { parseApiError } from '../client.js'\nimport { PropertyDisplay } from '../property-renderer.js'\nimport { Link, useNavigate } from '../router.js'\nimport { useI18n } from '../i18n.js'\nimport { useHotkey } from '../use-hotkey.js'\nimport { PageBreadcrumbs, homeCrumb } from '../breadcrumbs.js'\nimport { RelatedRecordsTabs } from '../components/related-records-tabs.js'\nimport { useDialogs } from '../dialogs.js'\nimport { useNotify } from '../notify.js'\nimport { ActionMenu } from '../action-menu.js'\nimport { RevisionsButton } from '../components/revisions-button.js'\nimport { visibleRecordProperties } from '../relations.js'\n\nfunction PageError({\n error,\n t,\n}: {\n error: unknown\n t: (key: string) => string\n}): React.ReactElement {\n const { status, message } = parseApiError(error)\n const title =\n status === 404\n ? t('errors:notFound')\n : status === 403\n ? t('errors:forbidden')\n : t('errors:server')\n return (\n <div className=\"flex items-start gap-3 rounded-lg border border-destructive/50 bg-destructive/10 p-4 dark:bg-destructive/15\">\n <AlertCircle className=\"mt-0.5 size-5 shrink-0 text-destructive\" />\n <div className=\"space-y-1 text-sm\">\n <p className=\"font-semibold text-destructive\">{title}</p>\n <p className=\"text-destructive/90\">{message}</p>\n </div>\n </div>\n )\n}\n\nexport interface ResourceShowPageProps {\n resourceId: string\n recordId: string\n}\n\nexport function ResourceShowPage({\n resourceId,\n recordId,\n}: ResourceShowPageProps): React.ReactElement {\n const resource = useResource(resourceId)\n const record = useRecord(resourceId, recordId)\n const remove = useDeleteRecord(resourceId)\n const invokeRecord = useInvokeRecordAction(resourceId)\n const features = useFeatures()\n const { t } = useI18n()\n const navigate = useNavigate()\n const dialogs = useDialogs()\n const notify = useNotify()\n\n const customRecordActions = (resource?.actions ?? []).filter(\n (a) => a.actionType === 'record' && !['show', 'edit', 'delete'].includes(a.name),\n )\n\n // ── Keyboard shortcuts ──\n // Ctrl/Cmd+E jumps into edit. Discoverable via the action-button tooltip.\n useHotkey(\n 'mod+e',\n () => {\n if (!record.data) return\n navigate({ name: 'edit', resourceId, recordId })\n },\n { description: t('common:edit') },\n )\n\n const handleDelete = async (): Promise<void> => {\n const ok = await dialogs.confirm({\n title: t('common:confirmDelete'),\n confirmLabel: t('common:delete'),\n destructive: true,\n })\n if (!ok) return\n await remove.mutateAsync(recordId)\n navigate({ name: 'list', resourceId })\n }\n\n if (!resource) return <div className=\"p-6\">{t('common:loading')}</div>\n\n const modLabel = getModKeyLabel()\n const recordLabel = record.data?.record?.title || recordId\n\n return (\n <div className=\"space-y-2 sm:space-y-4\">\n <PageBreadcrumbs\n items={[\n homeCrumb(t('common:home')),\n { label: resource.name, to: { name: 'list', resourceId } },\n { label: recordLabel },\n ]}\n />\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between gap-3\">\n <CardTitle className=\"truncate\">\n {resource.name} #{recordId}\n </CardTitle>\n {record.data && (\n <div className=\"flex shrink-0 flex-wrap gap-2\">\n {features.history && (\n <RevisionsButton resourceId={resourceId} recordId={recordId} />\n )}\n <Tooltip>\n <TooltipTrigger asChild>\n {/* `asChild` + Link-as-Button keeps the rendered DOM a\n * single `<a>` so it picks up the Button's `h-8` from\n * `size=\"sm\"` instead of stacking a Link wrapper that\n * collapses to its anchor default height. */}\n <Button variant=\"outline-primary\" size=\"sm\" asChild>\n <Link to={{ name: 'edit', resourceId, recordId }} aria-label={t('common:edit')}>\n <Pencil className=\"size-4\" />\n <span className=\"hidden sm:inline\">{t('common:edit')}</span>\n </Link>\n </Button>\n </TooltipTrigger>\n <TooltipContent className=\"flex items-center gap-1.5\">\n <span>{t('common:edit')}</span>\n <span className=\"inline-flex items-center gap-0.5\">\n <Kbd>{modLabel}</Kbd>\n <span className=\"text-muted-foreground\">+</span>\n <Kbd>E</Kbd>\n </span>\n </TooltipContent>\n </Tooltip>\n <Button\n variant=\"outline-destructive\"\n size=\"sm\"\n disabled={remove.isPending}\n onClick={() => void handleDelete()}\n aria-label={t('common:delete')}\n >\n <Trash2 className=\"size-4\" />\n <span className=\"hidden sm:inline\">{t('common:delete')}</span>\n </Button>\n {customRecordActions.length > 0 && (\n <ActionMenu\n actions={customRecordActions}\n onAction={async (action) => {\n if (!await confirmGuard(action, dialogs)) return\n void invokeRecord\n .mutateAsync({ recordId, actionName: action.name })\n .then((res) => {\n if (res.notice) {\n const type = res.notice.type === 'error' ? 'error'\n : res.notice.type === 'warning' ? 'warning'\n : res.notice.type === 'info' ? 'info'\n : 'success'\n notify[type]({ message: res.notice.message })\n }\n })\n .catch((err: Error) =>\n notify.error({ message: err.message }),\n )\n }}\n t={t}\n trigger={(\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={invokeRecord.isPending}\n aria-label={t('common:actions')}\n >\n <Zap className=\"size-4\" />\n <span className=\"hidden sm:inline\">{t('common:actions')}</span>\n </Button>\n )}\n />\n )}\n </div>\n )}\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n {record.isLoading && <p className=\"text-muted-foreground\">{t('common:loading')}</p>}\n {record.isError && <PageError error={record.error} t={t} />}\n {record.data && (\n <dl className=\"[column-fill:_balance] md:columns-2\">\n {visibleRecordProperties(resource.properties, 'show')\n .map((p) => (\n <div key={p.path} className=\"mb-8 break-inside-avoid\">\n <dt className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {p.label}\n </dt>\n <dd className=\"mt-1\">\n <PropertyDisplay\n property={p}\n value={record.data!.record.params[p.path]}\n view=\"show\"\n populated={record.data!.record.populated as Record<string, unknown> | undefined}\n />\n </dd>\n </div>\n ))}\n </dl>\n )}\n </div>\n </CardContent>\n </Card>\n {record.data && <RelatedRecordsTabs resource={resource} recordId={recordId} />}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CUopU_LC.js";var t=e(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]);export{t};
|
|
2
|
+
//# sourceMappingURL=sparkles-CqF0zjrF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparkles-CqF0zjrF.js","names":[],"sources":["../../../../../node_modules/.bun/lucide-react@1.23.0+e14d3f224186685e/node_modules/lucide-react/dist/esm/icons/sparkles.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.23.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\",\n key: \"1s2grr\"\n }\n ],\n [\"path\", { d: \"M20 2v4\", key: \"1rf3ol\" }],\n [\"path\", { d: \"M22 4h-4\", key: \"gwowj6\" }],\n [\"circle\", { cx: \"4\", cy: \"20\", r: \"2\", key: \"6kqj1y\" }]\n];\nconst Sparkles = createLucideIcon(\"sparkles\", __iconNode);\n\nexport { __iconNode, Sparkles as default };\n//# sourceMappingURL=sparkles.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAqBA,IAAM,EAAW,EAAiB,WAAY,CAX5C,CACE,OACA,CACE,EAAG,yQACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,EACxC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,SAAU,CAAE,GAAI,IAAK,GAAI,KAAM,EAAG,IAAK,IAAK,QAAS,CAAC,CAEX,CAAU"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
var e=class extends Error{constructor(e,t){super(`Record "${e}" was not found in resource "${t}"`),this.name=`RecordNotFoundError`}},t=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null};function n(e,r=``){let i={};if(t(e)){for(let t of Object.keys(e)){let a=r?`${r}.${t}`:t,o=e[t];Object.assign(i,n(o,a))}return i}return Array.isArray(e)?e.length===0?(r&&(i[r]=[]),i):(e.forEach((e,t)=>{let a=r?`${r}.${t}`:String(t);Object.assign(i,n(e,a))}),i):(r&&(i[r]=e),i)}function r(e){let t={};for(let n of Object.keys(e))i(t,n,e[n]);return t}function i(e,t,n){let r=t.split(`.`),i=e;for(let e=0;e<r.length-1;e+=1){let t=r[e],n=r[e+1],a=/^\d+$/.test(n),o=Array.isArray(i)?i[Number(t)]:i[t],s;o===void 0?(s=a?[]:{},Array.isArray(i)?i[Number(t)]=s:i[t]=s):s=o,i=s}let a=r[r.length-1];Array.isArray(i)?i[Number(a)]=n:i[a]=n}var a=new Set([`eq`,`neq`,`co`,`nco`,`sw`,`ew`,`empty`,`nempty`,`in`,`gt`,`lt`,`between`]);function o(e){let t=e.indexOf(`:`);if(t===-1)return{operator:null,value:e};let n=e.slice(0,t);return a.has(n)?{operator:n,value:e.slice(t+1)}:{operator:null,value:e}}var s=class{constructor(e,t){this.resource=t;let i=n(e??{}),s={},c={};for(let e of Object.keys(i))if(e.includes(`~~`)){let[t,n]=e.split(`~~`);if(t&&n)if(n===`op`){let n=String(i[e]);a.has(n)&&(c[t]=n)}else s[t]={...s[t]??{},[n]:String(i[e])}}else s[e]=i[e];let l=r(s);this.filters={};for(let e of Object.keys(l)){let n=l[e],r=c[e]??null;if(r===null&&typeof n==`string`){let e=o(n);e.operator&&(r=e.operator,n=r===`in`?e.value?e.value.split(`,`):[]:e.value)}this.filters[e]={path:e,property:t.property(e),value:n,operator:r}}}get(e){return this.filters[e]??null}reduce(e,t){return Object.values(this.filters).reduce(e,t)}isVisible(){return Object.keys(this.filters).length>0}toJSON(){let e={};for(let t of Object.keys(this.filters))e[t]=this.filters[t].value;return e}},c=e=>`list:${e}`,l=(e,t)=>`record:${e}:${t}`,u=e=>`records:${e}`,d={list:300,show:300,search:60,http:300},f={enabled:!1,ttl:0};function p(e,t){let n=e?.cache;if(n===!1)return f;let r=n?.strategy??`ttl`;if(r===`off`)return f;let i=n?.[t];return i?.enabled===!1?f:{enabled:!0,ttl:i?.ttl??(r===`tag-only`?2592e3:n?.ttl??d[t])}}var ee=20,te=async(e,t,n)=>{if(e.length===0)return;let r=t.properties().filter(e=>e.reference()!==null&&!e.isArray()&&!e.isId());r.length!==0&&await Promise.all(r.map(async t=>{let r=t.reference();if(!r)return;let i;try{i=n.findResource(r)}catch{return}let a=t.path(),o=new Set;for(let t of e){let e=t.get(a);e==null||e===``||o.add(String(e))}if(o.size===0)return;let s=await i.findMany(Array.from(o)),c=new Map(s.map(e=>[String(e.id()),e]));for(let t of e){let e=t.get(a);if(e==null||e===``)continue;let n=c.get(String(e));n&&t.populate(a,n)}}))},ne={name:`list`,actionType:`resource`,isAccessible:!0,isVisible:!0,component:`List`,handler:async(e,t)=>{let{resource:n,cacheRuntime:r,admin:i}=t,a=e.query??{},o=Math.max(1,Number(a.page??1)),l=Math.max(1,Math.min(200,Number(a.perPage??ee))),u=a.sortBy,d=a.direction??void 0,f=a.filters??{},ne=n.decorate().options.sort,m=u??ne?.sortBy,h=u==null?ne?.direction:d,re=new s(f,n),ie=`list:${n.id()}:${JSON.stringify({filters:f,page:o,perPage:l,sortBy:m,direction:h})}`,ae=p(n.decorate().options,`list`);return r.read(ie,{enabled:ae.enabled,ttl:ae.ttl,tags:[c(n.id())]},async()=>{let e=m==null?{}:{sort:{sortBy:m,...h?{direction:h}:{}}},[t,r]=await Promise.all([n.find(re,{limit:l,offset:(o-1)*l,...e}),n.count(re)]);return await te(t,n,i),{records:t.map(e=>e.toJSON()),meta:{total:r,page:o,perPage:l,...m?{sortBy:m}:{},...h?{direction:h}:{}}}})}},m={name:`show`,actionType:`record`,isAccessible:!0,isVisible:!0,component:`Show`,handler:async(t,n)=>{let{resource:r,cacheRuntime:i}=n,a=t.params.recordId;if(!a)throw Error(`show action requires recordId`);let o=`record:${r.id()}:${a}`,s=p(r.decorate().options,`show`);return i.read(o,{enabled:s.enabled,ttl:s.ttl,tags:[l(r.id(),a),u(r.id())]},async()=>{let t=await r.findOne(a);if(!t)throw new e(a,r.id());return{record:t.toJSON()}})}},h={name:`new`,actionType:`resource`,isAccessible:!0,isVisible:!0,component:`New`,handler:async(e,t)=>{let{resource:n}=t;if(e.method===`get`)return{record:n.build({}).toJSON()};let r=e.payload??{},i=await n.create(r);return{record:n.build(i).toJSON(),notice:{message:`Record created`,type:`success`}}}},re={name:`edit`,actionType:`record`,isAccessible:!0,isVisible:!0,component:`Edit`,handler:async(t,n)=>{let{resource:r}=n,i=t.params.recordId;if(!i)throw Error(`edit action requires recordId`);if(t.method===`get`){let t=await r.findOne(i);if(!t)throw new e(i,r.id());return{record:t.toJSON()}}let a=t.payload??{},o=await r.update(i,a);return{record:r.build(o).toJSON(),notice:{message:`Record updated`,type:`success`}}}},ie={name:`delete`,actionType:`record`,isAccessible:!0,isVisible:!0,guard:`confirmDelete`,component:null,handler:async(t,n)=>{let{resource:r}=n,i=t.params.recordId;if(!i)throw Error(`delete action requires recordId`);let a=await r.findOne(i);if(!a)throw new e(i,r.id());return await r.delete(i),{record:a.toJSON(),notice:{message:`Record deleted`,type:`success`},redirectUrl:`/resources/${r.id()}`}}},ae={name:`bulkDelete`,actionType:`bulk`,isAccessible:!0,isVisible:!0,guard:`confirmBulkDelete`,component:null,handler:async(e,t)=>{let{resource:n}=t,r=(e.params.recordIds??``).split(`,`).filter(Boolean);if(r.length===0)throw Error(`bulkDelete requires recordIds`);let i=await n.findMany(r);return await n.transaction(async()=>{for(let e of r)await n.delete(e)}),{records:i.map(e=>e.toJSON()),notice:{message:`Deleted ${r.length} record(s)`,type:`success`},redirectUrl:`/resources/${n.id()}`}}},oe=e=>{let{resource:t}=e,n=t._decorated??null,r=t.titlePropertyPath(),i=new Set,a=[],o=e=>{i.has(e)||(i.add(e),a.push(e))};r&&o(r);let s=n?.properties??null;if(s)for(let e of s){let t=e.isSearchable();if(t===!1){e.path()===r&&(i.delete(r),a.shift());continue}if(t===!0){o(e.path());continue}e.isId()||String(e.type())===`string`&&(!e.isVisibleIn(`list`)&&!e.isVisibleIn(`show`)||o(e.path()))}else for(let e of t.properties())e.isId()||e.type()===`string`&&e.isVisible()&&o(e.path());return{titlePath:r,fields:a}},se=(e,t,n,r)=>{let i=t.toLowerCase(),a=String(e.id()).toLowerCase();if(a===i)return 1e3;if(n){let t=String(e.get(n)??``).toLowerCase();if(t&&t===i)return 900;if(t&&t.startsWith(i))return 700;if(t&&t.includes(i))return 500}for(let t of r){if(t===n)continue;let r=String(e.get(t)??``).toLowerCase();if(r&&r.includes(i))return 300}return a.includes(i)?100:0},g=50,ce=2,le={name:`search`,actionType:`resource`,isAccessible:!0,isVisible:!1,component:null,handler:async(e,t)=>{let{resource:n,cacheRuntime:r}=t,i=(e.params.query??``).trim();if(!i){let e=await n.find(new s({},n),{limit:g,offset:0});return{records:e.map(e=>e.toJSON()),meta:{total:e.length,page:1,perPage:g}}}let a=`search:${n.id()}:${i}`,o=p(n.decorate().options,`search`);return r.read(a,{enabled:o.enabled,ttl:o.ttl,tags:[c(n.id())]},async()=>{let{titlePath:e,fields:r}=oe(t),a=new Set,o=[],c=e=>{let t=String(e.id());a.has(t)||(a.add(t),o.push(e))};try{let e=await n.findOne(i);e&&c(e)}catch{}if(r.length>0){let e=await n.search(i,r,{limit:g*ce});for(let t of e)c(t)}if(o.length<g){let e=await n.find(new s({},n),{limit:200,offset:0});for(let t of e)if(String(t.id()).toLowerCase().includes(i.toLowerCase())&&(c(t),o.length>=g))break}let l=o.map((t,n)=>({record:t,score:se(t,i,e,r),index:n})).sort((e,t)=>t.score-e.score||e.index-t.index).slice(0,g).map(e=>e.record);return{records:l.map(e=>e.toJSON()),meta:{total:l.length,page:1,perPage:g}}})}},ue=100;Object.freeze({list:ne,show:m,new:h,edit:re,delete:ie,bulkDelete:ae,search:le,values:{name:`values`,actionType:`resource`,isAccessible:!0,isVisible:!1,handler:async(e,t)=>{let{resource:n}=t,r=e.query??{},i=r.field??``,a=r.search??``,o=Math.max(1,Math.min(1e3,Number(r.limit??ue)));if(!i||!n.property(i))return{values:[],hasMore:!1};let s=await n.distinct(i,{limit:o+1,search:a}),c=s.length>o;return c&&s.pop(),{values:s,hasMore:c}}}});var de;function _(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;e<a.length;e++){let t=a[e];t in n||(n[t]=i[t].bind(n))}}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,"name",{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,"init",{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var v=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},fe=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(de=globalThis).__zod_globalConfig??(de.__zod_globalConfig={});var pe=globalThis.__zod_globalConfig;function y(e){return e&&Object.assign(pe,e),pe}function me(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function he(e,t){return typeof t==`bigint`?t.toString():t}function ge(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}throw Error(`cached value already set`)}}}function _e(e){return e==null}function ve(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function ye(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}var be=Symbol(`evaluating`);function b(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==be)return r===void 0&&(r=be,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function x(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function S(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function xe(e){return JSON.stringify(e)}function Se(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var Ce=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function C(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var we=ge(()=>{if(pe.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function w(e){if(C(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return!(C(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}function Te(e){return w(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Ee=new Set([`string`,`number`,`symbol`]);function T(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function E(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function D(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function De(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var Oe={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function ke(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return E(e,S(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return x(this,`shape`,e),e},checks:[]}))}function Ae(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return E(e,S(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return x(this,`shape`,r),r},checks:[]}))}function je(e,t){if(!w(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return E(e,S(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return x(this,`shape`,n),n}}))}function Me(e,t){if(!w(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return E(e,S(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return x(this,`shape`,n),n}}))}function Ne(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return E(e,S(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return x(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Pe(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return E(t,S(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return x(this,`shape`,i),i},checks:[]}))}function Fe(e,t,n){return E(t,S(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return x(this,`shape`,i),i}}))}function O(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Ie(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function k(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Le(e){return typeof e==`string`?e:e?.message}function A(e,t,n){let r=e.message?e.message:Le(e.inst?._zod.def?.error?.(e))??Le(t?.error?.(e))??Le(n.customError?.(e))??Le(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function Re(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function j(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var ze=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,he,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Be=_(`$ZodError`,ze),Ve=_(`$ZodError`,ze,{Parent:Error});function He(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Ue(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i];i===e.length-1?(r[n]=r[n]||{_errors:[]},r[n]._errors.push(t(a))):r[n]=r[n]||{_errors:[]},r=r[n],i++}}}};return r(e),n}var We=e=>(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new v;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>A(e,a,y())));throw Ce(t,i?.callee),t}return o.value},Ge=We(Ve),Ke=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>A(e,a,y())));throw Ce(t,i?.callee),t}return o.value},qe=Ke(Ve),Je=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new v;return a.issues.length?{success:!1,error:new(e??Be)(a.issues.map(e=>A(e,i,y())))}:{success:!0,data:a.value}},Ye=Je(Ve),Xe=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>A(e,i,y())))}:{success:!0,data:a.value}},Ze=Xe(Ve),Qe=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return We(e)(t,n,i)},$e=e=>(t,n,r)=>We(e)(t,n,r),et=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ke(e)(t,n,i)},tt=e=>async(t,n,r)=>Ke(e)(t,n,r),nt=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Je(e)(t,n,i)},rt=e=>(t,n,r)=>Je(e)(t,n,r),it=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Xe(e)(t,n,i)},at=e=>async(t,n,r)=>Xe(e)(t,n,r),ot=/^[cC][0-9a-z]{6,}$/,st=/^[0-9a-z]+$/,ct=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,lt=/^[0-9a-vA-V]{20}$/,ut=/^[A-Za-z0-9]{27}$/,dt=/^[a-zA-Z0-9_-]{21}$/,ft=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,pt=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,mt=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,ht=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,gt=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function _t(){return new RegExp(gt,`u`)}var vt=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,yt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,bt=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,xt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,St=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Ct=/^[A-Za-z0-9_-]*$/,wt=/^https?$/,Tt=/^\+[1-9]\d{6,14}$/,Et=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,Dt=RegExp(`^${Et}$`);function Ot(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function kt(e){return RegExp(`^${Ot(e)}$`)}function At(e){let t=Ot({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${Et}T(?:${r})$`)}var jt=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},Mt=/^-?\d+$/,Nt=/^-?\d+(?:\.\d+)?$/,Pt=/^(?:true|false)$/i,Ft=/^null$/i,It=/^undefined$/i,Lt=/^[^A-Z]*$/,Rt=/^[^a-z]*$/,M=_(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),zt={number:`number`,bigint:`bigint`,object:`date`},Bt=_(`$ZodCheckLessThan`,(e,t)=>{M.init(e,t);let n=zt[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Vt=_(`$ZodCheckGreaterThan`,(e,t)=>{M.init(e,t);let n=zt[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Ht=_(`$ZodCheckMultipleOf`,(e,t)=>{M.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):ye(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ut=_(`$ZodCheckNumberFormat`,(e,t)=>{M.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Oe[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=Mt)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Wt=_(`$ZodCheckMaxLength`,(e,t)=>{var n;M.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!_e(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value;if(r.length<=t.maximum)return;let i=Re(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Gt=_(`$ZodCheckMinLength`,(e,t)=>{var n;M.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!_e(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=Re(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Kt=_(`$ZodCheckLengthEquals`,(e,t)=>{var n;M.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!_e(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=Re(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),qt=_(`$ZodCheckStringFormat`,(e,t)=>{var n,r;M.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Jt=_(`$ZodCheckRegex`,(e,t)=>{qt.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Yt=_(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Lt,qt.init(e,t)}),Xt=_(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Rt,qt.init(e,t)}),Zt=_(`$ZodCheckIncludes`,(e,t)=>{M.init(e,t);let n=T(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Qt=_(`$ZodCheckStartsWith`,(e,t)=>{M.init(e,t);let n=RegExp(`^${T(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),$t=_(`$ZodCheckEndsWith`,(e,t)=>{M.init(e,t);let n=RegExp(`.*${T(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),en=_(`$ZodCheckOverwrite`,(e,t)=>{M.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),tn=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
|
|
2
|
+
`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(`
|
|
3
|
+
`))}},nn={major:4,minor:4,patch:3},N=_(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=nn;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=O(e),i;for(let a of t){if(a._zod.def.when){if(Ie(e)||!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new v;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=O(e,t))});else{if(e.issues.length===t)continue;r||=O(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(O(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new v;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new v;return o.then(e=>t(e,r,a))}return t(o,r,a)}}b(e,`~standard`,()=>({validate:t=>{try{let n=Ye(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Ze(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),rn=_(`$ZodString`,(e,t)=>{N.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??jt(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),P=_(`$ZodStringFormat`,(e,t)=>{qt.init(e,t),rn.init(e,t)}),an=_(`$ZodGUID`,(e,t)=>{t.pattern??=pt,P.init(e,t)}),on=_(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=mt(e)}else t.pattern??=mt();P.init(e,t)}),sn=_(`$ZodEmail`,(e,t)=>{t.pattern??=ht,P.init(e,t)}),cn=_(`$ZodURL`,(e,t)=>{P.init(e,t),e._zod.check=n=>{try{let r=n.value.trim();if(!t.normalize&&t.protocol?.source===wt.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}let i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),t.normalize?n.value=i.href:n.value=r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),ln=_(`$ZodEmoji`,(e,t)=>{t.pattern??=_t(),P.init(e,t)}),un=_(`$ZodNanoID`,(e,t)=>{t.pattern??=dt,P.init(e,t)}),dn=_(`$ZodCUID`,(e,t)=>{t.pattern??=ot,P.init(e,t)}),fn=_(`$ZodCUID2`,(e,t)=>{t.pattern??=st,P.init(e,t)}),pn=_(`$ZodULID`,(e,t)=>{t.pattern??=ct,P.init(e,t)}),mn=_(`$ZodXID`,(e,t)=>{t.pattern??=lt,P.init(e,t)}),hn=_(`$ZodKSUID`,(e,t)=>{t.pattern??=ut,P.init(e,t)}),gn=_(`$ZodISODateTime`,(e,t)=>{t.pattern??=At(t),P.init(e,t)}),_n=_(`$ZodISODate`,(e,t)=>{t.pattern??=Dt,P.init(e,t)}),vn=_(`$ZodISOTime`,(e,t)=>{t.pattern??=kt(t),P.init(e,t)}),yn=_(`$ZodISODuration`,(e,t)=>{t.pattern??=ft,P.init(e,t)}),bn=_(`$ZodIPv4`,(e,t)=>{t.pattern??=vt,P.init(e,t),e._zod.bag.format=`ipv4`}),xn=_(`$ZodIPv6`,(e,t)=>{t.pattern??=yt,P.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),Sn=_(`$ZodCIDRv4`,(e,t)=>{t.pattern??=bt,P.init(e,t)}),Cn=_(`$ZodCIDRv6`,(e,t)=>{t.pattern??=xt,P.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function wn(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Tn=_(`$ZodBase64`,(e,t)=>{t.pattern??=St,P.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{wn(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function En(e){if(!Ct.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return wn(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Dn=_(`$ZodBase64URL`,(e,t)=>{t.pattern??=Ct,P.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{En(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),On=_(`$ZodE164`,(e,t)=>{t.pattern??=Tt,P.init(e,t)});function kn(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var An=_(`$ZodJWT`,(e,t)=>{P.init(e,t),e._zod.check=n=>{kn(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),jn=_(`$ZodNumber`,(e,t)=>{N.init(e,t),e._zod.pattern=e._zod.bag.pattern??Nt,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Mn=_(`$ZodNumberFormat`,(e,t)=>{Ut.init(e,t),jn.init(e,t)}),Nn=_(`$ZodBoolean`,(e,t)=>{N.init(e,t),e._zod.pattern=Pt,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Pn=_(`$ZodUndefined`,(e,t)=>{N.init(e,t),e._zod.pattern=It,e._zod.values=new Set([void 0]),e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`undefined`,code:`invalid_type`,input:r,inst:e}),t}}),Fn=_(`$ZodNull`,(e,t)=>{N.init(e,t),e._zod.pattern=Ft,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),In=_(`$ZodAny`,(e,t)=>{N.init(e,t),e._zod.parse=e=>e}),Ln=_(`$ZodUnknown`,(e,t)=>{N.init(e,t),e._zod.parse=e=>e}),Rn=_(`$ZodNever`,(e,t)=>{N.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)}),zn=_(`$ZodDate`,(e,t)=>{N.init(e,t),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=new Date(n.value)}catch{}let i=n.value,a=i instanceof Date;return a&&!Number.isNaN(i.getTime())||n.issues.push({expected:`date`,code:`invalid_type`,input:i,...a?{received:`Invalid Date`}:{},inst:e}),n}});function Bn(e,t,n){e.issues.length&&t.issues.push(...k(n,e.issues)),t.value[n]=e.value}var Vn=_(`$ZodArray`,(e,t)=>{N.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;e<i.length;e++){let o=i[e],s=t.element._zod.run({value:o,issues:[]},r);s instanceof Promise?a.push(s.then(t=>Bn(t,n,e))):Bn(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function Hn(e,t,n,r,i,a){let o=n in r;if(e.issues.length){if(i&&a&&!o)return;t.issues.push(...k(n,e.issues))}if(!o&&!i){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}function Un(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=De(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function Wn(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin===`optional`,d=c.optout===`optional`;for(let i in t){if(i===`__proto__`||s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>Hn(e,n,i,t,u,d))):Hn(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var Gn=_(`$ZodObject`,(e,t)=>{if(N.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}let n=ge(()=>Un(t));b(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=C,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optin===`optional`,i=n._zod.optout===`optional`,a=n._zod.run({value:s[e],issues:[]},o);a instanceof Promise?c.push(a.then(n=>Hn(n,t,e,s,r,i))):Hn(a,t,e,s,r,i)}return i?Wn(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),Kn=_(`$ZodObjectJIT`,(e,t)=>{Gn.init(e,t);let n=e._zod.parse,r=ge(()=>Un(t)),i=e=>{let t=new tn([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=xe(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=xe(r),s=e[r],c=s?._zod?.optin===`optional`,l=s?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),c&&l?t.write(`
|
|
4
|
+
if (${n}.issues.length) {
|
|
5
|
+
if (${o} in input) {
|
|
6
|
+
payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
7
|
+
...iss,
|
|
8
|
+
path: iss.path ? [${o}, ...iss.path] : [${o}]
|
|
9
|
+
})));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (${n}.value === undefined) {
|
|
14
|
+
if (${o} in input) {
|
|
15
|
+
newResult[${o}] = undefined;
|
|
16
|
+
}
|
|
17
|
+
} else {
|
|
18
|
+
newResult[${o}] = ${n}.value;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
`):c?t.write(`
|
|
22
|
+
if (${n}.issues.length) {
|
|
23
|
+
payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
24
|
+
...iss,
|
|
25
|
+
path: iss.path ? [${o}, ...iss.path] : [${o}]
|
|
26
|
+
})));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (${n}.value === undefined) {
|
|
30
|
+
if (${o} in input) {
|
|
31
|
+
newResult[${o}] = undefined;
|
|
32
|
+
}
|
|
33
|
+
} else {
|
|
34
|
+
newResult[${o}] = ${n}.value;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
`):t.write(`
|
|
38
|
+
const ${n}_present = ${o} in input;
|
|
39
|
+
if (${n}.issues.length) {
|
|
40
|
+
payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
41
|
+
...iss,
|
|
42
|
+
path: iss.path ? [${o}, ...iss.path] : [${o}]
|
|
43
|
+
})));
|
|
44
|
+
}
|
|
45
|
+
if (!${n}_present && !${n}.issues.length) {
|
|
46
|
+
payload.issues.push({
|
|
47
|
+
code: "invalid_type",
|
|
48
|
+
expected: "nonoptional",
|
|
49
|
+
input: undefined,
|
|
50
|
+
path: [${o}]
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (${n}_present) {
|
|
55
|
+
if (${n}.value === undefined) {
|
|
56
|
+
newResult[${o}] = undefined;
|
|
57
|
+
} else {
|
|
58
|
+
newResult[${o}] = ${n}.value;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
`)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},a,o=C,s=!pe.jitless,c=s&&we.value,l=t.catchall,u;e._zod.parse=(d,f)=>{u??=r.value;let p=d.value;return o(p)?s&&c&&f?.async===!1&&f.jitless!==!0?(a||=i(t.shape),d=a(d,f),l?Wn([],p,d,f,u,e):d):n(d,f):(d.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),d)}});function qn(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!O(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>A(e,r,y())))}),t)}var Jn=_(`$ZodUnion`,(e,t)=>{N.init(e,t),b(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),b(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),b(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),b(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>ve(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>qn(t,r,e,i)):qn(o,r,e,i)}}),Yn=_(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,Jn.init(e,t);let n=e._zod.parse;b(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=ge(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!C(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()),input:o,path:[t.discriminator],inst:e}),i)}}),Xn=_(`$ZodIntersection`,(e,t)=>{N.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>Qn(e,t,n)):Qn(e,i,a)}});function Zn(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(w(e)&&w(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=Zn(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=Zn(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Qn(e,t,n){let r=new Map,i;for(let n of t.issues)if(n.code===`unrecognized_keys`){i??=n;for(let e of n.keys)r.has(e)||r.set(e,{}),r.get(e).l=!0}else e.issues.push(n);for(let t of n.issues)if(t.code===`unrecognized_keys`)for(let e of t.keys)r.has(e)||r.set(e,{}),r.get(e).r=!0;else e.issues.push(t);let a=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),O(e))return e;let o=Zn(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}var $n=_(`$ZodRecord`,(e,t)=>{N.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!w(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[],o=t.keyType._zod.values;if(o){n.value={};let s=new Set;for(let c of o)if(typeof c==`string`||typeof c==`number`||typeof c==`symbol`){s.add(typeof c==`number`?c.toString():c);let o=t.keyType._zod.run({value:c,issues:[]},r);if(o instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(o.issues.length){n.issues.push({code:`invalid_key`,origin:`record`,issues:o.issues.map(e=>A(e,r,y())),input:c,path:[c],inst:e});continue}let l=o.value,u=t.valueType._zod.run({value:i[c],issues:[]},r);u instanceof Promise?a.push(u.then(e=>{e.issues.length&&n.issues.push(...k(c,e.issues)),n.value[l]=e.value})):(u.issues.length&&n.issues.push(...k(c,u.issues)),n.value[l]=u.value)}let c;for(let e in i)s.has(e)||(c??=[],c.push(e));c&&c.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:c})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`||!Object.prototype.propertyIsEnumerable.call(i,o))continue;let s=t.keyType._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof o==`string`&&Nt.test(o)&&s.issues.length){let e=t.keyType._zod.run({value:Number(o),issues:[]},r);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(s=e)}if(s.issues.length){t.mode===`loose`?n.value[o]=i[o]:n.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>A(e,r,y())),input:o,path:[o],inst:e});continue}let c=t.valueType._zod.run({value:i[o],issues:[]},r);c instanceof Promise?a.push(c.then(e=>{e.issues.length&&n.issues.push(...k(o,e.issues)),n.value[s.value]=e.value})):(c.issues.length&&n.issues.push(...k(o,c.issues)),n.value[s.value]=c.value)}}return a.length?Promise.all(a).then(()=>n):n}}),er=_(`$ZodEnum`,(e,t)=>{N.init(e,t);let n=me(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>Ee.has(typeof e)).map(e=>typeof e==`string`?T(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),tr=_(`$ZodLiteral`,(e,t)=>{if(N.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?T(e):e?T(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),nr=_(`$ZodTransform`,(e,t)=>{N.init(e,t),e._zod.optin=`optional`,e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new fe(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n.fallback=!0,n));if(i instanceof Promise)throw new v;return n.value=i,n.fallback=!0,n}});function rr(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var ir=_(`$ZodOptional`,(e,t)=>{N.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,b(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),b(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${ve(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=e.value,i=t.innerType._zod.run(e,n);return i instanceof Promise?i.then(e=>rr(e,r)):rr(i,r)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),ar=_(`$ZodExactOptional`,(e,t)=>{ir.init(e,t),b(e._zod,`values`,()=>t.innerType._zod.values),b(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),or=_(`$ZodNullable`,(e,t)=>{N.init(e,t),b(e._zod,`optin`,()=>t.innerType._zod.optin),b(e._zod,`optout`,()=>t.innerType._zod.optout),b(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${ve(e.source)}|null)$`):void 0}),b(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),sr=_(`$ZodDefault`,(e,t)=>{N.init(e,t),e._zod.optin=`optional`,b(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>cr(e,t)):cr(r,t)}});function cr(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var lr=_(`$ZodPrefault`,(e,t)=>{N.init(e,t),e._zod.optin=`optional`,b(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),ur=_(`$ZodNonOptional`,(e,t)=>{N.init(e,t),b(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>dr(t,e)):dr(i,e)}});function dr(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var fr=_(`$ZodCatch`,(e,t)=>{N.init(e,t),e._zod.optin=`optional`,b(e._zod,`optout`,()=>t.innerType._zod.optout),b(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>A(e,n,y()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>A(e,n,y()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),pr=_(`$ZodPipe`,(e,t)=>{N.init(e,t),b(e._zod,`values`,()=>t.in._zod.values),b(e._zod,`optin`,()=>t.in._zod.optin),b(e._zod,`optout`,()=>t.out._zod.optout),b(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>mr(e,t.in,n)):mr(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>mr(e,t.out,n)):mr(r,t.out,n)}});function mr(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var hr=_(`$ZodPreprocess`,(e,t)=>{pr.init(e,t)}),gr=_(`$ZodReadonly`,(e,t)=>{N.init(e,t),b(e._zod,`propValues`,()=>t.innerType._zod.propValues),b(e._zod,`values`,()=>t.innerType._zod.values),b(e._zod,`optin`,()=>t.innerType?._zod?.optin),b(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(_r):_r(r)}});function _r(e){return e.value=Object.freeze(e.value),e}var vr=_(`$ZodCustom`,(e,t)=>{M.init(e,t),N.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>yr(t,n,r,e));yr(i,n,r,e)}});function yr(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(j(e))}}var br,xr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Sr(){return new xr}(br=globalThis).__zod_globalRegistry??(br.__zod_globalRegistry=Sr());var F=globalThis.__zod_globalRegistry;function Cr(e,t){return new e({type:`string`,...D(t)})}function wr(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...D(t)})}function Tr(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...D(t)})}function Er(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...D(t)})}function Dr(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...D(t)})}function Or(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...D(t)})}function kr(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...D(t)})}function Ar(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...D(t)})}function jr(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...D(t)})}function Mr(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...D(t)})}function Nr(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...D(t)})}function Pr(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...D(t)})}function Fr(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...D(t)})}function Ir(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...D(t)})}function Lr(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...D(t)})}function Rr(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...D(t)})}function zr(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...D(t)})}function Br(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...D(t)})}function Vr(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...D(t)})}function Hr(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...D(t)})}function Ur(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...D(t)})}function Wr(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...D(t)})}function Gr(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...D(t)})}function Kr(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...D(t)})}function qr(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...D(t)})}function Jr(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...D(t)})}function Yr(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...D(t)})}function Xr(e,t){return new e({type:`number`,checks:[],...D(t)})}function Zr(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...D(t)})}function Qr(e,t){return new e({type:`boolean`,...D(t)})}function $r(e,t){return new e({type:`undefined`,...D(t)})}function ei(e,t){return new e({type:`null`,...D(t)})}function ti(e){return new e({type:`any`})}function ni(e){return new e({type:`unknown`})}function ri(e,t){return new e({type:`never`,...D(t)})}function ii(e,t){return new e({type:`date`,...D(t)})}function ai(e,t){return new Bt({check:`less_than`,...D(t),value:e,inclusive:!1})}function oi(e,t){return new Bt({check:`less_than`,...D(t),value:e,inclusive:!0})}function si(e,t){return new Vt({check:`greater_than`,...D(t),value:e,inclusive:!1})}function ci(e,t){return new Vt({check:`greater_than`,...D(t),value:e,inclusive:!0})}function li(e,t){return new Ht({check:`multiple_of`,...D(t),value:e})}function ui(e,t){return new Wt({check:`max_length`,...D(t),maximum:e})}function di(e,t){return new Gt({check:`min_length`,...D(t),minimum:e})}function fi(e,t){return new Kt({check:`length_equals`,...D(t),length:e})}function pi(e,t){return new Jt({check:`string_format`,format:`regex`,...D(t),pattern:e})}function mi(e){return new Yt({check:`string_format`,format:`lowercase`,...D(e)})}function hi(e){return new Xt({check:`string_format`,format:`uppercase`,...D(e)})}function gi(e,t){return new Zt({check:`string_format`,format:`includes`,...D(t),includes:e})}function _i(e,t){return new Qt({check:`string_format`,format:`starts_with`,...D(t),prefix:e})}function vi(e,t){return new $t({check:`string_format`,format:`ends_with`,...D(t),suffix:e})}function I(e){return new en({check:`overwrite`,tx:e})}function yi(e){return I(t=>t.normalize(e))}function bi(){return I(e=>e.trim())}function xi(){return I(e=>e.toLowerCase())}function Si(){return I(e=>e.toUpperCase())}function Ci(){return I(e=>Se(e))}function wi(e,t,n){return new e({type:`array`,element:t,...D(n)})}function Ti(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...D(n)})}function Ei(e,t){let n=Di(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(j(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=t.value,r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(j(r))}},e(t.value,t)),t);return n}function Di(e,t){let n=new M({check:`custom`,...D(t)});return n._zod.check=e,n}function Oi(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??F,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function L(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,L(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&R(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function ki(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
|
|
63
|
+
|
|
64
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function Ai(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e===`$ref`||e===`allOf`||e in a||delete i[e];if(s.$ref&&n.def)for(let e in i)e===`$ref`||e===`allOf`||e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e===`$ref`||e===`allOf`||e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,o[e.defId]=e.def)}e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:Mi(t,`input`,e.processors),output:Mi(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function R(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return R(r.element,n);if(r.type===`set`)return R(r.valueType,n);if(r.type===`lazy`)return R(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`)return R(r.innerType,n);if(r.type===`intersection`)return R(r.left,n)||R(r.right,n);if(r.type===`record`||r.type===`map`)return R(r.keyType,n)||R(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:R(r.in,n)||R(r.out,n);if(r.type===`object`){for(let e in r.shape)if(R(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(R(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(R(e,n))return!0;return!!(r.rest&&R(r.rest,n))}return!1}var ji=(e,t={})=>n=>{let r=Oi({...n,processors:t});return L(e,r),ki(r,e),Ai(r,e)},Mi=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=Oi({...i??{},target:a,io:t,processors:n});return L(e,o),ki(o,e),Ai(o,e)},Ni={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},Pi=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=Ni[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},Fi=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;typeof s==`string`&&s.includes(`int`)?i.type=`integer`:i.type=`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(i.multipleOf=c)},Ii=(e,t,n,r)=>{n.type=`boolean`},Li=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},Ri=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Undefined cannot be represented in JSON Schema`)},zi=(e,t,n,r)=>{n.not={}},Bi=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Date cannot be represented in JSON Schema`)},Vi=(e,t,n,r)=>{let i=e._zod.def,a=me(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},Hi=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0)if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a},Ui=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},Wi=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},Gi=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=L(a.element,t,{...r,path:[...r.path,`items`]})},Ki=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=L(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=L(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},qi=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>L(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Ji=(e,t,n,r)=>{let i=e._zod.def,a=L(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=L(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},Yi=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=L(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)i.patternProperties[t.source]=e}else(t.target===`draft-07`||t.target===`draft-2020-12`)&&(i.propertyNames=L(a.keyType,t,{...r,path:[...r.path,`propertyNames`]})),i.additionalProperties=L(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]});let c=o._zod.values;if(c){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e)}},Xi=(e,t,n,r)=>{let i=e._zod.def,a=L(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Zi=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Qi=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},$i=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},ea=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},ta=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;L(o,t,r);let s=t.seen.get(e);s.ref=o},na=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},ra=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},ia=_(`ZodISODateTime`,(e,t)=>{gn.init(e,t),W.init(e,t)});function z(e){return Kr(ia,e)}var aa=_(`ZodISODate`,(e,t)=>{_n.init(e,t),W.init(e,t)});function oa(e){return qr(aa,e)}var sa=_(`ZodISOTime`,(e,t)=>{vn.init(e,t),W.init(e,t)});function ca(e){return Jr(sa,e)}var la=_(`ZodISODuration`,(e,t)=>{yn.init(e,t),W.init(e,t)});function ua(e){return Yr(la,e)}var B=_(`ZodError`,(e,t)=>{Be.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>Ue(e,t)},flatten:{value:t=>He(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,he,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,he,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),da=We(B),fa=Ke(B),pa=Je(B),ma=Xe(B),ha=Qe(B),ga=$e(B),_a=et(B),va=tt(B),ya=nt(B),ba=rt(B),xa=it(B),Sa=at(B),Ca=new WeakMap;function V(e,t,n){let r=Object.getPrototypeOf(e),i=Ca.get(r);if(i||(i=new Set,Ca.set(r,i)),!i.has(t)){i.add(t);for(let e in n){let t=n[e];Object.defineProperty(r,e,{configurable:!0,enumerable:!1,get(){let n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var H=_(`ZodType`,(e,t)=>(N.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:Mi(e,`input`),output:Mi(e,`output`)}}),e.toJSONSchema=ji(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,n)=>da(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>pa(e,t,n),e.parseAsync=async(t,n)=>fa(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>ma(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>ha(e,t,n),e.decode=(t,n)=>ga(e,t,n),e.encodeAsync=async(t,n)=>_a(e,t,n),e.decodeAsync=async(t,n)=>va(e,t,n),e.safeEncode=(t,n)=>ya(e,t,n),e.safeDecode=(t,n)=>ba(e,t,n),e.safeEncodeAsync=async(t,n)=>xa(e,t,n),e.safeDecodeAsync=async(t,n)=>Sa(e,t,n),V(e,`ZodType`,{check(...e){let t=this.def;return this.clone(S(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return E(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(Vo(e,t))},superRefine(e,t){return this.check(Ho(e,t))},overwrite(e){return this.check(I(e))},optional(){return So(this)},exactOptional(){return wo(this)},nullable(){return Eo(this)},nullish(){return So(Eo(this))},nonoptional(e){return Mo(this,e)},array(){return Y(this)},or(e){return Z([this,e])},and(e){return mo(this,e)},transform(e){return Io(this,bo(e))},default(e){return Oo(this,e)},prefault(e){return Ao(this,e)},catch(e){return Po(this,e)},pipe(e){return Io(this,e)},readonly(){return zo(this)},describe(e){let t=this.clone();return F.add(t,{description:e}),t},meta(...e){if(e.length===0)return F.get(this);let t=this.clone();return F.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get(){return F.get(e)?.description},configurable:!0}),e)),wa=_(`_ZodString`,(e,t)=>{rn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Pi(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,V(e,`_ZodString`,{regex(...e){return this.check(pi(...e))},includes(...e){return this.check(gi(...e))},startsWith(...e){return this.check(_i(...e))},endsWith(...e){return this.check(vi(...e))},min(...e){return this.check(di(...e))},max(...e){return this.check(ui(...e))},length(...e){return this.check(fi(...e))},nonempty(...e){return this.check(di(1,...e))},lowercase(e){return this.check(mi(e))},uppercase(e){return this.check(hi(e))},trim(){return this.check(bi())},normalize(...e){return this.check(yi(...e))},toLowerCase(){return this.check(xi())},toUpperCase(){return this.check(Si())},slugify(){return this.check(Ci())}})}),Ta=_(`ZodString`,(e,t)=>{rn.init(e,t),wa.init(e,t),e.email=t=>e.check(wr(Ea,t)),e.url=t=>e.check(Ar(ka,t)),e.jwt=t=>e.check(Gr(Ga,t)),e.emoji=t=>e.check(jr(ja,t)),e.guid=t=>e.check(Tr(Da,t)),e.uuid=t=>e.check(Er(Oa,t)),e.uuidv4=t=>e.check(Dr(Oa,t)),e.uuidv6=t=>e.check(Or(Oa,t)),e.uuidv7=t=>e.check(kr(Oa,t)),e.nanoid=t=>e.check(Mr(Ma,t)),e.guid=t=>e.check(Tr(Da,t)),e.cuid=t=>e.check(Nr(Na,t)),e.cuid2=t=>e.check(Pr(Pa,t)),e.ulid=t=>e.check(Fr(Fa,t)),e.base64=t=>e.check(Hr(Ha,t)),e.base64url=t=>e.check(Ur(Ua,t)),e.xid=t=>e.check(Ir(Ia,t)),e.ksuid=t=>e.check(Lr(La,t)),e.ipv4=t=>e.check(Rr(Ra,t)),e.ipv6=t=>e.check(zr(za,t)),e.cidrv4=t=>e.check(Br(Ba,t)),e.cidrv6=t=>e.check(Vr(Va,t)),e.e164=t=>e.check(Wr(Wa,t)),e.datetime=t=>e.check(z(t)),e.date=t=>e.check(oa(t)),e.time=t=>e.check(ca(t)),e.duration=t=>e.check(ua(t))});function U(e){return Cr(Ta,e)}var W=_(`ZodStringFormat`,(e,t)=>{P.init(e,t),wa.init(e,t)}),Ea=_(`ZodEmail`,(e,t)=>{sn.init(e,t),W.init(e,t)}),Da=_(`ZodGUID`,(e,t)=>{an.init(e,t),W.init(e,t)}),Oa=_(`ZodUUID`,(e,t)=>{on.init(e,t),W.init(e,t)});function G(e){return Er(Oa,e)}var ka=_(`ZodURL`,(e,t)=>{cn.init(e,t),W.init(e,t)});function Aa(e){return Ar(ka,e)}var ja=_(`ZodEmoji`,(e,t)=>{ln.init(e,t),W.init(e,t)}),Ma=_(`ZodNanoID`,(e,t)=>{un.init(e,t),W.init(e,t)}),Na=_(`ZodCUID`,(e,t)=>{dn.init(e,t),W.init(e,t)}),Pa=_(`ZodCUID2`,(e,t)=>{fn.init(e,t),W.init(e,t)}),Fa=_(`ZodULID`,(e,t)=>{pn.init(e,t),W.init(e,t)}),Ia=_(`ZodXID`,(e,t)=>{mn.init(e,t),W.init(e,t)}),La=_(`ZodKSUID`,(e,t)=>{hn.init(e,t),W.init(e,t)}),Ra=_(`ZodIPv4`,(e,t)=>{bn.init(e,t),W.init(e,t)}),za=_(`ZodIPv6`,(e,t)=>{xn.init(e,t),W.init(e,t)}),Ba=_(`ZodCIDRv4`,(e,t)=>{Sn.init(e,t),W.init(e,t)}),Va=_(`ZodCIDRv6`,(e,t)=>{Cn.init(e,t),W.init(e,t)}),Ha=_(`ZodBase64`,(e,t)=>{Tn.init(e,t),W.init(e,t)}),Ua=_(`ZodBase64URL`,(e,t)=>{Dn.init(e,t),W.init(e,t)}),Wa=_(`ZodE164`,(e,t)=>{On.init(e,t),W.init(e,t)}),Ga=_(`ZodJWT`,(e,t)=>{An.init(e,t),W.init(e,t)}),Ka=_(`ZodNumber`,(e,t)=>{jn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fi(e,t,n,r),V(e,`ZodNumber`,{gt(e,t){return this.check(si(e,t))},gte(e,t){return this.check(ci(e,t))},min(e,t){return this.check(ci(e,t))},lt(e,t){return this.check(ai(e,t))},lte(e,t){return this.check(oi(e,t))},max(e,t){return this.check(oi(e,t))},int(e){return this.check(Ja(e))},safe(e){return this.check(Ja(e))},positive(e){return this.check(si(0,e))},nonnegative(e){return this.check(ci(0,e))},negative(e){return this.check(ai(0,e))},nonpositive(e){return this.check(oi(0,e))},multipleOf(e,t){return this.check(li(e,t))},step(e,t){return this.check(li(e,t))},finite(){return this}});let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function K(e){return Xr(Ka,e)}var qa=_(`ZodNumberFormat`,(e,t)=>{Mn.init(e,t),Ka.init(e,t)});function Ja(e){return Zr(qa,e)}var Ya=_(`ZodBoolean`,(e,t)=>{Nn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ii(e,t,n,r)});function q(e){return Qr(Ya,e)}var Xa=_(`ZodUndefined`,(e,t)=>{Pn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ri(e,t,n,r)});function Za(e){return $r(Xa,e)}var Qa=_(`ZodNull`,(e,t)=>{Fn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Li(e,t,n,r)});function $a(e){return ei(Qa,e)}var eo=_(`ZodAny`,(e,t)=>{In.init(e,t),H.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function to(){return ti(eo)}var no=_(`ZodUnknown`,(e,t)=>{Ln.init(e,t),H.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function J(){return ni(no)}var ro=_(`ZodNever`,(e,t)=>{Rn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zi(e,t,n,r)});function io(e){return ri(ro,e)}var ao=_(`ZodDate`,(e,t)=>{zn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bi(e,t,n,r),e.min=(t,n)=>e.check(ci(t,n)),e.max=(t,n)=>e.check(oi(t,n));let n=e._zod.bag;e.minDate=n.minimum?new Date(n.minimum):null,e.maxDate=n.maximum?new Date(n.maximum):null});function oo(e){return ii(ao,e)}var so=_(`ZodArray`,(e,t)=>{Vn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Gi(e,t,n,r),e.element=t.element,V(e,`ZodArray`,{min(e,t){return this.check(di(e,t))},nonempty(e){return this.check(di(1,e))},max(e,t){return this.check(ui(e,t))},length(e,t){return this.check(fi(e,t))},unwrap(){return this.element}})});function Y(e,t){return wi(so,e,t)}var co=_(`ZodObject`,(e,t)=>{Kn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ki(e,t,n,r),b(e,`shape`,()=>t.shape),V(e,`ZodObject`,{keyof(){return $(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:J()})},loose(){return this.clone({...this._zod.def,catchall:J()})},strict(){return this.clone({...this._zod.def,catchall:io()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return je(this,e)},safeExtend(e){return Me(this,e)},merge(e){return Ne(this,e)},pick(e){return ke(this,e)},omit(e){return Ae(this,e)},partial(...e){return Pe(xo,this,e[0])},required(...e){return Fe(jo,this,e[0])}})});function X(e,t){return new co({type:`object`,shape:e??{},...D(t)})}var lo=_(`ZodUnion`,(e,t)=>{Jn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qi(e,t,n,r),e.options=t.options});function Z(e,t){return new lo({type:`union`,options:e,...D(t)})}var uo=_(`ZodDiscriminatedUnion`,(e,t)=>{lo.init(e,t),Yn.init(e,t)});function fo(e,t,n){return new uo({type:`union`,options:t,discriminator:e,...D(n)})}var po=_(`ZodIntersection`,(e,t)=>{Xn.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ji(e,t,n,r)});function mo(e,t){return new po({type:`intersection`,left:e,right:t})}var ho=_(`ZodRecord`,(e,t)=>{$n.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Yi(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function Q(e,t,n){return!t||!t._zod?new ho({type:`record`,keyType:U(),valueType:e,...D(t)}):new ho({type:`record`,keyType:e,valueType:t,...D(n)})}var go=_(`ZodEnum`,(e,t)=>{er.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vi(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new go({...t,checks:[],...D(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new go({...t,checks:[],...D(r),entries:i})}});function $(e,t){return new go({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...D(t)})}var _o=_(`ZodLiteral`,(e,t)=>{tr.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hi(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function vo(e,t){return new _o({type:`literal`,values:Array.isArray(e)?e:[e],...D(t)})}var yo=_(`ZodTransform`,(e,t)=>{nr.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Wi(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new fe(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(j(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(j(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=i,n.fallback=!0,n)}});function bo(e){return new yo({type:`transform`,transform:e})}var xo=_(`ZodOptional`,(e,t)=>{ir.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ra(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function So(e){return new xo({type:`optional`,innerType:e})}var Co=_(`ZodExactOptional`,(e,t)=>{ar.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ra(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function wo(e){return new Co({type:`optional`,innerType:e})}var To=_(`ZodNullable`,(e,t)=>{or.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Xi(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Eo(e){return new To({type:`nullable`,innerType:e})}var Do=_(`ZodDefault`,(e,t)=>{sr.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Qi(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Oo(e,t){return new Do({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Te(t)}})}var ko=_(`ZodPrefault`,(e,t)=>{lr.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>$i(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Ao(e,t){return new ko({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Te(t)}})}var jo=_(`ZodNonOptional`,(e,t)=>{ur.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Zi(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Mo(e,t){return new jo({type:`nonoptional`,innerType:e,...D(t)})}var No=_(`ZodCatch`,(e,t)=>{fr.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ea(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function Po(e,t){return new No({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var Fo=_(`ZodPipe`,(e,t)=>{pr.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ta(e,t,n,r),e.in=t.in,e.out=t.out});function Io(e,t){return new Fo({type:`pipe`,in:e,out:t})}var Lo=_(`ZodPreprocess`,(e,t)=>{Fo.init(e,t),hr.init(e,t)}),Ro=_(`ZodReadonly`,(e,t)=>{gr.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>na(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function zo(e){return new Ro({type:`readonly`,innerType:e})}var Bo=_(`ZodCustom`,(e,t)=>{vr.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ui(e,t,n,r)});function Vo(e,t={}){return Ti(Bo,e,t)}function Ho(e,t){return Ei(e,t)}function Uo(e,t){return new Lo({type:`pipe`,in:bo(e),out:t})}var Wo=Z([q(),X({list:q().optional(),show:q().optional(),edit:q().optional(),filter:q().optional()})]),Go=X({list:U().optional(),show:U().optional(),edit:U().optional(),filter:U().optional()}),Ko=X({field:U(),equals:J().optional(),notEquals:J().optional(),in:Y(J()).optional(),notIn:Y(J()).optional(),isEmpty:q().optional(),defaultWhenEmpty:q().optional()}),qo=X({key:U(),label:U().optional(),type:$([`string`,`number`,`boolean`,`textarea`,`select`,`autocomplete`]).optional(),description:U().optional(),placeholder:U().optional(),isRequired:q().optional(),availableValues:Y(Z([U(),X({value:U(),label:U()})])).optional(),suggestionsResource:U().optional(),suggestionsField:U().optional()}),Jo=X({label:U().optional(),description:U().optional(),type:U().optional(),isVisible:Wo.optional(),isAccessible:Z([q(),J()]).optional(),isSortable:q().optional(),isRequired:q().optional(),isDisabled:q().optional(),isSearchable:q().optional(),isArray:q().optional(),reference:U().optional(),availableValues:Y(Z([U(),X({value:U(),label:U()})])).optional(),components:Go.optional(),position:K().optional(),showWhen:Ko.optional(),keyValueFields:Y(qo).optional(),custom:Q(U(),J()).optional()}),Yo=X({name:U(),icon:U().optional()}),Xo=X({isVisible:Z([q(),J()]).optional(),isAccessible:Z([q(),J()]).optional(),nesting:Z([U(),Yo,Y(Z([U(),Yo]))]).optional(),guard:U().optional(),component:Z([U(),$a()]).optional(),custom:Q(U(),J()).optional()}).passthrough(),Zo=X({enabled:q().optional(),ttl:K().int().nonnegative().optional()}),Qo=X({strategy:$([`ttl`,`tag-only`,`off`]).optional(),ttl:K().int().nonnegative().optional(),list:Zo.optional(),show:Zo.optional(),search:Zo.optional(),http:Zo.optional()}),$o=Z([vo(!1),Qo]),es=X({name:U().optional(),icon:U().optional(),group:U().optional()}).or($a()),ts=X({resourceId:U(),foreignKey:U(),label:U().optional()});X({id:U().optional(),name:U().optional(),titleProperty:U().optional(),navigation:es.optional(),properties:Q(U(),Jo).optional(),actions:Q(U(),Xo).optional(),listProperties:Y(U()).optional(),showProperties:Y(U()).optional(),editProperties:Y(U()).optional(),filterProperties:Y(U()).optional(),sort:X({sortBy:U(),direction:$([`asc`,`desc`])}).optional(),relatedResources:Y(ts).optional(),showRelatedResources:q().optional(),cache:$o.optional()});var ns=$([`kpi`,`line`,`area`,`bar`]),rs=$([`count`,`sum`,`avg`,`min`,`max`]),is=$([`day`,`week`,`month`,`year`,`all`]);$([`7d`,`30d`,`90d`,`1y`,`all`,`custom`]);var as=$([`half`,`full`]),os=fo(`preset`,[X({preset:$([`7d`,`30d`,`90d`,`1y`,`all`])}),X({preset:vo(`custom`),from:oa(),to:oa()})]),ss=X({id:G(),title:U().max(120).default(``),resource:U().min(1),visualisation:ns,dateField:U().min(1),step:is,metric:rs,field:U().min(1).optional(),groupBy:U().min(1).optional(),topN:K().int().min(1).max(50).default(10),groupByLabelResource:U().min(1).optional(),width:as.default(`half`),filters:Q(U(),U()).default({}),quickFilters:Y(U()).default([]),timeRange:os,groupId:G().optional(),order:K().int().default(0),createdAt:z(),updatedAt:z()}).refine(e=>e.metric===`count`||!!e.field,{message:`field is required when metric is not count`,path:[`field`]}).refine(e=>e.visualisation!==`kpi`||e.step===`all`,{message:`KPI charts must use step 'all'`,path:[`step`]}).refine(e=>e.visualisation===`kpi`||e.step!==`all`,{message:`non-KPI charts cannot use step 'all'`,path:[`step`]}),cs=X({id:G(),name:U().min(1).max(120),order:K().int().default(0),createdAt:z(),updatedAt:z()}),ls=X({version:vo(1),charts:Y(ss),groups:Y(cs).default([])}),us={version:1,charts:[],groups:[]};X({id:G().optional(),resourceId:U().min(1),action:U().min(1),recordId:U().optional(),recordIds:Y(U()).optional(),recordTitle:U().optional(),userId:U().optional(),payload:Q(U(),J()).optional(),result:Q(U(),J()).optional(),at:K().int()});var ds=U().min(1).max(120);X({id:G(),name:U().min(1).max(120),url:Aa(),events:Y(ds).min(1),resourceId:U().min(1).nullable().default(null),enabled:q().default(!0),secret:U().min(8).optional(),headers:Q(U(),U()).default({}),filters:Q(U(),U()).default({}),payloadFields:Y(U().min(1)).default([]),createdAt:z(),updatedAt:z()});var fs=$([`pending`,`success`,`failed`]);X({id:G(),webhookId:G(),event:ds,payload:Q(U(),J()),status:fs,responseStatus:K().int().optional(),responseBody:U().optional(),error:U().optional(),attempt:K().int().min(1).default(1),createdAt:z(),deliveredAt:z().optional()}),X({scope:$([`global`,`user`,`resource`]),scopeId:U().nullable(),key:U().min(1).max(200),value:J(),updatedAt:z()});var ps=$([`create`,`update`,`delete`]);X({id:G(),resourceId:U().min(1),recordId:U().min(1),op:ps,userId:U().optional(),snapshot:Q(U(),J()),snapshotBefore:Q(U(),J()).optional(),createdAt:z()});var ms=$([`pending`,`running`,`succeeded`,`failed`,`cancelled`]);X({id:G(),kind:U().min(1).max(120),resourceId:U().optional(),recordId:U().optional(),userId:U().optional(),status:ms,input:Q(U(),J()).default({}),output:Q(U(),J()).optional(),error:U().optional(),progress:K().int().min(0).max(100).nullable().default(null),createdAt:z(),updatedAt:z(),startedAt:z().optional(),finishedAt:z().optional()}),X({id:G(),taskId:G(),type:U().min(1).max(40),data:Q(U(),J()).default({}),createdAt:z()}),X({key:U().min(1).max(400),value:J(),tags:Y(U()).default([]),expiresAt:z().nullable(),createdAt:z(),updatedAt:z()});export{Ge as _,Za as a,q as c,X as d,Uo as f,J as g,Z as h,$a as i,oo as l,U as m,ss as n,to as o,Q as p,ls as r,Y as s,us as t,K as u,qe as v,Be as y};
|
|
65
|
+
//# sourceMappingURL=src-WCKJSOko.js.map
|
|
Binary file
|
|
Binary file
|