@eide/uniformgen 0.1.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 (299) hide show
  1. package/README.md +356 -0
  2. package/dist/auth/credentials.d.ts +58 -0
  3. package/dist/auth/credentials.d.ts.map +1 -0
  4. package/dist/auth/credentials.js +107 -0
  5. package/dist/cli.d.ts +3 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +563 -0
  8. package/dist/commands/init.d.ts +11 -0
  9. package/dist/commands/init.d.ts.map +1 -0
  10. package/dist/commands/init.js +113 -0
  11. package/dist/commands/login.d.ts +9 -0
  12. package/dist/commands/login.d.ts.map +1 -0
  13. package/dist/commands/login.js +158 -0
  14. package/dist/commands/logout.d.ts +5 -0
  15. package/dist/commands/logout.d.ts.map +1 -0
  16. package/dist/commands/logout.js +13 -0
  17. package/dist/commands/push.d.ts +13 -0
  18. package/dist/commands/push.d.ts.map +1 -0
  19. package/dist/commands/push.js +328 -0
  20. package/dist/commands/scaffold.d.ts +19 -0
  21. package/dist/commands/scaffold.d.ts.map +1 -0
  22. package/dist/commands/scaffold.js +366 -0
  23. package/dist/commands/seed.d.ts +20 -0
  24. package/dist/commands/seed.d.ts.map +1 -0
  25. package/dist/commands/seed.js +380 -0
  26. package/dist/commands/select-project.d.ts +10 -0
  27. package/dist/commands/select-project.d.ts.map +1 -0
  28. package/dist/commands/select-project.js +277 -0
  29. package/dist/commands/setup.d.ts +5 -0
  30. package/dist/commands/setup.d.ts.map +1 -0
  31. package/dist/commands/setup.js +51 -0
  32. package/dist/commands/sync.d.ts +13 -0
  33. package/dist/commands/sync.d.ts.map +1 -0
  34. package/dist/commands/sync.js +318 -0
  35. package/dist/commands/whoami.d.ts +5 -0
  36. package/dist/commands/whoami.d.ts.map +1 -0
  37. package/dist/commands/whoami.js +31 -0
  38. package/dist/config/load-config.d.ts +6 -0
  39. package/dist/config/load-config.d.ts.map +1 -0
  40. package/dist/config/load-config.js +103 -0
  41. package/dist/config/settings.d.ts +20 -0
  42. package/dist/config/settings.d.ts.map +1 -0
  43. package/dist/config/settings.js +64 -0
  44. package/dist/config/types.d.ts +152 -0
  45. package/dist/config/types.d.ts.map +1 -0
  46. package/dist/config/types.js +94 -0
  47. package/dist/fetcher/fetch-schemas.d.ts +140 -0
  48. package/dist/fetcher/fetch-schemas.d.ts.map +1 -0
  49. package/dist/fetcher/fetch-schemas.js +223 -0
  50. package/dist/fetcher/fetch-workflows.d.ts +53 -0
  51. package/dist/fetcher/fetch-workflows.d.ts.map +1 -0
  52. package/dist/fetcher/fetch-workflows.js +164 -0
  53. package/dist/generated/hooks/customer-detail.d.ts +74 -0
  54. package/dist/generated/hooks/customer-detail.d.ts.map +1 -0
  55. package/dist/generated/hooks/customer-detail.js +113 -0
  56. package/dist/generated/hooks/design-system.d.ts +74 -0
  57. package/dist/generated/hooks/design-system.d.ts.map +1 -0
  58. package/dist/generated/hooks/design-system.js +109 -0
  59. package/dist/generated/hooks/index.d.ts +16 -0
  60. package/dist/generated/hooks/index.d.ts.map +1 -0
  61. package/dist/generated/hooks/index.js +14 -0
  62. package/dist/generated/hooks/shopify-collection.d.ts +74 -0
  63. package/dist/generated/hooks/shopify-collection.d.ts.map +1 -0
  64. package/dist/generated/hooks/shopify-collection.js +113 -0
  65. package/dist/generated/hooks/shopify-market.d.ts +74 -0
  66. package/dist/generated/hooks/shopify-market.d.ts.map +1 -0
  67. package/dist/generated/hooks/shopify-market.js +109 -0
  68. package/dist/generated/hooks/shopify-product.d.ts +74 -0
  69. package/dist/generated/hooks/shopify-product.d.ts.map +1 -0
  70. package/dist/generated/hooks/shopify-product.js +113 -0
  71. package/dist/generated/hooks/shopify-variant.d.ts +74 -0
  72. package/dist/generated/hooks/shopify-variant.d.ts.map +1 -0
  73. package/dist/generated/hooks/shopify-variant.js +113 -0
  74. package/dist/generated/hooks/template.d.ts +74 -0
  75. package/dist/generated/hooks/template.d.ts.map +1 -0
  76. package/dist/generated/hooks/template.js +107 -0
  77. package/dist/generated/types/config.d.ts +88 -0
  78. package/dist/generated/types/config.d.ts.map +1 -0
  79. package/dist/generated/types/config.js +14 -0
  80. package/dist/generated/types/data-models/index.d.ts +7 -0
  81. package/dist/generated/types/data-models/index.d.ts.map +1 -0
  82. package/dist/generated/types/data-models/index.js +6 -0
  83. package/dist/generated/types/data-models/test.d.ts +29 -0
  84. package/dist/generated/types/data-models/test.d.ts.map +1 -0
  85. package/dist/generated/types/data-models/test.js +1 -0
  86. package/dist/generated/types/data-models/watch.d.ts +26 -0
  87. package/dist/generated/types/data-models/watch.d.ts.map +1 -0
  88. package/dist/generated/types/data-models/watch.js +1 -0
  89. package/dist/generated/types/field-types.d.ts +255 -0
  90. package/dist/generated/types/field-types.d.ts.map +1 -0
  91. package/dist/generated/types/field-types.js +35 -0
  92. package/dist/generated/types/hooks.d.ts +106 -0
  93. package/dist/generated/types/hooks.d.ts.map +1 -0
  94. package/dist/generated/types/hooks.js +9 -0
  95. package/dist/generated/types/index.d.ts +10 -0
  96. package/dist/generated/types/index.d.ts.map +1 -0
  97. package/dist/generated/types/index.js +9 -0
  98. package/dist/generated/types/models/button-variant.d.ts +16 -0
  99. package/dist/generated/types/models/button-variant.d.ts.map +1 -0
  100. package/dist/generated/types/models/button-variant.js +1 -0
  101. package/dist/generated/types/models/color-palette.d.ts +27 -0
  102. package/dist/generated/types/models/color-palette.d.ts.map +1 -0
  103. package/dist/generated/types/models/color-palette.js +1 -0
  104. package/dist/generated/types/models/color-with-scale.d.ts +15 -0
  105. package/dist/generated/types/models/color-with-scale.d.ts.map +1 -0
  106. package/dist/generated/types/models/color-with-scale.js +1 -0
  107. package/dist/generated/types/models/context.d.ts +53 -0
  108. package/dist/generated/types/models/context.d.ts.map +1 -0
  109. package/dist/generated/types/models/context.js +51 -0
  110. package/dist/generated/types/models/customer-detail.d.ts +32 -0
  111. package/dist/generated/types/models/customer-detail.d.ts.map +1 -0
  112. package/dist/generated/types/models/customer-detail.js +26 -0
  113. package/dist/generated/types/models/design-system-badges.d.ts +16 -0
  114. package/dist/generated/types/models/design-system-badges.d.ts.map +1 -0
  115. package/dist/generated/types/models/design-system-badges.js +1 -0
  116. package/dist/generated/types/models/design-system-buttons.d.ts +17 -0
  117. package/dist/generated/types/models/design-system-buttons.d.ts.map +1 -0
  118. package/dist/generated/types/models/design-system-buttons.js +1 -0
  119. package/dist/generated/types/models/design-system-cards.d.ts +16 -0
  120. package/dist/generated/types/models/design-system-cards.d.ts.map +1 -0
  121. package/dist/generated/types/models/design-system-cards.js +1 -0
  122. package/dist/generated/types/models/design-system-colors.d.ts +12 -0
  123. package/dist/generated/types/models/design-system-colors.d.ts.map +1 -0
  124. package/dist/generated/types/models/design-system-colors.js +1 -0
  125. package/dist/generated/types/models/design-system-dark-mode.d.ts +13 -0
  126. package/dist/generated/types/models/design-system-dark-mode.d.ts.map +1 -0
  127. package/dist/generated/types/models/design-system-dark-mode.js +1 -0
  128. package/dist/generated/types/models/design-system-focus-ring.d.ts +14 -0
  129. package/dist/generated/types/models/design-system-focus-ring.d.ts.map +1 -0
  130. package/dist/generated/types/models/design-system-focus-ring.js +1 -0
  131. package/dist/generated/types/models/design-system-grid.d.ts +18 -0
  132. package/dist/generated/types/models/design-system-grid.d.ts.map +1 -0
  133. package/dist/generated/types/models/design-system-grid.js +1 -0
  134. package/dist/generated/types/models/design-system-inputs.d.ts +26 -0
  135. package/dist/generated/types/models/design-system-inputs.d.ts.map +1 -0
  136. package/dist/generated/types/models/design-system-inputs.js +1 -0
  137. package/dist/generated/types/models/design-system-links.d.ts +16 -0
  138. package/dist/generated/types/models/design-system-links.d.ts.map +1 -0
  139. package/dist/generated/types/models/design-system-links.js +1 -0
  140. package/dist/generated/types/models/design-system-shadows.d.ts +20 -0
  141. package/dist/generated/types/models/design-system-shadows.d.ts.map +1 -0
  142. package/dist/generated/types/models/design-system-shadows.js +1 -0
  143. package/dist/generated/types/models/design-system-spacing.d.ts +13 -0
  144. package/dist/generated/types/models/design-system-spacing.d.ts.map +1 -0
  145. package/dist/generated/types/models/design-system-spacing.js +1 -0
  146. package/dist/generated/types/models/design-system-transitions.d.ts +15 -0
  147. package/dist/generated/types/models/design-system-transitions.d.ts.map +1 -0
  148. package/dist/generated/types/models/design-system-transitions.js +1 -0
  149. package/dist/generated/types/models/design-system-typography.d.ts +21 -0
  150. package/dist/generated/types/models/design-system-typography.d.ts.map +1 -0
  151. package/dist/generated/types/models/design-system-typography.js +1 -0
  152. package/dist/generated/types/models/design-system.d.ts +138 -0
  153. package/dist/generated/types/models/design-system.d.ts.map +1 -0
  154. package/dist/generated/types/models/design-system.js +64 -0
  155. package/dist/generated/types/models/experiment.d.ts +57 -0
  156. package/dist/generated/types/models/experiment.d.ts.map +1 -0
  157. package/dist/generated/types/models/experiment.js +55 -0
  158. package/dist/generated/types/models/font-file.d.ts +16 -0
  159. package/dist/generated/types/models/font-file.d.ts.map +1 -0
  160. package/dist/generated/types/models/font-file.js +1 -0
  161. package/dist/generated/types/models/index.d.ts +38 -0
  162. package/dist/generated/types/models/index.d.ts.map +1 -0
  163. package/dist/generated/types/models/index.js +12 -0
  164. package/dist/generated/types/models/integration.d.ts +32 -0
  165. package/dist/generated/types/models/integration.d.ts.map +1 -0
  166. package/dist/generated/types/models/integration.js +26 -0
  167. package/dist/generated/types/models/route-tree.d.ts +43 -0
  168. package/dist/generated/types/models/route-tree.d.ts.map +1 -0
  169. package/dist/generated/types/models/route-tree.js +39 -0
  170. package/dist/generated/types/models/segment.d.ts +57 -0
  171. package/dist/generated/types/models/segment.d.ts.map +1 -0
  172. package/dist/generated/types/models/segment.js +55 -0
  173. package/dist/generated/types/models/shopify-collection.d.ts +32 -0
  174. package/dist/generated/types/models/shopify-collection.d.ts.map +1 -0
  175. package/dist/generated/types/models/shopify-collection.js +26 -0
  176. package/dist/generated/types/models/shopify-market.d.ts +32 -0
  177. package/dist/generated/types/models/shopify-market.d.ts.map +1 -0
  178. package/dist/generated/types/models/shopify-market.js +26 -0
  179. package/dist/generated/types/models/shopify-product.d.ts +32 -0
  180. package/dist/generated/types/models/shopify-product.d.ts.map +1 -0
  181. package/dist/generated/types/models/shopify-product.js +26 -0
  182. package/dist/generated/types/models/shopify-variant.d.ts +32 -0
  183. package/dist/generated/types/models/shopify-variant.d.ts.map +1 -0
  184. package/dist/generated/types/models/shopify-variant.js +26 -0
  185. package/dist/generated/types/models/template.d.ts +53 -0
  186. package/dist/generated/types/models/template.d.ts.map +1 -0
  187. package/dist/generated/types/models/template.js +40 -0
  188. package/dist/generated/types/models/typography-variant.d.ts +15 -0
  189. package/dist/generated/types/models/typography-variant.d.ts.map +1 -0
  190. package/dist/generated/types/models/typography-variant.js +1 -0
  191. package/dist/generated/types/scalars.d.ts +56 -0
  192. package/dist/generated/types/scalars.d.ts.map +1 -0
  193. package/dist/generated/types/scalars.js +6 -0
  194. package/dist/generators/admin/index.d.ts +32 -0
  195. package/dist/generators/admin/index.d.ts.map +1 -0
  196. package/dist/generators/admin/index.js +219 -0
  197. package/dist/generators/admin/mutations.d.ts +23 -0
  198. package/dist/generators/admin/mutations.d.ts.map +1 -0
  199. package/dist/generators/admin/mutations.js +424 -0
  200. package/dist/generators/admin/queries.d.ts +20 -0
  201. package/dist/generators/admin/queries.d.ts.map +1 -0
  202. package/dist/generators/admin/queries.js +476 -0
  203. package/dist/generators/admin/types.d.ts +28 -0
  204. package/dist/generators/admin/types.d.ts.map +1 -0
  205. package/dist/generators/admin/types.js +254 -0
  206. package/dist/generators/cms/index.d.ts +29 -0
  207. package/dist/generators/cms/index.d.ts.map +1 -0
  208. package/dist/generators/cms/index.js +126 -0
  209. package/dist/generators/cms/route.d.ts +27 -0
  210. package/dist/generators/cms/route.d.ts.map +1 -0
  211. package/dist/generators/cms/route.js +409 -0
  212. package/dist/generators/cms/types.d.ts +15 -0
  213. package/dist/generators/cms/types.d.ts.map +1 -0
  214. package/dist/generators/cms/types.js +137 -0
  215. package/dist/generators/contexts/index.d.ts +25 -0
  216. package/dist/generators/contexts/index.d.ts.map +1 -0
  217. package/dist/generators/contexts/index.js +591 -0
  218. package/dist/generators/documents/data-models.d.ts +6 -0
  219. package/dist/generators/documents/data-models.d.ts.map +1 -0
  220. package/dist/generators/documents/data-models.js +61 -0
  221. package/dist/generators/documents/entity-models.d.ts +7 -0
  222. package/dist/generators/documents/entity-models.d.ts.map +1 -0
  223. package/dist/generators/documents/entity-models.js +87 -0
  224. package/dist/generators/documents/workflows.d.ts +11 -0
  225. package/dist/generators/documents/workflows.d.ts.map +1 -0
  226. package/dist/generators/documents/workflows.js +101 -0
  227. package/dist/generators/filters/index.d.ts +16 -0
  228. package/dist/generators/filters/index.d.ts.map +1 -0
  229. package/dist/generators/filters/index.js +384 -0
  230. package/dist/generators/hooks/agnostic.d.ts +16 -0
  231. package/dist/generators/hooks/agnostic.d.ts.map +1 -0
  232. package/dist/generators/hooks/agnostic.js +248 -0
  233. package/dist/generators/hooks/index.d.ts +9 -0
  234. package/dist/generators/hooks/index.d.ts.map +1 -0
  235. package/dist/generators/hooks/index.js +8 -0
  236. package/dist/generators/hooks/react.d.ts +16 -0
  237. package/dist/generators/hooks/react.d.ts.map +1 -0
  238. package/dist/generators/hooks/react.js +394 -0
  239. package/dist/generators/hooks/remix.d.ts +16 -0
  240. package/dist/generators/hooks/remix.d.ts.map +1 -0
  241. package/dist/generators/hooks/remix.js +349 -0
  242. package/dist/generators/hooks/workflows.d.ts +23 -0
  243. package/dist/generators/hooks/workflows.d.ts.map +1 -0
  244. package/dist/generators/hooks/workflows.js +312 -0
  245. package/dist/generators/resolve/index.d.ts +13 -0
  246. package/dist/generators/resolve/index.d.ts.map +1 -0
  247. package/dist/generators/resolve/index.js +13 -0
  248. package/dist/generators/resolve/platform.d.ts +29 -0
  249. package/dist/generators/resolve/platform.d.ts.map +1 -0
  250. package/dist/generators/resolve/platform.js +479 -0
  251. package/dist/generators/types/config.d.ts +7 -0
  252. package/dist/generators/types/config.d.ts.map +1 -0
  253. package/dist/generators/types/config.js +113 -0
  254. package/dist/generators/types/data-models.d.ts +10 -0
  255. package/dist/generators/types/data-models.d.ts.map +1 -0
  256. package/dist/generators/types/data-models.js +100 -0
  257. package/dist/generators/types/entity-models.d.ts +13 -0
  258. package/dist/generators/types/entity-models.d.ts.map +1 -0
  259. package/dist/generators/types/entity-models.js +241 -0
  260. package/dist/generators/types/field-types.d.ts +9 -0
  261. package/dist/generators/types/field-types.d.ts.map +1 -0
  262. package/dist/generators/types/field-types.js +651 -0
  263. package/dist/generators/types/hooks.d.ts +7 -0
  264. package/dist/generators/types/hooks.d.ts.map +1 -0
  265. package/dist/generators/types/hooks.js +132 -0
  266. package/dist/generators/types/scalars.d.ts +6 -0
  267. package/dist/generators/types/scalars.d.ts.map +1 -0
  268. package/dist/generators/types/scalars.js +68 -0
  269. package/dist/generators/types/user-details.d.ts +6 -0
  270. package/dist/generators/types/user-details.d.ts.map +1 -0
  271. package/dist/generators/types/user-details.js +60 -0
  272. package/dist/generators/types/workflows.d.ts +15 -0
  273. package/dist/generators/types/workflows.d.ts.map +1 -0
  274. package/dist/generators/types/workflows.js +163 -0
  275. package/dist/graphql/generated/gql.d.ts +47 -0
  276. package/dist/graphql/generated/gql.d.ts.map +1 -0
  277. package/dist/graphql/generated/gql.js +10 -0
  278. package/dist/graphql/generated/graphql.d.ts +8455 -0
  279. package/dist/graphql/generated/graphql.d.ts.map +1 -0
  280. package/dist/graphql/generated/graphql.js +573 -0
  281. package/dist/graphql/generated/index.d.ts +2 -0
  282. package/dist/graphql/generated/index.d.ts.map +1 -0
  283. package/dist/graphql/generated/index.js +1 -0
  284. package/dist/index.d.ts +13 -0
  285. package/dist/index.d.ts.map +1 -0
  286. package/dist/index.js +9 -0
  287. package/dist/schema/define-entity-model.d.ts +122 -0
  288. package/dist/schema/define-entity-model.d.ts.map +1 -0
  289. package/dist/schema/define-entity-model.js +59 -0
  290. package/dist/schema/schema-loader.d.ts +10 -0
  291. package/dist/schema/schema-loader.d.ts.map +1 -0
  292. package/dist/schema/schema-loader.js +91 -0
  293. package/dist/utils/field-mapping.d.ts +83 -0
  294. package/dist/utils/field-mapping.d.ts.map +1 -0
  295. package/dist/utils/field-mapping.js +334 -0
  296. package/dist/writer/write-files.d.ts +12 -0
  297. package/dist/writer/write-files.d.ts.map +1 -0
  298. package/dist/writer/write-files.js +35 -0
  299. package/package.json +70 -0
@@ -0,0 +1,122 @@
1
+ import type { FieldSchema, ValidationRule } from '../fetcher/fetch-schemas.js';
2
+ /**
3
+ * Entity model definition for code-first schema management
4
+ */
5
+ export interface EntityModelDefinition {
6
+ /** Unique key for the model (e.g., 'article', 'hero-banner') */
7
+ key: string;
8
+ /** Display name */
9
+ name: string;
10
+ /** Plural display name (optional) */
11
+ pluralName?: string;
12
+ /** Description of the model */
13
+ description?: string;
14
+ /** Tier: 1=singleton, 2=no variants, 3=with variants */
15
+ tier: 1 | 2 | 3;
16
+ /** Editor mode: 'flat' or 'tree' */
17
+ editorMode?: 'flat' | 'tree';
18
+ /** Model modes */
19
+ modes: {
20
+ /** Can create standalone records (CRUD via API) */
21
+ records: boolean;
22
+ /** Can be used as a field type in other models */
23
+ inline: boolean;
24
+ };
25
+ /** Field definitions */
26
+ fields: FieldDefinitionInput[];
27
+ /** Lifecycle hooks configuration */
28
+ hooks?: {
29
+ onCreate?: HookDefinition[];
30
+ onUpdate?: HookDefinition[];
31
+ onDelete?: HookDefinition[];
32
+ onPublish?: HookDefinition[];
33
+ onUnpublish?: HookDefinition[];
34
+ };
35
+ /** Pages configuration - enables web page generation for records */
36
+ pages?: {
37
+ /** Whether pages are enabled for this entity type */
38
+ enabled?: boolean;
39
+ /** Sitemap configuration */
40
+ sitemap?: {
41
+ changefreq?: string;
42
+ priority?: number;
43
+ };
44
+ /** Default template reference */
45
+ defaultTemplate?: {
46
+ modelKey: string;
47
+ naturalKey: string;
48
+ };
49
+ /** Parent model relationships */
50
+ parentModels?: Array<{
51
+ modelKey: string;
52
+ cascadeDelete?: boolean;
53
+ }>;
54
+ };
55
+ }
56
+ /**
57
+ * Field definition input for schema definition
58
+ */
59
+ export interface FieldDefinitionInput {
60
+ /** Field key (must be unique within model) */
61
+ key: string;
62
+ /** Field type (text, number, image, etc. or another entity model key) */
63
+ type: string;
64
+ /** Display label */
65
+ label: string;
66
+ /** Whether field is required */
67
+ required?: boolean;
68
+ /** Help text shown to editors */
69
+ helpText?: string;
70
+ /** Placeholder text */
71
+ placeholder?: string;
72
+ /** Default value */
73
+ defaultValue?: any;
74
+ /** Type-specific options */
75
+ options?: Record<string, any>;
76
+ /** Validation rules */
77
+ validation?: ValidationRule[];
78
+ }
79
+ /**
80
+ * Hook definition for lifecycle events
81
+ */
82
+ export interface HookDefinition {
83
+ type: 'webhook' | 'expression';
84
+ /** For webhook type */
85
+ url?: string;
86
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
87
+ headers?: Record<string, string>;
88
+ async?: boolean;
89
+ additionalData?: Record<string, any>;
90
+ /** For expression type */
91
+ description?: string;
92
+ expression?: any;
93
+ hooks?: HookDefinition[];
94
+ }
95
+ /**
96
+ * Define an entity model for code-first schema management
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * // schemas/article.schema.ts
101
+ * import { defineEntityModel } from '@eide/uniformgen';
102
+ *
103
+ * export default defineEntityModel({
104
+ * key: 'article',
105
+ * name: 'Article',
106
+ * pluralName: 'Articles',
107
+ * tier: 3,
108
+ * modes: { records: true, inline: false },
109
+ * fields: [
110
+ * { key: 'title', type: 'text', label: 'Title', required: true },
111
+ * { key: 'slug', type: 'text', label: 'Slug', required: true },
112
+ * { key: 'content', type: 'richtext', label: 'Content' },
113
+ * ],
114
+ * });
115
+ * ```
116
+ */
117
+ export declare function defineEntityModel(definition: EntityModelDefinition): EntityModelDefinition;
118
+ /**
119
+ * Convert entity model definition to API field schema format
120
+ */
121
+ export declare function toFieldSchema(field: FieldDefinitionInput): FieldSchema;
122
+ //# sourceMappingURL=define-entity-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-entity-model.d.ts","sourceRoot":"","sources":["../../src/schema/define-entity-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Define an entity model for code-first schema management
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * // schemas/article.schema.ts
7
+ * import { defineEntityModel } from '@eide/uniformgen';
8
+ *
9
+ * export default defineEntityModel({
10
+ * key: 'article',
11
+ * name: 'Article',
12
+ * pluralName: 'Articles',
13
+ * tier: 3,
14
+ * modes: { records: true, inline: false },
15
+ * fields: [
16
+ * { key: 'title', type: 'text', label: 'Title', required: true },
17
+ * { key: 'slug', type: 'text', label: 'Slug', required: true },
18
+ * { key: 'content', type: 'richtext', label: 'Content' },
19
+ * ],
20
+ * });
21
+ * ```
22
+ */
23
+ export function defineEntityModel(definition) {
24
+ // Validate required fields
25
+ if (!definition.key) {
26
+ throw new Error('Entity model key is required');
27
+ }
28
+ if (!definition.name) {
29
+ throw new Error('Entity model name is required');
30
+ }
31
+ if (!definition.fields || definition.fields.length === 0) {
32
+ throw new Error('Entity model must have at least one field');
33
+ }
34
+ if (definition.modes.records === undefined && definition.modes.inline === undefined) {
35
+ throw new Error('Entity model must specify at least one mode (records or inline)');
36
+ }
37
+ // Set defaults
38
+ return {
39
+ ...definition,
40
+ editorMode: definition.editorMode ?? 'flat',
41
+ pluralName: definition.pluralName ?? `${definition.name}s`,
42
+ };
43
+ }
44
+ /**
45
+ * Convert entity model definition to API field schema format
46
+ */
47
+ export function toFieldSchema(field) {
48
+ return {
49
+ key: field.key,
50
+ type: field.type,
51
+ label: field.label,
52
+ required: field.required,
53
+ helpText: field.helpText,
54
+ placeholder: field.placeholder,
55
+ defaultValue: field.defaultValue,
56
+ options: field.options,
57
+ validation: field.validation,
58
+ };
59
+ }
@@ -0,0 +1,10 @@
1
+ import type { EntityModelDefinition } from './define-entity-model.js';
2
+ /**
3
+ * Load entity model schemas from a directory
4
+ */
5
+ export declare function loadSchemas(directory: string, pattern?: string): Promise<EntityModelDefinition[]>;
6
+ /**
7
+ * Generate schema file content from an entity model
8
+ */
9
+ export declare function generateSchemaFile(model: EntityModelDefinition): string;
10
+ //# sourceMappingURL=schema-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../../src/schema/schema-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,MAAyB,GACjC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA2ClC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CA4CvE"}
@@ -0,0 +1,91 @@
1
+ import { promises as fs } from 'fs';
2
+ import { resolve, basename } from 'path';
3
+ import { pathToFileURL } from 'url';
4
+ import { glob } from 'glob';
5
+ /**
6
+ * Load entity model schemas from a directory
7
+ */
8
+ export async function loadSchemas(directory, pattern = '**/*.schema.ts') {
9
+ const absoluteDir = resolve(process.cwd(), directory);
10
+ // Check if directory exists
11
+ try {
12
+ await fs.access(absoluteDir);
13
+ }
14
+ catch {
15
+ throw new Error(`Schema directory not found: ${absoluteDir}`);
16
+ }
17
+ // Find schema files
18
+ const files = await glob(pattern, {
19
+ cwd: absoluteDir,
20
+ absolute: true,
21
+ });
22
+ if (files.length === 0) {
23
+ return [];
24
+ }
25
+ // Load each schema
26
+ const schemas = [];
27
+ for (const file of files) {
28
+ try {
29
+ const fileUrl = pathToFileURL(file).href;
30
+ const module = await import(fileUrl);
31
+ const schema = module.default || module;
32
+ if (!schema || !schema.key) {
33
+ console.warn(`Warning: ${basename(file)} does not export a valid entity model definition`);
34
+ continue;
35
+ }
36
+ schemas.push(schema);
37
+ }
38
+ catch (error) {
39
+ throw new Error(`Failed to load schema from ${file}: ${error instanceof Error ? error.message : String(error)}`);
40
+ }
41
+ }
42
+ return schemas;
43
+ }
44
+ /**
45
+ * Generate schema file content from an entity model
46
+ */
47
+ export function generateSchemaFile(model) {
48
+ const fieldDefs = model.fields
49
+ .map((f) => {
50
+ const props = [
51
+ `key: '${f.key}'`,
52
+ `type: '${f.type}'`,
53
+ `label: '${f.label}'`,
54
+ ];
55
+ if (f.required)
56
+ props.push('required: true');
57
+ if (f.helpText)
58
+ props.push(`helpText: '${f.helpText}'`);
59
+ if (f.placeholder)
60
+ props.push(`placeholder: '${f.placeholder}'`);
61
+ if (f.defaultValue !== undefined) {
62
+ props.push(`defaultValue: ${JSON.stringify(f.defaultValue)}`);
63
+ }
64
+ if (f.options) {
65
+ props.push(`options: ${JSON.stringify(f.options)}`);
66
+ }
67
+ if (f.validation && f.validation.length > 0) {
68
+ props.push(`validation: ${JSON.stringify(f.validation)}`);
69
+ }
70
+ return ` { ${props.join(', ')} }`;
71
+ })
72
+ .join(',\n');
73
+ return `import { defineEntityModel } from '@eide/uniformgen';
74
+
75
+ export default defineEntityModel({
76
+ key: '${model.key}',
77
+ name: '${model.name}',
78
+ ${model.pluralName ? `pluralName: '${model.pluralName}',` : ''}
79
+ ${model.description ? `description: '${model.description}',` : ''}
80
+ tier: ${model.tier},
81
+ ${model.editorMode ? `editorMode: '${model.editorMode}',` : ''}
82
+ modes: {
83
+ records: ${model.modes.records},
84
+ inline: ${model.modes.inline},
85
+ },
86
+ fields: [
87
+ ${fieldDefs}
88
+ ],
89
+ });
90
+ `;
91
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Maps EIDE field types to TypeScript types
3
+ * Based on the field type mapping table in uniformgen-typesafe-entities.md
4
+ */
5
+ export interface TypeMapping {
6
+ outputType: string;
7
+ inputType: string;
8
+ needsImport?: string;
9
+ }
10
+ /**
11
+ * Primitive field types that are built-in
12
+ * Based on the current field type registry in packages/platform/src/entities/field-types/registry.ts
13
+ */
14
+ export declare const PRIMITIVE_FIELD_TYPES: Set<string>;
15
+ /**
16
+ * Check if a field type is a primitive (built-in) type
17
+ */
18
+ export declare function isPrimitiveFieldType(type: string): boolean;
19
+ /**
20
+ * Field type to TypeScript type mapping
21
+ * Based on the current field type registry in packages/platform/src/entities/field-types/registry.ts
22
+ */
23
+ export declare const FIELD_TYPE_MAPPING: Record<string, TypeMapping>;
24
+ /**
25
+ * Get TypeScript type for a field
26
+ */
27
+ export declare function getFieldType(field: {
28
+ type: string;
29
+ options?: any;
30
+ }, mode?: 'output' | 'input'): string;
31
+ /**
32
+ * Get all imports needed for a set of fields
33
+ */
34
+ export declare function getRequiredImports(fields: Array<{
35
+ type: string;
36
+ options?: any;
37
+ }>): Set<string>;
38
+ /**
39
+ * Get all inline schema references from fields
40
+ * Returns the keys of entity models that are used as field types
41
+ */
42
+ export declare function getInlineSchemaReferences(fields: Array<{
43
+ type: string;
44
+ options?: any;
45
+ }>): Set<string>;
46
+ /**
47
+ * Convert field ID to camelCase
48
+ */
49
+ export declare function toCamelCase(str: string): string;
50
+ /**
51
+ * Convert field ID to PascalCase
52
+ */
53
+ export declare function toPascalCase(str: string): string;
54
+ /**
55
+ * Sanitize field name for TypeScript
56
+ * Replaces special characters and spaces with underscores.
57
+ * Prefixes with underscore if name starts with a number.
58
+ */
59
+ export declare function sanitizeFieldName(name: string): string;
60
+ /**
61
+ * Field schema from the API (for type reference)
62
+ */
63
+ export interface FieldSchemaForGen {
64
+ key: string;
65
+ type: string;
66
+ label: string;
67
+ required?: boolean;
68
+ helpText?: string;
69
+ placeholder?: string;
70
+ defaultValue?: any;
71
+ options?: any;
72
+ validation?: Array<{
73
+ type: string;
74
+ value: any;
75
+ message?: string;
76
+ }>;
77
+ }
78
+ /**
79
+ * Generate a strongly-typed field definition object string
80
+ * Returns a string that can be used in generated TypeScript code
81
+ */
82
+ export declare function generateFieldDef(field: FieldSchemaForGen): string;
83
+ //# sourceMappingURL=field-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-mapping.d.ts","sourceRoot":"","sources":["../../src/utils/field-mapping.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,aA+BhC,CAAC;AAEH;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA2G1D,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,GAAG,CAAA;CAAE,EACtC,IAAI,GAAE,QAAQ,GAAG,OAAkB,GAClC,MAAM,CAgDR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,GAC7C,GAAG,CAAC,MAAM,CAAC,CAmBb;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,GAC7C,GAAG,CAAC,MAAM,CAAC,CAmBb;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA4EjE"}