@revealui/contracts 1.0.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 (191) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +160 -0
  3. package/dist/a2a/index.d.ts +383 -0
  4. package/dist/a2a/index.d.ts.map +1 -0
  5. package/dist/a2a/index.js +276 -0
  6. package/dist/a2a/index.js.map +1 -0
  7. package/dist/actions/action-validator.d.ts +48 -0
  8. package/dist/actions/action-validator.d.ts.map +1 -0
  9. package/dist/actions/action-validator.js +288 -0
  10. package/dist/actions/action-validator.js.map +1 -0
  11. package/dist/actions/index.d.ts +7 -0
  12. package/dist/actions/index.d.ts.map +1 -0
  13. package/dist/actions/index.js +7 -0
  14. package/dist/actions/index.js.map +1 -0
  15. package/dist/agents/index.d.ts +628 -0
  16. package/dist/agents/index.d.ts.map +1 -0
  17. package/dist/agents/index.js +511 -0
  18. package/dist/agents/index.js.map +1 -0
  19. package/dist/agents/types.d.ts +22 -0
  20. package/dist/agents/types.d.ts.map +1 -0
  21. package/dist/agents/types.js +2 -0
  22. package/dist/agents/types.js.map +1 -0
  23. package/dist/api/auth.d.ts +60 -0
  24. package/dist/api/auth.d.ts.map +1 -0
  25. package/dist/api/auth.js +84 -0
  26. package/dist/api/auth.js.map +1 -0
  27. package/dist/api/chat.d.ts +45 -0
  28. package/dist/api/chat.d.ts.map +1 -0
  29. package/dist/api/chat.js +55 -0
  30. package/dist/api/chat.js.map +1 -0
  31. package/dist/api/gdpr.d.ts +39 -0
  32. package/dist/api/gdpr.d.ts.map +1 -0
  33. package/dist/api/gdpr.js +53 -0
  34. package/dist/api/gdpr.js.map +1 -0
  35. package/dist/cms/collection.d.ts +108 -0
  36. package/dist/cms/collection.d.ts.map +1 -0
  37. package/dist/cms/collection.js +144 -0
  38. package/dist/cms/collection.js.map +1 -0
  39. package/dist/cms/compat.d.ts +128 -0
  40. package/dist/cms/compat.d.ts.map +1 -0
  41. package/dist/cms/compat.js +141 -0
  42. package/dist/cms/compat.js.map +1 -0
  43. package/dist/cms/config-contract.d.ts +278 -0
  44. package/dist/cms/config-contract.d.ts.map +1 -0
  45. package/dist/cms/config-contract.js +220 -0
  46. package/dist/cms/config-contract.js.map +1 -0
  47. package/dist/cms/config.d.ts +351 -0
  48. package/dist/cms/config.d.ts.map +1 -0
  49. package/dist/cms/config.js +50 -0
  50. package/dist/cms/config.js.map +1 -0
  51. package/dist/cms/errors.d.ts +122 -0
  52. package/dist/cms/errors.d.ts.map +1 -0
  53. package/dist/cms/errors.js +163 -0
  54. package/dist/cms/errors.js.map +1 -0
  55. package/dist/cms/extensibility.d.ts +211 -0
  56. package/dist/cms/extensibility.d.ts.map +1 -0
  57. package/dist/cms/extensibility.js +313 -0
  58. package/dist/cms/extensibility.js.map +1 -0
  59. package/dist/cms/field.d.ts +69 -0
  60. package/dist/cms/field.d.ts.map +1 -0
  61. package/dist/cms/field.js +94 -0
  62. package/dist/cms/field.js.map +1 -0
  63. package/dist/cms/functions.d.ts +466 -0
  64. package/dist/cms/functions.d.ts.map +1 -0
  65. package/dist/cms/functions.js +19 -0
  66. package/dist/cms/functions.js.map +1 -0
  67. package/dist/cms/global.d.ts +45 -0
  68. package/dist/cms/global.d.ts.map +1 -0
  69. package/dist/cms/global.js +62 -0
  70. package/dist/cms/global.js.map +1 -0
  71. package/dist/cms/index.d.ts +23 -0
  72. package/dist/cms/index.d.ts.map +1 -0
  73. package/dist/cms/index.js +42 -0
  74. package/dist/cms/index.js.map +1 -0
  75. package/dist/cms/structure.d.ts +1601 -0
  76. package/dist/cms/structure.d.ts.map +1 -0
  77. package/dist/cms/structure.js +757 -0
  78. package/dist/cms/structure.js.map +1 -0
  79. package/dist/content/index.d.ts +1542 -0
  80. package/dist/content/index.d.ts.map +1 -0
  81. package/dist/content/index.js +522 -0
  82. package/dist/content/index.js.map +1 -0
  83. package/dist/database/bridge.d.ts +177 -0
  84. package/dist/database/bridge.d.ts.map +1 -0
  85. package/dist/database/bridge.js +139 -0
  86. package/dist/database/bridge.js.map +1 -0
  87. package/dist/database/index.d.ts +8 -0
  88. package/dist/database/index.d.ts.map +1 -0
  89. package/dist/database/index.js +9 -0
  90. package/dist/database/index.js.map +1 -0
  91. package/dist/database/type-bridge.d.ts +178 -0
  92. package/dist/database/type-bridge.d.ts.map +1 -0
  93. package/dist/database/type-bridge.js +154 -0
  94. package/dist/database/type-bridge.js.map +1 -0
  95. package/dist/entities/agent-context.d.ts +280 -0
  96. package/dist/entities/agent-context.d.ts.map +1 -0
  97. package/dist/entities/agent-context.js +390 -0
  98. package/dist/entities/agent-context.js.map +1 -0
  99. package/dist/entities/agent-memory.d.ts +661 -0
  100. package/dist/entities/agent-memory.d.ts.map +1 -0
  101. package/dist/entities/agent-memory.js +544 -0
  102. package/dist/entities/agent-memory.js.map +1 -0
  103. package/dist/entities/board.d.ts +95 -0
  104. package/dist/entities/board.d.ts.map +1 -0
  105. package/dist/entities/board.js +99 -0
  106. package/dist/entities/board.js.map +1 -0
  107. package/dist/entities/code-provenance.d.ts +270 -0
  108. package/dist/entities/code-provenance.d.ts.map +1 -0
  109. package/dist/entities/code-provenance.js +339 -0
  110. package/dist/entities/code-provenance.js.map +1 -0
  111. package/dist/entities/index.d.ts +22 -0
  112. package/dist/entities/index.d.ts.map +1 -0
  113. package/dist/entities/index.js +22 -0
  114. package/dist/entities/index.js.map +1 -0
  115. package/dist/entities/media.d.ts +485 -0
  116. package/dist/entities/media.d.ts.map +1 -0
  117. package/dist/entities/media.js +606 -0
  118. package/dist/entities/media.js.map +1 -0
  119. package/dist/entities/page-revision.d.ts +390 -0
  120. package/dist/entities/page-revision.d.ts.map +1 -0
  121. package/dist/entities/page-revision.js +406 -0
  122. package/dist/entities/page-revision.js.map +1 -0
  123. package/dist/entities/page.d.ts +2349 -0
  124. package/dist/entities/page.d.ts.map +1 -0
  125. package/dist/entities/page.js +377 -0
  126. package/dist/entities/page.js.map +1 -0
  127. package/dist/entities/post.d.ts +619 -0
  128. package/dist/entities/post.d.ts.map +1 -0
  129. package/dist/entities/post.js +555 -0
  130. package/dist/entities/post.js.map +1 -0
  131. package/dist/entities/price.d.ts +772 -0
  132. package/dist/entities/price.d.ts.map +1 -0
  133. package/dist/entities/price.js +308 -0
  134. package/dist/entities/price.js.map +1 -0
  135. package/dist/entities/product.d.ts +753 -0
  136. package/dist/entities/product.d.ts.map +1 -0
  137. package/dist/entities/product.js +307 -0
  138. package/dist/entities/product.js.map +1 -0
  139. package/dist/entities/session.d.ts +222 -0
  140. package/dist/entities/session.d.ts.map +1 -0
  141. package/dist/entities/session.js +253 -0
  142. package/dist/entities/session.js.map +1 -0
  143. package/dist/entities/site.d.ts +387 -0
  144. package/dist/entities/site.d.ts.map +1 -0
  145. package/dist/entities/site.js +348 -0
  146. package/dist/entities/site.js.map +1 -0
  147. package/dist/entities/ticket-comment.d.ts +49 -0
  148. package/dist/entities/ticket-comment.d.ts.map +1 -0
  149. package/dist/entities/ticket-comment.js +58 -0
  150. package/dist/entities/ticket-comment.js.map +1 -0
  151. package/dist/entities/ticket-label.d.ts +64 -0
  152. package/dist/entities/ticket-label.d.ts.map +1 -0
  153. package/dist/entities/ticket-label.js +77 -0
  154. package/dist/entities/ticket-label.js.map +1 -0
  155. package/dist/entities/ticket.d.ts +204 -0
  156. package/dist/entities/ticket.d.ts.map +1 -0
  157. package/dist/entities/ticket.js +205 -0
  158. package/dist/entities/ticket.js.map +1 -0
  159. package/dist/entities/user.d.ts +336 -0
  160. package/dist/entities/user.d.ts.map +1 -0
  161. package/dist/entities/user.js +255 -0
  162. package/dist/entities/user.js.map +1 -0
  163. package/dist/foundation/contract.d.ts +221 -0
  164. package/dist/foundation/contract.d.ts.map +1 -0
  165. package/dist/foundation/contract.js +133 -0
  166. package/dist/foundation/contract.js.map +1 -0
  167. package/dist/foundation/index.d.ts +7 -0
  168. package/dist/foundation/index.d.ts.map +1 -0
  169. package/dist/foundation/index.js +7 -0
  170. package/dist/foundation/index.js.map +1 -0
  171. package/dist/generated/contracts.d.ts +1514 -0
  172. package/dist/generated/contracts.d.ts.map +1 -0
  173. package/dist/generated/contracts.js +959 -0
  174. package/dist/generated/contracts.js.map +1 -0
  175. package/dist/generated/database.d.ts +48 -0
  176. package/dist/generated/database.d.ts.map +1 -0
  177. package/dist/generated/database.js +17 -0
  178. package/dist/generated/database.js.map +1 -0
  179. package/dist/generated/zod-schemas.d.ts +14793 -0
  180. package/dist/generated/zod-schemas.d.ts.map +1 -0
  181. package/dist/generated/zod-schemas.js +547 -0
  182. package/dist/generated/zod-schemas.js.map +1 -0
  183. package/dist/index.d.ts +50 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +81 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/representation/index.d.ts +304 -0
  188. package/dist/representation/index.d.ts.map +1 -0
  189. package/dist/representation/index.js +280 -0
  190. package/dist/representation/index.js.map +1 -0
  191. package/package.json +117 -0
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Config Contract
3
+ *
4
+ * Unified contract for complete Config (root configuration) that combines:
5
+ * - TypeScript types (compile-time)
6
+ * - Zod schemas (runtime validation)
7
+ * - Validation functions
8
+ * - Type guards
9
+ *
10
+ * This is the single source of truth for Config definitions.
11
+ *
12
+ * @module @revealui/contracts/core/contracts/config-contract
13
+ */
14
+ import { z } from 'zod/v4';
15
+ import { createContract } from '../foundation/contract.js';
16
+ import { CollectionStructureSchema, GlobalStructureSchema } from './structure.js';
17
+ /**
18
+ * Config structure schema (Zod)
19
+ * Validates the structure of the root Config object
20
+ *
21
+ * Note: This schema validates the STRUCTURE of the config, not function contracts.
22
+ * Functions (access, hooks, onInit, etc.) are validated by TypeScript at compile time.
23
+ */
24
+ const ConfigStructureSchema = z
25
+ .object({
26
+ // Required
27
+ secret: z.string().min(1, 'Secret is required'),
28
+ // Collections and globals
29
+ collections: z.array(CollectionStructureSchema).optional(),
30
+ globals: z.array(GlobalStructureSchema).optional(),
31
+ // Server
32
+ serverURL: z.union([z.url(), z.literal('')]).optional(),
33
+ // Admin configuration
34
+ admin: z
35
+ .object({
36
+ user: z.string().optional(),
37
+ meta: z
38
+ .object({
39
+ titleSuffix: z.string().optional(),
40
+ ogImage: z.string().optional(),
41
+ favicon: z.string().optional(),
42
+ icons: z
43
+ .array(z.object({
44
+ url: z.string().optional(),
45
+ sizes: z.string().optional(),
46
+ type: z.string().optional(),
47
+ rel: z.string().optional(),
48
+ fetchPriority: z.enum(['high', 'low', 'auto']).optional(),
49
+ }))
50
+ .optional(),
51
+ })
52
+ .optional(),
53
+ importMap: z
54
+ .object({
55
+ autoGenerate: z.boolean().optional(),
56
+ baseDir: z.string().optional(),
57
+ })
58
+ .passthrough()
59
+ .optional(),
60
+ css: z.string().optional(),
61
+ scss: z.string().optional(),
62
+ dateFormat: z.string().optional(),
63
+ avatar: z.union([z.literal('default'), z.literal('gravatar'), z.unknown()]).optional(),
64
+ disable: z.boolean().optional(),
65
+ livePreview: z
66
+ .object({
67
+ url: z.union([z.string(), z.unknown()]).optional(), // Function type validated by TypeScript
68
+ collections: z.array(z.string()).optional(),
69
+ globals: z.array(z.string()).optional(),
70
+ breakpoints: z
71
+ .array(z.object({
72
+ label: z.string(),
73
+ name: z.string(),
74
+ width: z.number(),
75
+ height: z.number(),
76
+ }))
77
+ .optional(),
78
+ })
79
+ // Keep passthrough on livePreview for extensibility (documented)
80
+ .passthrough()
81
+ .optional(),
82
+ })
83
+ // No passthrough on admin root - validate strictly
84
+ .optional(),
85
+ // Email configuration
86
+ email: z
87
+ .object({
88
+ fromName: z.string().optional(),
89
+ fromAddress: z.string().email().optional(),
90
+ })
91
+ // No passthrough - validate email config strictly
92
+ .optional(),
93
+ // Localization
94
+ localization: z
95
+ .union([
96
+ z.object({
97
+ locales: z.union([
98
+ z.array(z.string()),
99
+ z.array(z.object({
100
+ label: z.string(),
101
+ code: z.string(),
102
+ })),
103
+ ]),
104
+ defaultLocale: z.string(),
105
+ fallback: z.boolean().optional(),
106
+ }),
107
+ z.literal(false),
108
+ ])
109
+ .optional(),
110
+ // i18n (internationalization)
111
+ i18n: z
112
+ .object({
113
+ locales: z.array(z.string()).optional(),
114
+ defaultLocale: z.string().optional(),
115
+ fallback: z.boolean().optional(),
116
+ supportedLanguages: z.record(z.string(), z.unknown()).optional(),
117
+ })
118
+ .optional(),
119
+ // CORS
120
+ cors: z
121
+ .union([
122
+ z.string(),
123
+ z.array(z.string()),
124
+ z.object({
125
+ origins: z.array(z.string()),
126
+ headers: z.array(z.string()).optional(),
127
+ }),
128
+ ])
129
+ .optional(),
130
+ // CSRF
131
+ csrf: z.array(z.string()).optional(),
132
+ // Rate limiting
133
+ rateLimit: z
134
+ .object({
135
+ window: z.number().optional(),
136
+ max: z.number().optional(),
137
+ trustProxy: z.boolean().optional(),
138
+ // skip is a function - not validated here
139
+ })
140
+ // No passthrough - validate rateLimit config strictly
141
+ .optional(),
142
+ // Uploads
143
+ upload: z
144
+ .object({
145
+ limits: z
146
+ .object({
147
+ fileSize: z.number().optional(),
148
+ })
149
+ .optional(),
150
+ })
151
+ .optional(),
152
+ // Debug
153
+ debug: z.boolean().optional(),
154
+ // TypeScript
155
+ typescript: z
156
+ .object({
157
+ outputFile: z.string().optional(),
158
+ declare: z.boolean().optional(),
159
+ autoGenerate: z.boolean().optional(),
160
+ })
161
+ .optional(),
162
+ // Telemetry
163
+ telemetry: z.boolean().optional(),
164
+ // Hooks - functions are not validated here (TypeScript-only)
165
+ hooks: z
166
+ .object({
167
+ // afterError is an array of functions - not validated here
168
+ })
169
+ // No passthrough - validate hooks config strictly
170
+ .optional(),
171
+ // onInit, plugins, editor, sharp, db are functions/any - not validated here
172
+ // These are validated by TypeScript at compile time
173
+ // Custom properties for extensibility (documented extensibility point)
174
+ custom: z.record(z.string(), z.unknown()).optional(),
175
+ })
176
+ .refine((data) => {
177
+ // At least one collection or global must be present
178
+ return ((data.collections && data.collections.length > 0) ||
179
+ (data.globals && data.globals.length > 0));
180
+ }, {
181
+ message: 'RevealUI config must have at least one collection or global',
182
+ path: ['collections'],
183
+ });
184
+ /**
185
+ * Config Contract
186
+ *
187
+ * This contract validates Config (root configuration) at runtime
188
+ * and provides TypeScript types at compile time.
189
+ *
190
+ * Note: This is a simplified contract. The full Config type includes
191
+ * function contracts (access, hooks) which are validated by TypeScript
192
+ * at compile time, not by Zod at runtime.
193
+ */
194
+ export const ConfigContract = createContract({
195
+ name: 'Config',
196
+ version: '1.0.0',
197
+ schema: ConfigStructureSchema,
198
+ description: 'Root configuration contract',
199
+ docsUrl: 'https://revealui.dev/docs/api-reference/config',
200
+ tags: ['config', 'root', 'cms'],
201
+ });
202
+ /**
203
+ * Validate a config structure
204
+ */
205
+ export function validateConfigStructure(data) {
206
+ return ConfigContract.validate(data);
207
+ }
208
+ /**
209
+ * Type guard for config structures
210
+ */
211
+ export function isConfigStructure(data) {
212
+ return ConfigContract.isType(data);
213
+ }
214
+ /**
215
+ * Parse config structure (throws on validation failure)
216
+ */
217
+ export function parseConfigStructure(data) {
218
+ return ConfigContract.parse(data);
219
+ }
220
+ //# sourceMappingURL=config-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-contract.js","sourceRoot":"","sources":["../../src/cms/config-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,351 @@
1
+ /**
2
+ * Combined Configuration Types
3
+ *
4
+ * These types combine Zod-validated structure with TypeScript function contracts.
5
+ *
6
+ * Structure (validated by Zod at runtime):
7
+ * - Field names, types, constraints
8
+ * - Admin configuration
9
+ * - Labels, slugs
10
+ *
11
+ * Functions (enforced by TypeScript at compile time):
12
+ * - Access functions
13
+ * - Hook functions
14
+ * - Validation functions
15
+ * - Condition functions
16
+ *
17
+ * @module @revealui/contracts/core/contracts/config
18
+ */
19
+ import type { AccessFunction, CollectionAccessConfig, CollectionHooksConfig, ConditionFunction, EndpointConfig, FieldAccessConfig, FieldHooksConfig, FieldValidateArgs, FilterOptionsFunction, GlobalAccessConfig, GlobalHooksConfig } from './functions.js';
20
+ import type { CollectionStructure, FieldStructure, GlobalStructure } from './structure.js';
21
+ export type UnknownRecord = Record<string, unknown>;
22
+ type HookFn = (args: UnknownRecord) => unknown;
23
+ type FieldBeforeReadHook = HookFn;
24
+ type LooseFieldAccessConfig = FieldAccessConfig<UnknownRecord, UnknownRecord>;
25
+ type LooseFieldHooksConfig = FieldHooksConfig<unknown, UnknownRecord, UnknownRecord> & {
26
+ beforeRead?: FieldBeforeReadHook[];
27
+ };
28
+ type LooseCollectionAccessConfig<T = UnknownRecord> = CollectionAccessConfig<T> & {
29
+ readVersions?: AccessFunction<T>;
30
+ };
31
+ type LooseCollectionHooksConfig<T = UnknownRecord> = CollectionHooksConfig<T> & {
32
+ afterLogin?: HookFn[];
33
+ afterLogout?: HookFn[];
34
+ afterRefresh?: HookFn[];
35
+ afterMe?: HookFn[];
36
+ afterForgotPassword?: HookFn[];
37
+ };
38
+ type LooseGlobalHooksConfig = GlobalHooksConfig<UnknownRecord> & {
39
+ beforeValidate?: HookFn[];
40
+ };
41
+ type LooseFieldValidateArgs = FieldValidateArgs<unknown, UnknownRecord, UnknownRecord>;
42
+ type LooseGlobalAccessConfig = GlobalAccessConfig & {
43
+ readVersions?: AccessFunction<UnknownRecord>;
44
+ };
45
+ /**
46
+ * Complete Field type combining structure and functions
47
+ *
48
+ * This is a simplified, non-generic Field type that works with any document type.
49
+ * For typed field definitions, use the TypeScript helper `defineField<T>()`.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * // Basic text field
54
+ * const titleField: Field = {
55
+ * name: 'title',
56
+ * type: 'text',
57
+ * required: true,
58
+ * };
59
+ *
60
+ * // Field with hooks
61
+ * const slugField: Field = {
62
+ * name: 'slug',
63
+ * type: 'text',
64
+ * hooks: {
65
+ * beforeChange: [({ value, siblingData }) => {
66
+ * return value || String(siblingData?.title)?.toLowerCase().replace(/\s+/g, '-');
67
+ * }],
68
+ * },
69
+ * };
70
+ * ```
71
+ */
72
+ export interface Field extends Omit<FieldStructure, 'fields' | 'blocks' | 'tabs'> {
73
+ access?: LooseFieldAccessConfig;
74
+ hooks?: LooseFieldHooksConfig;
75
+ validate?: (value: unknown, args: LooseFieldValidateArgs) => string | true | Promise<string | true>;
76
+ condition?: ConditionFunction<UnknownRecord, UnknownRecord>;
77
+ filterOptions?: FilterOptionsFunction<UnknownRecord>;
78
+ fields?: Field[];
79
+ blocks?: unknown[];
80
+ tabs?: Array<{
81
+ label: string;
82
+ name?: string;
83
+ description?: string;
84
+ fields: Field[];
85
+ custom?: Record<string, unknown>;
86
+ }>;
87
+ editor?: unknown;
88
+ custom?: Record<string, unknown>;
89
+ }
90
+ /**
91
+ * Complete CollectionConfig type combining structure and functions
92
+ *
93
+ * Generic over the document type to provide proper type inference for hooks and access functions.
94
+ * Defaults to UnknownRecord for backward compatibility.
95
+ *
96
+ * @template T - The document type for this collection (defaults to UnknownRecord)
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * // Without type parameter (backward compatible)
101
+ * const Posts: CollectionConfig = {
102
+ * slug: 'posts',
103
+ * fields: [
104
+ * { name: 'title', type: 'text', required: true },
105
+ * { name: 'slug', type: 'text', required: true },
106
+ * ],
107
+ * access: {
108
+ * read: () => true,
109
+ * create: ({ req }) => Boolean(req.user),
110
+ * },
111
+ * hooks: {
112
+ * afterChange: [({ doc }) => {
113
+ * // Log the update
114
+ * return doc;
115
+ * }],
116
+ * },
117
+ * };
118
+ *
119
+ * // With type parameter (typed hooks and access functions)
120
+ * interface Post {
121
+ * id: string;
122
+ * title: string;
123
+ * slug: string;
124
+ * }
125
+ *
126
+ * const Posts: CollectionConfig<Post> = {
127
+ * slug: 'posts',
128
+ * fields: [...],
129
+ * hooks: {
130
+ * afterChange: [({ doc }) => {
131
+ * // doc is properly typed as Post
132
+ * return doc;
133
+ * }],
134
+ * },
135
+ * };
136
+ * ```
137
+ */
138
+ export interface CollectionConfig<T = UnknownRecord> extends Omit<CollectionStructure, 'fields'> {
139
+ schemaVersion?: number;
140
+ fields: Field[];
141
+ access?: LooseCollectionAccessConfig<T>;
142
+ hooks?: LooseCollectionHooksConfig<T>;
143
+ endpoints?: EndpointConfig[] | false;
144
+ custom?: Record<string, unknown>;
145
+ }
146
+ /**
147
+ * Complete GlobalConfig type combining structure and functions
148
+ *
149
+ * This is a simplified, non-generic GlobalConfig type that works with any document.
150
+ * For typed global definitions, use the TypeScript helper `defineGlobal<T>()`.
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * const Settings: GlobalConfig = {
155
+ * slug: 'settings',
156
+ * fields: [
157
+ * { name: 'siteName', type: 'text', required: true },
158
+ * { name: 'siteDescription', type: 'textarea' },
159
+ * ],
160
+ * access: {
161
+ * read: () => true,
162
+ * update: ({ req }) => Boolean(req.user),
163
+ * },
164
+ * };
165
+ * ```
166
+ */
167
+ export interface GlobalConfig extends Omit<GlobalStructure, 'fields'> {
168
+ schemaVersion?: number;
169
+ fields: Field[];
170
+ access?: LooseGlobalAccessConfig;
171
+ hooks?: LooseGlobalHooksConfig;
172
+ endpoints?: EndpointConfig[] | false;
173
+ custom?: Record<string, unknown>;
174
+ }
175
+ /**
176
+ * Database adapter configuration (simplified)
177
+ */
178
+ export interface DatabaseAdapterConfig {
179
+ pool?: unknown;
180
+ idType?: 'serial' | 'uuid';
181
+ custom?: Record<string, unknown>;
182
+ }
183
+ /**
184
+ * Email configuration
185
+ */
186
+ export interface EmailConfig {
187
+ transportOptions?: unknown;
188
+ fromName?: string;
189
+ fromAddress?: string;
190
+ custom?: Record<string, unknown>;
191
+ }
192
+ /**
193
+ * Admin panel configuration
194
+ */
195
+ export interface AdminConfig {
196
+ user?: string;
197
+ meta?: {
198
+ titleSuffix?: string;
199
+ ogImage?: string;
200
+ favicon?: string;
201
+ icons?: Array<{
202
+ url?: string;
203
+ sizes?: string;
204
+ type?: string;
205
+ rel?: string;
206
+ fetchPriority?: 'high' | 'low' | 'auto';
207
+ }>;
208
+ };
209
+ importMap?: {
210
+ autoGenerate?: boolean;
211
+ baseDir?: string;
212
+ custom?: Record<string, unknown>;
213
+ };
214
+ components?: unknown;
215
+ css?: string;
216
+ scss?: string;
217
+ dateFormat?: string;
218
+ avatar?: string;
219
+ disable?: boolean;
220
+ livePreview?: {
221
+ url?: string | ((args: {
222
+ data: unknown;
223
+ locale?: string;
224
+ }) => string);
225
+ collections?: string[];
226
+ globals?: string[];
227
+ breakpoints?: Array<{
228
+ label: string;
229
+ name: string;
230
+ width: number;
231
+ height: number;
232
+ }>;
233
+ custom?: Record<string, unknown>;
234
+ };
235
+ custom?: Record<string, unknown>;
236
+ }
237
+ /**
238
+ * Localization configuration
239
+ */
240
+ export interface LocalizationConfig {
241
+ locales: string[] | Array<{
242
+ label: string;
243
+ code: string;
244
+ }>;
245
+ defaultLocale: string;
246
+ fallback?: boolean;
247
+ }
248
+ /**
249
+ * Complete RevealUI Config type
250
+ *
251
+ * This is the root configuration passed to buildConfig()
252
+ */
253
+ export interface Config {
254
+ secret: string;
255
+ collections?: CollectionConfig<any>[];
256
+ globals?: GlobalConfig[];
257
+ db?: unknown;
258
+ serverURL?: string;
259
+ admin?: AdminConfig;
260
+ email?: EmailConfig;
261
+ localization?: LocalizationConfig | false;
262
+ i18n?: {
263
+ locales?: string[];
264
+ defaultLocale?: string;
265
+ fallback?: boolean;
266
+ supportedLanguages?: Record<string, unknown>;
267
+ };
268
+ cors?: string | string[] | {
269
+ origins: string[];
270
+ headers?: string[];
271
+ };
272
+ csrf?: string[];
273
+ rateLimit?: {
274
+ window?: number;
275
+ max?: number;
276
+ trustProxy?: boolean;
277
+ skip?: (req: unknown) => boolean;
278
+ };
279
+ upload?: {
280
+ limits?: {
281
+ fileSize?: number;
282
+ };
283
+ };
284
+ debug?: boolean;
285
+ typescript?: {
286
+ outputFile?: string;
287
+ declare?: boolean;
288
+ autoGenerate?: boolean;
289
+ };
290
+ telemetry?: boolean;
291
+ hooks?: {
292
+ afterError?: Array<(args: {
293
+ error: Error;
294
+ context: unknown;
295
+ }) => void | Promise<void>>;
296
+ };
297
+ onInit?: (revealui: unknown) => unknown;
298
+ plugins?: unknown[];
299
+ editor?: unknown;
300
+ sharp?: unknown;
301
+ custom?: Record<string, unknown>;
302
+ }
303
+ /**
304
+ * Sanitized config (after RevealUI processes it)
305
+ * This is what's available at runtime
306
+ */
307
+ export interface SanitizedConfig extends Config {
308
+ collections: CollectionConfig<any>[];
309
+ globals: GlobalConfig[];
310
+ }
311
+ /**
312
+ * Typed collection config for advanced type inference
313
+ * Use this when you need TypeScript to know the document type
314
+ */
315
+ export interface TypedCollectionConfig<T> extends CollectionConfig {
316
+ __docType?: T;
317
+ }
318
+ /**
319
+ * Typed global config for advanced type inference
320
+ * Use this when you need TypeScript to know the document type
321
+ */
322
+ export interface TypedGlobalConfig<T> extends GlobalConfig {
323
+ __docType?: T;
324
+ }
325
+ /**
326
+ * Helper to create a typed collection config
327
+ *
328
+ * @example
329
+ * ```typescript
330
+ * interface Post {
331
+ * id: string;
332
+ * title: string;
333
+ * }
334
+ *
335
+ * const Posts = defineCollection<Post>({
336
+ * slug: 'posts',
337
+ * fields: [{ name: 'title', type: 'text' }],
338
+ * });
339
+ * ```
340
+ */
341
+ export declare function defineCollection<T = unknown>(config: CollectionConfig): TypedCollectionConfig<T>;
342
+ /**
343
+ * Helper to create a typed global config
344
+ */
345
+ export declare function defineGlobal<T = unknown>(config: GlobalConfig): TypedGlobalConfig<T>;
346
+ /**
347
+ * Helper to create a field
348
+ */
349
+ export declare function defineField(field: Field): Field;
350
+ export {};
351
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cms/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Combined Configuration Types
3
+ *
4
+ * These types combine Zod-validated structure with TypeScript function contracts.
5
+ *
6
+ * Structure (validated by Zod at runtime):
7
+ * - Field names, types, constraints
8
+ * - Admin configuration
9
+ * - Labels, slugs
10
+ *
11
+ * Functions (enforced by TypeScript at compile time):
12
+ * - Access functions
13
+ * - Hook functions
14
+ * - Validation functions
15
+ * - Condition functions
16
+ *
17
+ * @module @revealui/contracts/core/contracts/config
18
+ */
19
+ /**
20
+ * Helper to create a typed collection config
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * interface Post {
25
+ * id: string;
26
+ * title: string;
27
+ * }
28
+ *
29
+ * const Posts = defineCollection<Post>({
30
+ * slug: 'posts',
31
+ * fields: [{ name: 'title', type: 'text' }],
32
+ * });
33
+ * ```
34
+ */
35
+ export function defineCollection(config) {
36
+ return config;
37
+ }
38
+ /**
39
+ * Helper to create a typed global config
40
+ */
41
+ export function defineGlobal(config) {
42
+ return config;
43
+ }
44
+ /**
45
+ * Helper to create a field
46
+ */
47
+ export function defineField(field) {
48
+ return field;
49
+ }
50
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cms/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAqaH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAc,MAAwB;IACpE,OAAO,MAAkC,CAAA;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAc,MAAoB;IAC5D,OAAO,MAA8B,CAAA;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,OAAO,KAAK,CAAA;AACd,CAAC"}