includio-cms 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/API.md +20 -20
  2. package/CHANGELOG.md +111 -0
  3. package/DOCS.md +1169 -146
  4. package/README.md +138 -32
  5. package/ROADMAP.md +8 -330
  6. package/dist/admin/api/rest/handler.d.ts +13 -1
  7. package/dist/admin/api/rest/handler.js +13 -1
  8. package/dist/admin/api/rest/middleware/generateApiKey.d.ts +9 -0
  9. package/dist/admin/api/rest/middleware/generateApiKey.js +9 -0
  10. package/dist/admin/client/collection/collection-entries.svelte +1 -1
  11. package/dist/admin/client/collection/empty-state.svelte +1 -1
  12. package/dist/admin/client/collection/row-actions.svelte +3 -3
  13. package/dist/admin/client/collection/table-toolbar.svelte +3 -1
  14. package/dist/admin/client/entry/entry-header.svelte +3 -1
  15. package/dist/admin/client/users/create-user-dialog.svelte +4 -4
  16. package/dist/admin/client/users/delete-user-dialog.svelte +2 -0
  17. package/dist/admin/client/users/users-page.svelte +3 -2
  18. package/dist/admin/components/media/file-upload.svelte +2 -0
  19. package/dist/ai-claude/index.d.ts +9 -1
  20. package/dist/ai-claude/index.js +9 -1
  21. package/dist/ai-openai/index.d.ts +9 -1
  22. package/dist/ai-openai/index.js +9 -1
  23. package/dist/cli/index.js +115 -13
  24. package/dist/cms/runtime/schema.d.ts +2 -0
  25. package/dist/cms/runtime/schema.js +4 -0
  26. package/dist/cms/runtime/types.d.ts +1 -1
  27. package/dist/core/cms.d.ts +13 -1
  28. package/dist/core/cms.js +13 -1
  29. package/dist/core/errors.d.ts +71 -0
  30. package/dist/core/errors.js +179 -0
  31. package/dist/core/server/consentLogs/operations/create.d.ts +13 -1
  32. package/dist/core/server/consentLogs/operations/create.js +13 -1
  33. package/dist/core/server/entries/operations/create.js +6 -1
  34. package/dist/core/server/entries/operations/get.js +14 -3
  35. package/dist/core/server/entries/operations/resolveEntry.d.ts +32 -1
  36. package/dist/core/server/entries/operations/resolveEntry.js +36 -4
  37. package/dist/core/server/entries/operations/update.js +5 -1
  38. package/dist/core/server/fields/utils/resolveMedia.d.ts +18 -1
  39. package/dist/core/server/fields/utils/resolveMedia.js +13 -1
  40. package/dist/core/server/forms/submissions/operations/create.d.ts +21 -1
  41. package/dist/core/server/forms/submissions/operations/create.js +18 -2
  42. package/dist/core/server/forms/submissions/utils/parseMultipart.d.ts +15 -1
  43. package/dist/core/server/forms/submissions/utils/parseMultipart.js +15 -1
  44. package/dist/db-postgres/index.d.ts +10 -0
  45. package/dist/db-postgres/index.js +10 -0
  46. package/dist/email-nodemailer/index.d.ts +13 -1
  47. package/dist/email-nodemailer/index.js +13 -1
  48. package/dist/entity/index.d.ts +16 -1
  49. package/dist/entity/index.js +16 -1
  50. package/dist/files-local/index.d.ts +12 -1
  51. package/dist/files-local/index.js +12 -1
  52. package/dist/paraglide/messages/_index.d.ts +3 -36
  53. package/dist/paraglide/messages/_index.js +3 -71
  54. package/dist/paraglide/messages/hello_world.d.ts +5 -0
  55. package/dist/paraglide/messages/hello_world.js +33 -0
  56. package/dist/paraglide/messages/login_hello.d.ts +16 -0
  57. package/dist/paraglide/messages/login_hello.js +34 -0
  58. package/dist/paraglide/messages/login_please_login.d.ts +16 -0
  59. package/dist/paraglide/messages/login_please_login.js +34 -0
  60. package/dist/server/auth.d.ts +11 -0
  61. package/dist/server/auth.js +11 -0
  62. package/dist/sveltekit/config.d.ts +67 -4
  63. package/dist/sveltekit/config.js +73 -4
  64. package/dist/sveltekit/server/handle.d.ts +15 -1
  65. package/dist/sveltekit/server/handle.js +15 -1
  66. package/dist/sveltekit/server/layout.d.ts +12 -1
  67. package/dist/sveltekit/server/layout.js +12 -1
  68. package/dist/sveltekit/server/preview.d.ts +21 -1
  69. package/dist/sveltekit/server/preview.js +21 -1
  70. package/dist/types/cms.schema.d.ts +452 -0
  71. package/dist/types/cms.schema.js +629 -0
  72. package/dist/updates/0.22.0/index.d.ts +2 -0
  73. package/dist/updates/0.22.0/index.js +75 -0
  74. package/dist/updates/0.23.0/index.d.ts +2 -0
  75. package/dist/updates/0.23.0/index.js +21 -0
  76. package/dist/updates/index.js +3 -1
  77. package/package.json +4 -1
  78. package/dist/paraglide/messages/en.d.ts +0 -5
  79. package/dist/paraglide/messages/en.js +0 -14
  80. package/dist/paraglide/messages/pl.d.ts +0 -5
  81. package/dist/paraglide/messages/pl.js +0 -14
@@ -69,8 +69,22 @@ const detectBrowserContext = async ({ event, resolve }) => {
69
69
  return resolve(event);
70
70
  };
71
71
  /**
72
- * SvelteKit `Handle[]` array that initializes the CMS, generates runtime artifacts, wires auth/admin guards, and exposes `event.locals.cmsContext`. Compose with `sequence()` in `hooks.server.ts`.
72
+ * SvelteKit `Handle[]` array that initializes the CMS, generates runtime
73
+ * artifacts, wires auth/admin guards, and exposes `event.locals.cmsContext`.
74
+ * Compose with `sequence()` in `hooks.server.ts`.
75
+ *
76
+ * @param cmsConfig - The output of `defineConfig({ ... })`.
77
+ * @returns An array of `Handle` middlewares. Pass to `sequence()`.
73
78
  * @public
79
+ * @example
80
+ * ```ts
81
+ * // src/hooks.server.ts
82
+ * import { sequence } from '@sveltejs/kit/hooks';
83
+ * import { includioCMS } from 'includio-cms/sveltekit/server';
84
+ * import cmsConfig from '../../cms/cms.config';
85
+ *
86
+ * export const handle = sequence(...includioCMS(cmsConfig));
87
+ * ```
74
88
  */
75
89
  export function includioCMS(cmsConfig) {
76
90
  generateRuntime(cmsConfig); // Generate runtime code based on the CMS config
@@ -1,7 +1,18 @@
1
1
  import type { RequestEvent } from '@sveltejs/kit';
2
2
  /**
3
- * Returns `cmsContext` from `event.locals` for use in a SvelteKit layout `load`. Drop into your `+layout.server.ts`.
3
+ * Returns `cmsContext` from `event.locals` for use in a SvelteKit layout
4
+ * `load`. Drop into your `+layout.server.ts`.
5
+ *
6
+ * @param event - The SvelteKit `RequestEvent`.
7
+ * @returns `{ cmsContext }` with browser/UA-derived hints (e.g. `preferMp4`).
4
8
  * @public
9
+ * @example
10
+ * ```ts
11
+ * // src/routes/+layout.server.ts
12
+ * import { cmsLayoutLoad } from 'includio-cms/sveltekit/server';
13
+ *
14
+ * export const load = (event) => cmsLayoutLoad(event);
15
+ * ```
5
16
  */
6
17
  export declare function cmsLayoutLoad(event: RequestEvent): {
7
18
  cmsContext: any;
@@ -1,6 +1,17 @@
1
1
  /**
2
- * Returns `cmsContext` from `event.locals` for use in a SvelteKit layout `load`. Drop into your `+layout.server.ts`.
2
+ * Returns `cmsContext` from `event.locals` for use in a SvelteKit layout
3
+ * `load`. Drop into your `+layout.server.ts`.
4
+ *
5
+ * @param event - The SvelteKit `RequestEvent`.
6
+ * @returns `{ cmsContext }` with browser/UA-derived hints (e.g. `preferMp4`).
3
7
  * @public
8
+ * @example
9
+ * ```ts
10
+ * // src/routes/+layout.server.ts
11
+ * import { cmsLayoutLoad } from 'includio-cms/sveltekit/server';
12
+ *
13
+ * export const load = (event) => cmsLayoutLoad(event);
14
+ * ```
4
15
  */
5
16
  export function cmsLayoutLoad(event) {
6
17
  return {
@@ -1,8 +1,28 @@
1
1
  import type { Entry } from '../../types/entries.js';
2
2
  import { type RequestEvent } from '@sveltejs/kit';
3
3
  /**
4
- * Resolves the preview entry from a `?preview=<versionId>` query param. Requires an authenticated session — throws `Unauthorized` otherwise.
4
+ * Resolves the preview entry from a `?preview=<versionId>` query param.
5
+ * Use it from a frontend page `load` to render unpublished/draft content for
6
+ * authenticated editors.
7
+ *
8
+ * Requires an authenticated session — throws `Unauthorized` otherwise.
9
+ *
10
+ * @param event - The SvelteKit `RequestEvent`.
11
+ * @param options - `language` is the locale to populate.
12
+ * @returns The populated preview `Entry`, or `null` when no `?preview=` param.
13
+ * @throws {Error} `'Unauthorized'` when the request lacks a valid session.
5
14
  * @public
15
+ * @example
16
+ * ```ts
17
+ * // src/routes/blog/[slug]/+page.server.ts
18
+ * import { getPreviewEntry } from 'includio-cms/sveltekit/server';
19
+ *
20
+ * export const load = async (event) => {
21
+ * const preview = await getPreviewEntry(event, { language: 'en' });
22
+ * if (preview) return { entry: preview };
23
+ * // ...fall through to published lookup
24
+ * };
25
+ * ```
6
26
  */
7
27
  export declare function getPreviewEntry(event: RequestEvent, options: {
8
28
  language: string;
@@ -1,8 +1,28 @@
1
1
  import { getEntryVersion } from '../../core/server/entries/operations/get.js';
2
2
  import {} from '@sveltejs/kit';
3
3
  /**
4
- * Resolves the preview entry from a `?preview=<versionId>` query param. Requires an authenticated session — throws `Unauthorized` otherwise.
4
+ * Resolves the preview entry from a `?preview=<versionId>` query param.
5
+ * Use it from a frontend page `load` to render unpublished/draft content for
6
+ * authenticated editors.
7
+ *
8
+ * Requires an authenticated session — throws `Unauthorized` otherwise.
9
+ *
10
+ * @param event - The SvelteKit `RequestEvent`.
11
+ * @param options - `language` is the locale to populate.
12
+ * @returns The populated preview `Entry`, or `null` when no `?preview=` param.
13
+ * @throws {Error} `'Unauthorized'` when the request lacks a valid session.
5
14
  * @public
15
+ * @example
16
+ * ```ts
17
+ * // src/routes/blog/[slug]/+page.server.ts
18
+ * import { getPreviewEntry } from 'includio-cms/sveltekit/server';
19
+ *
20
+ * export const load = async (event) => {
21
+ * const preview = await getPreviewEntry(event, { language: 'en' });
22
+ * if (preview) return { entry: preview };
23
+ * // ...fall through to published lookup
24
+ * };
25
+ * ```
6
26
  */
7
27
  export async function getPreviewEntry(event, options) {
8
28
  const preview = event.url.searchParams.get('preview');
@@ -0,0 +1,452 @@
1
+ import { z } from 'zod';
2
+ type FieldDef = {
3
+ type: string;
4
+ slug: string;
5
+ } & Record<string, unknown>;
6
+ declare function getLangCode(entry: unknown): string | null;
7
+ /**
8
+ * Final config schema. Use `cmsConfigSchema.safeParse(input)` and pass any
9
+ * resulting `ZodError` to `formatConfigError` (in `core/errors.ts`) to get a
10
+ * human-readable {@link import('../core/errors.js').ConfigValidationError}.
11
+ *
12
+ * Cross-field invariants enforced via `superRefine`:
13
+ * - `languages` has at most one `default: true`.
14
+ * - `collections[].slug` are unique.
15
+ * - `singles[].slug` are unique.
16
+ * - `forms[].slug` are unique.
17
+ * - Each `relation` field's `collection` references a declared collection.
18
+ * - `apiKeys[].permissions` reference declared collection slugs.
19
+ */
20
+ export declare const cmsConfigSchema: z.ZodObject<{
21
+ languages: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
22
+ code: z.ZodString;
23
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
24
+ default: z.ZodOptional<z.ZodBoolean>;
25
+ }, z.core.$loose>]>>;
26
+ collections: z.ZodOptional<z.ZodArray<z.ZodObject<{
27
+ entryAdminTitle: z.ZodOptional<z.ZodString>;
28
+ labels: z.ZodOptional<z.ZodObject<{
29
+ singular: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
30
+ plural: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
31
+ }, z.core.$strip>>;
32
+ orderable: z.ZodOptional<z.ZodBoolean>;
33
+ listColumns: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ slug: z.ZodString;
35
+ sidebarIcon: z.ZodOptional<z.ZodString>;
36
+ previewUrl: z.ZodOptional<z.ZodString>;
37
+ fields: z.ZodArray<z.ZodType<FieldDef, unknown, z.core.$ZodTypeInternals<FieldDef, unknown>>>;
38
+ layout: z.ZodOptional<z.ZodUnknown>;
39
+ slugField: z.ZodOptional<z.ZodString>;
40
+ pathTemplate: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$loose>>>;
42
+ singles: z.ZodOptional<z.ZodArray<z.ZodObject<{
43
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
44
+ slug: z.ZodString;
45
+ sidebarIcon: z.ZodOptional<z.ZodString>;
46
+ previewUrl: z.ZodOptional<z.ZodString>;
47
+ fields: z.ZodArray<z.ZodType<FieldDef, unknown, z.core.$ZodTypeInternals<FieldDef, unknown>>>;
48
+ layout: z.ZodOptional<z.ZodUnknown>;
49
+ slugField: z.ZodOptional<z.ZodString>;
50
+ pathTemplate: z.ZodOptional<z.ZodString>;
51
+ }, z.core.$loose>>>;
52
+ forms: z.ZodOptional<z.ZodArray<z.ZodObject<{
53
+ slug: z.ZodString;
54
+ sidebarIcon: z.ZodOptional<z.ZodString>;
55
+ fields: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
56
+ type: z.ZodLiteral<"text">;
57
+ minLength: z.ZodOptional<z.ZodNumber>;
58
+ maxLength: z.ZodOptional<z.ZodNumber>;
59
+ slug: z.ZodString;
60
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
61
+ required: z.ZodOptional<z.ZodBoolean>;
62
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
63
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
64
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
65
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
66
+ }, z.core.$loose>, z.ZodObject<{
67
+ type: z.ZodLiteral<"email">;
68
+ slug: z.ZodString;
69
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
70
+ required: z.ZodOptional<z.ZodBoolean>;
71
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
72
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
73
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
74
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
75
+ }, z.core.$loose>, z.ZodObject<{
76
+ type: z.ZodLiteral<"textarea">;
77
+ minLength: z.ZodOptional<z.ZodNumber>;
78
+ maxLength: z.ZodOptional<z.ZodNumber>;
79
+ slug: z.ZodString;
80
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
81
+ required: z.ZodOptional<z.ZodBoolean>;
82
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
83
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
84
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
85
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
86
+ }, z.core.$loose>, z.ZodObject<{
87
+ type: z.ZodLiteral<"checkbox">;
88
+ slug: z.ZodString;
89
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
90
+ required: z.ZodOptional<z.ZodBoolean>;
91
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
92
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
93
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
94
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
95
+ }, z.core.$loose>, z.ZodObject<{
96
+ type: z.ZodLiteral<"select">;
97
+ options: z.ZodArray<z.ZodObject<{
98
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
99
+ value: z.ZodString;
100
+ }, z.core.$strip>>;
101
+ slug: z.ZodString;
102
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
103
+ required: z.ZodOptional<z.ZodBoolean>;
104
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
105
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
106
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
107
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
108
+ }, z.core.$loose>, z.ZodObject<{
109
+ type: z.ZodLiteral<"file">;
110
+ accept: z.ZodOptional<z.ZodString>;
111
+ maxSize: z.ZodOptional<z.ZodNumber>;
112
+ slug: z.ZodString;
113
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
114
+ required: z.ZodOptional<z.ZodBoolean>;
115
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
116
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
117
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
118
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
119
+ }, z.core.$loose>], "type">>;
120
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>;
121
+ notificationEmailAddresses: z.ZodOptional<z.ZodArray<z.ZodString>>;
122
+ }, z.core.$loose>>>;
123
+ db: z.ZodCustom<unknown, unknown>;
124
+ files: z.ZodCustom<unknown, unknown>;
125
+ email: z.ZodOptional<z.ZodCustom<unknown, unknown>>;
126
+ auth: z.ZodOptional<z.ZodObject<{
127
+ secret: z.ZodString;
128
+ baseURL: z.ZodOptional<z.ZodString>;
129
+ }, z.core.$loose>>;
130
+ plugins: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
131
+ ai: z.ZodOptional<z.ZodCustom<unknown, unknown>>;
132
+ media: z.ZodOptional<z.ZodUnknown>;
133
+ apiKeys: z.ZodOptional<z.ZodArray<z.ZodObject<{
134
+ key: z.ZodString;
135
+ name: z.ZodOptional<z.ZodString>;
136
+ role: z.ZodOptional<z.ZodEnum<{
137
+ admin: "admin";
138
+ editor: "editor";
139
+ }>>;
140
+ expiresAt: z.ZodOptional<z.ZodString>;
141
+ rotatedAt: z.ZodOptional<z.ZodString>;
142
+ permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
143
+ }, z.core.$loose>>>;
144
+ typography: z.ZodOptional<z.ZodObject<{
145
+ fixOrphans: z.ZodOptional<z.ZodBoolean>;
146
+ }, z.core.$loose>>;
147
+ sidebarHelp: z.ZodOptional<z.ZodBoolean>;
148
+ shop: z.ZodOptional<z.ZodUnknown>;
149
+ cmp: z.ZodOptional<z.ZodUnknown>;
150
+ }, z.core.$loose>;
151
+ export type CmsConfigSchema = z.infer<typeof cmsConfigSchema>;
152
+ /** Exposed for tests only. Not part of the public API. */
153
+ export declare const _internal: {
154
+ fieldSchema: z.ZodType<FieldDef, unknown, z.core.$ZodTypeInternals<FieldDef, unknown>>;
155
+ formFieldSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
156
+ type: z.ZodLiteral<"text">;
157
+ minLength: z.ZodOptional<z.ZodNumber>;
158
+ maxLength: z.ZodOptional<z.ZodNumber>;
159
+ slug: z.ZodString;
160
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
161
+ required: z.ZodOptional<z.ZodBoolean>;
162
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
163
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
164
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
165
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
166
+ }, z.core.$loose>, z.ZodObject<{
167
+ type: z.ZodLiteral<"email">;
168
+ slug: z.ZodString;
169
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
170
+ required: z.ZodOptional<z.ZodBoolean>;
171
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
172
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
173
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
174
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
175
+ }, z.core.$loose>, z.ZodObject<{
176
+ type: z.ZodLiteral<"textarea">;
177
+ minLength: z.ZodOptional<z.ZodNumber>;
178
+ maxLength: z.ZodOptional<z.ZodNumber>;
179
+ slug: z.ZodString;
180
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
181
+ required: z.ZodOptional<z.ZodBoolean>;
182
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
183
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
184
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
185
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
186
+ }, z.core.$loose>, z.ZodObject<{
187
+ type: z.ZodLiteral<"checkbox">;
188
+ slug: z.ZodString;
189
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
190
+ required: z.ZodOptional<z.ZodBoolean>;
191
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
192
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
193
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
194
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
195
+ }, z.core.$loose>, z.ZodObject<{
196
+ type: z.ZodLiteral<"select">;
197
+ options: z.ZodArray<z.ZodObject<{
198
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
199
+ value: z.ZodString;
200
+ }, z.core.$strip>>;
201
+ slug: z.ZodString;
202
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
203
+ required: z.ZodOptional<z.ZodBoolean>;
204
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
205
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
206
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
207
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
208
+ }, z.core.$loose>, z.ZodObject<{
209
+ type: z.ZodLiteral<"file">;
210
+ accept: z.ZodOptional<z.ZodString>;
211
+ maxSize: z.ZodOptional<z.ZodNumber>;
212
+ slug: z.ZodString;
213
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
214
+ required: z.ZodOptional<z.ZodBoolean>;
215
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
216
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
217
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
218
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
219
+ }, z.core.$loose>], "type">;
220
+ collectionSchema: z.ZodObject<{
221
+ entryAdminTitle: z.ZodOptional<z.ZodString>;
222
+ labels: z.ZodOptional<z.ZodObject<{
223
+ singular: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
224
+ plural: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
225
+ }, z.core.$strip>>;
226
+ orderable: z.ZodOptional<z.ZodBoolean>;
227
+ listColumns: z.ZodOptional<z.ZodArray<z.ZodString>>;
228
+ slug: z.ZodString;
229
+ sidebarIcon: z.ZodOptional<z.ZodString>;
230
+ previewUrl: z.ZodOptional<z.ZodString>;
231
+ fields: z.ZodArray<z.ZodType<FieldDef, unknown, z.core.$ZodTypeInternals<FieldDef, unknown>>>;
232
+ layout: z.ZodOptional<z.ZodUnknown>;
233
+ slugField: z.ZodOptional<z.ZodString>;
234
+ pathTemplate: z.ZodOptional<z.ZodString>;
235
+ }, z.core.$loose>;
236
+ singleSchema: z.ZodObject<{
237
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
238
+ slug: z.ZodString;
239
+ sidebarIcon: z.ZodOptional<z.ZodString>;
240
+ previewUrl: z.ZodOptional<z.ZodString>;
241
+ fields: z.ZodArray<z.ZodType<FieldDef, unknown, z.core.$ZodTypeInternals<FieldDef, unknown>>>;
242
+ layout: z.ZodOptional<z.ZodUnknown>;
243
+ slugField: z.ZodOptional<z.ZodString>;
244
+ pathTemplate: z.ZodOptional<z.ZodString>;
245
+ }, z.core.$loose>;
246
+ formSchema: z.ZodObject<{
247
+ slug: z.ZodString;
248
+ sidebarIcon: z.ZodOptional<z.ZodString>;
249
+ fields: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
250
+ type: z.ZodLiteral<"text">;
251
+ minLength: z.ZodOptional<z.ZodNumber>;
252
+ maxLength: z.ZodOptional<z.ZodNumber>;
253
+ slug: z.ZodString;
254
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
255
+ required: z.ZodOptional<z.ZodBoolean>;
256
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
257
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
258
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
259
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
260
+ }, z.core.$loose>, z.ZodObject<{
261
+ type: z.ZodLiteral<"email">;
262
+ slug: z.ZodString;
263
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
264
+ required: z.ZodOptional<z.ZodBoolean>;
265
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
266
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
267
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
268
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
269
+ }, z.core.$loose>, z.ZodObject<{
270
+ type: z.ZodLiteral<"textarea">;
271
+ minLength: z.ZodOptional<z.ZodNumber>;
272
+ maxLength: z.ZodOptional<z.ZodNumber>;
273
+ slug: z.ZodString;
274
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
275
+ required: z.ZodOptional<z.ZodBoolean>;
276
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
277
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
278
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
279
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
280
+ }, z.core.$loose>, z.ZodObject<{
281
+ type: z.ZodLiteral<"checkbox">;
282
+ slug: z.ZodString;
283
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
284
+ required: z.ZodOptional<z.ZodBoolean>;
285
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
286
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
287
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
288
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
289
+ }, z.core.$loose>, z.ZodObject<{
290
+ type: z.ZodLiteral<"select">;
291
+ options: z.ZodArray<z.ZodObject<{
292
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
293
+ value: z.ZodString;
294
+ }, z.core.$strip>>;
295
+ slug: z.ZodString;
296
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
297
+ required: z.ZodOptional<z.ZodBoolean>;
298
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
299
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
300
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
301
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
302
+ }, z.core.$loose>, z.ZodObject<{
303
+ type: z.ZodLiteral<"file">;
304
+ accept: z.ZodOptional<z.ZodString>;
305
+ maxSize: z.ZodOptional<z.ZodNumber>;
306
+ slug: z.ZodString;
307
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
308
+ required: z.ZodOptional<z.ZodBoolean>;
309
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
310
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
311
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
312
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
313
+ }, z.core.$loose>], "type">>;
314
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>;
315
+ notificationEmailAddresses: z.ZodOptional<z.ZodArray<z.ZodString>>;
316
+ }, z.core.$loose>;
317
+ cmsConfigBaseSchema: z.ZodObject<{
318
+ languages: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
319
+ code: z.ZodString;
320
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
321
+ default: z.ZodOptional<z.ZodBoolean>;
322
+ }, z.core.$loose>]>>;
323
+ collections: z.ZodOptional<z.ZodArray<z.ZodObject<{
324
+ entryAdminTitle: z.ZodOptional<z.ZodString>;
325
+ labels: z.ZodOptional<z.ZodObject<{
326
+ singular: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
327
+ plural: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
328
+ }, z.core.$strip>>;
329
+ orderable: z.ZodOptional<z.ZodBoolean>;
330
+ listColumns: z.ZodOptional<z.ZodArray<z.ZodString>>;
331
+ slug: z.ZodString;
332
+ sidebarIcon: z.ZodOptional<z.ZodString>;
333
+ previewUrl: z.ZodOptional<z.ZodString>;
334
+ fields: z.ZodArray<z.ZodType<FieldDef, unknown, z.core.$ZodTypeInternals<FieldDef, unknown>>>;
335
+ layout: z.ZodOptional<z.ZodUnknown>;
336
+ slugField: z.ZodOptional<z.ZodString>;
337
+ pathTemplate: z.ZodOptional<z.ZodString>;
338
+ }, z.core.$loose>>>;
339
+ singles: z.ZodOptional<z.ZodArray<z.ZodObject<{
340
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
341
+ slug: z.ZodString;
342
+ sidebarIcon: z.ZodOptional<z.ZodString>;
343
+ previewUrl: z.ZodOptional<z.ZodString>;
344
+ fields: z.ZodArray<z.ZodType<FieldDef, unknown, z.core.$ZodTypeInternals<FieldDef, unknown>>>;
345
+ layout: z.ZodOptional<z.ZodUnknown>;
346
+ slugField: z.ZodOptional<z.ZodString>;
347
+ pathTemplate: z.ZodOptional<z.ZodString>;
348
+ }, z.core.$loose>>>;
349
+ forms: z.ZodOptional<z.ZodArray<z.ZodObject<{
350
+ slug: z.ZodString;
351
+ sidebarIcon: z.ZodOptional<z.ZodString>;
352
+ fields: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
353
+ type: z.ZodLiteral<"text">;
354
+ minLength: z.ZodOptional<z.ZodNumber>;
355
+ maxLength: z.ZodOptional<z.ZodNumber>;
356
+ slug: z.ZodString;
357
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
358
+ required: z.ZodOptional<z.ZodBoolean>;
359
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
360
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
361
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
362
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
363
+ }, z.core.$loose>, z.ZodObject<{
364
+ type: z.ZodLiteral<"email">;
365
+ slug: z.ZodString;
366
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
367
+ required: z.ZodOptional<z.ZodBoolean>;
368
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
369
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
370
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
371
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
372
+ }, z.core.$loose>, z.ZodObject<{
373
+ type: z.ZodLiteral<"textarea">;
374
+ minLength: z.ZodOptional<z.ZodNumber>;
375
+ maxLength: z.ZodOptional<z.ZodNumber>;
376
+ slug: z.ZodString;
377
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
378
+ required: z.ZodOptional<z.ZodBoolean>;
379
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
380
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
381
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
382
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
383
+ }, z.core.$loose>, z.ZodObject<{
384
+ type: z.ZodLiteral<"checkbox">;
385
+ slug: z.ZodString;
386
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
387
+ required: z.ZodOptional<z.ZodBoolean>;
388
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
389
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
390
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
391
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
392
+ }, z.core.$loose>, z.ZodObject<{
393
+ type: z.ZodLiteral<"select">;
394
+ options: z.ZodArray<z.ZodObject<{
395
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
396
+ value: z.ZodString;
397
+ }, z.core.$strip>>;
398
+ slug: z.ZodString;
399
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
400
+ required: z.ZodOptional<z.ZodBoolean>;
401
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
402
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
403
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
404
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
405
+ }, z.core.$loose>, z.ZodObject<{
406
+ type: z.ZodLiteral<"file">;
407
+ accept: z.ZodOptional<z.ZodString>;
408
+ maxSize: z.ZodOptional<z.ZodNumber>;
409
+ slug: z.ZodString;
410
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
411
+ required: z.ZodOptional<z.ZodBoolean>;
412
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
413
+ errorMessage: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
414
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
415
+ showInDataTable: z.ZodOptional<z.ZodBoolean>;
416
+ }, z.core.$loose>], "type">>;
417
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>;
418
+ notificationEmailAddresses: z.ZodOptional<z.ZodArray<z.ZodString>>;
419
+ }, z.core.$loose>>>;
420
+ db: z.ZodCustom<unknown, unknown>;
421
+ files: z.ZodCustom<unknown, unknown>;
422
+ email: z.ZodOptional<z.ZodCustom<unknown, unknown>>;
423
+ auth: z.ZodOptional<z.ZodObject<{
424
+ secret: z.ZodString;
425
+ baseURL: z.ZodOptional<z.ZodString>;
426
+ }, z.core.$loose>>;
427
+ plugins: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
428
+ ai: z.ZodOptional<z.ZodCustom<unknown, unknown>>;
429
+ media: z.ZodOptional<z.ZodUnknown>;
430
+ apiKeys: z.ZodOptional<z.ZodArray<z.ZodObject<{
431
+ key: z.ZodString;
432
+ name: z.ZodOptional<z.ZodString>;
433
+ role: z.ZodOptional<z.ZodEnum<{
434
+ admin: "admin";
435
+ editor: "editor";
436
+ }>>;
437
+ expiresAt: z.ZodOptional<z.ZodString>;
438
+ rotatedAt: z.ZodOptional<z.ZodString>;
439
+ permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
440
+ }, z.core.$loose>>>;
441
+ typography: z.ZodOptional<z.ZodObject<{
442
+ fixOrphans: z.ZodOptional<z.ZodBoolean>;
443
+ }, z.core.$loose>>;
444
+ sidebarHelp: z.ZodOptional<z.ZodBoolean>;
445
+ shop: z.ZodOptional<z.ZodUnknown>;
446
+ cmp: z.ZodOptional<z.ZodUnknown>;
447
+ }, z.core.$loose>;
448
+ FIELD_TYPES: readonly ["text", "content", "number", "boolean", "date", "datetime", "file", "media", "select", "radio", "checkboxes", "relation", "object", "array", "blocks", "slug", "seo", "shop", "url", "custom"];
449
+ FORM_FIELD_TYPES: readonly ["text", "email", "textarea", "checkbox", "select", "file"];
450
+ getLangCode: typeof getLangCode;
451
+ };
452
+ export {};