@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,651 @@
1
+ /**
2
+ * Generates the field-types.ts file with:
3
+ * - Value types for each field type (what the data looks like)
4
+ * - Field definition types (how to define fields in config)
5
+ *
6
+ * @generated by UniformGen
7
+ */
8
+ export function generateFieldTypesFile() {
9
+ return `/**
10
+ * Field Types and Definitions
11
+ *
12
+ * This file contains:
13
+ * - Value types: What the actual data looks like for each field type
14
+ * - Field definitions: How to define fields in entity model configurations
15
+ *
16
+ * @generated by UniformGen - DO NOT EDIT MANUALLY
17
+ */
18
+
19
+ // =============================================================================
20
+ // VALUE TYPES - What the data looks like
21
+ // =============================================================================
22
+
23
+ /**
24
+ * Rich text content (Lexical JSON format)
25
+ */
26
+ export type RichtextValue = unknown;
27
+
28
+ /**
29
+ * Currency value with amount and code
30
+ */
31
+ export interface CurrencyValue {
32
+ amount: number;
33
+ currency: string; // ISO 4217 code (USD, EUR, etc.)
34
+ }
35
+
36
+ /**
37
+ * Image reference with metadata
38
+ */
39
+ export interface ImageValue {
40
+ id: string;
41
+ url: string;
42
+ alt?: string;
43
+ width?: number;
44
+ height?: number;
45
+ }
46
+
47
+ /**
48
+ * Video reference with metadata
49
+ */
50
+ export interface VideoValue {
51
+ id: string;
52
+ url: string;
53
+ thumbnail?: string;
54
+ duration?: number;
55
+ }
56
+
57
+ /**
58
+ * File reference with metadata
59
+ */
60
+ export interface FileValue {
61
+ id: string;
62
+ url: string;
63
+ name: string;
64
+ size: number;
65
+ mimeType: string;
66
+ }
67
+
68
+ /**
69
+ * Address structure
70
+ */
71
+ export interface AddressValue {
72
+ street?: string;
73
+ city?: string;
74
+ state?: string;
75
+ postalCode?: string;
76
+ country?: string;
77
+ }
78
+
79
+ /**
80
+ * Link value (internal route or external URL)
81
+ */
82
+ export interface LinkValue {
83
+ type: 'route' | 'url';
84
+ route?: string;
85
+ url?: string;
86
+ target?: '_self' | '_blank';
87
+ }
88
+
89
+ /**
90
+ * Entity reference value
91
+ */
92
+ export interface ReferenceValue {
93
+ _type: 'reference';
94
+ _schema: string;
95
+ naturalKey: string;
96
+ _preview?: Record<string, unknown>;
97
+ }
98
+
99
+ /**
100
+ * Composite/inline value
101
+ */
102
+ export interface CompositeValue {
103
+ _type: 'composite';
104
+ _schema: string;
105
+ fields: Record<string, unknown>;
106
+ }
107
+
108
+ // =============================================================================
109
+ // FILTER OPERATOR TYPES - For typed filtering
110
+ // =============================================================================
111
+
112
+ /**
113
+ * Text field filter operators
114
+ */
115
+ export interface TextFilter {
116
+ eq?: string;
117
+ ne?: string;
118
+ contains?: string;
119
+ startsWith?: string;
120
+ endsWith?: string;
121
+ in?: string[];
122
+ notIn?: string[];
123
+ isNull?: boolean;
124
+ }
125
+
126
+ /**
127
+ * Number field filter operators
128
+ */
129
+ export interface NumberFilter {
130
+ eq?: number;
131
+ ne?: number;
132
+ gt?: number;
133
+ gte?: number;
134
+ lt?: number;
135
+ lte?: number;
136
+ in?: number[];
137
+ notIn?: number[];
138
+ isNull?: boolean;
139
+ }
140
+
141
+ /**
142
+ * Boolean field filter operators
143
+ */
144
+ export interface BooleanFilter {
145
+ eq?: boolean;
146
+ ne?: boolean;
147
+ isNull?: boolean;
148
+ }
149
+
150
+ /**
151
+ * Date field filter operators
152
+ * Values should be ISO 8601 date strings
153
+ */
154
+ export interface DateFilter {
155
+ eq?: string;
156
+ ne?: string;
157
+ gt?: string;
158
+ gte?: string;
159
+ lt?: string;
160
+ lte?: string;
161
+ isNull?: boolean;
162
+ }
163
+
164
+ /**
165
+ * Select field filter operators (with literal type for values)
166
+ */
167
+ export interface SelectFilter<T extends string = string> {
168
+ eq?: T;
169
+ ne?: T;
170
+ in?: T[];
171
+ notIn?: T[];
172
+ isNull?: boolean;
173
+ }
174
+
175
+ /**
176
+ * Multiselect field filter operators
177
+ */
178
+ export interface MultiselectFilter<T extends string = string> {
179
+ contains?: T;
180
+ containsAny?: T[];
181
+ containsAll?: T[];
182
+ isNull?: boolean;
183
+ }
184
+
185
+ /**
186
+ * Reference field filter operators
187
+ */
188
+ export interface ReferenceFilter {
189
+ eq?: string;
190
+ ne?: string;
191
+ in?: string[];
192
+ notIn?: string[];
193
+ isNull?: boolean;
194
+ }
195
+
196
+ /**
197
+ * Generic filter input for API
198
+ */
199
+ export interface FilterInput {
200
+ field: string;
201
+ operator: string;
202
+ value: unknown;
203
+ }
204
+
205
+ /**
206
+ * Sort input for queries
207
+ */
208
+ export interface SortInput {
209
+ field: string;
210
+ direction: 'ASC' | 'DESC';
211
+ }
212
+
213
+ // =============================================================================
214
+ // RESOLVE TYPES - For frontend entity resolution
215
+ // =============================================================================
216
+
217
+ /**
218
+ * Variant context for entity resolution
219
+ * Used to select the appropriate variant based on user context
220
+ *
221
+ * Context dimensions are configured in the CMS as "context" entities.
222
+ * Common contexts include: device, region, market, customerId, etc.
223
+ */
224
+ export interface VariantContext {
225
+ /** Locale code for translation resolution (e.g., 'en-US', 'ja-JP') */
226
+ locale?: string;
227
+ /** Context dimensions for variant selection (dynamic, configured in CMS) */
228
+ contexts?: Record<string, unknown>;
229
+ }
230
+
231
+ /**
232
+ * Reference resolution options
233
+ */
234
+ export interface ReferenceResolutionOptions {
235
+ /** Maximum depth for nested resolution (null = unlimited) */
236
+ maxDepth?: number;
237
+ /** Whether to resolve media references */
238
+ resolveMedia?: boolean;
239
+ /** Whether to resolve entity references */
240
+ resolveEntities?: boolean;
241
+ }
242
+
243
+ /**
244
+ * Resolved entity record metadata
245
+ */
246
+ export interface ResolvedRecord {
247
+ id: string;
248
+ modelKey: string;
249
+ naturalKey: string | null;
250
+ metadata?: Record<string, unknown>;
251
+ }
252
+
253
+ /**
254
+ * Resolved variant info
255
+ */
256
+ export interface ResolvedVariant {
257
+ id: string;
258
+ variantKey: string;
259
+ }
260
+
261
+ /**
262
+ * Zone layout mode
263
+ */
264
+ export type ZoneLayoutMode = 'GRID' | 'LIST';
265
+
266
+ /**
267
+ * Field source for debugging
268
+ */
269
+ export type FieldSource = 'ENTITY' | 'TEMPLATE';
270
+
271
+ /**
272
+ * Responsive visibility settings for zones
273
+ */
274
+ export interface ZoneResponsiveSettings {
275
+ mobile?: boolean;
276
+ tablet?: boolean;
277
+ desktop?: boolean;
278
+ }
279
+
280
+ /**
281
+ * Grid position within a zone at a specific breakpoint
282
+ */
283
+ export interface GridPosition {
284
+ x: number;
285
+ y: number;
286
+ w: number;
287
+ h: number;
288
+ minW?: number;
289
+ maxW?: number;
290
+ minH?: number;
291
+ maxH?: number;
292
+ }
293
+
294
+ /**
295
+ * Field layout positions per breakpoint
296
+ */
297
+ export interface FieldLayout {
298
+ lg?: GridPosition;
299
+ md?: GridPosition;
300
+ sm?: GridPosition;
301
+ xs?: GridPosition;
302
+ }
303
+
304
+ /**
305
+ * Resolved field with value and layout attached
306
+ */
307
+ export interface ResolvedField {
308
+ /** Field key */
309
+ key: string;
310
+ /** Field type - primitive type OR modelKey for inline entities OR 'zone' */
311
+ type: string;
312
+ /** Human-readable label */
313
+ label?: string;
314
+ /** Whether field is required */
315
+ required?: boolean;
316
+ /** Fully resolved value (can be ZoneValue when type is 'zone') */
317
+ value: unknown;
318
+ /** Grid layout position (used when layoutMode is GRID) */
319
+ layout?: FieldLayout;
320
+ /** Order in list (used when layoutMode is LIST, derived from zoneOrder) */
321
+ order?: number;
322
+ /** Where this field originated from (for debugging) */
323
+ source?: FieldSource;
324
+ }
325
+
326
+ /**
327
+ * Zone value structure - used when a field has type: 'zone'
328
+ * Contains entity fields placed in this zone
329
+ */
330
+ export interface ZoneValue {
331
+ /** Zone identifier */
332
+ key: string;
333
+ /** Human-readable label */
334
+ label: string;
335
+ /** Layout mode for fields within this zone */
336
+ layoutMode: ZoneLayoutMode;
337
+ /** Responsive visibility settings */
338
+ responsive?: ZoneResponsiveSettings;
339
+ /** Entity fields placed in this zone */
340
+ fields: ResolvedField[];
341
+ }
342
+
343
+ /**
344
+ * Grid configuration from design system
345
+ * Used by @eide/foir-renderer for layout positioning
346
+ */
347
+ export interface GridConfig {
348
+ /** Breakpoint pixel values (e.g., { lg: 1200, md: 996, sm: 768, xs: 480 }) */
349
+ breakpoints: Record<string, number>;
350
+ /** Column counts per breakpoint (e.g., { lg: 12, md: 10, sm: 6, xs: 4 }) */
351
+ cols: Record<string, number>;
352
+ /** Height of each grid row in pixels */
353
+ rowHeight: number;
354
+ /** Padding around the container [x, y] */
355
+ containerPadding: [number, number];
356
+ /** Margin between grid items [x, y] */
357
+ margin: [number, number];
358
+ }
359
+
360
+ /**
361
+ * Simplified template reference (no layout embedded)
362
+ * Layout information is now in the fields array
363
+ */
364
+ export interface ResolvedTemplateRef {
365
+ id: string;
366
+ modelKey: string;
367
+ naturalKey: string | null;
368
+ }
369
+
370
+ /**
371
+ * All renderable content (new unified structure)
372
+ *
373
+ * - Templates are just references (no layout embedded)
374
+ * - Zones become regular fields with type: 'zone'
375
+ * - Top-level fields array contains all renderable content
376
+ */
377
+ export interface ResolvedContent {
378
+ /** Template reference (null if no template assigned) */
379
+ template: ResolvedTemplateRef | null;
380
+ /** Layout mode for the content (GRID if fields have positions, LIST otherwise) */
381
+ layoutMode: ZoneLayoutMode;
382
+ /** All renderable fields including zones (ordered for rendering) */
383
+ fields: ResolvedField[];
384
+ /** Content fields not placed in any zone/layout */
385
+ extraContent?: ResolvedField[];
386
+ }
387
+
388
+ /**
389
+ * Resolution context output
390
+ */
391
+ export interface ResolutionContext {
392
+ locale: string;
393
+ contexts: Record<string, unknown>;
394
+ }
395
+
396
+ /**
397
+ * Breadcrumb node types
398
+ */
399
+ export type BreadcrumbType = 'home' | 'context' | 'static' | 'entity';
400
+
401
+ /**
402
+ * Breadcrumb for navigation
403
+ */
404
+ export interface Breadcrumb {
405
+ /** Display label */
406
+ label: string;
407
+ /** Route URL */
408
+ url: string;
409
+ /** Node type for styling hints */
410
+ type?: BreadcrumbType;
411
+ /** Is this the current/active page? */
412
+ isCurrent?: boolean;
413
+ }
414
+
415
+ /**
416
+ * Base resolved entity content (new format)
417
+ */
418
+ export interface ResolvedEntityContentBase {
419
+ record: ResolvedRecord;
420
+ variant: ResolvedVariant;
421
+ /** Renderable content (template with zones + extra content) */
422
+ content: ResolvedContent;
423
+ resolvedWith: ResolutionContext;
424
+ breadcrumbs?: Breadcrumb[];
425
+ /** Grid configuration from design system for layout rendering */
426
+ gridConfig?: GridConfig;
427
+ }
428
+
429
+ // =============================================================================
430
+ // FIELD DEFINITION TYPES - How to define fields in config
431
+ // =============================================================================
432
+
433
+ /**
434
+ * Base field definition properties shared by all field types
435
+ */
436
+ export interface BaseFieldDef {
437
+ /** Unique field identifier (camelCase) */
438
+ key: string;
439
+ /** Display label */
440
+ label: string;
441
+ /** Whether field is required */
442
+ required?: boolean;
443
+ /** Help text shown to users */
444
+ helpText?: string;
445
+ /** Default value */
446
+ defaultValue?: unknown;
447
+ }
448
+
449
+ /**
450
+ * Text field definition
451
+ */
452
+ export interface TextFieldDef extends BaseFieldDef {
453
+ type: 'text';
454
+ maxLength?: number;
455
+ minLength?: number;
456
+ pattern?: string;
457
+ ui?: {
458
+ widget?: 'text-input' | 'textarea' | 'code-editor';
459
+ placeholder?: string;
460
+ rows?: number;
461
+ };
462
+ }
463
+
464
+ /**
465
+ * Number field definition
466
+ */
467
+ export interface NumberFieldDef extends BaseFieldDef {
468
+ type: 'number';
469
+ min?: number;
470
+ max?: number;
471
+ step?: number;
472
+ ui?: {
473
+ widget?: 'number-input' | 'slider';
474
+ };
475
+ }
476
+
477
+ /**
478
+ * Boolean field definition
479
+ */
480
+ export interface BooleanFieldDef extends BaseFieldDef {
481
+ type: 'boolean';
482
+ ui?: {
483
+ widget?: 'checkbox' | 'switch';
484
+ };
485
+ }
486
+
487
+ /**
488
+ * Date field definition
489
+ */
490
+ export interface DateFieldDef extends BaseFieldDef {
491
+ type: 'date';
492
+ ui?: {
493
+ widget?: 'date-picker' | 'datetime-picker';
494
+ format?: 'date-only' | 'datetime';
495
+ };
496
+ }
497
+
498
+ /**
499
+ * Rich text field definition
500
+ */
501
+ export interface RichtextFieldDef extends BaseFieldDef {
502
+ type: 'richtext';
503
+ }
504
+
505
+ /**
506
+ * Image field definition
507
+ */
508
+ export interface ImageFieldDef extends BaseFieldDef {
509
+ type: 'image';
510
+ allowedTypes?: string[];
511
+ maxSize?: number;
512
+ }
513
+
514
+ /**
515
+ * Video field definition
516
+ */
517
+ export interface VideoFieldDef extends BaseFieldDef {
518
+ type: 'video';
519
+ allowedTypes?: string[];
520
+ maxSize?: number;
521
+ }
522
+
523
+ /**
524
+ * File field definition
525
+ */
526
+ export interface FileFieldDef extends BaseFieldDef {
527
+ type: 'file';
528
+ allowedTypes?: string[];
529
+ maxSize?: number;
530
+ }
531
+
532
+ /**
533
+ * Select field definition (single choice)
534
+ */
535
+ export interface SelectFieldDef extends BaseFieldDef {
536
+ type: 'select';
537
+ options: Array<{ label: string; value: string }>;
538
+ }
539
+
540
+ /**
541
+ * Multiselect field definition (multiple choices)
542
+ */
543
+ export interface MultiselectFieldDef extends BaseFieldDef {
544
+ type: 'multiselect';
545
+ options: Array<{ label: string; value: string }>;
546
+ }
547
+
548
+ /**
549
+ * Entity reference field definition
550
+ */
551
+ export interface EntityReferenceFieldDef extends BaseFieldDef {
552
+ type: 'entity-reference';
553
+ /** Entity model keys that can be referenced */
554
+ referenceTypes: string[];
555
+ /** Allow multiple references */
556
+ multiple?: boolean;
557
+ }
558
+
559
+ /**
560
+ * List field definition (array of items)
561
+ */
562
+ export interface ListFieldDef extends BaseFieldDef {
563
+ type: 'list';
564
+ /** Type of items in the list */
565
+ itemType: string;
566
+ minItems?: number;
567
+ maxItems?: number;
568
+ }
569
+
570
+ /**
571
+ * Link field definition
572
+ */
573
+ export interface LinkFieldDef extends BaseFieldDef {
574
+ type: 'link';
575
+ }
576
+
577
+ /**
578
+ * JSON field definition (unstructured data)
579
+ */
580
+ export interface JsonFieldDef extends BaseFieldDef {
581
+ type: 'json';
582
+ }
583
+
584
+ /**
585
+ * Design system style field definition
586
+ */
587
+ export interface DesignSystemStyleFieldDef extends BaseFieldDef {
588
+ type: 'design-system-style';
589
+ }
590
+
591
+ /**
592
+ * Inline schema field definition (references another entity model)
593
+ * The type value is the key of an entity model with modes.inline = true
594
+ */
595
+ export interface InlineSchemaFieldDef extends BaseFieldDef {
596
+ /** Entity model key (e.g., 'hero-banner', 'product-card') */
597
+ type: string;
598
+ }
599
+
600
+ /**
601
+ * Union of all strongly-typed field definitions
602
+ */
603
+ export type FieldDef =
604
+ | TextFieldDef
605
+ | NumberFieldDef
606
+ | BooleanFieldDef
607
+ | DateFieldDef
608
+ | RichtextFieldDef
609
+ | ImageFieldDef
610
+ | VideoFieldDef
611
+ | FileFieldDef
612
+ | SelectFieldDef
613
+ | MultiselectFieldDef
614
+ | EntityReferenceFieldDef
615
+ | ListFieldDef
616
+ | LinkFieldDef
617
+ | JsonFieldDef
618
+ | DesignSystemStyleFieldDef
619
+ | InlineSchemaFieldDef;
620
+
621
+ /**
622
+ * Known primitive field type keys
623
+ */
624
+ export const PRIMITIVE_FIELD_TYPES = [
625
+ 'text',
626
+ 'number',
627
+ 'boolean',
628
+ 'date',
629
+ 'richtext',
630
+ 'image',
631
+ 'video',
632
+ 'file',
633
+ 'select',
634
+ 'multiselect',
635
+ 'entity-reference',
636
+ 'list',
637
+ 'link',
638
+ 'json',
639
+ 'design-system-style',
640
+ ] as const;
641
+
642
+ export type PrimitiveFieldType = typeof PRIMITIVE_FIELD_TYPES[number];
643
+
644
+ /**
645
+ * Check if a type is a primitive field type
646
+ */
647
+ export function isPrimitiveFieldType(type: string): type is PrimitiveFieldType {
648
+ return PRIMITIVE_FIELD_TYPES.includes(type as PrimitiveFieldType);
649
+ }
650
+ `;
651
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Generates the hooks.ts file with lifecycle hook type definitions
3
+ *
4
+ * @generated by UniformGen
5
+ */
6
+ export declare function generateHooksFile(): string;
7
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/generators/types/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,iBAAiB,IAAI,MAAM,CA8H1C"}