@objectstack/spec 0.1.0 → 0.1.2
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/README.md +134 -121
- package/dist/ai/agent.zod.d.ts +164 -0
- package/dist/ai/agent.zod.d.ts.map +1 -0
- package/dist/ai/agent.zod.js +51 -0
- package/dist/api/contract.zod.d.ts +1733 -0
- package/dist/api/contract.zod.d.ts.map +1 -0
- package/dist/api/contract.zod.js +138 -0
- package/dist/data/dataset.zod.d.ts +60 -0
- package/dist/data/dataset.zod.d.ts.map +1 -0
- package/dist/data/dataset.zod.js +54 -0
- package/dist/data/field.zod.d.ts +1808 -0
- package/dist/data/field.zod.d.ts.map +1 -0
- package/dist/data/field.zod.js +222 -0
- package/dist/data/flow.zod.d.ts +242 -0
- package/dist/data/flow.zod.d.ts.map +1 -0
- package/dist/data/flow.zod.js +77 -0
- package/dist/data/mapping.zod.d.ts +470 -0
- package/dist/data/mapping.zod.d.ts.map +1 -0
- package/dist/data/mapping.zod.js +65 -0
- package/dist/data/object.zod.d.ts +844 -0
- package/dist/data/object.zod.d.ts.map +1 -0
- package/dist/data/object.zod.js +81 -0
- package/dist/data/permission.zod.d.ts +163 -0
- package/dist/data/permission.zod.d.ts.map +1 -0
- package/dist/data/permission.zod.js +62 -0
- package/dist/data/query.zod.d.ts +438 -0
- package/dist/data/query.zod.d.ts.map +1 -0
- package/dist/data/query.zod.js +147 -0
- package/dist/data/sharing.zod.d.ts +63 -0
- package/dist/data/sharing.zod.d.ts.map +1 -0
- package/dist/data/sharing.zod.js +57 -0
- package/dist/data/trigger.zod.d.ts +354 -0
- package/dist/data/trigger.zod.d.ts.map +1 -0
- package/dist/data/trigger.zod.js +195 -0
- package/dist/data/validation.zod.d.ts +276 -0
- package/dist/data/validation.zod.d.ts.map +1 -0
- package/dist/data/validation.zod.js +105 -0
- package/dist/data/workflow.zod.d.ts +195 -0
- package/dist/data/workflow.zod.d.ts.map +1 -0
- package/dist/data/workflow.zod.js +64 -0
- package/dist/index.d.ts +41 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +62 -5
- package/dist/system/api.zod.d.ts +294 -0
- package/dist/system/api.zod.d.ts.map +1 -0
- package/dist/system/api.zod.js +56 -0
- package/dist/system/constants/index.d.ts +11 -0
- package/dist/system/constants/index.d.ts.map +1 -0
- package/dist/system/constants/index.js +26 -0
- package/dist/system/constants/paths.d.ts +71 -0
- package/dist/system/constants/paths.d.ts.map +1 -0
- package/dist/system/constants/paths.js +65 -0
- package/dist/system/datasource.zod.d.ts +210 -0
- package/dist/system/datasource.zod.d.ts.map +1 -0
- package/dist/system/datasource.zod.js +90 -0
- package/dist/system/discovery.zod.d.ts +174 -0
- package/dist/system/discovery.zod.d.ts.map +1 -0
- package/dist/system/discovery.zod.js +53 -0
- package/dist/system/driver.zod.d.ts +1525 -0
- package/dist/system/driver.zod.d.ts.map +1 -0
- package/dist/system/driver.zod.js +290 -0
- package/dist/system/identity.zod.d.ts +204 -0
- package/dist/system/identity.zod.d.ts.map +1 -0
- package/dist/system/identity.zod.js +68 -0
- package/dist/system/license.zod.d.ts +110 -0
- package/dist/system/license.zod.d.ts.map +1 -0
- package/dist/system/license.zod.js +63 -0
- package/dist/system/manifest.zod.d.ts +397 -0
- package/dist/system/manifest.zod.d.ts.map +1 -0
- package/dist/system/manifest.zod.js +142 -0
- package/dist/system/plugin.zod.d.ts +3516 -0
- package/dist/system/plugin.zod.d.ts.map +1 -0
- package/dist/system/plugin.zod.js +226 -0
- package/dist/system/policy.zod.d.ts +209 -0
- package/dist/system/policy.zod.d.ts.map +1 -0
- package/dist/system/policy.zod.js +54 -0
- package/dist/system/role.zod.d.ts +34 -0
- package/dist/system/role.zod.d.ts.map +1 -0
- package/dist/system/role.zod.js +25 -0
- package/dist/system/territory.zod.d.ts +91 -0
- package/dist/system/territory.zod.d.ts.map +1 -0
- package/dist/system/territory.zod.js +64 -0
- package/dist/system/translation.zod.d.ts +171 -0
- package/dist/system/translation.zod.d.ts.map +1 -0
- package/dist/system/translation.zod.js +34 -0
- package/dist/system/types/index.d.ts +7 -0
- package/dist/system/types/index.d.ts.map +1 -0
- package/dist/system/types/index.js +22 -0
- package/dist/system/types/plugin.d.ts +113 -0
- package/dist/system/types/plugin.d.ts.map +1 -0
- package/dist/system/types/plugin.js +6 -0
- package/dist/system/webhook.zod.d.ts +106 -0
- package/dist/system/webhook.zod.d.ts.map +1 -0
- package/dist/system/webhook.zod.js +56 -0
- package/dist/ui/action.zod.d.ts +155 -0
- package/dist/ui/action.zod.d.ts.map +1 -0
- package/dist/ui/action.zod.js +54 -0
- package/dist/ui/app.zod.d.ts +405 -0
- package/dist/ui/app.zod.d.ts.map +1 -0
- package/dist/ui/app.zod.js +138 -0
- package/dist/ui/dashboard.zod.d.ts +213 -0
- package/dist/ui/dashboard.zod.d.ts.map +1 -0
- package/dist/ui/dashboard.zod.js +72 -0
- package/dist/ui/page.zod.d.ts +187 -0
- package/dist/ui/page.zod.d.ts.map +1 -0
- package/dist/ui/page.zod.js +48 -0
- package/dist/ui/report.zod.d.ts +233 -0
- package/dist/ui/report.zod.d.ts.map +1 -0
- package/dist/ui/report.zod.js +74 -0
- package/dist/ui/theme.zod.d.ts +1221 -0
- package/dist/ui/theme.zod.d.ts.map +1 -0
- package/dist/ui/theme.zod.js +202 -0
- package/dist/ui/view.zod.d.ts +887 -0
- package/dist/ui/view.zod.d.ts.map +1 -0
- package/dist/ui/view.zod.js +83 -0
- package/dist/ui/widget.zod.d.ts +350 -0
- package/dist/ui/widget.zod.d.ts.map +1 -0
- package/dist/ui/widget.zod.js +66 -0
- package/json-schema/AIKnowledge.json +30 -0
- package/json-schema/AIModelConfig.json +41 -0
- package/json-schema/AITool.json +33 -0
- package/json-schema/Action.json +162 -0
- package/json-schema/ActionParam.json +82 -0
- package/json-schema/Address.json +40 -0
- package/json-schema/Agent.json +140 -0
- package/json-schema/AggregationFunction.json +19 -0
- package/json-schema/AggregationNode.json +42 -0
- package/json-schema/Animation.json +56 -0
- package/json-schema/ApiCapabilities.json +28 -0
- package/json-schema/ApiEndpoint.json +162 -0
- package/json-schema/ApiError.json +27 -0
- package/json-schema/ApiMapping.json +28 -0
- package/json-schema/ApiRoutes.json +41 -0
- package/json-schema/App.json +297 -0
- package/json-schema/AppBranding.json +24 -0
- package/json-schema/AsyncValidation.json +70 -0
- package/json-schema/AuditPolicy.json +31 -0
- package/json-schema/AuthProtocol.json +17 -0
- package/json-schema/AuthProvider.json +171 -0
- package/json-schema/BaseResponse.json +63 -0
- package/json-schema/BorderRadius.json +44 -0
- package/json-schema/Breakpoints.json +36 -0
- package/json-schema/BulkRequest.json +29 -0
- package/json-schema/BulkResponse.json +108 -0
- package/json-schema/CalendarConfig.json +28 -0
- package/json-schema/ChartType.json +19 -0
- package/json-schema/ColorPalette.json +83 -0
- package/json-schema/ConditionalValidation.json +793 -0
- package/json-schema/CreateRequest.json +20 -0
- package/json-schema/CrossFieldValidation.json +56 -0
- package/json-schema/CustomValidator.json +57 -0
- package/json-schema/Dashboard.json +117 -0
- package/json-schema/DashboardNavItem.json +42 -0
- package/json-schema/DashboardWidget.json +89 -0
- package/json-schema/Dataset.json +63 -0
- package/json-schema/DatasetMode.json +16 -0
- package/json-schema/Datasource.json +75 -0
- package/json-schema/DatasourceCapabilities.json +36 -0
- package/json-schema/DeleteResponse.json +68 -0
- package/json-schema/Discovery.json +114 -0
- package/json-schema/DriverCapabilities.json +39 -0
- package/json-schema/DriverDefinition.json +66 -0
- package/json-schema/DriverInterface.json +58 -0
- package/json-schema/DriverOptions.json +23 -0
- package/json-schema/DriverType.json +10 -0
- package/json-schema/EmailAlertAction.json +37 -0
- package/json-schema/ExportRequest.json +786 -0
- package/json-schema/Feature.json +51 -0
- package/json-schema/Field.json +290 -0
- package/json-schema/FieldMapping.json +83 -0
- package/json-schema/FieldNode.json +32 -0
- package/json-schema/FieldPermission.json +22 -0
- package/json-schema/FieldType.json +42 -0
- package/json-schema/FieldUpdateAction.json +32 -0
- package/json-schema/FieldWidgetProps.json +327 -0
- package/json-schema/FilterNode.json +52 -0
- package/json-schema/FilterOperator.json +26 -0
- package/json-schema/Flow.json +186 -0
- package/json-schema/FlowEdge.json +37 -0
- package/json-schema/FlowNode.json +65 -0
- package/json-schema/FlowNodeAction.json +24 -0
- package/json-schema/FlowVariable.json +34 -0
- package/json-schema/FormSection.json +42 -0
- package/json-schema/FormView.json +99 -0
- package/json-schema/FormatValidation.json +59 -0
- package/json-schema/GanttConfig.json +32 -0
- package/json-schema/GroupNavItem.json +42 -0
- package/json-schema/HttpMethod.json +16 -0
- package/json-schema/I18nContext.json +12 -0
- package/json-schema/Index.json +30 -0
- package/json-schema/JoinNode.json +455 -0
- package/json-schema/JoinType.json +15 -0
- package/json-schema/KanbanConfig.json +31 -0
- package/json-schema/LDAPConfig.json +39 -0
- package/json-schema/License.json +57 -0
- package/json-schema/ListRecordResponse.json +103 -0
- package/json-schema/ListView.json +153 -0
- package/json-schema/Locale.json +10 -0
- package/json-schema/LocationCoordinates.json +36 -0
- package/json-schema/Logger.json +25 -0
- package/json-schema/LogicOperator.json +14 -0
- package/json-schema/Manifest.json +315 -0
- package/json-schema/Mapping.json +598 -0
- package/json-schema/MenuItem.json +28 -0
- package/json-schema/MetricType.json +14 -0
- package/json-schema/ModificationResult.json +46 -0
- package/json-schema/NavigationItem.json +214 -0
- package/json-schema/NetworkPolicy.json +31 -0
- package/json-schema/OIDCConfig.json +46 -0
- package/json-schema/OWDModel.json +14 -0
- package/json-schema/Object.json +428 -0
- package/json-schema/ObjectCapabilities.json +62 -0
- package/json-schema/ObjectNavItem.json +46 -0
- package/json-schema/ObjectPermission.json +42 -0
- package/json-schema/ObjectQLClient.json +12 -0
- package/json-schema/Page.json +117 -0
- package/json-schema/PageComponent.json +36 -0
- package/json-schema/PageNavItem.json +47 -0
- package/json-schema/PageRegion.json +63 -0
- package/json-schema/PasswordPolicy.json +41 -0
- package/json-schema/PermissionSet.json +96 -0
- package/json-schema/Plan.json +53 -0
- package/json-schema/Plugin.json +20 -0
- package/json-schema/PluginContext.json +91 -0
- package/json-schema/PluginLifecycle.json +11 -0
- package/json-schema/Policy.json +138 -0
- package/json-schema/Query.json +456 -0
- package/json-schema/RateLimit.json +26 -0
- package/json-schema/RecordData.json +11 -0
- package/json-schema/Report.json +219 -0
- package/json-schema/ReportChart.json +45 -0
- package/json-schema/ReportColumn.json +35 -0
- package/json-schema/ReportGrouping.json +38 -0
- package/json-schema/ReportType.json +15 -0
- package/json-schema/Role.json +32 -0
- package/json-schema/Router.json +12 -0
- package/json-schema/SAMLConfig.json +44 -0
- package/json-schema/Scheduler.json +12 -0
- package/json-schema/ScopedStorage.json +12 -0
- package/json-schema/ScriptValidation.json +48 -0
- package/json-schema/SelectOption.json +32 -0
- package/json-schema/SessionPolicy.json +27 -0
- package/json-schema/Shadow.json +44 -0
- package/json-schema/SharingLevel.json +13 -0
- package/json-schema/SharingRule.json +58 -0
- package/json-schema/SharingRuleType.json +15 -0
- package/json-schema/SingleRecordResponse.json +69 -0
- package/json-schema/SortNode.json +26 -0
- package/json-schema/Spacing.json +64 -0
- package/json-schema/StateMachineValidation.json +59 -0
- package/json-schema/SystemAPI.json +12 -0
- package/json-schema/Territory.json +77 -0
- package/json-schema/TerritoryModel.json +34 -0
- package/json-schema/TerritoryType.json +15 -0
- package/json-schema/Theme.json +543 -0
- package/json-schema/ThemeMode.json +14 -0
- package/json-schema/TransformType.json +18 -0
- package/json-schema/TranslationBundle.json +78 -0
- package/json-schema/TranslationData.json +75 -0
- package/json-schema/Trigger.json +73 -0
- package/json-schema/TriggerAction.json +14 -0
- package/json-schema/TriggerContext.json +61 -0
- package/json-schema/TriggerTiming.json +13 -0
- package/json-schema/Typography.json +142 -0
- package/json-schema/UniquenessValidation.json +59 -0
- package/json-schema/UpdateRequest.json +20 -0
- package/json-schema/UrlNavItem.json +51 -0
- package/json-schema/ValidationRule.json +794 -0
- package/json-schema/View.json +500 -0
- package/json-schema/Webhook.json +88 -0
- package/json-schema/WebhookReceiver.json +66 -0
- package/json-schema/WebhookTriggerType.json +16 -0
- package/json-schema/WindowFunction.json +24 -0
- package/json-schema/WindowFunctionNode.json +104 -0
- package/json-schema/WindowSpec.json +65 -0
- package/json-schema/WorkflowAction.json +84 -0
- package/json-schema/WorkflowRule.json +128 -0
- package/json-schema/WorkflowTriggerType.json +16 -0
- package/json-schema/ZIndex.json +44 -0
- package/package.json +34 -20
- package/dist/examples.d.ts +0 -28
- package/dist/examples.d.ts.map +0 -1
- package/dist/examples.js +0 -250
- package/dist/types/index.d.ts +0 -9
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -8
- package/dist/types/meta/field-type.d.ts +0 -54
- package/dist/types/meta/field-type.d.ts.map +0 -1
- package/dist/types/meta/field-type.js +0 -42
- package/dist/types/meta/index.d.ts +0 -13
- package/dist/types/meta/index.d.ts.map +0 -1
- package/dist/types/meta/index.js +0 -12
- package/dist/types/meta/object-entity.d.ts +0 -246
- package/dist/types/meta/object-entity.d.ts.map +0 -1
- package/dist/types/meta/object-entity.js +0 -9
- package/dist/types/meta/object-field.d.ts +0 -199
- package/dist/types/meta/object-field.d.ts.map +0 -1
- package/dist/types/meta/object-field.js +0 -9
- package/dist/types/meta/object-view.d.ts +0 -430
- package/dist/types/meta/object-view.d.ts.map +0 -1
- package/dist/types/meta/object-view.js +0 -9
- package/src/examples.ts +0 -257
- package/src/index.ts +0 -10
- package/src/types/index.ts +0 -9
- package/src/types/meta/field-type.ts +0 -91
- package/src/types/meta/index.ts +0 -13
- package/src/types/meta/object-entity.ts +0 -265
- package/src/types/meta/object-field.ts +0 -218
- package/src/types/meta/object-view.ts +0 -475
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Object Field Interface
|
|
3
|
-
*
|
|
4
|
-
* Defines the structure of a field within an ObjectEntity.
|
|
5
|
-
* Fields represent individual data attributes and their metadata.
|
|
6
|
-
*
|
|
7
|
-
* @module types/meta/object-field
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { FieldType } from './field-type';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Represents a field definition within an ObjectEntity
|
|
14
|
-
*
|
|
15
|
-
* @remarks
|
|
16
|
-
* ObjectField defines the complete metadata for a single field/attribute
|
|
17
|
-
* in an entity. This includes its type, validation rules, UI hints, and
|
|
18
|
-
* relationships to other entities (in the case of lookup fields).
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* const nameField: ObjectField = {
|
|
23
|
-
* name: 'name',
|
|
24
|
-
* label: 'Full Name',
|
|
25
|
-
* type: 'text',
|
|
26
|
-
* required: true,
|
|
27
|
-
* maxLength: 100
|
|
28
|
-
* };
|
|
29
|
-
*
|
|
30
|
-
* const ownerField: ObjectField = {
|
|
31
|
-
* name: 'owner',
|
|
32
|
-
* label: 'Owner',
|
|
33
|
-
* type: 'lookup',
|
|
34
|
-
* required: true,
|
|
35
|
-
* lookupEntity: 'User',
|
|
36
|
-
* lookupDisplayField: 'name'
|
|
37
|
-
* };
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
export interface ObjectField {
|
|
41
|
-
/**
|
|
42
|
-
* Technical name of the field (used in code and database)
|
|
43
|
-
*
|
|
44
|
-
* @remarks
|
|
45
|
-
* Should be in camelCase or snake_case format.
|
|
46
|
-
* Must be unique within the entity.
|
|
47
|
-
*
|
|
48
|
-
* @example 'firstName', 'email', 'created_at'
|
|
49
|
-
*/
|
|
50
|
-
name: string;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Human-readable label for the field
|
|
54
|
-
*
|
|
55
|
-
* @remarks
|
|
56
|
-
* Used in UI forms, tables, and documentation.
|
|
57
|
-
*
|
|
58
|
-
* @example 'First Name', 'Email Address', 'Created At'
|
|
59
|
-
*/
|
|
60
|
-
label: string;
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Data type of the field
|
|
64
|
-
*
|
|
65
|
-
* @see FieldType
|
|
66
|
-
*/
|
|
67
|
-
type: FieldType;
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Detailed description of the field's purpose and usage
|
|
71
|
-
*
|
|
72
|
-
* @remarks
|
|
73
|
-
* Used for tooltips, help text, and documentation.
|
|
74
|
-
*/
|
|
75
|
-
description?: string;
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Whether the field is required (cannot be null/empty)
|
|
79
|
-
*
|
|
80
|
-
* @defaultValue false
|
|
81
|
-
*/
|
|
82
|
-
required?: boolean;
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Whether the field value must be unique across all records
|
|
86
|
-
*
|
|
87
|
-
* @defaultValue false
|
|
88
|
-
*/
|
|
89
|
-
unique?: boolean;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Default value when creating new records
|
|
93
|
-
*
|
|
94
|
-
* @remarks
|
|
95
|
-
* Can be a static value or a function reference (e.g., 'NOW()' for timestamps)
|
|
96
|
-
*/
|
|
97
|
-
defaultValue?: unknown;
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Maximum length for text fields
|
|
101
|
-
*
|
|
102
|
-
* @remarks
|
|
103
|
-
* Only applicable to 'text', 'textarea', 'email', 'url' field types
|
|
104
|
-
*/
|
|
105
|
-
maxLength?: number;
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Minimum length for text fields
|
|
109
|
-
*
|
|
110
|
-
* @remarks
|
|
111
|
-
* Only applicable to 'text', 'textarea', 'email', 'url' field types
|
|
112
|
-
*/
|
|
113
|
-
minLength?: number;
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Minimum value for numeric fields
|
|
117
|
-
*
|
|
118
|
-
* @remarks
|
|
119
|
-
* Only applicable to 'number', 'currency', 'percentage' field types
|
|
120
|
-
*/
|
|
121
|
-
min?: number;
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Maximum value for numeric fields
|
|
125
|
-
*
|
|
126
|
-
* @remarks
|
|
127
|
-
* Only applicable to 'number', 'currency', 'percentage' field types
|
|
128
|
-
*/
|
|
129
|
-
max?: number;
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Regular expression pattern for validation
|
|
133
|
-
*
|
|
134
|
-
* @remarks
|
|
135
|
-
* Applied to text-based field types for custom validation rules
|
|
136
|
-
*
|
|
137
|
-
* @example '^[A-Z]{2}-\\d{4}$' for pattern like 'AB-1234'
|
|
138
|
-
*/
|
|
139
|
-
pattern?: string;
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Target entity name for lookup fields
|
|
143
|
-
*
|
|
144
|
-
* @remarks
|
|
145
|
-
* Required when type is 'lookup'. Specifies which entity this field references.
|
|
146
|
-
*
|
|
147
|
-
* @example 'User', 'Account', 'Product'
|
|
148
|
-
*/
|
|
149
|
-
lookupEntity?: string;
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Field name in the lookup entity to display
|
|
153
|
-
*
|
|
154
|
-
* @remarks
|
|
155
|
-
* Used to show human-readable text instead of IDs.
|
|
156
|
-
* Common values: 'name', 'title', 'label'
|
|
157
|
-
*
|
|
158
|
-
* @defaultValue 'name'
|
|
159
|
-
*/
|
|
160
|
-
lookupDisplayField?: string;
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Available options for select/multiselect fields
|
|
164
|
-
*
|
|
165
|
-
* @remarks
|
|
166
|
-
* Only applicable to 'select' and 'multiselect' field types
|
|
167
|
-
*
|
|
168
|
-
* @example
|
|
169
|
-
* ```typescript
|
|
170
|
-
* options: [
|
|
171
|
-
* { value: 'draft', label: 'Draft' },
|
|
172
|
-
* { value: 'published', label: 'Published' }
|
|
173
|
-
* ]
|
|
174
|
-
* ```
|
|
175
|
-
*/
|
|
176
|
-
options?: Array<{
|
|
177
|
-
/** Internal value stored in database */
|
|
178
|
-
value: string | number;
|
|
179
|
-
/** Human-readable label shown in UI */
|
|
180
|
-
label: string;
|
|
181
|
-
}>;
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Whether the field is indexed for faster queries
|
|
185
|
-
*
|
|
186
|
-
* @defaultValue false
|
|
187
|
-
*/
|
|
188
|
-
indexed?: boolean;
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Whether the field is read-only
|
|
192
|
-
*
|
|
193
|
-
* @remarks
|
|
194
|
-
* Read-only fields can only be set by the system, not by users
|
|
195
|
-
*
|
|
196
|
-
* @defaultValue false
|
|
197
|
-
*/
|
|
198
|
-
readonly?: boolean;
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Whether the field is hidden from UI by default
|
|
202
|
-
*
|
|
203
|
-
* @remarks
|
|
204
|
-
* Hidden fields are still stored and queryable but not shown in standard forms/views
|
|
205
|
-
*
|
|
206
|
-
* @defaultValue false
|
|
207
|
-
*/
|
|
208
|
-
hidden?: boolean;
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Custom metadata for extensions and plugins
|
|
212
|
-
*
|
|
213
|
-
* @remarks
|
|
214
|
-
* Allows third-party code to attach arbitrary metadata to fields
|
|
215
|
-
* without modifying the core interface
|
|
216
|
-
*/
|
|
217
|
-
metadata?: Record<string, unknown>;
|
|
218
|
-
}
|
|
@@ -1,475 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Object View Interface
|
|
3
|
-
*
|
|
4
|
-
* Defines the structure of a view in the ObjectStack metamodel.
|
|
5
|
-
* Views represent different UI presentations of entity data (list, form, detail, etc.).
|
|
6
|
-
*
|
|
7
|
-
* @module types/meta/object-view
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Available view types in the ObjectStack metamodel
|
|
12
|
-
*
|
|
13
|
-
* @remarks
|
|
14
|
-
* Each view type corresponds to a different UI presentation pattern:
|
|
15
|
-
*
|
|
16
|
-
* - `list`: Tabular list view (grid/table)
|
|
17
|
-
* - `detail`: Single record detail view (read-only)
|
|
18
|
-
* - `form`: Single record form view (editable)
|
|
19
|
-
* - `card`: Card-based list view
|
|
20
|
-
* - `kanban`: Kanban board view
|
|
21
|
-
* - `calendar`: Calendar view (for date-based records)
|
|
22
|
-
* - `chart`: Chart/graph visualization
|
|
23
|
-
* - `map`: Geographic map view
|
|
24
|
-
* - `timeline`: Timeline view for chronological data
|
|
25
|
-
* - `custom`: Custom view implementation
|
|
26
|
-
*/
|
|
27
|
-
export type ViewType =
|
|
28
|
-
| 'list'
|
|
29
|
-
| 'detail'
|
|
30
|
-
| 'form'
|
|
31
|
-
| 'card'
|
|
32
|
-
| 'kanban'
|
|
33
|
-
| 'calendar'
|
|
34
|
-
| 'chart'
|
|
35
|
-
| 'map'
|
|
36
|
-
| 'timeline'
|
|
37
|
-
| 'custom';
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Layout configuration for a view
|
|
41
|
-
*
|
|
42
|
-
* @remarks
|
|
43
|
-
* Defines how fields are organized visually in the view
|
|
44
|
-
*/
|
|
45
|
-
export interface ViewLayout {
|
|
46
|
-
/**
|
|
47
|
-
* Layout type/strategy
|
|
48
|
-
*
|
|
49
|
-
* @remarks
|
|
50
|
-
* - `single-column`: One field per row
|
|
51
|
-
* - `two-column`: Two fields per row
|
|
52
|
-
* - `grid`: Flexible grid layout
|
|
53
|
-
* - `tabs`: Fields organized in tabs
|
|
54
|
-
* - `sections`: Fields grouped in named sections
|
|
55
|
-
*
|
|
56
|
-
* @defaultValue 'single-column'
|
|
57
|
-
*/
|
|
58
|
-
type?: 'single-column' | 'two-column' | 'grid' | 'tabs' | 'sections';
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Sections for organizing fields
|
|
62
|
-
*
|
|
63
|
-
* @remarks
|
|
64
|
-
* Only applicable when layout type is 'sections' or 'tabs'
|
|
65
|
-
*/
|
|
66
|
-
sections?: Array<{
|
|
67
|
-
/** Section identifier */
|
|
68
|
-
id: string;
|
|
69
|
-
/** Section title */
|
|
70
|
-
title: string;
|
|
71
|
-
/** Field names to include in this section */
|
|
72
|
-
fields: string[];
|
|
73
|
-
/** Whether section is collapsed by default */
|
|
74
|
-
collapsed?: boolean;
|
|
75
|
-
}>;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Filter configuration for a view
|
|
80
|
-
*
|
|
81
|
-
* @remarks
|
|
82
|
-
* Defines how records are filtered in the view
|
|
83
|
-
*/
|
|
84
|
-
export interface ViewFilter {
|
|
85
|
-
/**
|
|
86
|
-
* Field name to filter on
|
|
87
|
-
*
|
|
88
|
-
* @example 'status', 'createdAt', 'owner'
|
|
89
|
-
*/
|
|
90
|
-
field: string;
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Filter operator
|
|
94
|
-
*
|
|
95
|
-
* @remarks
|
|
96
|
-
* Available operators depend on the field type:
|
|
97
|
-
* - Text: equals, contains, startsWith, endsWith
|
|
98
|
-
* - Number: equals, gt, gte, lt, lte, between
|
|
99
|
-
* - Boolean: equals
|
|
100
|
-
* - Date: equals, before, after, between
|
|
101
|
-
* - Lookup: equals, in
|
|
102
|
-
*/
|
|
103
|
-
operator: 'equals' | 'contains' | 'startsWith' | 'endsWith' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'before' | 'after' | 'in' | 'notIn';
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Filter value(s)
|
|
107
|
-
*
|
|
108
|
-
* @remarks
|
|
109
|
-
* Type depends on operator and field type.
|
|
110
|
-
* For 'between' operator, should be an array of two values.
|
|
111
|
-
*/
|
|
112
|
-
value: unknown;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Sort configuration for a view
|
|
117
|
-
*
|
|
118
|
-
* @remarks
|
|
119
|
-
* Defines how records are sorted in the view
|
|
120
|
-
*/
|
|
121
|
-
export interface ViewSort {
|
|
122
|
-
/**
|
|
123
|
-
* Field name to sort by
|
|
124
|
-
*
|
|
125
|
-
* @example 'name', 'createdAt', 'priority'
|
|
126
|
-
*/
|
|
127
|
-
field: string;
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Sort direction
|
|
131
|
-
*
|
|
132
|
-
* @defaultValue 'asc'
|
|
133
|
-
*/
|
|
134
|
-
direction: 'asc' | 'desc';
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Column configuration for list views
|
|
139
|
-
*
|
|
140
|
-
* @remarks
|
|
141
|
-
* Defines how a field is displayed as a column in a list/table view
|
|
142
|
-
*/
|
|
143
|
-
export interface ViewColumn {
|
|
144
|
-
/**
|
|
145
|
-
* Field name to display
|
|
146
|
-
*
|
|
147
|
-
* @remarks
|
|
148
|
-
* Must be a valid field name from the entity
|
|
149
|
-
*/
|
|
150
|
-
field: string;
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Column header label
|
|
154
|
-
*
|
|
155
|
-
* @remarks
|
|
156
|
-
* If not provided, uses the field's label
|
|
157
|
-
*/
|
|
158
|
-
label?: string;
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Column width
|
|
162
|
-
*
|
|
163
|
-
* @remarks
|
|
164
|
-
* Can be in pixels (e.g., 100) or percentage (e.g., '20%')
|
|
165
|
-
*/
|
|
166
|
-
width?: number | string;
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Whether the column is sortable
|
|
170
|
-
*
|
|
171
|
-
* @defaultValue true
|
|
172
|
-
*/
|
|
173
|
-
sortable?: boolean;
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Whether the column is visible by default
|
|
177
|
-
*
|
|
178
|
-
* @defaultValue true
|
|
179
|
-
*/
|
|
180
|
-
visible?: boolean;
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Text alignment in the column
|
|
184
|
-
*
|
|
185
|
-
* @defaultValue 'left'
|
|
186
|
-
*/
|
|
187
|
-
align?: 'left' | 'center' | 'right';
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Custom formatting function name
|
|
191
|
-
*
|
|
192
|
-
* @remarks
|
|
193
|
-
* Reference to a formatting function (e.g., 'currency', 'date', 'percentage')
|
|
194
|
-
*
|
|
195
|
-
* @example 'currency', 'date:MM/DD/YYYY', 'number:2' (2 decimal places)
|
|
196
|
-
*/
|
|
197
|
-
format?: string;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Represents a view definition for an ObjectEntity
|
|
202
|
-
*
|
|
203
|
-
* @remarks
|
|
204
|
-
* ObjectView defines how an entity's data is presented in the UI.
|
|
205
|
-
* Multiple views can exist for the same entity, each tailored for
|
|
206
|
-
* different use cases (e.g., "All Users", "Active Users", "Admin Users").
|
|
207
|
-
*
|
|
208
|
-
* Views are used by ObjectUI to:
|
|
209
|
-
* - Render lists with specific columns and filters
|
|
210
|
-
* - Display forms with specific field layouts
|
|
211
|
-
* - Show detailed records with custom presentations
|
|
212
|
-
*
|
|
213
|
-
* @example
|
|
214
|
-
* ```typescript
|
|
215
|
-
* const allUsersView: ObjectView = {
|
|
216
|
-
* name: 'all_users',
|
|
217
|
-
* label: 'All Users',
|
|
218
|
-
* entityName: 'User',
|
|
219
|
-
* type: 'list',
|
|
220
|
-
* columns: [
|
|
221
|
-
* { field: 'name', width: '30%' },
|
|
222
|
-
* { field: 'email', width: '30%' },
|
|
223
|
-
* { field: 'status', width: '20%' },
|
|
224
|
-
* { field: 'createdAt', width: '20%', format: 'date:MM/DD/YYYY' }
|
|
225
|
-
* ],
|
|
226
|
-
* sort: [
|
|
227
|
-
* { field: 'name', direction: 'asc' }
|
|
228
|
-
* ]
|
|
229
|
-
* };
|
|
230
|
-
*
|
|
231
|
-
* const userFormView: ObjectView = {
|
|
232
|
-
* name: 'user_form',
|
|
233
|
-
* label: 'User Form',
|
|
234
|
-
* entityName: 'User',
|
|
235
|
-
* type: 'form',
|
|
236
|
-
* fields: ['name', 'email', 'role', 'status'],
|
|
237
|
-
* layout: {
|
|
238
|
-
* type: 'sections',
|
|
239
|
-
* sections: [
|
|
240
|
-
* {
|
|
241
|
-
* id: 'basic',
|
|
242
|
-
* title: 'Basic Information',
|
|
243
|
-
* fields: ['name', 'email']
|
|
244
|
-
* },
|
|
245
|
-
* {
|
|
246
|
-
* id: 'settings',
|
|
247
|
-
* title: 'Settings',
|
|
248
|
-
* fields: ['role', 'status']
|
|
249
|
-
* }
|
|
250
|
-
* ]
|
|
251
|
-
* }
|
|
252
|
-
* };
|
|
253
|
-
* ```
|
|
254
|
-
*/
|
|
255
|
-
export interface ObjectView {
|
|
256
|
-
/**
|
|
257
|
-
* Technical name of the view
|
|
258
|
-
*
|
|
259
|
-
* @remarks
|
|
260
|
-
* Used in code and URLs.
|
|
261
|
-
* Should be in snake_case format.
|
|
262
|
-
* Must be unique within the entity's views.
|
|
263
|
-
*
|
|
264
|
-
* @example 'all_users', 'active_orders', 'recent_products'
|
|
265
|
-
*/
|
|
266
|
-
name: string;
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Human-readable label for the view
|
|
270
|
-
*
|
|
271
|
-
* @remarks
|
|
272
|
-
* Used in UI menus, tabs, and headers.
|
|
273
|
-
*
|
|
274
|
-
* @example 'All Users', 'Active Orders', 'Recent Products'
|
|
275
|
-
*/
|
|
276
|
-
label: string;
|
|
277
|
-
|
|
278
|
-
/**
|
|
279
|
-
* Name of the entity this view is for
|
|
280
|
-
*
|
|
281
|
-
* @remarks
|
|
282
|
-
* Must be a valid entity name in the system.
|
|
283
|
-
*
|
|
284
|
-
* @example 'User', 'SalesOrder', 'Product'
|
|
285
|
-
*/
|
|
286
|
-
entityName: string;
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* Type of view presentation
|
|
290
|
-
*
|
|
291
|
-
* @see ViewType
|
|
292
|
-
*/
|
|
293
|
-
type: ViewType;
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* Detailed description of the view's purpose
|
|
297
|
-
*
|
|
298
|
-
* @remarks
|
|
299
|
-
* Used for tooltips and documentation
|
|
300
|
-
*/
|
|
301
|
-
description?: string;
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* Field names to display in the view
|
|
305
|
-
*
|
|
306
|
-
* @remarks
|
|
307
|
-
* For form/detail views: determines which fields to show and in what order.
|
|
308
|
-
* For list views: used if columns are not specified.
|
|
309
|
-
* Must be valid field names from the entity.
|
|
310
|
-
*/
|
|
311
|
-
fields?: string[];
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Column configurations for list views
|
|
315
|
-
*
|
|
316
|
-
* @remarks
|
|
317
|
-
* Only applicable to 'list', 'card', 'kanban' view types.
|
|
318
|
-
* Defines how each field is rendered as a column.
|
|
319
|
-
*
|
|
320
|
-
* @see ViewColumn
|
|
321
|
-
*/
|
|
322
|
-
columns?: ViewColumn[];
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Layout configuration for the view
|
|
326
|
-
*
|
|
327
|
-
* @remarks
|
|
328
|
-
* Only applicable to 'form' and 'detail' view types.
|
|
329
|
-
*
|
|
330
|
-
* @see ViewLayout
|
|
331
|
-
*/
|
|
332
|
-
layout?: ViewLayout;
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* Default filters to apply to the view
|
|
336
|
-
*
|
|
337
|
-
* @remarks
|
|
338
|
-
* Filters are applied when the view is loaded.
|
|
339
|
-
* Users can typically modify or remove these filters.
|
|
340
|
-
*
|
|
341
|
-
* @see ViewFilter
|
|
342
|
-
*/
|
|
343
|
-
filters?: ViewFilter[];
|
|
344
|
-
|
|
345
|
-
/**
|
|
346
|
-
* Default sort order for the view
|
|
347
|
-
*
|
|
348
|
-
* @remarks
|
|
349
|
-
* Can specify multiple sort levels (first by field1, then by field2, etc.)
|
|
350
|
-
*
|
|
351
|
-
* @see ViewSort
|
|
352
|
-
*/
|
|
353
|
-
sort?: ViewSort[];
|
|
354
|
-
|
|
355
|
-
/**
|
|
356
|
-
* Number of records to display per page
|
|
357
|
-
*
|
|
358
|
-
* @remarks
|
|
359
|
-
* Only applicable to list-based views.
|
|
360
|
-
*
|
|
361
|
-
* @defaultValue 25
|
|
362
|
-
*/
|
|
363
|
-
pageSize?: number;
|
|
364
|
-
|
|
365
|
-
/**
|
|
366
|
-
* Icon identifier for the view
|
|
367
|
-
*
|
|
368
|
-
* @remarks
|
|
369
|
-
* Used in view switchers, menus, and tabs.
|
|
370
|
-
*
|
|
371
|
-
* @example 'list', 'grid', 'calendar'
|
|
372
|
-
*/
|
|
373
|
-
icon?: string;
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* Whether this is the default view for the entity
|
|
377
|
-
*
|
|
378
|
-
* @remarks
|
|
379
|
-
* The default view is shown when navigating to the entity
|
|
380
|
-
* without specifying a view.
|
|
381
|
-
*
|
|
382
|
-
* @defaultValue false
|
|
383
|
-
*/
|
|
384
|
-
default?: boolean;
|
|
385
|
-
|
|
386
|
-
/**
|
|
387
|
-
* Whether the view is visible in navigation menus
|
|
388
|
-
*
|
|
389
|
-
* @remarks
|
|
390
|
-
* Hidden views can still be accessed directly via URL
|
|
391
|
-
*
|
|
392
|
-
* @defaultValue true
|
|
393
|
-
*/
|
|
394
|
-
visible?: boolean;
|
|
395
|
-
|
|
396
|
-
/**
|
|
397
|
-
* Permission required to access this view
|
|
398
|
-
*
|
|
399
|
-
* @remarks
|
|
400
|
-
* Users without this permission cannot see or access the view.
|
|
401
|
-
*
|
|
402
|
-
* @example 'user.read', 'sales.order.view.active'
|
|
403
|
-
*/
|
|
404
|
-
permission?: string;
|
|
405
|
-
|
|
406
|
-
/**
|
|
407
|
-
* Query string for advanced filtering
|
|
408
|
-
*
|
|
409
|
-
* @remarks
|
|
410
|
-
* Alternative to the filters array for complex queries.
|
|
411
|
-
* Uses the ObjectQL query syntax.
|
|
412
|
-
*
|
|
413
|
-
* @example 'status = "active" AND createdAt > NOW() - 30d'
|
|
414
|
-
*/
|
|
415
|
-
query?: string;
|
|
416
|
-
|
|
417
|
-
/**
|
|
418
|
-
* Field name for grouping records (kanban view)
|
|
419
|
-
*
|
|
420
|
-
* @remarks
|
|
421
|
-
* Only applicable to 'kanban' view type.
|
|
422
|
-
* The field should have predefined options (select/lookup).
|
|
423
|
-
*
|
|
424
|
-
* @example 'status', 'priority', 'assignedTo'
|
|
425
|
-
*/
|
|
426
|
-
groupBy?: string;
|
|
427
|
-
|
|
428
|
-
/**
|
|
429
|
-
* Date field name for calendar/timeline views
|
|
430
|
-
*
|
|
431
|
-
* @remarks
|
|
432
|
-
* Only applicable to 'calendar' and 'timeline' view types.
|
|
433
|
-
* Must be a date or datetime field.
|
|
434
|
-
*
|
|
435
|
-
* @example 'dueDate', 'scheduledAt', 'eventDate'
|
|
436
|
-
*/
|
|
437
|
-
dateField?: string;
|
|
438
|
-
|
|
439
|
-
/**
|
|
440
|
-
* Chart configuration for chart views
|
|
441
|
-
*
|
|
442
|
-
* @remarks
|
|
443
|
-
* Only applicable to 'chart' view type.
|
|
444
|
-
*/
|
|
445
|
-
chartConfig?: {
|
|
446
|
-
/** Chart type (bar, line, pie, etc.) */
|
|
447
|
-
type: 'bar' | 'line' | 'pie' | 'donut' | 'area' | 'scatter';
|
|
448
|
-
/** Field for x-axis */
|
|
449
|
-
xAxis?: string;
|
|
450
|
-
/** Field for y-axis */
|
|
451
|
-
yAxis?: string;
|
|
452
|
-
/** Aggregation function (count, sum, avg, etc.) */
|
|
453
|
-
aggregation?: 'count' | 'sum' | 'avg' | 'min' | 'max';
|
|
454
|
-
};
|
|
455
|
-
|
|
456
|
-
/**
|
|
457
|
-
* Custom component reference for custom views
|
|
458
|
-
*
|
|
459
|
-
* @remarks
|
|
460
|
-
* Only applicable to 'custom' view type.
|
|
461
|
-
* References a registered custom component.
|
|
462
|
-
*
|
|
463
|
-
* @example 'MyCustomDashboard', 'AnalyticsView'
|
|
464
|
-
*/
|
|
465
|
-
customComponent?: string;
|
|
466
|
-
|
|
467
|
-
/**
|
|
468
|
-
* Custom metadata for extensions and plugins
|
|
469
|
-
*
|
|
470
|
-
* @remarks
|
|
471
|
-
* Allows third-party code to attach arbitrary metadata to views
|
|
472
|
-
* without modifying the core interface
|
|
473
|
-
*/
|
|
474
|
-
metadata?: Record<string, unknown>;
|
|
475
|
-
}
|