@object-ui/types 0.3.0 → 0.5.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 (169) hide show
  1. package/README.md +19 -11
  2. package/dist/api-types.d.ts +7 -0
  3. package/dist/api-types.d.ts.map +1 -1
  4. package/dist/api-types.js +4 -6
  5. package/dist/app.d.ts +17 -0
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +4 -3
  8. package/dist/base.d.ts +7 -0
  9. package/dist/base.d.ts.map +1 -1
  10. package/dist/base.js +4 -6
  11. package/dist/blocks.d.ts +332 -0
  12. package/dist/blocks.d.ts.map +1 -0
  13. package/dist/blocks.js +8 -0
  14. package/dist/complex.d.ts +68 -1
  15. package/dist/complex.d.ts.map +1 -1
  16. package/dist/complex.js +4 -5
  17. package/dist/crud.d.ts +181 -3
  18. package/dist/crud.d.ts.map +1 -1
  19. package/dist/crud.js +4 -6
  20. package/dist/data-display.d.ts +54 -2
  21. package/dist/data-display.d.ts.map +1 -1
  22. package/dist/data-display.js +4 -5
  23. package/dist/data-protocol.d.ts +1268 -0
  24. package/dist/data-protocol.d.ts.map +1 -0
  25. package/dist/data-protocol.js +8 -0
  26. package/dist/data.d.ts +22 -1
  27. package/dist/data.d.ts.map +1 -1
  28. package/dist/data.js +4 -6
  29. package/dist/disclosure.d.ts +70 -1
  30. package/dist/disclosure.d.ts.map +1 -1
  31. package/dist/disclosure.js +4 -5
  32. package/dist/feedback.d.ts +68 -1
  33. package/dist/feedback.d.ts.map +1 -1
  34. package/dist/feedback.js +4 -5
  35. package/dist/field-types.d.ts +728 -0
  36. package/dist/field-types.d.ts.map +1 -0
  37. package/dist/field-types.js +8 -0
  38. package/dist/form.d.ts +123 -1
  39. package/dist/form.d.ts.map +1 -1
  40. package/dist/form.js +4 -5
  41. package/dist/index.d.ts +48 -13
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +4 -37
  44. package/dist/layout.d.ts +66 -16
  45. package/dist/layout.d.ts.map +1 -1
  46. package/dist/layout.js +4 -6
  47. package/dist/navigation.d.ts +102 -2
  48. package/dist/navigation.d.ts.map +1 -1
  49. package/dist/navigation.js +4 -5
  50. package/dist/objectql.d.ts +491 -54
  51. package/dist/objectql.d.ts.map +1 -1
  52. package/dist/objectql.js +4 -6
  53. package/dist/overlay.d.ts +31 -1
  54. package/dist/overlay.d.ts.map +1 -1
  55. package/dist/overlay.js +4 -5
  56. package/dist/plugin-scope.d.ts +194 -0
  57. package/dist/plugin-scope.d.ts.map +1 -0
  58. package/dist/plugin-scope.js +8 -0
  59. package/dist/registry.d.ts +7 -0
  60. package/dist/registry.d.ts.map +1 -1
  61. package/dist/registry.js +7 -0
  62. package/dist/reports.d.ts +336 -0
  63. package/dist/reports.d.ts.map +1 -0
  64. package/dist/reports.js +8 -0
  65. package/dist/theme.d.ts +289 -0
  66. package/dist/theme.d.ts.map +1 -0
  67. package/dist/theme.js +8 -0
  68. package/dist/ui-action.d.ts +175 -0
  69. package/dist/ui-action.d.ts.map +1 -0
  70. package/dist/ui-action.js +8 -0
  71. package/dist/views.d.ts +417 -0
  72. package/dist/views.d.ts.map +1 -0
  73. package/dist/views.js +8 -0
  74. package/dist/zod/app.zod.d.ts +120 -0
  75. package/dist/zod/app.zod.d.ts.map +1 -0
  76. package/dist/zod/app.zod.js +60 -0
  77. package/dist/zod/base.zod.d.ts +202 -0
  78. package/dist/zod/base.zod.d.ts.map +1 -0
  79. package/dist/zod/base.zod.js +198 -0
  80. package/dist/zod/blocks.zod.d.ts +834 -0
  81. package/dist/zod/blocks.zod.d.ts.map +1 -0
  82. package/dist/zod/blocks.zod.js +145 -0
  83. package/dist/zod/complex.zod.d.ts +742 -0
  84. package/dist/zod/complex.zod.d.ts.map +1 -0
  85. package/dist/zod/complex.zod.js +233 -0
  86. package/dist/zod/crud.zod.d.ts +598 -0
  87. package/dist/zod/crud.zod.d.ts.map +1 -0
  88. package/dist/zod/crud.zod.js +230 -0
  89. package/dist/zod/data-display.zod.d.ts +996 -0
  90. package/dist/zod/data-display.zod.d.ts.map +1 -0
  91. package/dist/zod/data-display.zod.js +266 -0
  92. package/dist/zod/disclosure.zod.d.ts +267 -0
  93. package/dist/zod/disclosure.zod.d.ts.map +1 -0
  94. package/dist/zod/disclosure.zod.js +84 -0
  95. package/dist/zod/feedback.zod.d.ts +538 -0
  96. package/dist/zod/feedback.zod.d.ts.map +1 -0
  97. package/dist/zod/feedback.zod.js +127 -0
  98. package/dist/zod/form.zod.d.ts +1308 -0
  99. package/dist/zod/form.zod.d.ts.map +1 -0
  100. package/dist/zod/form.zod.js +406 -0
  101. package/dist/zod/index.zod.d.ts +4985 -0
  102. package/dist/zod/index.zod.d.ts.map +1 -0
  103. package/dist/zod/index.zod.js +183 -0
  104. package/dist/zod/layout.zod.d.ts +1048 -0
  105. package/dist/zod/layout.zod.d.ts.map +1 -0
  106. package/dist/zod/layout.zod.js +241 -0
  107. package/dist/zod/navigation.zod.d.ts +486 -0
  108. package/dist/zod/navigation.zod.d.ts.map +1 -0
  109. package/dist/zod/navigation.zod.js +142 -0
  110. package/dist/zod/objectql.zod.d.ts +1261 -0
  111. package/dist/zod/objectql.zod.d.ts.map +1 -0
  112. package/dist/zod/objectql.zod.js +248 -0
  113. package/dist/zod/overlay.zod.d.ts +691 -0
  114. package/dist/zod/overlay.zod.d.ts.map +1 -0
  115. package/dist/zod/overlay.zod.js +179 -0
  116. package/dist/zod/reports.zod.d.ts +1628 -0
  117. package/dist/zod/reports.zod.d.ts.map +1 -0
  118. package/dist/zod/reports.zod.js +152 -0
  119. package/dist/zod/theme.zod.d.ts +611 -0
  120. package/dist/zod/theme.zod.d.ts.map +1 -0
  121. package/dist/zod/theme.zod.js +130 -0
  122. package/dist/zod/views.zod.d.ts +675 -0
  123. package/dist/zod/views.zod.d.ts.map +1 -0
  124. package/dist/zod/views.zod.js +159 -0
  125. package/package.json +9 -1
  126. package/src/__tests__/namespace-exports.test.ts +80 -0
  127. package/src/__tests__/phase2-schemas.test.ts +639 -0
  128. package/src/api-types.ts +8 -0
  129. package/src/app.ts +20 -0
  130. package/src/base.ts +8 -0
  131. package/src/blocks.ts +405 -0
  132. package/src/complex.ts +69 -1
  133. package/src/crud.ts +185 -3
  134. package/src/data-display.ts +60 -2
  135. package/src/data-protocol.ts +1679 -0
  136. package/src/data.ts +21 -1
  137. package/src/disclosure.ts +74 -1
  138. package/src/feedback.ts +76 -2
  139. package/src/field-types.ts +846 -0
  140. package/src/form.ts +131 -1
  141. package/src/index.ts +305 -8
  142. package/src/layout.ts +70 -15
  143. package/src/navigation.ts +109 -2
  144. package/src/objectql.ts +563 -59
  145. package/src/overlay.ts +35 -1
  146. package/src/plugin-scope.ts +210 -0
  147. package/src/registry.ts +8 -0
  148. package/src/reports.ts +408 -0
  149. package/src/theme.ts +351 -0
  150. package/src/ui-action.ts +276 -0
  151. package/src/views.ts +429 -0
  152. package/src/zod/README.md +329 -0
  153. package/src/zod/app.zod.ts +72 -0
  154. package/src/zod/base.zod.ts +229 -0
  155. package/src/zod/blocks.zod.ts +170 -0
  156. package/src/zod/complex.zod.ts +258 -0
  157. package/src/zod/crud.zod.ts +259 -0
  158. package/src/zod/data-display.zod.ts +290 -0
  159. package/src/zod/disclosure.zod.ts +92 -0
  160. package/src/zod/feedback.zod.ts +138 -0
  161. package/src/zod/form.zod.ts +434 -0
  162. package/src/zod/index.zod.ts +425 -0
  163. package/src/zod/layout.zod.ts +262 -0
  164. package/src/zod/navigation.zod.ts +159 -0
  165. package/src/zod/objectql.zod.ts +268 -0
  166. package/src/zod/overlay.zod.ts +196 -0
  167. package/src/zod/reports.zod.ts +183 -0
  168. package/src/zod/theme.zod.ts +155 -0
  169. package/src/zod/views.zod.ts +182 -0
@@ -0,0 +1,728 @@
1
+ /**
2
+ * ObjectUI
3
+ * Copyright (c) 2024-present ObjectStack Inc.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ /**
9
+ * @object-ui/types - Field Type Definitions
10
+ *
11
+ * Comprehensive field type system for ObjectQL protocol.
12
+ * Defines all field types supported in ObjectTable and ObjectForm components.
13
+ *
14
+ * @module field-types
15
+ * @packageDocumentation
16
+ */
17
+ /**
18
+ * Base field metadata interface
19
+ * Common properties shared by all field types
20
+ */
21
+ export interface BaseFieldMetadata {
22
+ /**
23
+ * Field name/identifier
24
+ */
25
+ name: string;
26
+ /**
27
+ * Display label
28
+ */
29
+ label?: string;
30
+ /**
31
+ * Field type identifier
32
+ */
33
+ type: string;
34
+ /**
35
+ * Help text or description
36
+ */
37
+ help?: string;
38
+ /**
39
+ * Description text
40
+ */
41
+ description?: string;
42
+ /**
43
+ * Whether field is required
44
+ */
45
+ required?: boolean;
46
+ /**
47
+ * Whether field is read-only
48
+ */
49
+ readonly?: boolean;
50
+ /**
51
+ * Placeholder text
52
+ */
53
+ placeholder?: string;
54
+ /**
55
+ * Default value
56
+ */
57
+ defaultValue?: any;
58
+ /**
59
+ * Field permissions (Phase 3.2.6)
60
+ */
61
+ permissions?: {
62
+ read?: boolean;
63
+ write?: boolean;
64
+ edit?: boolean;
65
+ };
66
+ /**
67
+ * Whether field is sortable
68
+ */
69
+ sortable?: boolean;
70
+ /**
71
+ * Whether field is filterable
72
+ */
73
+ filterable?: boolean;
74
+ /**
75
+ * Conditional visibility expression
76
+ */
77
+ visible_on?: VisibilityCondition;
78
+ /**
79
+ * Custom validation function or rules
80
+ */
81
+ validate?: ValidationFunction | ValidationRule;
82
+ /**
83
+ * Field dependencies (Phase 3.2.3)
84
+ * List of fields that this field depends on
85
+ */
86
+ depends_on?: string[];
87
+ /**
88
+ * Field index for database optimization
89
+ */
90
+ indexed?: boolean;
91
+ /**
92
+ * Field is unique constraint
93
+ */
94
+ unique?: boolean;
95
+ }
96
+ /**
97
+ * Visibility condition type
98
+ */
99
+ export type VisibilityCondition = {
100
+ field: string;
101
+ operator?: '=' | '!=' | '>' | '>=' | '<' | '<=' | 'in';
102
+ value?: any;
103
+ and?: VisibilityCondition[];
104
+ or?: VisibilityCondition[];
105
+ };
106
+ /**
107
+ * Validation function type
108
+ */
109
+ export type ValidationFunction = (value: any) => boolean | string | Promise<boolean | string>;
110
+ /**
111
+ * Validation rule type
112
+ */
113
+ export type ValidationRule = {
114
+ required?: boolean | string;
115
+ minLength?: number;
116
+ maxLength?: number;
117
+ min?: number;
118
+ max?: number;
119
+ pattern?: string | RegExp;
120
+ custom?: ValidationFunction;
121
+ };
122
+ /**
123
+ * Text field metadata
124
+ */
125
+ export interface TextFieldMetadata extends BaseFieldMetadata {
126
+ type: 'text';
127
+ min_length?: number;
128
+ max_length?: number;
129
+ pattern?: string | RegExp;
130
+ pattern_message?: string;
131
+ }
132
+ /**
133
+ * Long text/textarea field metadata
134
+ */
135
+ export interface TextareaFieldMetadata extends BaseFieldMetadata {
136
+ type: 'textarea';
137
+ min_length?: number;
138
+ max_length?: number;
139
+ rows?: number;
140
+ }
141
+ /**
142
+ * Markdown field metadata
143
+ */
144
+ export interface MarkdownFieldMetadata extends BaseFieldMetadata {
145
+ type: 'markdown';
146
+ max_length?: number;
147
+ }
148
+ /**
149
+ * HTML/Rich text field metadata
150
+ */
151
+ export interface HtmlFieldMetadata extends BaseFieldMetadata {
152
+ type: 'html';
153
+ max_length?: number;
154
+ }
155
+ /**
156
+ * Number field metadata
157
+ */
158
+ export interface NumberFieldMetadata extends BaseFieldMetadata {
159
+ type: 'number';
160
+ min?: number;
161
+ max?: number;
162
+ precision?: number;
163
+ step?: number;
164
+ }
165
+ /**
166
+ * Currency field metadata
167
+ */
168
+ export interface CurrencyFieldMetadata extends BaseFieldMetadata {
169
+ type: 'currency';
170
+ currency?: string;
171
+ precision?: number;
172
+ min?: number;
173
+ max?: number;
174
+ }
175
+ /**
176
+ * Percent field metadata
177
+ */
178
+ export interface PercentFieldMetadata extends BaseFieldMetadata {
179
+ type: 'percent';
180
+ precision?: number;
181
+ min?: number;
182
+ max?: number;
183
+ }
184
+ /**
185
+ * Boolean field metadata
186
+ */
187
+ export interface BooleanFieldMetadata extends BaseFieldMetadata {
188
+ type: 'boolean';
189
+ }
190
+ /**
191
+ * Date field metadata
192
+ */
193
+ export interface DateFieldMetadata extends BaseFieldMetadata {
194
+ type: 'date';
195
+ format?: string;
196
+ min_date?: string | Date;
197
+ max_date?: string | Date;
198
+ }
199
+ /**
200
+ * DateTime field metadata
201
+ */
202
+ export interface DateTimeFieldMetadata extends BaseFieldMetadata {
203
+ type: 'datetime';
204
+ format?: string;
205
+ min_date?: string | Date;
206
+ max_date?: string | Date;
207
+ }
208
+ /**
209
+ * Time field metadata
210
+ */
211
+ export interface TimeFieldMetadata extends BaseFieldMetadata {
212
+ type: 'time';
213
+ format?: string;
214
+ }
215
+ /**
216
+ * Select option
217
+ */
218
+ export interface SelectOptionMetadata {
219
+ label: string;
220
+ value: string;
221
+ color?: string;
222
+ icon?: string;
223
+ disabled?: boolean;
224
+ }
225
+ /**
226
+ * Select field metadata
227
+ */
228
+ export interface SelectFieldMetadata extends BaseFieldMetadata {
229
+ type: 'select';
230
+ options?: SelectOptionMetadata[];
231
+ multiple?: boolean;
232
+ searchable?: boolean;
233
+ }
234
+ /**
235
+ * Email field metadata
236
+ */
237
+ export interface EmailFieldMetadata extends BaseFieldMetadata {
238
+ type: 'email';
239
+ max_length?: number;
240
+ }
241
+ /**
242
+ * Phone field metadata
243
+ */
244
+ export interface PhoneFieldMetadata extends BaseFieldMetadata {
245
+ type: 'phone';
246
+ format?: string;
247
+ }
248
+ /**
249
+ * URL field metadata
250
+ */
251
+ export interface UrlFieldMetadata extends BaseFieldMetadata {
252
+ type: 'url';
253
+ max_length?: number;
254
+ }
255
+ /**
256
+ * Password field metadata
257
+ */
258
+ export interface PasswordFieldMetadata extends BaseFieldMetadata {
259
+ type: 'password';
260
+ min_length?: number;
261
+ max_length?: number;
262
+ }
263
+ /**
264
+ * File metadata
265
+ */
266
+ export interface FileMetadata {
267
+ name: string;
268
+ original_name?: string;
269
+ size?: number;
270
+ mime_type?: string;
271
+ url?: string;
272
+ }
273
+ /**
274
+ * File field metadata
275
+ */
276
+ export interface FileFieldMetadata extends BaseFieldMetadata {
277
+ type: 'file';
278
+ multiple?: boolean;
279
+ accept?: string[];
280
+ max_size?: number;
281
+ max_files?: number;
282
+ }
283
+ /**
284
+ * Image field metadata
285
+ */
286
+ export interface ImageFieldMetadata extends BaseFieldMetadata {
287
+ type: 'image';
288
+ multiple?: boolean;
289
+ accept?: string[];
290
+ max_size?: number;
291
+ max_files?: number;
292
+ max_width?: number;
293
+ max_height?: number;
294
+ }
295
+ /**
296
+ * Location field metadata
297
+ */
298
+ export interface LocationFieldMetadata extends BaseFieldMetadata {
299
+ type: 'location';
300
+ default_zoom?: number;
301
+ }
302
+ /**
303
+ * Lookup/Master-Detail field metadata
304
+ */
305
+ export interface LookupFieldMetadata extends BaseFieldMetadata {
306
+ type: 'lookup' | 'master_detail';
307
+ reference_to?: string;
308
+ reference_field?: string;
309
+ multiple?: boolean;
310
+ searchable?: boolean;
311
+ options?: SelectOptionMetadata[];
312
+ }
313
+ /**
314
+ * Formula field metadata (read-only computed field)
315
+ * Phase 3.2.4: Enhanced formula field with real-time computation
316
+ */
317
+ export interface FormulaFieldMetadata extends BaseFieldMetadata {
318
+ type: 'formula';
319
+ /**
320
+ * Formula expression
321
+ * Supports JavaScript-like expressions with field references
322
+ * @example "${amount} * ${tax_rate}"
323
+ * @example "${firstName} + ' ' + ${lastName}"
324
+ */
325
+ formula?: string;
326
+ /**
327
+ * Return type of the formula
328
+ */
329
+ return_type?: 'text' | 'number' | 'boolean' | 'date' | 'datetime';
330
+ /**
331
+ * Whether to recompute on dependency changes
332
+ */
333
+ auto_compute?: boolean;
334
+ }
335
+ /**
336
+ * Summary/Rollup field metadata (aggregation)
337
+ * Phase 3.2.5: Enhanced summary field implementation
338
+ */
339
+ export interface SummaryFieldMetadata extends BaseFieldMetadata {
340
+ type: 'summary';
341
+ /**
342
+ * Related object to summarize from
343
+ */
344
+ summary_object?: string;
345
+ /**
346
+ * Field to aggregate in the related object
347
+ */
348
+ summary_field?: string;
349
+ /**
350
+ * Aggregation type
351
+ */
352
+ summary_type?: 'count' | 'sum' | 'avg' | 'min' | 'max' | 'first' | 'last';
353
+ /**
354
+ * Filter condition for summarized records
355
+ */
356
+ summary_filter?: Record<string, any>;
357
+ /**
358
+ * Whether to auto-update on related record changes
359
+ */
360
+ auto_update?: boolean;
361
+ }
362
+ /**
363
+ * Auto-number field metadata
364
+ */
365
+ export interface AutoNumberFieldMetadata extends BaseFieldMetadata {
366
+ type: 'auto_number';
367
+ format?: string;
368
+ starting_number?: number;
369
+ }
370
+ /**
371
+ * User/Owner field metadata
372
+ */
373
+ export interface UserFieldMetadata extends BaseFieldMetadata {
374
+ type: 'user' | 'owner';
375
+ multiple?: boolean;
376
+ }
377
+ /**
378
+ * Object field metadata (JSON object)
379
+ */
380
+ export interface ObjectFieldMetadata extends BaseFieldMetadata {
381
+ type: 'object';
382
+ schema?: Record<string, any>;
383
+ }
384
+ /**
385
+ * Vector field metadata (embeddings)
386
+ * Phase 3.2.1: Complete vector field implementation
387
+ */
388
+ export interface VectorFieldMetadata extends BaseFieldMetadata {
389
+ type: 'vector';
390
+ /**
391
+ * Vector dimensions (e.g., 768 for BERT, 1536 for OpenAI)
392
+ */
393
+ dimensions?: number;
394
+ /**
395
+ * Distance metric for similarity search
396
+ */
397
+ distance_metric?: 'cosine' | 'euclidean' | 'dot_product';
398
+ /**
399
+ * Whether to index for similarity search
400
+ */
401
+ indexed?: boolean;
402
+ /**
403
+ * Normalization strategy
404
+ */
405
+ normalize?: boolean;
406
+ }
407
+ /**
408
+ * Grid field metadata (sub-table)
409
+ * Phase 3.2.2: Complete grid field implementation
410
+ */
411
+ export interface GridFieldMetadata extends BaseFieldMetadata {
412
+ type: 'grid';
413
+ /**
414
+ * Column definitions for the grid
415
+ */
416
+ columns?: GridColumnDefinition[];
417
+ /**
418
+ * Minimum number of rows
419
+ */
420
+ min_rows?: number;
421
+ /**
422
+ * Maximum number of rows
423
+ */
424
+ max_rows?: number;
425
+ /**
426
+ * Whether to allow adding rows
427
+ */
428
+ allow_add?: boolean;
429
+ /**
430
+ * Whether to allow deleting rows
431
+ */
432
+ allow_delete?: boolean;
433
+ /**
434
+ * Whether to allow reordering rows
435
+ */
436
+ allow_reorder?: boolean;
437
+ }
438
+ /**
439
+ * Grid column definition
440
+ */
441
+ export interface GridColumnDefinition {
442
+ /**
443
+ * Column field name
444
+ */
445
+ name: string;
446
+ /**
447
+ * Column label
448
+ */
449
+ label?: string;
450
+ /**
451
+ * Field type
452
+ */
453
+ type: string;
454
+ /**
455
+ * Whether column is required
456
+ */
457
+ required?: boolean;
458
+ /**
459
+ * Default value for new rows
460
+ */
461
+ defaultValue?: any;
462
+ /**
463
+ * Column width
464
+ */
465
+ width?: number;
466
+ /**
467
+ * Validation rules
468
+ */
469
+ validate?: ValidationRule;
470
+ }
471
+ export interface ColorFieldMetadata extends BaseFieldMetadata {
472
+ type: 'color';
473
+ }
474
+ export interface CodeFieldMetadata extends BaseFieldMetadata {
475
+ type: 'code';
476
+ }
477
+ export interface AvatarFieldMetadata extends BaseFieldMetadata {
478
+ type: 'avatar';
479
+ }
480
+ export interface SignatureFieldMetadata extends BaseFieldMetadata {
481
+ type: 'signature';
482
+ }
483
+ export interface QRCodeFieldMetadata extends BaseFieldMetadata {
484
+ type: 'qrcode';
485
+ }
486
+ export interface AddressFieldMetadata extends BaseFieldMetadata {
487
+ type: 'address';
488
+ }
489
+ export interface GeolocationFieldMetadata extends BaseFieldMetadata {
490
+ type: 'geolocation';
491
+ }
492
+ export interface SliderFieldMetadata extends BaseFieldMetadata {
493
+ type: 'slider';
494
+ min?: number;
495
+ max?: number;
496
+ }
497
+ export interface RatingFieldMetadata extends BaseFieldMetadata {
498
+ type: 'rating';
499
+ max?: number;
500
+ }
501
+ export interface MasterDetailFieldMetadata extends BaseFieldMetadata {
502
+ type: 'master_detail';
503
+ reference_to?: string;
504
+ }
505
+ /**
506
+ * Union type of all field metadata types
507
+ */
508
+ export type FieldMetadata = TextFieldMetadata | TextareaFieldMetadata | MarkdownFieldMetadata | HtmlFieldMetadata | NumberFieldMetadata | CurrencyFieldMetadata | PercentFieldMetadata | BooleanFieldMetadata | DateFieldMetadata | DateTimeFieldMetadata | TimeFieldMetadata | SelectFieldMetadata | EmailFieldMetadata | PhoneFieldMetadata | UrlFieldMetadata | PasswordFieldMetadata | FileFieldMetadata | ImageFieldMetadata | LocationFieldMetadata | LookupFieldMetadata | FormulaFieldMetadata | SummaryFieldMetadata | AutoNumberFieldMetadata | UserFieldMetadata | ObjectFieldMetadata | VectorFieldMetadata | GridFieldMetadata | ColorFieldMetadata | CodeFieldMetadata | AvatarFieldMetadata | SignatureFieldMetadata | QRCodeFieldMetadata | AddressFieldMetadata | GeolocationFieldMetadata | SliderFieldMetadata | RatingFieldMetadata | MasterDetailFieldMetadata;
509
+ /**
510
+ * Object trigger configuration (Phase 3.1.3)
511
+ */
512
+ export interface ObjectTrigger {
513
+ /**
514
+ * Trigger name
515
+ */
516
+ name: string;
517
+ /**
518
+ * When to execute the trigger
519
+ */
520
+ when: 'before' | 'after';
521
+ /**
522
+ * Which operation triggers this
523
+ */
524
+ on: 'create' | 'update' | 'delete' | 'read';
525
+ /**
526
+ * Trigger condition (optional)
527
+ */
528
+ condition?: string;
529
+ /**
530
+ * Action to execute
531
+ */
532
+ action: 'validation' | 'workflow' | 'notification' | 'calculation' | 'custom';
533
+ /**
534
+ * Action configuration
535
+ */
536
+ config?: Record<string, any>;
537
+ }
538
+ /**
539
+ * Object permission configuration (Phase 3.1.4)
540
+ */
541
+ export interface ObjectPermission {
542
+ /**
543
+ * Permission profile name
544
+ */
545
+ profile?: string;
546
+ /**
547
+ * Role-based permissions
548
+ */
549
+ roles?: string[];
550
+ /**
551
+ * CRUD permissions
552
+ */
553
+ create?: boolean;
554
+ read?: boolean;
555
+ update?: boolean;
556
+ delete?: boolean;
557
+ /**
558
+ * Record-level permissions
559
+ */
560
+ record_level?: {
561
+ /**
562
+ * User can only access own records
563
+ */
564
+ own_records_only?: boolean;
565
+ /**
566
+ * Sharing rules
567
+ */
568
+ sharing_rules?: SharingRule[];
569
+ };
570
+ /**
571
+ * Field-level permissions
572
+ */
573
+ field_permissions?: Record<string, {
574
+ read?: boolean;
575
+ edit?: boolean;
576
+ }>;
577
+ }
578
+ /**
579
+ * Sharing rule configuration
580
+ */
581
+ export interface SharingRule {
582
+ /**
583
+ * Rule name
584
+ */
585
+ name: string;
586
+ /**
587
+ * Criteria for sharing
588
+ */
589
+ criteria?: Record<string, any>;
590
+ /**
591
+ * Access level granted
592
+ */
593
+ access_level: 'read' | 'edit' | 'full';
594
+ /**
595
+ * Share with users/roles
596
+ */
597
+ share_with?: {
598
+ users?: string[];
599
+ roles?: string[];
600
+ groups?: string[];
601
+ };
602
+ }
603
+ /**
604
+ * Object schema definition
605
+ * Phase 3.1: Enhanced with inheritance, triggers, permissions, and caching
606
+ */
607
+ export interface ObjectSchemaMetadata {
608
+ /**
609
+ * Object name
610
+ */
611
+ name: string;
612
+ /**
613
+ * Display label
614
+ */
615
+ label?: string;
616
+ /**
617
+ * Object description
618
+ */
619
+ description?: string;
620
+ /**
621
+ * Fields definition
622
+ */
623
+ fields: Record<string, FieldMetadata>;
624
+ /**
625
+ * Permissions (Phase 3.1.4: Enhanced permissions)
626
+ */
627
+ permissions?: ObjectPermission;
628
+ /**
629
+ * Parent object to inherit from (Phase 3.1.2)
630
+ */
631
+ extends?: string;
632
+ /**
633
+ * Triggers configuration (Phase 3.1.3)
634
+ */
635
+ triggers?: ObjectTrigger[];
636
+ /**
637
+ * Primary key field
638
+ */
639
+ primary_key?: string;
640
+ /**
641
+ * Indexes for optimization
642
+ */
643
+ indexes?: ObjectIndex[];
644
+ /**
645
+ * Relationships with other objects
646
+ */
647
+ relationships?: ObjectRelationship[];
648
+ /**
649
+ * Record naming pattern
650
+ */
651
+ name_field?: string;
652
+ /**
653
+ * Soft delete configuration
654
+ */
655
+ soft_delete?: boolean;
656
+ /**
657
+ * Audit trail configuration
658
+ */
659
+ audit_trail?: boolean;
660
+ /**
661
+ * Schema version
662
+ */
663
+ version?: string;
664
+ /**
665
+ * Cache configuration (Phase 3.1.5)
666
+ */
667
+ cache?: {
668
+ /**
669
+ * Enable metadata caching
670
+ */
671
+ enabled?: boolean;
672
+ /**
673
+ * Cache TTL in seconds
674
+ */
675
+ ttl?: number;
676
+ /**
677
+ * Cache invalidation strategy
678
+ */
679
+ invalidation?: 'time' | 'event' | 'manual';
680
+ };
681
+ }
682
+ /**
683
+ * Object index configuration
684
+ */
685
+ export interface ObjectIndex {
686
+ /**
687
+ * Index name
688
+ */
689
+ name: string;
690
+ /**
691
+ * Fields to index
692
+ */
693
+ fields: string[];
694
+ /**
695
+ * Whether index is unique
696
+ */
697
+ unique?: boolean;
698
+ /**
699
+ * Index type
700
+ */
701
+ type?: 'btree' | 'hash' | 'gist' | 'gin';
702
+ }
703
+ /**
704
+ * Object relationship configuration
705
+ */
706
+ export interface ObjectRelationship {
707
+ /**
708
+ * Relationship name
709
+ */
710
+ name: string;
711
+ /**
712
+ * Related object
713
+ */
714
+ object: string;
715
+ /**
716
+ * Relationship type
717
+ */
718
+ type: 'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many';
719
+ /**
720
+ * Foreign key field
721
+ */
722
+ foreign_key?: string;
723
+ /**
724
+ * Cascade delete
725
+ */
726
+ cascade_delete?: boolean;
727
+ }
728
+ //# sourceMappingURL=field-types.d.ts.map