@eide/foir-cli 0.1.35 → 0.1.36

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 (227) hide show
  1. package/dist/cli.js +7467 -42
  2. package/dist/config/types.d.ts +7 -6
  3. package/dist/config/types.js +6 -14
  4. package/dist/generated-CPsQ9jfu.d.ts +195 -0
  5. package/dist/lib/extension-helpers.d.ts +10 -7
  6. package/dist/lib/extension-helpers.js +15 -85
  7. package/dist/lib/hook-helpers.d.ts +9 -6
  8. package/dist/lib/hook-helpers.js +12 -105
  9. package/dist/lib/seed-helpers.d.ts +10 -8
  10. package/dist/lib/seed-helpers.js +18 -124
  11. package/package.json +9 -8
  12. package/dist/auth/credentials.d.ts +0 -31
  13. package/dist/auth/credentials.d.ts.map +0 -1
  14. package/dist/auth/credentials.js +0 -139
  15. package/dist/cli.d.ts +0 -3
  16. package/dist/cli.d.ts.map +0 -1
  17. package/dist/codegen/fetch-customer-profile-schema.d.ts +0 -12
  18. package/dist/codegen/fetch-customer-profile-schema.d.ts.map +0 -1
  19. package/dist/codegen/fetch-customer-profile-schema.js +0 -21
  20. package/dist/codegen/fetch-models.d.ts +0 -58
  21. package/dist/codegen/fetch-models.d.ts.map +0 -1
  22. package/dist/codegen/fetch-models.js +0 -96
  23. package/dist/codegen/field-mapping.d.ts +0 -34
  24. package/dist/codegen/field-mapping.d.ts.map +0 -1
  25. package/dist/codegen/field-mapping.js +0 -250
  26. package/dist/codegen/generators/config.d.ts +0 -5
  27. package/dist/codegen/generators/config.d.ts.map +0 -1
  28. package/dist/codegen/generators/config.js +0 -82
  29. package/dist/codegen/generators/customer-profile-documents.d.ts +0 -5
  30. package/dist/codegen/generators/customer-profile-documents.d.ts.map +0 -1
  31. package/dist/codegen/generators/customer-profile-documents.js +0 -42
  32. package/dist/codegen/generators/customer-profile-hooks.d.ts +0 -5
  33. package/dist/codegen/generators/customer-profile-hooks.d.ts.map +0 -1
  34. package/dist/codegen/generators/customer-profile-hooks.js +0 -78
  35. package/dist/codegen/generators/customer-profile-loaders.d.ts +0 -5
  36. package/dist/codegen/generators/customer-profile-loaders.d.ts.map +0 -1
  37. package/dist/codegen/generators/customer-profile-loaders.js +0 -67
  38. package/dist/codegen/generators/customer-profile-operations.d.ts +0 -5
  39. package/dist/codegen/generators/customer-profile-operations.d.ts.map +0 -1
  40. package/dist/codegen/generators/customer-profile-operations.js +0 -126
  41. package/dist/codegen/generators/customer-profile-types.d.ts +0 -6
  42. package/dist/codegen/generators/customer-profile-types.d.ts.map +0 -1
  43. package/dist/codegen/generators/customer-profile-types.js +0 -45
  44. package/dist/codegen/generators/documents.d.ts +0 -12
  45. package/dist/codegen/generators/documents.d.ts.map +0 -1
  46. package/dist/codegen/generators/documents.js +0 -178
  47. package/dist/codegen/generators/field-types.d.ts +0 -5
  48. package/dist/codegen/generators/field-types.d.ts.map +0 -1
  49. package/dist/codegen/generators/field-types.js +0 -346
  50. package/dist/codegen/generators/model-index.d.ts +0 -6
  51. package/dist/codegen/generators/model-index.d.ts.map +0 -1
  52. package/dist/codegen/generators/model-index.js +0 -26
  53. package/dist/codegen/generators/model-types.d.ts +0 -12
  54. package/dist/codegen/generators/model-types.d.ts.map +0 -1
  55. package/dist/codegen/generators/model-types.js +0 -177
  56. package/dist/codegen/generators/public-schema-content.d.ts +0 -14
  57. package/dist/codegen/generators/public-schema-content.d.ts.map +0 -1
  58. package/dist/codegen/generators/public-schema-content.js +0 -22
  59. package/dist/codegen/generators/react-hooks-index.d.ts +0 -6
  60. package/dist/codegen/generators/react-hooks-index.d.ts.map +0 -1
  61. package/dist/codegen/generators/react-hooks-index.js +0 -20
  62. package/dist/codegen/generators/react-hooks.d.ts +0 -7
  63. package/dist/codegen/generators/react-hooks.d.ts.map +0 -1
  64. package/dist/codegen/generators/react-hooks.js +0 -139
  65. package/dist/codegen/generators/remix-loaders-index.d.ts +0 -6
  66. package/dist/codegen/generators/remix-loaders-index.d.ts.map +0 -1
  67. package/dist/codegen/generators/remix-loaders-index.js +0 -20
  68. package/dist/codegen/generators/remix-loaders.d.ts +0 -7
  69. package/dist/codegen/generators/remix-loaders.d.ts.map +0 -1
  70. package/dist/codegen/generators/remix-loaders.js +0 -107
  71. package/dist/codegen/generators/static-documents.d.ts +0 -14
  72. package/dist/codegen/generators/static-documents.d.ts.map +0 -1
  73. package/dist/codegen/generators/static-documents.js +0 -771
  74. package/dist/codegen/generators/swift-customer-profile.d.ts +0 -9
  75. package/dist/codegen/generators/swift-customer-profile.d.ts.map +0 -1
  76. package/dist/codegen/generators/swift-customer-profile.js +0 -152
  77. package/dist/codegen/generators/swift-field-types.d.ts +0 -5
  78. package/dist/codegen/generators/swift-field-types.d.ts.map +0 -1
  79. package/dist/codegen/generators/swift-field-types.js +0 -151
  80. package/dist/codegen/generators/swift-model-keys.d.ts +0 -6
  81. package/dist/codegen/generators/swift-model-keys.d.ts.map +0 -1
  82. package/dist/codegen/generators/swift-model-keys.js +0 -25
  83. package/dist/codegen/generators/swift-types.d.ts +0 -13
  84. package/dist/codegen/generators/swift-types.d.ts.map +0 -1
  85. package/dist/codegen/generators/swift-types.js +0 -188
  86. package/dist/codegen/generators/typed-operations-common.d.ts +0 -6
  87. package/dist/codegen/generators/typed-operations-common.d.ts.map +0 -1
  88. package/dist/codegen/generators/typed-operations-common.js +0 -84
  89. package/dist/codegen/generators/typed-operations-index.d.ts +0 -6
  90. package/dist/codegen/generators/typed-operations-index.d.ts.map +0 -1
  91. package/dist/codegen/generators/typed-operations-index.js +0 -22
  92. package/dist/codegen/generators/typed-operations.d.ts +0 -11
  93. package/dist/codegen/generators/typed-operations.d.ts.map +0 -1
  94. package/dist/codegen/generators/typed-operations.js +0 -263
  95. package/dist/codegen/swift-field-mapping.d.ts +0 -30
  96. package/dist/codegen/swift-field-mapping.d.ts.map +0 -1
  97. package/dist/codegen/swift-field-mapping.js +0 -150
  98. package/dist/codegen/write-files.d.ts +0 -15
  99. package/dist/codegen/write-files.d.ts.map +0 -1
  100. package/dist/codegen/write-files.js +0 -36
  101. package/dist/commands/api-keys.d.ts +0 -4
  102. package/dist/commands/api-keys.d.ts.map +0 -1
  103. package/dist/commands/api-keys.js +0 -129
  104. package/dist/commands/auth-config.d.ts +0 -4
  105. package/dist/commands/auth-config.d.ts.map +0 -1
  106. package/dist/commands/auth-config.js +0 -38
  107. package/dist/commands/auth-providers.d.ts +0 -4
  108. package/dist/commands/auth-providers.d.ts.map +0 -1
  109. package/dist/commands/auth-providers.js +0 -207
  110. package/dist/commands/context.d.ts +0 -4
  111. package/dist/commands/context.d.ts.map +0 -1
  112. package/dist/commands/context.js +0 -91
  113. package/dist/commands/create-extension.d.ts +0 -4
  114. package/dist/commands/create-extension.d.ts.map +0 -1
  115. package/dist/commands/create-extension.js +0 -60
  116. package/dist/commands/customer-profiles.d.ts +0 -4
  117. package/dist/commands/customer-profiles.d.ts.map +0 -1
  118. package/dist/commands/customer-profiles.js +0 -99
  119. package/dist/commands/customers.d.ts +0 -4
  120. package/dist/commands/customers.d.ts.map +0 -1
  121. package/dist/commands/customers.js +0 -126
  122. package/dist/commands/embeddings.d.ts +0 -4
  123. package/dist/commands/embeddings.d.ts.map +0 -1
  124. package/dist/commands/embeddings.js +0 -145
  125. package/dist/commands/experiments.d.ts +0 -4
  126. package/dist/commands/experiments.d.ts.map +0 -1
  127. package/dist/commands/experiments.js +0 -196
  128. package/dist/commands/extensions.d.ts +0 -4
  129. package/dist/commands/extensions.d.ts.map +0 -1
  130. package/dist/commands/extensions.js +0 -210
  131. package/dist/commands/files.d.ts +0 -4
  132. package/dist/commands/files.d.ts.map +0 -1
  133. package/dist/commands/files.js +0 -143
  134. package/dist/commands/hooks.d.ts +0 -4
  135. package/dist/commands/hooks.d.ts.map +0 -1
  136. package/dist/commands/hooks.js +0 -228
  137. package/dist/commands/locales.d.ts +0 -4
  138. package/dist/commands/locales.d.ts.map +0 -1
  139. package/dist/commands/locales.js +0 -140
  140. package/dist/commands/login.d.ts +0 -4
  141. package/dist/commands/login.d.ts.map +0 -1
  142. package/dist/commands/login.js +0 -124
  143. package/dist/commands/logout.d.ts +0 -4
  144. package/dist/commands/logout.d.ts.map +0 -1
  145. package/dist/commands/logout.js +0 -16
  146. package/dist/commands/media.d.ts +0 -4
  147. package/dist/commands/media.d.ts.map +0 -1
  148. package/dist/commands/media.js +0 -44
  149. package/dist/commands/models.d.ts +0 -4
  150. package/dist/commands/models.d.ts.map +0 -1
  151. package/dist/commands/models.js +0 -153
  152. package/dist/commands/notes.d.ts +0 -4
  153. package/dist/commands/notes.d.ts.map +0 -1
  154. package/dist/commands/notes.js +0 -132
  155. package/dist/commands/notifications.d.ts +0 -4
  156. package/dist/commands/notifications.d.ts.map +0 -1
  157. package/dist/commands/notifications.js +0 -73
  158. package/dist/commands/operations.d.ts +0 -4
  159. package/dist/commands/operations.d.ts.map +0 -1
  160. package/dist/commands/operations.js +0 -341
  161. package/dist/commands/playground.d.ts +0 -4
  162. package/dist/commands/playground.d.ts.map +0 -1
  163. package/dist/commands/playground.js +0 -270
  164. package/dist/commands/pull.d.ts +0 -4
  165. package/dist/commands/pull.d.ts.map +0 -1
  166. package/dist/commands/pull.js +0 -300
  167. package/dist/commands/records.d.ts +0 -4
  168. package/dist/commands/records.d.ts.map +0 -1
  169. package/dist/commands/records.js +0 -314
  170. package/dist/commands/register-commands.d.ts +0 -7
  171. package/dist/commands/register-commands.d.ts.map +0 -1
  172. package/dist/commands/register-commands.js +0 -259
  173. package/dist/commands/schedules.d.ts +0 -4
  174. package/dist/commands/schedules.d.ts.map +0 -1
  175. package/dist/commands/schedules.js +0 -155
  176. package/dist/commands/search.d.ts +0 -4
  177. package/dist/commands/search.d.ts.map +0 -1
  178. package/dist/commands/search.js +0 -60
  179. package/dist/commands/segments.d.ts +0 -4
  180. package/dist/commands/segments.d.ts.map +0 -1
  181. package/dist/commands/segments.js +0 -155
  182. package/dist/commands/select-project.d.ts +0 -4
  183. package/dist/commands/select-project.d.ts.map +0 -1
  184. package/dist/commands/select-project.js +0 -144
  185. package/dist/commands/settings.d.ts +0 -4
  186. package/dist/commands/settings.d.ts.map +0 -1
  187. package/dist/commands/settings.js +0 -115
  188. package/dist/commands/variant-catalog.d.ts +0 -4
  189. package/dist/commands/variant-catalog.d.ts.map +0 -1
  190. package/dist/commands/variant-catalog.js +0 -118
  191. package/dist/commands/whoami.d.ts +0 -4
  192. package/dist/commands/whoami.d.ts.map +0 -1
  193. package/dist/commands/whoami.js +0 -51
  194. package/dist/config/pull-config.d.ts +0 -33
  195. package/dist/config/pull-config.d.ts.map +0 -1
  196. package/dist/config/pull-config.js +0 -119
  197. package/dist/config/types.d.ts.map +0 -1
  198. package/dist/graphql/generated.d.ts +0 -6074
  199. package/dist/graphql/generated.d.ts.map +0 -1
  200. package/dist/graphql/generated.js +0 -355
  201. package/dist/lib/client.d.ts +0 -18
  202. package/dist/lib/client.d.ts.map +0 -1
  203. package/dist/lib/client.js +0 -64
  204. package/dist/lib/config-loader.d.ts +0 -28
  205. package/dist/lib/config-loader.d.ts.map +0 -1
  206. package/dist/lib/config-loader.js +0 -49
  207. package/dist/lib/config.d.ts +0 -12
  208. package/dist/lib/config.d.ts.map +0 -1
  209. package/dist/lib/config.js +0 -8
  210. package/dist/lib/errors.d.ts +0 -6
  211. package/dist/lib/errors.d.ts.map +0 -1
  212. package/dist/lib/errors.js +0 -76
  213. package/dist/lib/extension-helpers.d.ts.map +0 -1
  214. package/dist/lib/hook-helpers.d.ts.map +0 -1
  215. package/dist/lib/input.d.ts +0 -38
  216. package/dist/lib/input.d.ts.map +0 -1
  217. package/dist/lib/input.js +0 -108
  218. package/dist/lib/output.d.ts +0 -31
  219. package/dist/lib/output.d.ts.map +0 -1
  220. package/dist/lib/output.js +0 -107
  221. package/dist/lib/seed-helpers.d.ts.map +0 -1
  222. package/dist/scaffold/package-manager.d.ts +0 -12
  223. package/dist/scaffold/package-manager.d.ts.map +0 -1
  224. package/dist/scaffold/package-manager.js +0 -51
  225. package/dist/scaffold/scaffold.d.ts +0 -4
  226. package/dist/scaffold/scaffold.d.ts.map +0 -1
  227. package/dist/scaffold/scaffold.js +0 -462
@@ -1,346 +0,0 @@
1
- /**
2
- * Generates the static field-types.ts file with value types, filter types, and field defs.
3
- */
4
- export function generateFieldTypesFile() {
5
- return `/**
6
- * Field Types and Definitions
7
- *
8
- * Value types, filter types, and field definition types.
9
- *
10
- * @generated by foir — DO NOT EDIT MANUALLY
11
- */
12
-
13
- // =============================================================================
14
- // JSON-SAFE BASE TYPE
15
- // =============================================================================
16
-
17
- /** Recursive JSON-serializable value type. Safe for TanStack Router, Remix, RSC, and other serialization boundaries. */
18
- export type JsonValue = string | number | boolean | null | JsonValue[] | { [key: string]: JsonValue };
19
-
20
- // =============================================================================
21
- // VALUE TYPES
22
- // =============================================================================
23
-
24
- /** Rich text content (Lexical JSON format) */
25
- export type RichtextValue = JsonValue;
26
-
27
- /** Currency value with amount and ISO 4217 code */
28
- export interface CurrencyValue {
29
- amount: number;
30
- currency: string;
31
- }
32
-
33
- /** Image reference with metadata */
34
- export interface ImageValue {
35
- id: string;
36
- url: string;
37
- alt?: string;
38
- width?: number;
39
- height?: number;
40
- }
41
-
42
- /** Video reference with metadata */
43
- export interface VideoValue {
44
- id: string;
45
- url: string;
46
- thumbnail?: string;
47
- duration?: number;
48
- }
49
-
50
- /** File reference with metadata */
51
- export interface FileValue {
52
- id: string;
53
- url: string;
54
- name: string;
55
- size: number;
56
- mimeType: string;
57
- }
58
-
59
- /** Link value (internal reference or external URL) */
60
- export interface LinkValue {
61
- type: 'entity' | 'url';
62
- entity?: LinkRecordReference;
63
- url?: string;
64
- target?: '_self' | '_blank';
65
- }
66
-
67
- /** Record reference for internal links */
68
- export interface LinkRecordReference {
69
- modelKey: string;
70
- naturalKey: string;
71
- }
72
-
73
- /** Record reference value (generic TPreview for typed preview data when reference target is known) */
74
- export interface ReferenceValue<TPreview = Record<string, JsonValue>> {
75
- _type: 'reference';
76
- _schema: string;
77
- naturalKey: string;
78
- _preview?: TPreview;
79
- }
80
-
81
- /** Composite/inline value */
82
- export interface CompositeValue {
83
- _type: 'composite';
84
- _schema: string;
85
- fields: Record<string, JsonValue>;
86
- }
87
-
88
- /** A single item in a flexible field array */
89
- export interface FlexibleFieldItem {
90
- _id: string;
91
- _key: string;
92
- _type: string;
93
- _label: string;
94
- _required?: boolean;
95
- _helpText?: string;
96
- _config?: Record<string, JsonValue>;
97
- value: JsonValue;
98
- }
99
-
100
- // =============================================================================
101
- // FILTER TYPES
102
- // =============================================================================
103
-
104
- export interface TextFilter {
105
- eq?: string;
106
- ne?: string;
107
- contains?: string;
108
- startsWith?: string;
109
- endsWith?: string;
110
- in?: string[];
111
- notIn?: string[];
112
- isNull?: boolean;
113
- }
114
-
115
- export interface NumberFilter {
116
- eq?: number;
117
- ne?: number;
118
- gt?: number;
119
- gte?: number;
120
- lt?: number;
121
- lte?: number;
122
- in?: number[];
123
- notIn?: number[];
124
- isNull?: boolean;
125
- }
126
-
127
- export interface BooleanFilter {
128
- eq?: boolean;
129
- ne?: boolean;
130
- isNull?: boolean;
131
- }
132
-
133
- export interface DateFilter {
134
- eq?: string;
135
- ne?: string;
136
- gt?: string;
137
- gte?: string;
138
- lt?: string;
139
- lte?: string;
140
- isNull?: boolean;
141
- }
142
-
143
- export interface SelectFilter<T extends string = string> {
144
- eq?: T;
145
- ne?: T;
146
- in?: T[];
147
- notIn?: T[];
148
- isNull?: boolean;
149
- }
150
-
151
- export interface MultiselectFilter<T extends string = string> {
152
- contains?: T;
153
- containsAny?: T[];
154
- containsAll?: T[];
155
- isNull?: boolean;
156
- }
157
-
158
- export interface ReferenceFilter {
159
- eq?: string;
160
- ne?: string;
161
- in?: string[];
162
- notIn?: string[];
163
- isNull?: boolean;
164
- }
165
-
166
- export interface FilterInput {
167
- field: string;
168
- operator: string;
169
- value: JsonValue;
170
- }
171
-
172
- export interface SortInput {
173
- field: string;
174
- direction: 'ASC' | 'DESC';
175
- }
176
-
177
- // =============================================================================
178
- // RESOLVE TYPES
179
- // =============================================================================
180
-
181
- /** Variant context for record resolution */
182
- export interface VariantContext {
183
- locale?: string;
184
- device?: string;
185
- region?: string;
186
- contexts?: Record<string, JsonValue>;
187
- }
188
-
189
- /** Reference resolution options */
190
- export interface ReferenceResolutionOptions {
191
- maxDepth?: number;
192
- resolveMedia?: boolean;
193
- resolveReferences?: boolean;
194
- }
195
-
196
- /** Resolved record metadata */
197
- export interface ResolvedRecord {
198
- id: string;
199
- modelKey: string;
200
- naturalKey: string | null;
201
- metadata?: Record<string, JsonValue>;
202
- }
203
-
204
- /** Resolved variant info */
205
- export interface ResolvedVariant {
206
- id: string;
207
- variantKey: string;
208
- }
209
-
210
- /** Resolved field with value */
211
- export interface ResolvedField {
212
- key: string;
213
- type: string;
214
- label?: string;
215
- required?: boolean;
216
- value: JsonValue;
217
- }
218
-
219
- /** Resolved content */
220
- export interface ResolvedContent {
221
- fields: ResolvedField[];
222
- }
223
-
224
- /** Resolution context output */
225
- export interface ResolutionContext {
226
- locale: string;
227
- contexts: Record<string, JsonValue>;
228
- }
229
-
230
- /** Base resolved record content */
231
- export interface ResolvedRecordContentBase {
232
- record: ResolvedRecord;
233
- variant: ResolvedVariant;
234
- content: ResolvedContent;
235
- resolvedWith: ResolutionContext;
236
- }
237
-
238
- // =============================================================================
239
- // FIELD DEFINITION TYPES
240
- // =============================================================================
241
-
242
- export interface BaseFieldDef {
243
- key: string;
244
- label: string;
245
- required?: boolean;
246
- helpText?: string;
247
- defaultValue?: JsonValue;
248
- }
249
-
250
- export interface TextFieldDef extends BaseFieldDef {
251
- type: 'text';
252
- maxLength?: number;
253
- minLength?: number;
254
- pattern?: string;
255
- }
256
-
257
- export interface NumberFieldDef extends BaseFieldDef {
258
- type: 'number';
259
- min?: number;
260
- max?: number;
261
- step?: number;
262
- }
263
-
264
- export interface BooleanFieldDef extends BaseFieldDef {
265
- type: 'boolean';
266
- }
267
-
268
- export interface DateFieldDef extends BaseFieldDef {
269
- type: 'date';
270
- }
271
-
272
- export interface RichtextFieldDef extends BaseFieldDef {
273
- type: 'richtext';
274
- }
275
-
276
- export interface ImageFieldDef extends BaseFieldDef {
277
- type: 'image';
278
- allowedTypes?: string[];
279
- maxSize?: number;
280
- }
281
-
282
- export interface VideoFieldDef extends BaseFieldDef {
283
- type: 'video';
284
- allowedTypes?: string[];
285
- maxSize?: number;
286
- }
287
-
288
- export interface FileFieldDef extends BaseFieldDef {
289
- type: 'file';
290
- allowedTypes?: string[];
291
- maxSize?: number;
292
- }
293
-
294
- export interface SelectFieldDef extends BaseFieldDef {
295
- type: 'select';
296
- options: Array<{ label: string; value: string }>;
297
- }
298
-
299
- export interface MultiselectFieldDef extends BaseFieldDef {
300
- type: 'multiselect';
301
- options: Array<{ label: string; value: string }>;
302
- }
303
-
304
- export interface LinkFieldDef extends BaseFieldDef {
305
- type: 'link';
306
- }
307
-
308
- export interface ReferenceFieldDef extends BaseFieldDef {
309
- type: 'reference';
310
- referenceTypes?: string[];
311
- multiple?: boolean;
312
- }
313
-
314
- export interface ListFieldDef extends BaseFieldDef {
315
- type: 'list';
316
- itemType?: string;
317
- minItems?: number;
318
- maxItems?: number;
319
- }
320
-
321
- export interface JsonFieldDef extends BaseFieldDef {
322
- type: 'json';
323
- }
324
-
325
- export interface FlexibleFieldDef extends BaseFieldDef {
326
- type: 'flexible';
327
- }
328
-
329
- export type FieldDef =
330
- | TextFieldDef
331
- | NumberFieldDef
332
- | BooleanFieldDef
333
- | DateFieldDef
334
- | RichtextFieldDef
335
- | ImageFieldDef
336
- | VideoFieldDef
337
- | FileFieldDef
338
- | SelectFieldDef
339
- | MultiselectFieldDef
340
- | LinkFieldDef
341
- | ReferenceFieldDef
342
- | ListFieldDef
343
- | JsonFieldDef
344
- | FlexibleFieldDef;
345
- `;
346
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Generates the models/index.ts re-export file.
3
- */
4
- import type { CodegenModel } from '../fetch-models.js';
5
- export declare function generateModelIndex(models: CodegenModel[]): string;
6
- //# sourceMappingURL=model-index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-index.d.ts","sourceRoot":"","sources":["../../../src/codegen/generators/model-index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOvD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAoBjE"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Generates the models/index.ts re-export file.
3
- */
4
- import { toPascalCase, toCamelCase } from '../field-mapping.js';
5
- function isInlineOnlyModel(model) {
6
- return model.config.inline && !model.config.records;
7
- }
8
- export function generateModelIndex(models) {
9
- let code = `/**
10
- * Model Types and Configs — Generated re-exports
11
- *
12
- * @generated by foir — DO NOT EDIT MANUALLY
13
- */\n\n`;
14
- for (const model of models) {
15
- const typeName = toPascalCase(model.key);
16
- const configName = toCamelCase(model.key) + 'Config';
17
- if (isInlineOnlyModel(model)) {
18
- code += `export type { ${typeName} } from './${model.key}.js';\n`;
19
- }
20
- else {
21
- code += `export { ${configName} } from './${model.key}.js';\n`;
22
- code += `export type { ${typeName}Data } from './${model.key}.js';\n`;
23
- }
24
- }
25
- return code;
26
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Generates per-model TypeScript files with config object + data interface.
3
- */
4
- import type { CodegenModel } from '../fetch-models.js';
5
- /**
6
- * Generate TypeScript code for a single model.
7
- *
8
- * - Inline-only models: data interface only (no config)
9
- * - Models with records: config object + data interface
10
- */
11
- export declare function generateModelTypes(model: CodegenModel, allModels: CodegenModel[]): string;
12
- //# sourceMappingURL=model-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-types.d.ts","sourceRoot":"","sources":["../../../src/codegen/generators/model-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAiBvD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,YAAY,EAAE,GACxB,MAAM,CA2BR"}
@@ -1,177 +0,0 @@
1
- /**
2
- * Generates per-model TypeScript files with config object + data interface.
3
- */
4
- import { getFieldType, getInlineSchemaReferences, getReferenceTypeModelRefs, generateFieldDef, sanitizeFieldName, toPascalCase, toCamelCase, FIELD_TYPE_MAPPING, } from '../field-mapping.js';
5
- function isInlineOnlyModel(model) {
6
- return model.config.inline && !model.config.records;
7
- }
8
- /**
9
- * Generate TypeScript code for a single model.
10
- *
11
- * - Inline-only models: data interface only (no config)
12
- * - Models with records: config object + data interface
13
- */
14
- export function generateModelTypes(model, allModels) {
15
- const typeName = toPascalCase(model.key);
16
- const configName = toCamelCase(model.key) + 'Config';
17
- const fields = model.fields ?? [];
18
- const fieldTypeImports = getFieldTypeImportsForFields(fields);
19
- const inlineSchemaRefs = getInlineSchemaReferences(fields);
20
- const referenceModelRefs = getReferenceTypeModelRefs(fields);
21
- let code = buildImportStatements(model, fieldTypeImports, inlineSchemaRefs, referenceModelRefs, allModels);
22
- if (isInlineOnlyModel(model)) {
23
- code += generateDataInterface(model, fields, typeName, allModels);
24
- return code;
25
- }
26
- code += generateConfigObject(model, fields, configName);
27
- code += '\n';
28
- code += generateDataInterface(model, fields, typeName + 'Data', allModels);
29
- return code;
30
- }
31
- function buildImportStatements(model, fieldTypeImports, inlineSchemaRefs, referenceModelRefs, allModels) {
32
- const imports = [];
33
- if (!isInlineOnlyModel(model)) {
34
- imports.push("import type { ModelConfig } from '../config.js';");
35
- }
36
- if (fieldTypeImports.size > 0) {
37
- const types = Array.from(fieldTypeImports).sort().join(', ');
38
- imports.push(`import type { ${types} } from '../field-types.js';`);
39
- }
40
- // Collect all model refs (inline schemas + reference type targets) to avoid duplicate imports
41
- const allModelRefKeys = new Set([
42
- ...inlineSchemaRefs,
43
- ...referenceModelRefs,
44
- ]);
45
- for (const refKey of allModelRefKeys) {
46
- if (refKey === model.key)
47
- continue; // skip self-reference
48
- const refModel = allModels.find((m) => m.key === refKey);
49
- if (refModel) {
50
- const refTypeName = isInlineOnlyModel(refModel)
51
- ? toPascalCase(refKey)
52
- : toPascalCase(refKey) + 'Data';
53
- imports.push(`import type { ${refTypeName} } from './${refKey}.js';`);
54
- }
55
- }
56
- return imports.length > 0 ? imports.join('\n') + '\n\n' : '';
57
- }
58
- function generateConfigObject(model, fields, configName) {
59
- const lines = [];
60
- lines.push('/**');
61
- lines.push(` * ${model.name} Configuration`);
62
- if (model.description)
63
- lines.push(` * ${model.description}`);
64
- lines.push(` *`);
65
- lines.push(` * @generated from model '${model.key}'`);
66
- lines.push(' */');
67
- const escapedName = (model.name ?? model.key).replace(/'/g, "\\'");
68
- lines.push(`export const ${configName} = {`);
69
- lines.push(` key: '${model.key}',`);
70
- lines.push(` name: '${escapedName}',`);
71
- if (model.description) {
72
- lines.push(` description: '${model.description.replace(/'/g, "\\'")}',`);
73
- }
74
- lines.push('');
75
- lines.push(' // Capability flags');
76
- lines.push(` records: ${model.config.records},`);
77
- lines.push(` inline: ${model.config.inline},`);
78
- lines.push(` publicApi: ${model.config.publicApi},`);
79
- lines.push(` versioning: ${model.config.versioning},`);
80
- lines.push(` publishing: ${model.config.publishing},`);
81
- lines.push(` variants: ${model.config.variants},`);
82
- lines.push(` customerScoped: ${model.config.customerScoped},`);
83
- if (model.config.embeddings?.enabled) {
84
- lines.push('');
85
- lines.push(' // Embeddings');
86
- lines.push(` embeddings: ${JSON.stringify(model.config.embeddings, null, 4).replace(/\n/g, '\n ')},`);
87
- }
88
- if (model.hooks && Object.keys(model.hooks).length > 0) {
89
- lines.push('');
90
- lines.push(' // Lifecycle hooks');
91
- lines.push(` hooks: ${JSON.stringify(model.hooks, null, 4).replace(/\n/g, '\n ')},`);
92
- }
93
- else {
94
- lines.push('');
95
- lines.push(' hooks: {},');
96
- }
97
- lines.push('');
98
- lines.push(' // Field definitions');
99
- if (fields.length === 0) {
100
- lines.push(' fieldDefs: [],');
101
- }
102
- else {
103
- lines.push(' fieldDefs: [');
104
- for (const field of fields) {
105
- lines.push(` ${generateFieldDef(field)},`);
106
- }
107
- lines.push(' ],');
108
- }
109
- lines.push('} as const satisfies ModelConfig;');
110
- return lines.join('\n') + '\n';
111
- }
112
- function generateDataInterface(model, fields, interfaceName, allModels) {
113
- const lines = [];
114
- lines.push('/**');
115
- lines.push(` * ${model.name} Data`);
116
- lines.push(` * Field values only — no system fields`);
117
- lines.push(` *`);
118
- lines.push(` * @generated from model '${model.key}'`);
119
- lines.push(' */');
120
- lines.push(`export interface ${interfaceName} {`);
121
- for (const field of fields) {
122
- const fieldName = sanitizeFieldName(field.key);
123
- let fieldType = getFieldType(field, 'output');
124
- // Adjust type name for inline schema refs to models with records mode
125
- const refModel = allModels.find((m) => m.key === field.type);
126
- if (refModel && !isInlineOnlyModel(refModel)) {
127
- fieldType = toPascalCase(field.type) + 'Data';
128
- }
129
- // Handle list itemType refs
130
- if (field.type === 'list' && field.options?.itemType) {
131
- const itemRefModel = allModels.find((m) => m.key === field.options.itemType);
132
- if (itemRefModel && !isInlineOnlyModel(itemRefModel)) {
133
- fieldType = toPascalCase(field.options.itemType) + 'Data[]';
134
- }
135
- }
136
- // Parameterize ReferenceValue with known reference target types for typed _preview
137
- if (field.type === 'reference' && field.options?.referenceTypes) {
138
- const refTypes = field.options.referenceTypes;
139
- const resolvedPreviewTypes = [];
140
- for (const refKey of refTypes) {
141
- const targetModel = allModels.find((m) => m.key === refKey);
142
- if (targetModel) {
143
- const targetTypeName = isInlineOnlyModel(targetModel)
144
- ? toPascalCase(refKey)
145
- : toPascalCase(refKey) + 'Data';
146
- resolvedPreviewTypes.push(`Partial<${targetTypeName}>`);
147
- }
148
- }
149
- // Only parameterize if all targets resolved — otherwise keep default generic
150
- if (resolvedPreviewTypes.length === refTypes.length &&
151
- resolvedPreviewTypes.length > 0) {
152
- fieldType = `ReferenceValue<${resolvedPreviewTypes.join(' | ')}>`;
153
- }
154
- }
155
- const optional = field.required ? '' : '?';
156
- const comment = field.helpText ? ` /** ${field.helpText} */\n` : '';
157
- lines.push(comment + ` ${fieldName}${optional}: ${fieldType};`);
158
- }
159
- lines.push('}');
160
- return lines.join('\n') + '\n';
161
- }
162
- function getFieldTypeImportsForFields(fields) {
163
- const imports = new Set();
164
- for (const field of fields) {
165
- const mapping = FIELD_TYPE_MAPPING[field.type];
166
- if (mapping?.needsImport === 'field-types') {
167
- imports.add(mapping.outputType.replace(/\[\]$/, ''));
168
- }
169
- if (field.type === 'list' && field.options?.itemType) {
170
- const itemMapping = FIELD_TYPE_MAPPING[field.options.itemType];
171
- if (itemMapping?.needsImport === 'field-types') {
172
- imports.add(itemMapping.outputType.replace(/\[\]$/, ''));
173
- }
174
- }
175
- }
176
- return imports;
177
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Fetches the public schema from the platform and writes it for consumer codegen.
3
- *
4
- * Instead of bundling a static copy, we fetch it at `foir pull` time
5
- * using the introspection-like projectSchemas query. This ensures
6
- * the schema always matches the connected platform version.
7
- */
8
- import type { GraphQLClient } from 'graphql-request';
9
- /**
10
- * Fetch the public schema SDL from the platform.
11
- * Falls back to empty string if not available (non-critical).
12
- */
13
- export declare function fetchPublicSchema(client: GraphQLClient): Promise<string | null>;
14
- //# sourceMappingURL=public-schema-content.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"public-schema-content.d.ts","sourceRoot":"","sources":["../../../src/codegen/generators/public-schema-content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Fetches the public schema from the platform and writes it for consumer codegen.
3
- *
4
- * Instead of bundling a static copy, we fetch it at `foir pull` time
5
- * using the introspection-like projectSchemas query. This ensures
6
- * the schema always matches the connected platform version.
7
- */
8
- /**
9
- * Fetch the public schema SDL from the platform.
10
- * Falls back to empty string if not available (non-critical).
11
- */
12
- export async function fetchPublicSchema(client) {
13
- try {
14
- // The public API exposes an SDL endpoint; if not available, skip.
15
- const res = await client.request(`query { _service { sdl } }`);
16
- return res._service?.sdl ?? null;
17
- }
18
- catch {
19
- // Schema fetch is best-effort — not all deployments expose _service
20
- return null;
21
- }
22
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Generates the hooks/index.ts barrel re-export file.
3
- */
4
- import type { CodegenModel } from '../fetch-models.js';
5
- export declare function generateReactHooksIndex(models: CodegenModel[], hasCustomerProfile: boolean): string;
6
- //# sourceMappingURL=react-hooks-index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-hooks-index.d.ts","sourceRoot":"","sources":["../../../src/codegen/generators/react-hooks-index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EAAE,EACtB,kBAAkB,EAAE,OAAO,GAC1B,MAAM,CAoBR"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Generates the hooks/index.ts barrel re-export file.
3
- */
4
- export function generateReactHooksIndex(models, hasCustomerProfile) {
5
- const lines = [];
6
- lines.push(`/**
7
- * React Apollo hooks for all models.
8
- *
9
- * @generated by foir — DO NOT EDIT MANUALLY
10
- */
11
- `);
12
- for (const model of models) {
13
- lines.push(`export * from './${model.key}.js';`);
14
- }
15
- if (hasCustomerProfile) {
16
- lines.push(`export * from './customer-profile.js';`);
17
- }
18
- lines.push('');
19
- return lines.join('\n');
20
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Generates per-model React Apollo hooks.
3
- * Each hook file imports from ../operations/{key}.js and wraps useQuery/useMutation.
4
- */
5
- import type { CodegenModel } from '../fetch-models.js';
6
- export declare function generateReactHooks(model: CodegenModel): string;
7
- //# sourceMappingURL=react-hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-hooks.d.ts","sourceRoot":"","sources":["../../../src/codegen/generators/react-hooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAiJ9D"}