@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,152 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Configuration schema for UniformGen
4
+ */
5
+ export declare const ConfigSchema: z.ZodObject<{
6
+ /**
7
+ * API endpoint URL (base URL without /graphql path)
8
+ * @default 'https://api.eide.app'
9
+ */
10
+ apiUrl: z.ZodOptional<z.ZodString>;
11
+ /**
12
+ * JWT access token for internal API authentication
13
+ * Obtained via CLI login
14
+ */
15
+ accessToken: z.ZodString;
16
+ /**
17
+ * Project API key for public API authentication (optional, kept for backwards compatibility)
18
+ * Can be set via config, env var, or auto-provisioned by CLI login
19
+ */
20
+ projectKey: z.ZodOptional<z.ZodString>;
21
+ /**
22
+ * Tenant ID for API context
23
+ * Obtained from selected project via CLI
24
+ */
25
+ tenantId: z.ZodString;
26
+ /**
27
+ * Project ID for API context
28
+ * Obtained from selected project via CLI
29
+ */
30
+ projectId: z.ZodString;
31
+ /**
32
+ * Target framework for generated hooks
33
+ * If not set, uses the value from `uniformgen setup` (stored in ~/.uniformgen/settings.json)
34
+ * Falls back to 'agnostic' if neither is set
35
+ */
36
+ framework: z.ZodOptional<z.ZodEnum<["agnostic", "react", "remix"]>>;
37
+ /**
38
+ * Output paths for generated files
39
+ */
40
+ output: z.ZodOptional<z.ZodObject<{
41
+ types: z.ZodDefault<z.ZodString>;
42
+ documents: z.ZodDefault<z.ZodString>;
43
+ hooks: z.ZodDefault<z.ZodString>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ types: string;
46
+ documents: string;
47
+ hooks: string;
48
+ }, {
49
+ types?: string | undefined;
50
+ documents?: string | undefined;
51
+ hooks?: string | undefined;
52
+ }>>;
53
+ /**
54
+ * Entity model filter - only generate for specific models
55
+ * If not provided, generates for all models
56
+ */
57
+ only: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
58
+ /**
59
+ * Include inline entity models (modes.inline = true)
60
+ * Required for type resolution when fields reference inline schemas
61
+ * @default true
62
+ */
63
+ includeInline: z.ZodDefault<z.ZodBoolean>;
64
+ /**
65
+ * Formatting options
66
+ */
67
+ prettier: z.ZodDefault<z.ZodBoolean>;
68
+ }, "strip", z.ZodTypeAny, {
69
+ accessToken: string;
70
+ tenantId: string;
71
+ projectId: string;
72
+ includeInline: boolean;
73
+ prettier: boolean;
74
+ apiUrl?: string | undefined;
75
+ projectKey?: string | undefined;
76
+ framework?: "agnostic" | "react" | "remix" | undefined;
77
+ output?: {
78
+ types: string;
79
+ documents: string;
80
+ hooks: string;
81
+ } | undefined;
82
+ only?: string[] | undefined;
83
+ }, {
84
+ accessToken: string;
85
+ tenantId: string;
86
+ projectId: string;
87
+ apiUrl?: string | undefined;
88
+ projectKey?: string | undefined;
89
+ framework?: "agnostic" | "react" | "remix" | undefined;
90
+ output?: {
91
+ types?: string | undefined;
92
+ documents?: string | undefined;
93
+ hooks?: string | undefined;
94
+ } | undefined;
95
+ only?: string[] | undefined;
96
+ includeInline?: boolean | undefined;
97
+ prettier?: boolean | undefined;
98
+ }>;
99
+ export type UniformGenConfig = z.infer<typeof ConfigSchema>;
100
+ /**
101
+ * User-provided configuration (partial, auth fields come from CLI)
102
+ */
103
+ export interface UniformGenUserConfig {
104
+ /**
105
+ * Target framework for generated hooks
106
+ * @default 'agnostic'
107
+ */
108
+ framework?: 'agnostic' | 'react' | 'remix';
109
+ /**
110
+ * Output paths for generated files
111
+ */
112
+ output?: {
113
+ types?: string;
114
+ documents?: string;
115
+ hooks?: string;
116
+ };
117
+ /**
118
+ * Entity model filter - only generate for specific models
119
+ */
120
+ only?: string[];
121
+ /**
122
+ * Include inline entity models
123
+ * @default true
124
+ */
125
+ includeInline?: boolean;
126
+ /**
127
+ * Enable Prettier formatting
128
+ * @default true
129
+ */
130
+ prettier?: boolean;
131
+ }
132
+ /**
133
+ * Helper function to define configuration with type safety
134
+ * Use in uniformgen.config.ts
135
+ *
136
+ * @example
137
+ * import { defineConfig } from '@eide/uniformgen';
138
+ *
139
+ * export default defineConfig({
140
+ * framework: 'remix',
141
+ * output: {
142
+ * types: './app/generated/types',
143
+ * hooks: './app/generated/hooks',
144
+ * },
145
+ * });
146
+ */
147
+ export declare function defineConfig(config: UniformGenUserConfig): UniformGenUserConfig;
148
+ /**
149
+ * Default configuration values
150
+ */
151
+ export declare const defaultConfig: Partial<UniformGenConfig>;
152
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;OAIG;;IAGH;;OAEG;;;;;;;;;;;;;;IASH;;;OAGG;;IAGH;;;;OAIG;;IAGH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IAE3C;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAE/E;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,gBAAgB,CAUnD,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Configuration schema for UniformGen
4
+ */
5
+ export const ConfigSchema = z.object({
6
+ /**
7
+ * API endpoint URL (base URL without /graphql path)
8
+ * @default 'https://api.eide.app'
9
+ */
10
+ apiUrl: z.string().url().optional(),
11
+ /**
12
+ * JWT access token for internal API authentication
13
+ * Obtained via CLI login
14
+ */
15
+ accessToken: z.string().min(1, 'Access token is required'),
16
+ /**
17
+ * Project API key for public API authentication (optional, kept for backwards compatibility)
18
+ * Can be set via config, env var, or auto-provisioned by CLI login
19
+ */
20
+ projectKey: z.string().optional(),
21
+ /**
22
+ * Tenant ID for API context
23
+ * Obtained from selected project via CLI
24
+ */
25
+ tenantId: z.string().min(1, 'Tenant ID is required'),
26
+ /**
27
+ * Project ID for API context
28
+ * Obtained from selected project via CLI
29
+ */
30
+ projectId: z.string().min(1, 'Project ID is required'),
31
+ /**
32
+ * Target framework for generated hooks
33
+ * If not set, uses the value from `uniformgen setup` (stored in ~/.uniformgen/settings.json)
34
+ * Falls back to 'agnostic' if neither is set
35
+ */
36
+ framework: z.enum(['agnostic', 'react', 'remix']).optional(),
37
+ /**
38
+ * Output paths for generated files
39
+ */
40
+ output: z
41
+ .object({
42
+ types: z.string().default('./src/generated/types'),
43
+ documents: z.string().default('./src/generated/documents'),
44
+ hooks: z.string().default('./src/generated/hooks'),
45
+ })
46
+ .optional(),
47
+ /**
48
+ * Entity model filter - only generate for specific models
49
+ * If not provided, generates for all models
50
+ */
51
+ only: z.array(z.string()).optional(),
52
+ /**
53
+ * Include inline entity models (modes.inline = true)
54
+ * Required for type resolution when fields reference inline schemas
55
+ * @default true
56
+ */
57
+ includeInline: z.boolean().default(true),
58
+ /**
59
+ * Formatting options
60
+ */
61
+ prettier: z.boolean().default(true),
62
+ });
63
+ /**
64
+ * Helper function to define configuration with type safety
65
+ * Use in uniformgen.config.ts
66
+ *
67
+ * @example
68
+ * import { defineConfig } from '@eide/uniformgen';
69
+ *
70
+ * export default defineConfig({
71
+ * framework: 'remix',
72
+ * output: {
73
+ * types: './app/generated/types',
74
+ * hooks: './app/generated/hooks',
75
+ * },
76
+ * });
77
+ */
78
+ export function defineConfig(config) {
79
+ return config;
80
+ }
81
+ /**
82
+ * Default configuration values
83
+ */
84
+ export const defaultConfig = {
85
+ apiUrl: 'https://api.foir.build',
86
+ // framework intentionally omitted - use `uniformgen setup` to configure
87
+ output: {
88
+ types: './src/generated/types',
89
+ documents: './src/generated/documents',
90
+ hooks: './src/generated/hooks',
91
+ },
92
+ includeInline: true,
93
+ prettier: true,
94
+ };
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Metadata schema field definition
3
+ */
4
+ export interface MetadataSchemaField {
5
+ key: string;
6
+ label: string;
7
+ type: 'string' | 'number' | 'boolean' | 'date' | 'array' | 'object';
8
+ description?: string;
9
+ category?: string;
10
+ required?: boolean;
11
+ }
12
+ /**
13
+ * Metadata schema definition
14
+ */
15
+ export interface MetadataSchema {
16
+ fields?: MetadataSchemaField[];
17
+ }
18
+ /**
19
+ * Entity model metadata
20
+ */
21
+ export interface EntityModelMetadata {
22
+ name: string;
23
+ pluralName?: string;
24
+ description?: string;
25
+ category?: string;
26
+ }
27
+ /**
28
+ * Entity model from the API
29
+ */
30
+ export interface EntityModel {
31
+ key: string;
32
+ name: string;
33
+ pluralName?: string;
34
+ description?: string;
35
+ category?: string;
36
+ tier: number;
37
+ editorMode?: string;
38
+ fields: FieldSchema[];
39
+ modes: EntityModelModes;
40
+ isInfrastructure?: boolean;
41
+ pages?: PagesConfig;
42
+ hooks?: EntityHooks;
43
+ metadataSchema?: MetadataSchema;
44
+ }
45
+ export interface EntityModelModes {
46
+ records: boolean;
47
+ inline: boolean;
48
+ publicApi: boolean;
49
+ }
50
+ export interface PagesConfig {
51
+ enabled: boolean;
52
+ sitemap?: {
53
+ changefreq?: string;
54
+ priority?: number;
55
+ };
56
+ defaultTemplate?: {
57
+ modelKey: string;
58
+ naturalKey: string;
59
+ };
60
+ parentModels?: Array<{
61
+ modelKey: string;
62
+ cascadeDelete?: boolean;
63
+ }>;
64
+ }
65
+ export interface HookConfig {
66
+ type: 'webhook' | 'queue-job' | 'expression';
67
+ [key: string]: unknown;
68
+ }
69
+ export interface EntityHooks {
70
+ onCreate?: HookConfig[];
71
+ onUpdate?: HookConfig[];
72
+ onDelete?: HookConfig[];
73
+ onPublish?: HookConfig[];
74
+ onUnpublish?: HookConfig[];
75
+ }
76
+ export interface FieldSchema {
77
+ key: string;
78
+ type: string;
79
+ label: string;
80
+ required?: boolean;
81
+ helpText?: string;
82
+ placeholder?: string;
83
+ defaultValue?: any;
84
+ options?: any;
85
+ validation?: ValidationRule[];
86
+ }
87
+ export interface ValidationRule {
88
+ type: string;
89
+ value: any;
90
+ message?: string;
91
+ }
92
+ /**
93
+ * Context definition from the API
94
+ */
95
+ export interface ContextDefinition {
96
+ /** Context key (e.g., 'market', 'locale') */
97
+ key: string;
98
+ /** Display name */
99
+ name: string;
100
+ /** Description */
101
+ description?: string;
102
+ /** Entity model that provides values for this context */
103
+ entityModelKey: string;
104
+ /** Output keys for resolution context */
105
+ outputKeys: {
106
+ /** Key for the context value (e.g., 'market') */
107
+ valueKey: string;
108
+ /** Key for the context ID (e.g., 'marketId') */
109
+ idKey: string;
110
+ };
111
+ }
112
+ /**
113
+ * Context value (an instance of a context, e.g., a specific market)
114
+ */
115
+ export interface ContextValue {
116
+ /** Natural key / handle */
117
+ naturalKey: string;
118
+ /** Display name */
119
+ name?: string;
120
+ /** Whether this is the primary/default value */
121
+ isPrimary?: boolean;
122
+ /** Whether this value is enabled */
123
+ enabled?: boolean;
124
+ }
125
+ /**
126
+ * Fetch context definitions from the API
127
+ */
128
+ export declare function fetchContextDefinitions(apiUrl: string, accessToken: string, tenantId: string, projectId: string): Promise<ContextDefinition[]>;
129
+ /**
130
+ * Fetch values for a specific context type
131
+ */
132
+ export declare function fetchContextValues(apiUrl: string, accessToken: string, tenantId: string, projectId: string, contextModelKey: string): Promise<ContextValue[]>;
133
+ /**
134
+ * Fetch entity models from the API
135
+ * Uses the internal GraphQL endpoint with session-based authentication
136
+ */
137
+ export declare function fetchEntityModels(apiUrl: string, accessToken: string, tenantId: string, projectId: string, options?: {
138
+ includeInline?: boolean;
139
+ }): Promise<EntityModel[]>;
140
+ //# sourceMappingURL=fetch-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-schemas.d.ts","sourceRoot":"","sources":["../../src/fetcher/fetch-schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ import { GraphQLClient, gql } from 'graphql-request';
2
+ /**
3
+ * GraphQL query to fetch entity models
4
+ * Excludes system and infrastructure models
5
+ */
6
+ const GET_ENTITY_MODELS = gql `
7
+ query GetEntityModels {
8
+ entityModels {
9
+ items {
10
+ id
11
+ key
12
+ metadata {
13
+ name
14
+ description
15
+ pluralName
16
+ category
17
+ }
18
+ editorMode
19
+ schema
20
+ modes
21
+ isSystemModel
22
+ isInfrastructure
23
+ pages {
24
+ enabled
25
+ sitemap {
26
+ changefreq
27
+ priority
28
+ }
29
+ defaultTemplate {
30
+ modelKey
31
+ naturalKey
32
+ }
33
+ parentModels {
34
+ modelKey
35
+ cascadeDelete
36
+ }
37
+ }
38
+ hooks
39
+ metadataSchema
40
+ }
41
+ }
42
+ }
43
+ `;
44
+ /**
45
+ * Get the internal GraphQL endpoint URL from the base API URL
46
+ */
47
+ function getInternalGraphQLEndpoint(apiUrl) {
48
+ const base = apiUrl.replace(/\/$/, '').replace(/\/graphql$/, '');
49
+ return `${base}/graphql`;
50
+ }
51
+ /**
52
+ * Transform raw API response to EntityModel
53
+ * Flattens metadata fields to top level for convenience
54
+ * Extracts tier from schema (defaults to 2 if not specified)
55
+ * Extracts CMS config from extensions.cms (flattened structure)
56
+ */
57
+ function transformEntityModel(raw) {
58
+ return {
59
+ key: raw.key,
60
+ name: raw.metadata.name,
61
+ pluralName: raw.metadata.pluralName,
62
+ description: raw.metadata.description,
63
+ category: raw.metadata.category,
64
+ tier: raw.schema?.tier ?? 2, // Default to tier 2 (versioned, no variants)
65
+ editorMode: raw.editorMode,
66
+ fields: raw.schema?.fields || [],
67
+ modes: {
68
+ records: raw.modes?.records ?? false,
69
+ inline: raw.modes?.inline ?? false,
70
+ publicApi: raw.modes?.publicApi ?? false,
71
+ },
72
+ isInfrastructure: raw.isInfrastructure,
73
+ pages: raw.extensions?.cms, // Extract CMS config from extensions (flattened)
74
+ hooks: raw.hooks,
75
+ metadataSchema: raw.metadataSchema,
76
+ };
77
+ }
78
+ /**
79
+ * GraphQL query to fetch context definitions
80
+ * Uses the variants field to access published content
81
+ */
82
+ const GET_CONTEXTS = gql `
83
+ query GetContexts {
84
+ entityRecords(modelKey: "context", limit: 100) {
85
+ items {
86
+ id
87
+ naturalKey
88
+ variants(limit: 1) {
89
+ items {
90
+ publishedVersion {
91
+ content
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ `;
99
+ /**
100
+ * GraphQL query to fetch context values (instances of a context type)
101
+ * Uses the variants field to access published content
102
+ */
103
+ const GET_CONTEXT_VALUES = gql `
104
+ query GetContextValues($modelKey: String!) {
105
+ entityRecords(modelKey: $modelKey, limit: 1000) {
106
+ items {
107
+ naturalKey
108
+ metadata
109
+ variants(limit: 1) {
110
+ items {
111
+ publishedVersion {
112
+ content
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
119
+ `;
120
+ /**
121
+ * Fetch context definitions from the API
122
+ */
123
+ export async function fetchContextDefinitions(apiUrl, accessToken, tenantId, projectId) {
124
+ const client = new GraphQLClient(getInternalGraphQLEndpoint(apiUrl), {
125
+ headers: {
126
+ Authorization: `Bearer ${accessToken}`,
127
+ 'x-tenant-id': tenantId,
128
+ 'x-project-id': projectId,
129
+ },
130
+ });
131
+ try {
132
+ const response = await client.request(GET_CONTEXTS);
133
+ return response.entityRecords.items
134
+ .filter((item) => item.variants?.items?.[0]?.publishedVersion?.content)
135
+ .map((item) => {
136
+ // After filter, we know variants.items[0].publishedVersion.content exists
137
+ const content = item.variants.items[0].publishedVersion.content;
138
+ return {
139
+ key: item.naturalKey,
140
+ name: item.naturalKey, // Could be enhanced with a name field
141
+ entityModelKey: content.entityModelKey || '',
142
+ outputKeys: content.outputKeys || {
143
+ valueKey: item.naturalKey,
144
+ idKey: `${item.naturalKey}Id`,
145
+ },
146
+ };
147
+ });
148
+ }
149
+ catch (error) {
150
+ // Contexts may not exist yet - return empty array
151
+ console.warn('Could not fetch context definitions:', error);
152
+ return [];
153
+ }
154
+ }
155
+ /**
156
+ * Fetch values for a specific context type
157
+ */
158
+ export async function fetchContextValues(apiUrl, accessToken, tenantId, projectId, contextModelKey) {
159
+ const client = new GraphQLClient(getInternalGraphQLEndpoint(apiUrl), {
160
+ headers: {
161
+ Authorization: `Bearer ${accessToken}`,
162
+ 'x-tenant-id': tenantId,
163
+ 'x-project-id': projectId,
164
+ },
165
+ });
166
+ try {
167
+ const response = await client.request(GET_CONTEXT_VALUES, { modelKey: contextModelKey });
168
+ return response.entityRecords.items.map((item) => {
169
+ const content = item.variants?.items?.[0]?.publishedVersion?.content;
170
+ return {
171
+ naturalKey: item.naturalKey,
172
+ name: content?.name ||
173
+ item.metadata?.name ||
174
+ item.naturalKey,
175
+ isPrimary: content?.isPrimary,
176
+ enabled: content?.enabled,
177
+ };
178
+ });
179
+ }
180
+ catch (error) {
181
+ console.warn(`Could not fetch values for context ${contextModelKey}:`, error);
182
+ return [];
183
+ }
184
+ }
185
+ /**
186
+ * Fetch entity models from the API
187
+ * Uses the internal GraphQL endpoint with session-based authentication
188
+ */
189
+ export async function fetchEntityModels(apiUrl, accessToken, tenantId, projectId, options) {
190
+ const client = new GraphQLClient(getInternalGraphQLEndpoint(apiUrl), {
191
+ headers: {
192
+ Authorization: `Bearer ${accessToken}`,
193
+ 'x-tenant-id': tenantId,
194
+ 'x-project-id': projectId,
195
+ },
196
+ });
197
+ try {
198
+ const response = await client.request(GET_ENTITY_MODELS);
199
+ // Filter out infrastructure models only (keep system models like design-system, template)
200
+ const filteredItems = response.entityModels.items.filter((item) => !item.isInfrastructure);
201
+ const models = filteredItems.map(transformEntityModel);
202
+ // Filter based on options
203
+ if (options?.includeInline === false) {
204
+ return models.filter((m) => m.modes.records);
205
+ }
206
+ return models;
207
+ }
208
+ catch (error) {
209
+ if (error instanceof Error) {
210
+ // Parse GraphQL errors
211
+ if ('response' in error && error.response) {
212
+ const gqlError = error.response;
213
+ if (gqlError.errors && gqlError.errors.length > 0) {
214
+ const firstError = gqlError.errors[0];
215
+ throw new Error(`GraphQL Error: ${firstError.message}\n` +
216
+ `Code: ${firstError.extensions?.code || 'UNKNOWN'}`);
217
+ }
218
+ }
219
+ throw new Error(`Failed to fetch entity models: ${error.message}`);
220
+ }
221
+ throw new Error('Failed to fetch entity models: Unknown error');
222
+ }
223
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Form field schema for workflow inputs
3
+ */
4
+ export interface WorkflowFormField {
5
+ key: string;
6
+ type: string;
7
+ label?: string;
8
+ placeholder?: string;
9
+ required?: boolean;
10
+ defaultValue?: unknown;
11
+ helpText?: string;
12
+ options?: Array<{
13
+ label: string;
14
+ value: string | number;
15
+ }>;
16
+ config?: {
17
+ entityModel?: string;
18
+ displayField?: string;
19
+ minLength?: number;
20
+ maxLength?: number;
21
+ pattern?: string;
22
+ min?: number;
23
+ max?: number;
24
+ };
25
+ }
26
+ /**
27
+ * Workflow output definition
28
+ */
29
+ export interface WorkflowOutput {
30
+ key: string;
31
+ type: string;
32
+ description?: string;
33
+ }
34
+ /**
35
+ * Workflow definition from the API
36
+ */
37
+ export interface WorkflowDefinition {
38
+ key: string;
39
+ name: string;
40
+ description?: string;
41
+ /** Input configuration */
42
+ input: {
43
+ type: string;
44
+ schema?: WorkflowFormField[];
45
+ };
46
+ /** Workflow outputs - derived from output types */
47
+ outputs: WorkflowOutput[];
48
+ }
49
+ /**
50
+ * Fetch workflow definitions with API touchpoint from the API
51
+ */
52
+ export declare function fetchWorkflows(apiUrl: string, accessToken: string, tenantId: string, projectId: string): Promise<WorkflowDefinition[]>;
53
+ //# sourceMappingURL=fetch-workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-workflows.d.ts","sourceRoot":"","sources":["../../src/fetcher/fetch-workflows.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAC9B,CAAC;IACF,mDAAmD;IACnD,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AA2KD;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAqC/B"}