@eide/foir-cli 0.1.16 → 0.1.17

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 (47) hide show
  1. package/dist/codegen/field-mapping.d.ts +1 -0
  2. package/dist/codegen/field-mapping.d.ts.map +1 -1
  3. package/dist/codegen/field-mapping.js +8 -0
  4. package/dist/codegen/generators/customer-profile-hooks.d.ts +5 -0
  5. package/dist/codegen/generators/customer-profile-hooks.d.ts.map +1 -0
  6. package/dist/codegen/generators/customer-profile-hooks.js +78 -0
  7. package/dist/codegen/generators/customer-profile-loaders.d.ts +5 -0
  8. package/dist/codegen/generators/customer-profile-loaders.d.ts.map +1 -0
  9. package/dist/codegen/generators/customer-profile-loaders.js +67 -0
  10. package/dist/codegen/generators/customer-profile-operations.d.ts +5 -0
  11. package/dist/codegen/generators/customer-profile-operations.d.ts.map +1 -0
  12. package/dist/codegen/generators/customer-profile-operations.js +126 -0
  13. package/dist/codegen/generators/public-schema-content.d.ts +14 -0
  14. package/dist/codegen/generators/public-schema-content.d.ts.map +1 -0
  15. package/dist/codegen/generators/public-schema-content.js +22 -0
  16. package/dist/codegen/generators/react-hooks-index.d.ts +6 -0
  17. package/dist/codegen/generators/react-hooks-index.d.ts.map +1 -0
  18. package/dist/codegen/generators/react-hooks-index.js +20 -0
  19. package/dist/codegen/generators/react-hooks.d.ts +7 -0
  20. package/dist/codegen/generators/react-hooks.d.ts.map +1 -0
  21. package/dist/codegen/generators/react-hooks.js +139 -0
  22. package/dist/codegen/generators/remix-loaders-index.d.ts +6 -0
  23. package/dist/codegen/generators/remix-loaders-index.d.ts.map +1 -0
  24. package/dist/codegen/generators/remix-loaders-index.js +20 -0
  25. package/dist/codegen/generators/remix-loaders.d.ts +7 -0
  26. package/dist/codegen/generators/remix-loaders.d.ts.map +1 -0
  27. package/dist/codegen/generators/remix-loaders.js +107 -0
  28. package/dist/codegen/generators/static-documents.d.ts +14 -0
  29. package/dist/codegen/generators/static-documents.d.ts.map +1 -0
  30. package/dist/codegen/generators/static-documents.js +728 -0
  31. package/dist/codegen/generators/typed-operations-common.d.ts +6 -0
  32. package/dist/codegen/generators/typed-operations-common.d.ts.map +1 -0
  33. package/dist/codegen/generators/typed-operations-common.js +74 -0
  34. package/dist/codegen/generators/typed-operations-index.d.ts +6 -0
  35. package/dist/codegen/generators/typed-operations-index.d.ts.map +1 -0
  36. package/dist/codegen/generators/typed-operations-index.js +22 -0
  37. package/dist/codegen/generators/typed-operations.d.ts +11 -0
  38. package/dist/codegen/generators/typed-operations.d.ts.map +1 -0
  39. package/dist/codegen/generators/typed-operations.js +251 -0
  40. package/dist/commands/pull.d.ts.map +1 -1
  41. package/dist/commands/pull.js +135 -25
  42. package/dist/config/pull-config.d.ts +6 -0
  43. package/dist/config/pull-config.d.ts.map +1 -1
  44. package/dist/config/pull-config.js +50 -1
  45. package/dist/config/types.d.ts +23 -0
  46. package/dist/config/types.d.ts.map +1 -1
  47. package/package.json +1 -1
@@ -14,6 +14,18 @@ const CONFIG_FILE_NAMES = [
14
14
  ];
15
15
  const DEFAULT_TYPES_DIR = './src/generated/types';
16
16
  const DEFAULT_DOCS_DIR = './src/generated/documents';
17
+ const ALL_DOMAINS = {
18
+ auth: true,
19
+ authProviders: true,
20
+ files: true,
21
+ sync: true,
22
+ notifications: true,
23
+ operations: true,
24
+ schedules: true,
25
+ sharing: true,
26
+ search: true,
27
+ analytics: true,
28
+ };
17
29
  /**
18
30
  * Resolve a config file from the given directory (or cwd).
19
31
  */
@@ -55,16 +67,53 @@ export async function loadPullConfig(flags) {
55
67
  const types = flags.out ?? fileConfig.output?.types ?? DEFAULT_TYPES_DIR;
56
68
  const documents = fileConfig.output?.documents ?? DEFAULT_DOCS_DIR;
57
69
  const swift = flags.swift ?? fileConfig.output?.swift;
70
+ // Targets
71
+ const targets = fileConfig.targets ?? [];
72
+ // Operations dir defaults to sibling of types dir
73
+ const typesParent = types.replace(/\/[^/]+$/, '');
74
+ const operations = fileConfig.output?.operations ?? `${typesParent}/operations`;
75
+ // Hooks and loaders only resolve when matching target is present
76
+ const hooks = targets.includes('react')
77
+ ? (fileConfig.output?.hooks ?? `${typesParent}/hooks`)
78
+ : undefined;
79
+ const loaders = targets.includes('remix')
80
+ ? (fileConfig.output?.loaders ?? `${typesParent}/loaders`)
81
+ : undefined;
58
82
  const output = {
59
83
  types,
60
84
  documents,
85
+ operations,
86
+ ...(hooks ? { hooks } : {}),
87
+ ...(loaders ? { loaders } : {}),
61
88
  ...(swift ? { swift } : {}),
62
89
  };
90
+ // Domains: true = all, false = none, object = selective
91
+ let domains;
92
+ if (fileConfig.domains === false) {
93
+ domains = {
94
+ auth: false,
95
+ authProviders: false,
96
+ files: false,
97
+ sync: false,
98
+ notifications: false,
99
+ operations: false,
100
+ schedules: false,
101
+ sharing: false,
102
+ search: false,
103
+ analytics: false,
104
+ };
105
+ }
106
+ else if (typeof fileConfig.domains === 'object') {
107
+ domains = { ...ALL_DOMAINS, ...fileConfig.domains };
108
+ }
109
+ else {
110
+ domains = { ...ALL_DOMAINS };
111
+ }
63
112
  const only = flags.only
64
113
  ? flags.only.split(',').map((s) => s.trim())
65
114
  : (fileConfig.only ?? []);
66
115
  const includeInline = fileConfig.includeInline ?? true;
67
116
  const prettier = flags.noPrettier ? false : (fileConfig.prettier ?? true);
68
117
  const dryRun = flags.dryRun ?? false;
69
- return { output, only, includeInline, prettier, dryRun };
118
+ return { output, targets, domains, only, includeInline, prettier, dryRun };
70
119
  }
@@ -1,15 +1,38 @@
1
1
  /**
2
2
  * Configuration types for foir-cli
3
3
  */
4
+ export type CodegenTarget = 'react' | 'remix';
5
+ export interface DomainConfig {
6
+ auth?: boolean;
7
+ authProviders?: boolean;
8
+ files?: boolean;
9
+ sync?: boolean;
10
+ notifications?: boolean;
11
+ operations?: boolean;
12
+ schedules?: boolean;
13
+ sharing?: boolean;
14
+ search?: boolean;
15
+ analytics?: boolean;
16
+ }
4
17
  export interface FoirPullConfig {
5
18
  output?: {
6
19
  /** Directory for generated TypeScript types (default: './src/generated/types') */
7
20
  types?: string;
8
21
  /** Directory for generated GraphQL documents (default: './src/generated/documents') */
9
22
  documents?: string;
23
+ /** Directory for generated typed operation modules (default: sibling of types) */
24
+ operations?: string;
25
+ /** Directory for generated React hooks (requires 'react' target) */
26
+ hooks?: string;
27
+ /** Directory for generated Remix loaders (requires 'remix' target) */
28
+ loaders?: string;
10
29
  /** Directory for generated Swift files (e.g., './generated/swift') */
11
30
  swift?: string;
12
31
  };
32
+ /** Code generation targets — 'react' for Apollo hooks, 'remix' for typed loaders */
33
+ targets?: CodegenTarget[];
34
+ /** Enable static domain document generation (default: all enabled) */
35
+ domains?: boolean | DomainConfig;
13
36
  /** Filter to specific model keys */
14
37
  only?: string[];
15
38
  /** Include inline-only models for type resolution (default: true) */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE;QACP,kFAAkF;QAClF,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,uFAAuF;QACvF,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,sEAAsE;QACtE,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qEAAqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE;QACP,kFAAkF;QAClF,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,uFAAuF;QACvF,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kFAAkF;QAClF,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oEAAoE;QACpE,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,sEAAsE;QACtE,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,sEAAsE;QACtE,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,oFAAoF;IACpF,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IACjC,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qEAAqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eide/foir-cli",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "description": "Universal platform CLI for EIDE — scriptable, composable resource management",
5
5
  "type": "module",
6
6
  "publishConfig": {