@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.
Files changed (309) hide show
  1. package/README.md +134 -121
  2. package/dist/ai/agent.zod.d.ts +164 -0
  3. package/dist/ai/agent.zod.d.ts.map +1 -0
  4. package/dist/ai/agent.zod.js +51 -0
  5. package/dist/api/contract.zod.d.ts +1733 -0
  6. package/dist/api/contract.zod.d.ts.map +1 -0
  7. package/dist/api/contract.zod.js +138 -0
  8. package/dist/data/dataset.zod.d.ts +60 -0
  9. package/dist/data/dataset.zod.d.ts.map +1 -0
  10. package/dist/data/dataset.zod.js +54 -0
  11. package/dist/data/field.zod.d.ts +1808 -0
  12. package/dist/data/field.zod.d.ts.map +1 -0
  13. package/dist/data/field.zod.js +222 -0
  14. package/dist/data/flow.zod.d.ts +242 -0
  15. package/dist/data/flow.zod.d.ts.map +1 -0
  16. package/dist/data/flow.zod.js +77 -0
  17. package/dist/data/mapping.zod.d.ts +470 -0
  18. package/dist/data/mapping.zod.d.ts.map +1 -0
  19. package/dist/data/mapping.zod.js +65 -0
  20. package/dist/data/object.zod.d.ts +844 -0
  21. package/dist/data/object.zod.d.ts.map +1 -0
  22. package/dist/data/object.zod.js +81 -0
  23. package/dist/data/permission.zod.d.ts +163 -0
  24. package/dist/data/permission.zod.d.ts.map +1 -0
  25. package/dist/data/permission.zod.js +62 -0
  26. package/dist/data/query.zod.d.ts +438 -0
  27. package/dist/data/query.zod.d.ts.map +1 -0
  28. package/dist/data/query.zod.js +147 -0
  29. package/dist/data/sharing.zod.d.ts +63 -0
  30. package/dist/data/sharing.zod.d.ts.map +1 -0
  31. package/dist/data/sharing.zod.js +57 -0
  32. package/dist/data/trigger.zod.d.ts +354 -0
  33. package/dist/data/trigger.zod.d.ts.map +1 -0
  34. package/dist/data/trigger.zod.js +195 -0
  35. package/dist/data/validation.zod.d.ts +276 -0
  36. package/dist/data/validation.zod.d.ts.map +1 -0
  37. package/dist/data/validation.zod.js +105 -0
  38. package/dist/data/workflow.zod.d.ts +195 -0
  39. package/dist/data/workflow.zod.d.ts.map +1 -0
  40. package/dist/data/workflow.zod.js +64 -0
  41. package/dist/index.d.ts +41 -5
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +62 -5
  44. package/dist/system/api.zod.d.ts +294 -0
  45. package/dist/system/api.zod.d.ts.map +1 -0
  46. package/dist/system/api.zod.js +56 -0
  47. package/dist/system/constants/index.d.ts +11 -0
  48. package/dist/system/constants/index.d.ts.map +1 -0
  49. package/dist/system/constants/index.js +26 -0
  50. package/dist/system/constants/paths.d.ts +71 -0
  51. package/dist/system/constants/paths.d.ts.map +1 -0
  52. package/dist/system/constants/paths.js +65 -0
  53. package/dist/system/datasource.zod.d.ts +210 -0
  54. package/dist/system/datasource.zod.d.ts.map +1 -0
  55. package/dist/system/datasource.zod.js +90 -0
  56. package/dist/system/discovery.zod.d.ts +174 -0
  57. package/dist/system/discovery.zod.d.ts.map +1 -0
  58. package/dist/system/discovery.zod.js +53 -0
  59. package/dist/system/driver.zod.d.ts +1525 -0
  60. package/dist/system/driver.zod.d.ts.map +1 -0
  61. package/dist/system/driver.zod.js +290 -0
  62. package/dist/system/identity.zod.d.ts +204 -0
  63. package/dist/system/identity.zod.d.ts.map +1 -0
  64. package/dist/system/identity.zod.js +68 -0
  65. package/dist/system/license.zod.d.ts +110 -0
  66. package/dist/system/license.zod.d.ts.map +1 -0
  67. package/dist/system/license.zod.js +63 -0
  68. package/dist/system/manifest.zod.d.ts +397 -0
  69. package/dist/system/manifest.zod.d.ts.map +1 -0
  70. package/dist/system/manifest.zod.js +142 -0
  71. package/dist/system/plugin.zod.d.ts +3516 -0
  72. package/dist/system/plugin.zod.d.ts.map +1 -0
  73. package/dist/system/plugin.zod.js +226 -0
  74. package/dist/system/policy.zod.d.ts +209 -0
  75. package/dist/system/policy.zod.d.ts.map +1 -0
  76. package/dist/system/policy.zod.js +54 -0
  77. package/dist/system/role.zod.d.ts +34 -0
  78. package/dist/system/role.zod.d.ts.map +1 -0
  79. package/dist/system/role.zod.js +25 -0
  80. package/dist/system/territory.zod.d.ts +91 -0
  81. package/dist/system/territory.zod.d.ts.map +1 -0
  82. package/dist/system/territory.zod.js +64 -0
  83. package/dist/system/translation.zod.d.ts +171 -0
  84. package/dist/system/translation.zod.d.ts.map +1 -0
  85. package/dist/system/translation.zod.js +34 -0
  86. package/dist/system/types/index.d.ts +7 -0
  87. package/dist/system/types/index.d.ts.map +1 -0
  88. package/dist/system/types/index.js +22 -0
  89. package/dist/system/types/plugin.d.ts +113 -0
  90. package/dist/system/types/plugin.d.ts.map +1 -0
  91. package/dist/system/types/plugin.js +6 -0
  92. package/dist/system/webhook.zod.d.ts +106 -0
  93. package/dist/system/webhook.zod.d.ts.map +1 -0
  94. package/dist/system/webhook.zod.js +56 -0
  95. package/dist/ui/action.zod.d.ts +155 -0
  96. package/dist/ui/action.zod.d.ts.map +1 -0
  97. package/dist/ui/action.zod.js +54 -0
  98. package/dist/ui/app.zod.d.ts +405 -0
  99. package/dist/ui/app.zod.d.ts.map +1 -0
  100. package/dist/ui/app.zod.js +138 -0
  101. package/dist/ui/dashboard.zod.d.ts +213 -0
  102. package/dist/ui/dashboard.zod.d.ts.map +1 -0
  103. package/dist/ui/dashboard.zod.js +72 -0
  104. package/dist/ui/page.zod.d.ts +187 -0
  105. package/dist/ui/page.zod.d.ts.map +1 -0
  106. package/dist/ui/page.zod.js +48 -0
  107. package/dist/ui/report.zod.d.ts +233 -0
  108. package/dist/ui/report.zod.d.ts.map +1 -0
  109. package/dist/ui/report.zod.js +74 -0
  110. package/dist/ui/theme.zod.d.ts +1221 -0
  111. package/dist/ui/theme.zod.d.ts.map +1 -0
  112. package/dist/ui/theme.zod.js +202 -0
  113. package/dist/ui/view.zod.d.ts +887 -0
  114. package/dist/ui/view.zod.d.ts.map +1 -0
  115. package/dist/ui/view.zod.js +83 -0
  116. package/dist/ui/widget.zod.d.ts +350 -0
  117. package/dist/ui/widget.zod.d.ts.map +1 -0
  118. package/dist/ui/widget.zod.js +66 -0
  119. package/json-schema/AIKnowledge.json +30 -0
  120. package/json-schema/AIModelConfig.json +41 -0
  121. package/json-schema/AITool.json +33 -0
  122. package/json-schema/Action.json +162 -0
  123. package/json-schema/ActionParam.json +82 -0
  124. package/json-schema/Address.json +40 -0
  125. package/json-schema/Agent.json +140 -0
  126. package/json-schema/AggregationFunction.json +19 -0
  127. package/json-schema/AggregationNode.json +42 -0
  128. package/json-schema/Animation.json +56 -0
  129. package/json-schema/ApiCapabilities.json +28 -0
  130. package/json-schema/ApiEndpoint.json +162 -0
  131. package/json-schema/ApiError.json +27 -0
  132. package/json-schema/ApiMapping.json +28 -0
  133. package/json-schema/ApiRoutes.json +41 -0
  134. package/json-schema/App.json +297 -0
  135. package/json-schema/AppBranding.json +24 -0
  136. package/json-schema/AsyncValidation.json +70 -0
  137. package/json-schema/AuditPolicy.json +31 -0
  138. package/json-schema/AuthProtocol.json +17 -0
  139. package/json-schema/AuthProvider.json +171 -0
  140. package/json-schema/BaseResponse.json +63 -0
  141. package/json-schema/BorderRadius.json +44 -0
  142. package/json-schema/Breakpoints.json +36 -0
  143. package/json-schema/BulkRequest.json +29 -0
  144. package/json-schema/BulkResponse.json +108 -0
  145. package/json-schema/CalendarConfig.json +28 -0
  146. package/json-schema/ChartType.json +19 -0
  147. package/json-schema/ColorPalette.json +83 -0
  148. package/json-schema/ConditionalValidation.json +793 -0
  149. package/json-schema/CreateRequest.json +20 -0
  150. package/json-schema/CrossFieldValidation.json +56 -0
  151. package/json-schema/CustomValidator.json +57 -0
  152. package/json-schema/Dashboard.json +117 -0
  153. package/json-schema/DashboardNavItem.json +42 -0
  154. package/json-schema/DashboardWidget.json +89 -0
  155. package/json-schema/Dataset.json +63 -0
  156. package/json-schema/DatasetMode.json +16 -0
  157. package/json-schema/Datasource.json +75 -0
  158. package/json-schema/DatasourceCapabilities.json +36 -0
  159. package/json-schema/DeleteResponse.json +68 -0
  160. package/json-schema/Discovery.json +114 -0
  161. package/json-schema/DriverCapabilities.json +39 -0
  162. package/json-schema/DriverDefinition.json +66 -0
  163. package/json-schema/DriverInterface.json +58 -0
  164. package/json-schema/DriverOptions.json +23 -0
  165. package/json-schema/DriverType.json +10 -0
  166. package/json-schema/EmailAlertAction.json +37 -0
  167. package/json-schema/ExportRequest.json +786 -0
  168. package/json-schema/Feature.json +51 -0
  169. package/json-schema/Field.json +290 -0
  170. package/json-schema/FieldMapping.json +83 -0
  171. package/json-schema/FieldNode.json +32 -0
  172. package/json-schema/FieldPermission.json +22 -0
  173. package/json-schema/FieldType.json +42 -0
  174. package/json-schema/FieldUpdateAction.json +32 -0
  175. package/json-schema/FieldWidgetProps.json +327 -0
  176. package/json-schema/FilterNode.json +52 -0
  177. package/json-schema/FilterOperator.json +26 -0
  178. package/json-schema/Flow.json +186 -0
  179. package/json-schema/FlowEdge.json +37 -0
  180. package/json-schema/FlowNode.json +65 -0
  181. package/json-schema/FlowNodeAction.json +24 -0
  182. package/json-schema/FlowVariable.json +34 -0
  183. package/json-schema/FormSection.json +42 -0
  184. package/json-schema/FormView.json +99 -0
  185. package/json-schema/FormatValidation.json +59 -0
  186. package/json-schema/GanttConfig.json +32 -0
  187. package/json-schema/GroupNavItem.json +42 -0
  188. package/json-schema/HttpMethod.json +16 -0
  189. package/json-schema/I18nContext.json +12 -0
  190. package/json-schema/Index.json +30 -0
  191. package/json-schema/JoinNode.json +455 -0
  192. package/json-schema/JoinType.json +15 -0
  193. package/json-schema/KanbanConfig.json +31 -0
  194. package/json-schema/LDAPConfig.json +39 -0
  195. package/json-schema/License.json +57 -0
  196. package/json-schema/ListRecordResponse.json +103 -0
  197. package/json-schema/ListView.json +153 -0
  198. package/json-schema/Locale.json +10 -0
  199. package/json-schema/LocationCoordinates.json +36 -0
  200. package/json-schema/Logger.json +25 -0
  201. package/json-schema/LogicOperator.json +14 -0
  202. package/json-schema/Manifest.json +315 -0
  203. package/json-schema/Mapping.json +598 -0
  204. package/json-schema/MenuItem.json +28 -0
  205. package/json-schema/MetricType.json +14 -0
  206. package/json-schema/ModificationResult.json +46 -0
  207. package/json-schema/NavigationItem.json +214 -0
  208. package/json-schema/NetworkPolicy.json +31 -0
  209. package/json-schema/OIDCConfig.json +46 -0
  210. package/json-schema/OWDModel.json +14 -0
  211. package/json-schema/Object.json +428 -0
  212. package/json-schema/ObjectCapabilities.json +62 -0
  213. package/json-schema/ObjectNavItem.json +46 -0
  214. package/json-schema/ObjectPermission.json +42 -0
  215. package/json-schema/ObjectQLClient.json +12 -0
  216. package/json-schema/Page.json +117 -0
  217. package/json-schema/PageComponent.json +36 -0
  218. package/json-schema/PageNavItem.json +47 -0
  219. package/json-schema/PageRegion.json +63 -0
  220. package/json-schema/PasswordPolicy.json +41 -0
  221. package/json-schema/PermissionSet.json +96 -0
  222. package/json-schema/Plan.json +53 -0
  223. package/json-schema/Plugin.json +20 -0
  224. package/json-schema/PluginContext.json +91 -0
  225. package/json-schema/PluginLifecycle.json +11 -0
  226. package/json-schema/Policy.json +138 -0
  227. package/json-schema/Query.json +456 -0
  228. package/json-schema/RateLimit.json +26 -0
  229. package/json-schema/RecordData.json +11 -0
  230. package/json-schema/Report.json +219 -0
  231. package/json-schema/ReportChart.json +45 -0
  232. package/json-schema/ReportColumn.json +35 -0
  233. package/json-schema/ReportGrouping.json +38 -0
  234. package/json-schema/ReportType.json +15 -0
  235. package/json-schema/Role.json +32 -0
  236. package/json-schema/Router.json +12 -0
  237. package/json-schema/SAMLConfig.json +44 -0
  238. package/json-schema/Scheduler.json +12 -0
  239. package/json-schema/ScopedStorage.json +12 -0
  240. package/json-schema/ScriptValidation.json +48 -0
  241. package/json-schema/SelectOption.json +32 -0
  242. package/json-schema/SessionPolicy.json +27 -0
  243. package/json-schema/Shadow.json +44 -0
  244. package/json-schema/SharingLevel.json +13 -0
  245. package/json-schema/SharingRule.json +58 -0
  246. package/json-schema/SharingRuleType.json +15 -0
  247. package/json-schema/SingleRecordResponse.json +69 -0
  248. package/json-schema/SortNode.json +26 -0
  249. package/json-schema/Spacing.json +64 -0
  250. package/json-schema/StateMachineValidation.json +59 -0
  251. package/json-schema/SystemAPI.json +12 -0
  252. package/json-schema/Territory.json +77 -0
  253. package/json-schema/TerritoryModel.json +34 -0
  254. package/json-schema/TerritoryType.json +15 -0
  255. package/json-schema/Theme.json +543 -0
  256. package/json-schema/ThemeMode.json +14 -0
  257. package/json-schema/TransformType.json +18 -0
  258. package/json-schema/TranslationBundle.json +78 -0
  259. package/json-schema/TranslationData.json +75 -0
  260. package/json-schema/Trigger.json +73 -0
  261. package/json-schema/TriggerAction.json +14 -0
  262. package/json-schema/TriggerContext.json +61 -0
  263. package/json-schema/TriggerTiming.json +13 -0
  264. package/json-schema/Typography.json +142 -0
  265. package/json-schema/UniquenessValidation.json +59 -0
  266. package/json-schema/UpdateRequest.json +20 -0
  267. package/json-schema/UrlNavItem.json +51 -0
  268. package/json-schema/ValidationRule.json +794 -0
  269. package/json-schema/View.json +500 -0
  270. package/json-schema/Webhook.json +88 -0
  271. package/json-schema/WebhookReceiver.json +66 -0
  272. package/json-schema/WebhookTriggerType.json +16 -0
  273. package/json-schema/WindowFunction.json +24 -0
  274. package/json-schema/WindowFunctionNode.json +104 -0
  275. package/json-schema/WindowSpec.json +65 -0
  276. package/json-schema/WorkflowAction.json +84 -0
  277. package/json-schema/WorkflowRule.json +128 -0
  278. package/json-schema/WorkflowTriggerType.json +16 -0
  279. package/json-schema/ZIndex.json +44 -0
  280. package/package.json +34 -20
  281. package/dist/examples.d.ts +0 -28
  282. package/dist/examples.d.ts.map +0 -1
  283. package/dist/examples.js +0 -250
  284. package/dist/types/index.d.ts +0 -9
  285. package/dist/types/index.d.ts.map +0 -1
  286. package/dist/types/index.js +0 -8
  287. package/dist/types/meta/field-type.d.ts +0 -54
  288. package/dist/types/meta/field-type.d.ts.map +0 -1
  289. package/dist/types/meta/field-type.js +0 -42
  290. package/dist/types/meta/index.d.ts +0 -13
  291. package/dist/types/meta/index.d.ts.map +0 -1
  292. package/dist/types/meta/index.js +0 -12
  293. package/dist/types/meta/object-entity.d.ts +0 -246
  294. package/dist/types/meta/object-entity.d.ts.map +0 -1
  295. package/dist/types/meta/object-entity.js +0 -9
  296. package/dist/types/meta/object-field.d.ts +0 -199
  297. package/dist/types/meta/object-field.d.ts.map +0 -1
  298. package/dist/types/meta/object-field.js +0 -9
  299. package/dist/types/meta/object-view.d.ts +0 -430
  300. package/dist/types/meta/object-view.d.ts.map +0 -1
  301. package/dist/types/meta/object-view.js +0 -9
  302. package/src/examples.ts +0 -257
  303. package/src/index.ts +0 -10
  304. package/src/types/index.ts +0 -9
  305. package/src/types/meta/field-type.ts +0 -91
  306. package/src/types/meta/index.ts +0 -13
  307. package/src/types/meta/object-entity.ts +0 -265
  308. package/src/types/meta/object-field.ts +0 -218
  309. package/src/types/meta/object-view.ts +0 -475
package/src/examples.ts DELETED
@@ -1,257 +0,0 @@
1
- /**
2
- * Example Usage of ObjectStack Metamodel
3
- *
4
- * This file demonstrates how to use the metamodel interfaces
5
- * to define entities and views.
6
- */
7
-
8
- import type { ObjectEntity, ObjectView } from './types/meta';
9
-
10
- /**
11
- * Example: User Entity Definition
12
- */
13
- export const UserEntity: ObjectEntity = {
14
- name: 'User',
15
- label: 'User',
16
- pluralLabel: 'Users',
17
- description: 'System user account',
18
- fields: [
19
- {
20
- name: 'id',
21
- label: 'ID',
22
- type: 'text',
23
- required: true,
24
- readonly: true,
25
- },
26
- {
27
- name: 'email',
28
- label: 'Email Address',
29
- type: 'email',
30
- required: true,
31
- unique: true,
32
- maxLength: 255,
33
- },
34
- {
35
- name: 'name',
36
- label: 'Full Name',
37
- type: 'text',
38
- required: true,
39
- maxLength: 100,
40
- },
41
- {
42
- name: 'role',
43
- label: 'Role',
44
- type: 'select',
45
- required: true,
46
- options: [
47
- { value: 'admin', label: 'Administrator' },
48
- { value: 'editor', label: 'Editor' },
49
- { value: 'viewer', label: 'Viewer' },
50
- ],
51
- },
52
- {
53
- name: 'status',
54
- label: 'Status',
55
- type: 'select',
56
- required: true,
57
- defaultValue: 'active',
58
- options: [
59
- { value: 'active', label: 'Active' },
60
- { value: 'inactive', label: 'Inactive' },
61
- { value: 'suspended', label: 'Suspended' },
62
- ],
63
- },
64
- {
65
- name: 'createdAt',
66
- label: 'Created At',
67
- type: 'datetime',
68
- readonly: true,
69
- },
70
- ],
71
- primaryKey: 'id',
72
- displayField: 'name',
73
- icon: 'user',
74
- auditable: true,
75
- searchable: true,
76
- searchableFields: ['name', 'email'],
77
- };
78
-
79
- /**
80
- * Example: All Users List View
81
- */
82
- export const AllUsersView: ObjectView = {
83
- name: 'all_users',
84
- label: 'All Users',
85
- entityName: 'User',
86
- type: 'list',
87
- description: 'View all users in the system',
88
- columns: [
89
- {
90
- field: 'name',
91
- label: 'Name',
92
- width: '25%',
93
- sortable: true,
94
- },
95
- {
96
- field: 'email',
97
- label: 'Email',
98
- width: '30%',
99
- sortable: true,
100
- },
101
- {
102
- field: 'role',
103
- label: 'Role',
104
- width: '15%',
105
- sortable: true,
106
- },
107
- {
108
- field: 'status',
109
- label: 'Status',
110
- width: '15%',
111
- sortable: true,
112
- },
113
- {
114
- field: 'createdAt',
115
- label: 'Created',
116
- width: '15%',
117
- sortable: true,
118
- format: 'date:MM/DD/YYYY',
119
- },
120
- ],
121
- sort: [
122
- {
123
- field: 'name',
124
- direction: 'asc',
125
- },
126
- ],
127
- pageSize: 25,
128
- default: true,
129
- };
130
-
131
- /**
132
- * Example: Active Users View (with filter)
133
- */
134
- export const ActiveUsersView: ObjectView = {
135
- name: 'active_users',
136
- label: 'Active Users',
137
- entityName: 'User',
138
- type: 'list',
139
- description: 'View only active users',
140
- columns: [
141
- {
142
- field: 'name',
143
- width: '30%',
144
- },
145
- {
146
- field: 'email',
147
- width: '40%',
148
- },
149
- {
150
- field: 'role',
151
- width: '30%',
152
- },
153
- ],
154
- filters: [
155
- {
156
- field: 'status',
157
- operator: 'equals',
158
- value: 'active',
159
- },
160
- ],
161
- sort: [
162
- {
163
- field: 'name',
164
- direction: 'asc',
165
- },
166
- ],
167
- };
168
-
169
- /**
170
- * Example: User Form View
171
- */
172
- export const UserFormView: ObjectView = {
173
- name: 'user_form',
174
- label: 'User Form',
175
- entityName: 'User',
176
- type: 'form',
177
- description: 'Form for creating and editing users',
178
- fields: ['name', 'email', 'role', 'status'],
179
- layout: {
180
- type: 'sections',
181
- sections: [
182
- {
183
- id: 'basic',
184
- title: 'Basic Information',
185
- fields: ['name', 'email'],
186
- },
187
- {
188
- id: 'settings',
189
- title: 'Settings',
190
- fields: ['role', 'status'],
191
- },
192
- ],
193
- },
194
- };
195
-
196
- /**
197
- * Example: Product Entity with Lookup
198
- */
199
- export const ProductEntity: ObjectEntity = {
200
- name: 'Product',
201
- label: 'Product',
202
- pluralLabel: 'Products',
203
- description: 'Product catalog',
204
- fields: [
205
- {
206
- name: 'id',
207
- label: 'ID',
208
- type: 'text',
209
- required: true,
210
- readonly: true,
211
- },
212
- {
213
- name: 'name',
214
- label: 'Product Name',
215
- type: 'text',
216
- required: true,
217
- maxLength: 200,
218
- },
219
- {
220
- name: 'description',
221
- label: 'Description',
222
- type: 'textarea',
223
- maxLength: 1000,
224
- },
225
- {
226
- name: 'price',
227
- label: 'Price',
228
- type: 'currency',
229
- required: true,
230
- min: 0,
231
- },
232
- {
233
- name: 'category',
234
- label: 'Category',
235
- type: 'lookup',
236
- required: true,
237
- lookupEntity: 'Category',
238
- lookupDisplayField: 'name',
239
- },
240
- {
241
- name: 'inStock',
242
- label: 'In Stock',
243
- type: 'boolean',
244
- defaultValue: true,
245
- },
246
- {
247
- name: 'image',
248
- label: 'Product Image',
249
- type: 'image',
250
- },
251
- ],
252
- primaryKey: 'id',
253
- displayField: 'name',
254
- icon: 'package',
255
- searchable: true,
256
- searchableFields: ['name', 'description'],
257
- };
package/src/index.ts DELETED
@@ -1,10 +0,0 @@
1
- /**
2
- * ObjectStack Specification
3
- *
4
- * This module provides the core type definitions and interfaces for the ObjectStack ecosystem.
5
- * It defines the contract between backend (ObjectQL) parsers and frontend (ObjectUI) renderers.
6
- *
7
- * @packageDocumentation
8
- */
9
-
10
- export * from './types';
@@ -1,9 +0,0 @@
1
- /**
2
- * Type Definitions
3
- *
4
- * This module exports all type definitions used in the ObjectStack specification.
5
- *
6
- * @module types
7
- */
8
-
9
- export * from './meta';
@@ -1,91 +0,0 @@
1
- /**
2
- * Field Type Definitions
3
- *
4
- * Defines the available field types in the ObjectStack metamodel.
5
- * These types determine how fields are stored, validated, and rendered.
6
- *
7
- * @module types/meta/field-type
8
- */
9
-
10
- /**
11
- * Available field types in the ObjectStack metamodel.
12
- *
13
- * @remarks
14
- * Each field type corresponds to specific storage, validation, and rendering behavior:
15
- *
16
- * - `text`: Short text strings (single line)
17
- * - `textarea`: Long text content (multi-line)
18
- * - `number`: Numeric values (integer or decimal)
19
- * - `boolean`: True/false values (checkbox)
20
- * - `date`: Date values (without time)
21
- * - `datetime`: Date and time values
22
- * - `email`: Email address with validation
23
- * - `url`: URL with validation
24
- * - `lookup`: Reference to another entity (foreign key)
25
- * - `select`: Single selection from predefined options
26
- * - `multiselect`: Multiple selections from predefined options
27
- * - `json`: Arbitrary JSON data structure
28
- * - `file`: File attachment reference
29
- * - `image`: Image file reference with preview
30
- * - `currency`: Monetary values with precision
31
- * - `percentage`: Percentage values (0-100)
32
- *
33
- * @example
34
- * ```typescript
35
- * const nameField: FieldType = 'text';
36
- * const priceField: FieldType = 'currency';
37
- * const ownerField: FieldType = 'lookup';
38
- * ```
39
- */
40
- export type FieldType =
41
- | 'text'
42
- | 'textarea'
43
- | 'number'
44
- | 'boolean'
45
- | 'date'
46
- | 'datetime'
47
- | 'email'
48
- | 'url'
49
- | 'lookup'
50
- | 'select'
51
- | 'multiselect'
52
- | 'json'
53
- | 'file'
54
- | 'image'
55
- | 'currency'
56
- | 'percentage';
57
-
58
- /**
59
- * Type guard to check if a string is a valid FieldType
60
- *
61
- * @param value - The value to check
62
- * @returns True if the value is a valid FieldType
63
- *
64
- * @example
65
- * ```typescript
66
- * if (isFieldType('text')) {
67
- * // value is a valid FieldType
68
- * }
69
- * ```
70
- */
71
- export function isFieldType(value: unknown): value is FieldType {
72
- const validTypes: FieldType[] = [
73
- 'text',
74
- 'textarea',
75
- 'number',
76
- 'boolean',
77
- 'date',
78
- 'datetime',
79
- 'email',
80
- 'url',
81
- 'lookup',
82
- 'select',
83
- 'multiselect',
84
- 'json',
85
- 'file',
86
- 'image',
87
- 'currency',
88
- 'percentage',
89
- ];
90
- return typeof value === 'string' && validTypes.includes(value as FieldType);
91
- }
@@ -1,13 +0,0 @@
1
- /**
2
- * Metamodel Type Definitions
3
- *
4
- * This module defines the core metamodel interfaces that form the contract
5
- * between the backend (ObjectQL) parser and the frontend (ObjectUI) renderer.
6
- *
7
- * @module types/meta
8
- */
9
-
10
- export * from './field-type';
11
- export * from './object-field';
12
- export * from './object-entity';
13
- export * from './object-view';
@@ -1,265 +0,0 @@
1
- /**
2
- * Object Entity Interface
3
- *
4
- * Defines the structure of an entity in the ObjectStack metamodel.
5
- * Entities represent data models/tables with their fields and relationships.
6
- *
7
- * @module types/meta/object-entity
8
- */
9
-
10
- import { ObjectField } from './object-field';
11
-
12
- /**
13
- * Represents an entity definition in the ObjectStack metamodel
14
- *
15
- * @remarks
16
- * ObjectEntity is the core data model definition. It describes a logical
17
- * entity (like User, Account, Product) with its fields, constraints,
18
- * and metadata. This interface is used by:
19
- *
20
- * - ObjectQL parser: To validate and process schema definitions
21
- * - ObjectUI renderer: To generate forms, tables, and views
22
- * - Database drivers: To create tables and migrations
23
- * - API generators: To expose REST/GraphQL endpoints
24
- *
25
- * @example
26
- * ```typescript
27
- * const userEntity: ObjectEntity = {
28
- * name: 'User',
29
- * label: 'User',
30
- * pluralLabel: 'Users',
31
- * description: 'System user account',
32
- * fields: [
33
- * {
34
- * name: 'id',
35
- * label: 'ID',
36
- * type: 'text',
37
- * required: true,
38
- * readonly: true
39
- * },
40
- * {
41
- * name: 'email',
42
- * label: 'Email',
43
- * type: 'email',
44
- * required: true,
45
- * unique: true
46
- * },
47
- * {
48
- * name: 'name',
49
- * label: 'Full Name',
50
- * type: 'text',
51
- * required: true
52
- * }
53
- * ],
54
- * primaryKey: 'id',
55
- * displayField: 'name'
56
- * };
57
- * ```
58
- */
59
- export interface ObjectEntity {
60
- /**
61
- * Technical name of the entity
62
- *
63
- * @remarks
64
- * Used in code, APIs, and database table names.
65
- * Should be in PascalCase for entities.
66
- * Must be unique across the system.
67
- *
68
- * @example 'User', 'Account', 'SalesOrder'
69
- */
70
- name: string;
71
-
72
- /**
73
- * Human-readable singular label for the entity
74
- *
75
- * @remarks
76
- * Used in UI headers, forms, and documentation.
77
- *
78
- * @example 'User', 'Sales Order', 'Product Category'
79
- */
80
- label: string;
81
-
82
- /**
83
- * Human-readable plural label for the entity
84
- *
85
- * @remarks
86
- * Used in UI when displaying lists or collections.
87
- *
88
- * @example 'Users', 'Sales Orders', 'Product Categories'
89
- */
90
- pluralLabel: string;
91
-
92
- /**
93
- * Detailed description of the entity's purpose
94
- *
95
- * @remarks
96
- * Used for documentation and context-sensitive help
97
- */
98
- description?: string;
99
-
100
- /**
101
- * Array of field definitions that make up this entity
102
- *
103
- * @remarks
104
- * Each field represents a column/attribute in the entity.
105
- * Field names must be unique within the entity.
106
- *
107
- * @see ObjectField
108
- */
109
- fields: ObjectField[];
110
-
111
- /**
112
- * Name of the field that serves as the primary key
113
- *
114
- * @remarks
115
- * The primary key uniquely identifies each record.
116
- * Must be one of the field names in the fields array.
117
- *
118
- * @defaultValue 'id'
119
- *
120
- * @example 'id', 'uuid', 'userId'
121
- */
122
- primaryKey?: string;
123
-
124
- /**
125
- * Name of the field to use as the display/title field
126
- *
127
- * @remarks
128
- * Used when showing a record reference in lookups, breadcrumbs, etc.
129
- * Should be a field that uniquely and meaningfully identifies a record.
130
- *
131
- * @defaultValue 'name'
132
- *
133
- * @example 'name', 'title', 'email', 'code'
134
- */
135
- displayField?: string;
136
-
137
- /**
138
- * Icon identifier for the entity
139
- *
140
- * @remarks
141
- * Used in navigation menus, headers, and lists.
142
- * Can be an icon library reference (e.g., 'user', 'building', 'package')
143
- * or a URL to a custom icon.
144
- *
145
- * @example 'user', 'briefcase', 'https://example.com/icon.svg'
146
- */
147
- icon?: string;
148
-
149
- /**
150
- * Color theme for the entity
151
- *
152
- * @remarks
153
- * Used for visual distinction in UI elements.
154
- * Can be a CSS color name, hex code, or theme variable.
155
- *
156
- * @example 'blue', '#3B82F6', 'primary'
157
- */
158
- color?: string;
159
-
160
- /**
161
- * Whether this entity should be audited
162
- *
163
- * @remarks
164
- * When enabled, tracks create/update/delete operations with user and timestamp.
165
- * Typically adds fields like: createdBy, createdAt, updatedBy, updatedAt
166
- *
167
- * @defaultValue false
168
- */
169
- auditable?: boolean;
170
-
171
- /**
172
- * Whether this entity supports soft deletion
173
- *
174
- * @remarks
175
- * When enabled, records are marked as deleted rather than physically removed.
176
- * Typically adds a 'deletedAt' timestamp field.
177
- *
178
- * @defaultValue false
179
- */
180
- softDelete?: boolean;
181
-
182
- /**
183
- * Whether this entity can be searched via full-text search
184
- *
185
- * @remarks
186
- * When enabled, the entity is indexed for full-text search operations
187
- *
188
- * @defaultValue false
189
- */
190
- searchable?: boolean;
191
-
192
- /**
193
- * Names of fields to include in full-text search
194
- *
195
- * @remarks
196
- * Only relevant when searchable is true.
197
- * If not specified, all text fields are included.
198
- *
199
- * @example ['name', 'description', 'email']
200
- */
201
- searchableFields?: string[];
202
-
203
- /**
204
- * Permission scope identifier
205
- *
206
- * @remarks
207
- * Defines the permission namespace for this entity.
208
- * Used to generate permission strings like: '{scope}.read', '{scope}.write'
209
- *
210
- * @example 'user', 'sales.order', 'product.category'
211
- */
212
- permissionScope?: string;
213
-
214
- /**
215
- * Custom validation rules
216
- *
217
- * @remarks
218
- * Array of validation rule identifiers that apply to the entire entity.
219
- * Can reference built-in validators or custom validation functions.
220
- *
221
- * @example ['uniqueTogether:email,domain', 'requiredIf:field1,field2']
222
- */
223
- validationRules?: string[];
224
-
225
- /**
226
- * Database table name override
227
- *
228
- * @remarks
229
- * By default, table name is derived from entity name.
230
- * Use this to specify a custom table name.
231
- *
232
- * @example 'tbl_users', 'legacy_accounts'
233
- */
234
- tableName?: string;
235
-
236
- /**
237
- * Entity version for schema migration tracking
238
- *
239
- * @remarks
240
- * Incremented when breaking changes are made to the entity structure.
241
- * Used for migration management and compatibility checking.
242
- *
243
- * @defaultValue 1
244
- */
245
- version?: number;
246
-
247
- /**
248
- * Tags for categorization and filtering
249
- *
250
- * @remarks
251
- * Used to organize entities into logical groups.
252
- *
253
- * @example ['core', 'sales', 'internal']
254
- */
255
- tags?: string[];
256
-
257
- /**
258
- * Custom metadata for extensions and plugins
259
- *
260
- * @remarks
261
- * Allows third-party code to attach arbitrary metadata to entities
262
- * without modifying the core interface
263
- */
264
- metadata?: Record<string, unknown>;
265
- }