@eide/foir-cli 0.1.35 → 0.1.37

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 (228) 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/dist/schema.graphql +6062 -0
  12. package/package.json +9 -8
  13. package/dist/auth/credentials.d.ts +0 -31
  14. package/dist/auth/credentials.d.ts.map +0 -1
  15. package/dist/auth/credentials.js +0 -139
  16. package/dist/cli.d.ts +0 -3
  17. package/dist/cli.d.ts.map +0 -1
  18. package/dist/codegen/fetch-customer-profile-schema.d.ts +0 -12
  19. package/dist/codegen/fetch-customer-profile-schema.d.ts.map +0 -1
  20. package/dist/codegen/fetch-customer-profile-schema.js +0 -21
  21. package/dist/codegen/fetch-models.d.ts +0 -58
  22. package/dist/codegen/fetch-models.d.ts.map +0 -1
  23. package/dist/codegen/fetch-models.js +0 -96
  24. package/dist/codegen/field-mapping.d.ts +0 -34
  25. package/dist/codegen/field-mapping.d.ts.map +0 -1
  26. package/dist/codegen/field-mapping.js +0 -250
  27. package/dist/codegen/generators/config.d.ts +0 -5
  28. package/dist/codegen/generators/config.d.ts.map +0 -1
  29. package/dist/codegen/generators/config.js +0 -82
  30. package/dist/codegen/generators/customer-profile-documents.d.ts +0 -5
  31. package/dist/codegen/generators/customer-profile-documents.d.ts.map +0 -1
  32. package/dist/codegen/generators/customer-profile-documents.js +0 -42
  33. package/dist/codegen/generators/customer-profile-hooks.d.ts +0 -5
  34. package/dist/codegen/generators/customer-profile-hooks.d.ts.map +0 -1
  35. package/dist/codegen/generators/customer-profile-hooks.js +0 -78
  36. package/dist/codegen/generators/customer-profile-loaders.d.ts +0 -5
  37. package/dist/codegen/generators/customer-profile-loaders.d.ts.map +0 -1
  38. package/dist/codegen/generators/customer-profile-loaders.js +0 -67
  39. package/dist/codegen/generators/customer-profile-operations.d.ts +0 -5
  40. package/dist/codegen/generators/customer-profile-operations.d.ts.map +0 -1
  41. package/dist/codegen/generators/customer-profile-operations.js +0 -126
  42. package/dist/codegen/generators/customer-profile-types.d.ts +0 -6
  43. package/dist/codegen/generators/customer-profile-types.d.ts.map +0 -1
  44. package/dist/codegen/generators/customer-profile-types.js +0 -45
  45. package/dist/codegen/generators/documents.d.ts +0 -12
  46. package/dist/codegen/generators/documents.d.ts.map +0 -1
  47. package/dist/codegen/generators/documents.js +0 -178
  48. package/dist/codegen/generators/field-types.d.ts +0 -5
  49. package/dist/codegen/generators/field-types.d.ts.map +0 -1
  50. package/dist/codegen/generators/field-types.js +0 -346
  51. package/dist/codegen/generators/model-index.d.ts +0 -6
  52. package/dist/codegen/generators/model-index.d.ts.map +0 -1
  53. package/dist/codegen/generators/model-index.js +0 -26
  54. package/dist/codegen/generators/model-types.d.ts +0 -12
  55. package/dist/codegen/generators/model-types.d.ts.map +0 -1
  56. package/dist/codegen/generators/model-types.js +0 -177
  57. package/dist/codegen/generators/public-schema-content.d.ts +0 -14
  58. package/dist/codegen/generators/public-schema-content.d.ts.map +0 -1
  59. package/dist/codegen/generators/public-schema-content.js +0 -22
  60. package/dist/codegen/generators/react-hooks-index.d.ts +0 -6
  61. package/dist/codegen/generators/react-hooks-index.d.ts.map +0 -1
  62. package/dist/codegen/generators/react-hooks-index.js +0 -20
  63. package/dist/codegen/generators/react-hooks.d.ts +0 -7
  64. package/dist/codegen/generators/react-hooks.d.ts.map +0 -1
  65. package/dist/codegen/generators/react-hooks.js +0 -139
  66. package/dist/codegen/generators/remix-loaders-index.d.ts +0 -6
  67. package/dist/codegen/generators/remix-loaders-index.d.ts.map +0 -1
  68. package/dist/codegen/generators/remix-loaders-index.js +0 -20
  69. package/dist/codegen/generators/remix-loaders.d.ts +0 -7
  70. package/dist/codegen/generators/remix-loaders.d.ts.map +0 -1
  71. package/dist/codegen/generators/remix-loaders.js +0 -107
  72. package/dist/codegen/generators/static-documents.d.ts +0 -14
  73. package/dist/codegen/generators/static-documents.d.ts.map +0 -1
  74. package/dist/codegen/generators/static-documents.js +0 -771
  75. package/dist/codegen/generators/swift-customer-profile.d.ts +0 -9
  76. package/dist/codegen/generators/swift-customer-profile.d.ts.map +0 -1
  77. package/dist/codegen/generators/swift-customer-profile.js +0 -152
  78. package/dist/codegen/generators/swift-field-types.d.ts +0 -5
  79. package/dist/codegen/generators/swift-field-types.d.ts.map +0 -1
  80. package/dist/codegen/generators/swift-field-types.js +0 -151
  81. package/dist/codegen/generators/swift-model-keys.d.ts +0 -6
  82. package/dist/codegen/generators/swift-model-keys.d.ts.map +0 -1
  83. package/dist/codegen/generators/swift-model-keys.js +0 -25
  84. package/dist/codegen/generators/swift-types.d.ts +0 -13
  85. package/dist/codegen/generators/swift-types.d.ts.map +0 -1
  86. package/dist/codegen/generators/swift-types.js +0 -188
  87. package/dist/codegen/generators/typed-operations-common.d.ts +0 -6
  88. package/dist/codegen/generators/typed-operations-common.d.ts.map +0 -1
  89. package/dist/codegen/generators/typed-operations-common.js +0 -84
  90. package/dist/codegen/generators/typed-operations-index.d.ts +0 -6
  91. package/dist/codegen/generators/typed-operations-index.d.ts.map +0 -1
  92. package/dist/codegen/generators/typed-operations-index.js +0 -22
  93. package/dist/codegen/generators/typed-operations.d.ts +0 -11
  94. package/dist/codegen/generators/typed-operations.d.ts.map +0 -1
  95. package/dist/codegen/generators/typed-operations.js +0 -263
  96. package/dist/codegen/swift-field-mapping.d.ts +0 -30
  97. package/dist/codegen/swift-field-mapping.d.ts.map +0 -1
  98. package/dist/codegen/swift-field-mapping.js +0 -150
  99. package/dist/codegen/write-files.d.ts +0 -15
  100. package/dist/codegen/write-files.d.ts.map +0 -1
  101. package/dist/codegen/write-files.js +0 -36
  102. package/dist/commands/api-keys.d.ts +0 -4
  103. package/dist/commands/api-keys.d.ts.map +0 -1
  104. package/dist/commands/api-keys.js +0 -129
  105. package/dist/commands/auth-config.d.ts +0 -4
  106. package/dist/commands/auth-config.d.ts.map +0 -1
  107. package/dist/commands/auth-config.js +0 -38
  108. package/dist/commands/auth-providers.d.ts +0 -4
  109. package/dist/commands/auth-providers.d.ts.map +0 -1
  110. package/dist/commands/auth-providers.js +0 -207
  111. package/dist/commands/context.d.ts +0 -4
  112. package/dist/commands/context.d.ts.map +0 -1
  113. package/dist/commands/context.js +0 -91
  114. package/dist/commands/create-extension.d.ts +0 -4
  115. package/dist/commands/create-extension.d.ts.map +0 -1
  116. package/dist/commands/create-extension.js +0 -60
  117. package/dist/commands/customer-profiles.d.ts +0 -4
  118. package/dist/commands/customer-profiles.d.ts.map +0 -1
  119. package/dist/commands/customer-profiles.js +0 -99
  120. package/dist/commands/customers.d.ts +0 -4
  121. package/dist/commands/customers.d.ts.map +0 -1
  122. package/dist/commands/customers.js +0 -126
  123. package/dist/commands/embeddings.d.ts +0 -4
  124. package/dist/commands/embeddings.d.ts.map +0 -1
  125. package/dist/commands/embeddings.js +0 -145
  126. package/dist/commands/experiments.d.ts +0 -4
  127. package/dist/commands/experiments.d.ts.map +0 -1
  128. package/dist/commands/experiments.js +0 -196
  129. package/dist/commands/extensions.d.ts +0 -4
  130. package/dist/commands/extensions.d.ts.map +0 -1
  131. package/dist/commands/extensions.js +0 -210
  132. package/dist/commands/files.d.ts +0 -4
  133. package/dist/commands/files.d.ts.map +0 -1
  134. package/dist/commands/files.js +0 -143
  135. package/dist/commands/hooks.d.ts +0 -4
  136. package/dist/commands/hooks.d.ts.map +0 -1
  137. package/dist/commands/hooks.js +0 -228
  138. package/dist/commands/locales.d.ts +0 -4
  139. package/dist/commands/locales.d.ts.map +0 -1
  140. package/dist/commands/locales.js +0 -140
  141. package/dist/commands/login.d.ts +0 -4
  142. package/dist/commands/login.d.ts.map +0 -1
  143. package/dist/commands/login.js +0 -124
  144. package/dist/commands/logout.d.ts +0 -4
  145. package/dist/commands/logout.d.ts.map +0 -1
  146. package/dist/commands/logout.js +0 -16
  147. package/dist/commands/media.d.ts +0 -4
  148. package/dist/commands/media.d.ts.map +0 -1
  149. package/dist/commands/media.js +0 -44
  150. package/dist/commands/models.d.ts +0 -4
  151. package/dist/commands/models.d.ts.map +0 -1
  152. package/dist/commands/models.js +0 -153
  153. package/dist/commands/notes.d.ts +0 -4
  154. package/dist/commands/notes.d.ts.map +0 -1
  155. package/dist/commands/notes.js +0 -132
  156. package/dist/commands/notifications.d.ts +0 -4
  157. package/dist/commands/notifications.d.ts.map +0 -1
  158. package/dist/commands/notifications.js +0 -73
  159. package/dist/commands/operations.d.ts +0 -4
  160. package/dist/commands/operations.d.ts.map +0 -1
  161. package/dist/commands/operations.js +0 -341
  162. package/dist/commands/playground.d.ts +0 -4
  163. package/dist/commands/playground.d.ts.map +0 -1
  164. package/dist/commands/playground.js +0 -270
  165. package/dist/commands/pull.d.ts +0 -4
  166. package/dist/commands/pull.d.ts.map +0 -1
  167. package/dist/commands/pull.js +0 -300
  168. package/dist/commands/records.d.ts +0 -4
  169. package/dist/commands/records.d.ts.map +0 -1
  170. package/dist/commands/records.js +0 -314
  171. package/dist/commands/register-commands.d.ts +0 -7
  172. package/dist/commands/register-commands.d.ts.map +0 -1
  173. package/dist/commands/register-commands.js +0 -259
  174. package/dist/commands/schedules.d.ts +0 -4
  175. package/dist/commands/schedules.d.ts.map +0 -1
  176. package/dist/commands/schedules.js +0 -155
  177. package/dist/commands/search.d.ts +0 -4
  178. package/dist/commands/search.d.ts.map +0 -1
  179. package/dist/commands/search.js +0 -60
  180. package/dist/commands/segments.d.ts +0 -4
  181. package/dist/commands/segments.d.ts.map +0 -1
  182. package/dist/commands/segments.js +0 -155
  183. package/dist/commands/select-project.d.ts +0 -4
  184. package/dist/commands/select-project.d.ts.map +0 -1
  185. package/dist/commands/select-project.js +0 -144
  186. package/dist/commands/settings.d.ts +0 -4
  187. package/dist/commands/settings.d.ts.map +0 -1
  188. package/dist/commands/settings.js +0 -115
  189. package/dist/commands/variant-catalog.d.ts +0 -4
  190. package/dist/commands/variant-catalog.d.ts.map +0 -1
  191. package/dist/commands/variant-catalog.js +0 -118
  192. package/dist/commands/whoami.d.ts +0 -4
  193. package/dist/commands/whoami.d.ts.map +0 -1
  194. package/dist/commands/whoami.js +0 -51
  195. package/dist/config/pull-config.d.ts +0 -33
  196. package/dist/config/pull-config.d.ts.map +0 -1
  197. package/dist/config/pull-config.js +0 -119
  198. package/dist/config/types.d.ts.map +0 -1
  199. package/dist/graphql/generated.d.ts +0 -6074
  200. package/dist/graphql/generated.d.ts.map +0 -1
  201. package/dist/graphql/generated.js +0 -355
  202. package/dist/lib/client.d.ts +0 -18
  203. package/dist/lib/client.d.ts.map +0 -1
  204. package/dist/lib/client.js +0 -64
  205. package/dist/lib/config-loader.d.ts +0 -28
  206. package/dist/lib/config-loader.d.ts.map +0 -1
  207. package/dist/lib/config-loader.js +0 -49
  208. package/dist/lib/config.d.ts +0 -12
  209. package/dist/lib/config.d.ts.map +0 -1
  210. package/dist/lib/config.js +0 -8
  211. package/dist/lib/errors.d.ts +0 -6
  212. package/dist/lib/errors.d.ts.map +0 -1
  213. package/dist/lib/errors.js +0 -76
  214. package/dist/lib/extension-helpers.d.ts.map +0 -1
  215. package/dist/lib/hook-helpers.d.ts.map +0 -1
  216. package/dist/lib/input.d.ts +0 -38
  217. package/dist/lib/input.d.ts.map +0 -1
  218. package/dist/lib/input.js +0 -108
  219. package/dist/lib/output.d.ts +0 -31
  220. package/dist/lib/output.d.ts.map +0 -1
  221. package/dist/lib/output.js +0 -107
  222. package/dist/lib/seed-helpers.d.ts.map +0 -1
  223. package/dist/scaffold/package-manager.d.ts +0 -12
  224. package/dist/scaffold/package-manager.d.ts.map +0 -1
  225. package/dist/scaffold/package-manager.js +0 -51
  226. package/dist/scaffold/scaffold.d.ts +0 -4
  227. package/dist/scaffold/scaffold.d.ts.map +0 -1
  228. package/dist/scaffold/scaffold.js +0 -462
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eide/foir-cli",
3
- "version": "0.1.35",
3
+ "version": "0.1.37",
4
4
  "description": "Universal platform CLI for EIDE — scriptable, composable resource management",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -11,23 +11,23 @@
11
11
  },
12
12
  "exports": {
13
13
  ".": {
14
- "types": "./dist/cli.js",
14
+ "types": "./dist/cli.d.ts",
15
15
  "import": "./dist/cli.js"
16
16
  },
17
17
  "./config": {
18
- "types": "./dist/config/types.js",
18
+ "types": "./dist/config/types.d.ts",
19
19
  "import": "./dist/config/types.js"
20
20
  },
21
21
  "./extensions": {
22
- "types": "./dist/lib/extension-helpers.js",
22
+ "types": "./dist/lib/extension-helpers.d.ts",
23
23
  "import": "./dist/lib/extension-helpers.js"
24
24
  },
25
25
  "./hooks": {
26
- "types": "./dist/lib/hook-helpers.js",
26
+ "types": "./dist/lib/hook-helpers.d.ts",
27
27
  "import": "./dist/lib/hook-helpers.js"
28
28
  },
29
29
  "./seed": {
30
- "types": "./dist/lib/seed-helpers.js",
30
+ "types": "./dist/lib/seed-helpers.d.ts",
31
31
  "import": "./dist/lib/seed-helpers.js"
32
32
  }
33
33
  },
@@ -36,7 +36,7 @@
36
36
  "README.md"
37
37
  ],
38
38
  "scripts": {
39
- "build": "tsc -p tsconfig.build.json",
39
+ "build": "tsup",
40
40
  "dev:cli": "tsx src/cli.ts",
41
41
  "check-types": "tsc --noEmit",
42
42
  "lint": "eslint src/",
@@ -62,7 +62,6 @@
62
62
  "author": "EIDE Team",
63
63
  "license": "UNLICENSED",
64
64
  "dependencies": {
65
- "@eide/command-registry": "workspace:*",
66
65
  "chalk": "^5.3.0",
67
66
  "commander": "^12.1.0",
68
67
  "dotenv": "^16.4.5",
@@ -81,7 +80,9 @@
81
80
  "@graphql-codegen/typescript-operations": "^4.4.0",
82
81
  "@graphql-typed-document-node/core": "^3.2.0",
83
82
  "@types/inquirer": "^9.0.7",
83
+ "@eide/command-registry": "workspace:*",
84
84
  "@types/node": "^22.5.0",
85
+ "tsup": "^8.5.1",
85
86
  "tsx": "^4.20.0",
86
87
  "typescript": "5.9.2",
87
88
  "vitest": "^3.2.4"
@@ -1,31 +0,0 @@
1
- export interface StoredCredentials {
2
- accessToken: string;
3
- refreshToken: string;
4
- expiresAt: string;
5
- user: {
6
- id: string;
7
- email: string;
8
- name: string;
9
- };
10
- }
11
- export declare function getCredentialsDir(): string;
12
- export declare function getCredentialsPath(): string;
13
- export declare function getCredentials(): Promise<StoredCredentials | null>;
14
- export declare function writeCredentials(credentials: StoredCredentials): Promise<void>;
15
- export declare function deleteCredentials(): Promise<void>;
16
- export declare function isTokenExpired(credentials: StoredCredentials): boolean;
17
- export declare function getValidCredentials(refreshFn?: (refreshToken: string) => Promise<{
18
- accessToken: string;
19
- expiresAt: string;
20
- }>): Promise<StoredCredentials | null>;
21
- export interface ProjectContext {
22
- id: string;
23
- name: string;
24
- tenantId: string;
25
- apiKey?: string;
26
- apiKeyId?: string;
27
- }
28
- export declare function getProjectContext(): Promise<ProjectContext | null>;
29
- export declare function writeProjectContext(project: ProjectContext): Promise<void>;
30
- export declare function deleteProjectContext(): Promise<void>;
31
- //# sourceMappingURL=credentials.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAYD,wBAAsB,cAAc,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAUxE;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQvD;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAItE;AAED,wBAAsB,mBAAmB,CACvC,SAAS,CAAC,EAAE,CACV,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GACvD,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAoBnC;AAMD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA4CD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAUxE;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ1D"}
@@ -1,139 +0,0 @@
1
- import { promises as fs, statSync } from 'fs';
2
- import { join, dirname } from 'path';
3
- import { homedir } from 'os';
4
- export function getCredentialsDir() {
5
- return join(homedir(), '.foir');
6
- }
7
- export function getCredentialsPath() {
8
- return join(getCredentialsDir(), 'credentials.json');
9
- }
10
- async function ensureDir(dir) {
11
- try {
12
- await fs.mkdir(dir, { recursive: true, mode: 0o700 });
13
- }
14
- catch (error) {
15
- if (error.code !== 'EEXIST') {
16
- throw error;
17
- }
18
- }
19
- }
20
- export async function getCredentials() {
21
- try {
22
- const content = await fs.readFile(getCredentialsPath(), 'utf-8');
23
- return JSON.parse(content);
24
- }
25
- catch (error) {
26
- if (error.code === 'ENOENT') {
27
- return null;
28
- }
29
- throw error;
30
- }
31
- }
32
- export async function writeCredentials(credentials) {
33
- await ensureDir(getCredentialsDir());
34
- const path = getCredentialsPath();
35
- await fs.writeFile(path, JSON.stringify(credentials, null, 2), {
36
- mode: 0o600,
37
- });
38
- }
39
- export async function deleteCredentials() {
40
- try {
41
- await fs.unlink(getCredentialsPath());
42
- }
43
- catch (error) {
44
- if (error.code !== 'ENOENT') {
45
- throw error;
46
- }
47
- }
48
- }
49
- export function isTokenExpired(credentials) {
50
- const expiresAt = new Date(credentials.expiresAt);
51
- const bufferMs = 5 * 60 * 1000;
52
- return Date.now() > expiresAt.getTime() - bufferMs;
53
- }
54
- export async function getValidCredentials(refreshFn) {
55
- const credentials = await getCredentials();
56
- if (!credentials) {
57
- return null;
58
- }
59
- if (isTokenExpired(credentials) && refreshFn) {
60
- try {
61
- const { accessToken, expiresAt } = await refreshFn(credentials.refreshToken);
62
- const updated = { ...credentials, accessToken, expiresAt };
63
- await writeCredentials(updated);
64
- return updated;
65
- }
66
- catch {
67
- return null;
68
- }
69
- }
70
- return credentials;
71
- }
72
- const REPO_ROOT_MARKERS = [
73
- '.git',
74
- 'foir.config.ts',
75
- '.foirrc.ts',
76
- 'foir.config.js',
77
- '.foirrc.js',
78
- 'foir.config.mjs',
79
- '.foirrc.mjs',
80
- ];
81
- /**
82
- * Walk up from cwd looking for markers that indicate the repo root.
83
- * Returns cwd as fallback if no marker is found.
84
- */
85
- function findRepoRoot(from = process.cwd()) {
86
- let dir = from;
87
- while (true) {
88
- for (const marker of REPO_ROOT_MARKERS) {
89
- try {
90
- statSync(join(dir, marker));
91
- return dir;
92
- }
93
- catch {
94
- // not found, continue
95
- }
96
- }
97
- const parent = dirname(dir);
98
- if (parent === dir) {
99
- return from; // filesystem root reached, fallback to cwd
100
- }
101
- dir = parent;
102
- }
103
- }
104
- function getProjectContextDir() {
105
- return join(findRepoRoot(), '.foir');
106
- }
107
- function getProjectContextPath() {
108
- return join(getProjectContextDir(), 'project.json');
109
- }
110
- export async function getProjectContext() {
111
- try {
112
- const content = await fs.readFile(getProjectContextPath(), 'utf-8');
113
- return JSON.parse(content);
114
- }
115
- catch (error) {
116
- if (error.code === 'ENOENT') {
117
- return null;
118
- }
119
- throw error;
120
- }
121
- }
122
- export async function writeProjectContext(project) {
123
- const dir = getProjectContextDir();
124
- await ensureDir(dir);
125
- const filePath = getProjectContextPath();
126
- await fs.writeFile(filePath, JSON.stringify(project, null, 2), {
127
- mode: 0o600,
128
- });
129
- }
130
- export async function deleteProjectContext() {
131
- try {
132
- await fs.unlink(getProjectContextPath());
133
- }
134
- catch (error) {
135
- if (error.code !== 'ENOENT') {
136
- throw error;
137
- }
138
- }
139
- }
package/dist/cli.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
@@ -1,12 +0,0 @@
1
- /**
2
- * Fetches the customer profile schema from the platform GraphQL API for codegen.
3
- */
4
- import type { GraphQLClient } from 'graphql-request';
5
- import type { FieldSchemaForGen } from './field-mapping.js';
6
- export interface CodegenCustomerProfileSchema {
7
- id: string;
8
- fields: FieldSchemaForGen[];
9
- version: number;
10
- }
11
- export declare function fetchCustomerProfileSchema(client: GraphQLClient): Promise<CodegenCustomerProfileSchema | null>;
12
- //# sourceMappingURL=fetch-customer-profile-schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch-customer-profile-schema.d.ts","sourceRoot":"","sources":["../../src/codegen/fetch-customer-profile-schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAiB9C"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Fetches the customer profile schema from the platform GraphQL API for codegen.
3
- */
4
- import { GetCustomerProfileSchemaDocument } from '../graphql/generated.js';
5
- export async function fetchCustomerProfileSchema(client) {
6
- const data = await client.request(GetCustomerProfileSchemaDocument);
7
- if (!data.customerProfileSchema)
8
- return null;
9
- return {
10
- id: data.customerProfileSchema.id,
11
- version: data.customerProfileSchema.version,
12
- fields: (data.customerProfileSchema.fields ?? []).map((f) => ({
13
- key: f.key,
14
- type: f.type,
15
- label: f.label,
16
- required: f.required ?? undefined,
17
- helpText: f.helpText ?? undefined,
18
- options: f.config,
19
- })),
20
- };
21
- }
@@ -1,58 +0,0 @@
1
- /**
2
- * Fetches models from the platform GraphQL API and transforms them for codegen.
3
- */
4
- import type { GraphQLClient } from 'graphql-request';
5
- import type { FieldSchemaForGen } from './field-mapping.js';
6
- export interface CodegenModelConfig {
7
- records: boolean;
8
- inline: boolean;
9
- publicApi: boolean;
10
- versioning: boolean;
11
- publishing: boolean;
12
- variants: boolean;
13
- customerScoped: boolean;
14
- sharing?: {
15
- enabled: boolean;
16
- requireAcceptance: boolean;
17
- };
18
- embeddings?: {
19
- enabled: boolean;
20
- fields: Array<{
21
- fieldPath: string;
22
- weight?: number;
23
- }>;
24
- };
25
- }
26
- export interface CodegenModel {
27
- key: string;
28
- name: string;
29
- pluralName?: string;
30
- description?: string;
31
- category?: string;
32
- fields: FieldSchemaForGen[];
33
- config: CodegenModelConfig;
34
- hooks?: Record<string, unknown>;
35
- }
36
- /**
37
- * Normalize a field's item type reference into `options.itemType`.
38
- *
39
- * The platform stores the reference in different locations depending on
40
- * how the field was created:
41
- * - `options.itemType` (standard)
42
- * - `config.itemType` (config variant)
43
- * - `config.itemSchema` (inline model schema reference)
44
- * - top-level `itemType` (inline model field definitions)
45
- *
46
- * We consolidate into `options.itemType` so downstream codegen has a
47
- * single location to check.
48
- */
49
- export declare function normalizeField(raw: Record<string, unknown>): FieldSchemaForGen;
50
- export declare function fetchModelsForCodegen(client: GraphQLClient): Promise<CodegenModel[]>;
51
- /**
52
- * Filter models based on pull config options.
53
- */
54
- export declare function filterModels(models: CodegenModel[], options: {
55
- only?: string[];
56
- includeInline?: boolean;
57
- }): CodegenModel[];
58
- //# sourceMappingURL=fetch-models.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch-models.d.ts","sourceRoot":"","sources":["../../src/codegen/fetch-models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvD,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAyBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,iBAAiB,CAyCnB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,EAAE,EACtB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,YAAY,EAAE,CAahB"}
@@ -1,96 +0,0 @@
1
- /**
2
- * Fetches models from the platform GraphQL API and transforms them for codegen.
3
- */
4
- import { ModelsForCodegenDocument } from '../graphql/generated.js';
5
- function normalizeConfig(raw) {
6
- return {
7
- records: Boolean(raw.records ?? true),
8
- inline: Boolean(raw.inline ?? false),
9
- publicApi: Boolean(raw.publicApi ?? false),
10
- versioning: Boolean(raw.versioning ?? false),
11
- publishing: Boolean(raw.publishing ?? false),
12
- variants: Boolean(raw.variants ?? false),
13
- customerScoped: Boolean(raw.customerScoped ?? false),
14
- sharing: raw.sharing
15
- ? {
16
- enabled: Boolean(raw.sharing.enabled ?? false),
17
- requireAcceptance: Boolean(raw.sharing.requireAcceptance ?? true),
18
- }
19
- : undefined,
20
- embeddings: raw.embeddings,
21
- };
22
- }
23
- /**
24
- * Normalize a field's item type reference into `options.itemType`.
25
- *
26
- * The platform stores the reference in different locations depending on
27
- * how the field was created:
28
- * - `options.itemType` (standard)
29
- * - `config.itemType` (config variant)
30
- * - `config.itemSchema` (inline model schema reference)
31
- * - top-level `itemType` (inline model field definitions)
32
- *
33
- * We consolidate into `options.itemType` so downstream codegen has a
34
- * single location to check.
35
- */
36
- export function normalizeField(raw) {
37
- const field = raw;
38
- const options = { ...(field.options ?? {}) };
39
- // Resolve composite type to its inline schema reference
40
- const resolvedType = field.type === 'composite' && field.config?.schema
41
- ? field.config.schema
42
- : field.type;
43
- // Resolve itemType from all possible locations (first wins)
44
- if (!options.itemType) {
45
- const resolved = field.itemType ??
46
- field.config?.itemType ??
47
- field.config?.itemSchema;
48
- if (resolved) {
49
- options.itemType = resolved;
50
- }
51
- }
52
- // Carry over minItems/maxItems from config
53
- if (field.config?.minItems !== undefined && options.minItems === undefined) {
54
- options.minItems = field.config.minItems;
55
- }
56
- if (field.config?.maxItems !== undefined && options.maxItems === undefined) {
57
- options.maxItems = field.config.maxItems;
58
- }
59
- return {
60
- key: field.key,
61
- type: resolvedType,
62
- label: field.label,
63
- required: field.required,
64
- helpText: field.helpText,
65
- options: Object.keys(options).length > 0 ? options : undefined,
66
- };
67
- }
68
- export async function fetchModelsForCodegen(client) {
69
- const data = await client.request(ModelsForCodegenDocument, {
70
- limit: 500,
71
- });
72
- return data.models.items.map((item) => ({
73
- key: item.key,
74
- name: item.name,
75
- pluralName: item.pluralName ?? undefined,
76
- description: item.description ?? undefined,
77
- category: item.category ?? undefined,
78
- fields: (item.fields ?? []).map((f) => normalizeField(f)),
79
- config: normalizeConfig((item.config ?? {})),
80
- hooks: (item.hooks ?? undefined),
81
- }));
82
- }
83
- /**
84
- * Filter models based on pull config options.
85
- */
86
- export function filterModels(models, options) {
87
- let filtered = models;
88
- if (options.only && options.only.length > 0) {
89
- const onlySet = new Set(options.only);
90
- filtered = filtered.filter((m) => onlySet.has(m.key));
91
- }
92
- if (!options.includeInline) {
93
- filtered = filtered.filter((m) => m.config.records);
94
- }
95
- return filtered;
96
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * Maps EIDE field types to TypeScript types.
3
- * Ported from uniformgen with updates for the unified data layer.
4
- */
5
- export interface TypeMapping {
6
- outputType: string;
7
- inputType: string;
8
- needsImport?: string;
9
- }
10
- export declare const PRIMITIVE_FIELD_TYPES: Set<string>;
11
- export declare function isPrimitiveFieldType(type: string): boolean;
12
- export declare const FIELD_TYPE_MAPPING: Record<string, TypeMapping>;
13
- export interface FieldSchemaForGen {
14
- key: string;
15
- type: string;
16
- label?: string;
17
- required?: boolean;
18
- helpText?: string;
19
- options?: Record<string, unknown>;
20
- }
21
- export declare function getFieldType(field: FieldSchemaForGen, mode?: 'output' | 'input'): string;
22
- export declare function getRequiredImports(fields: FieldSchemaForGen[]): Set<string>;
23
- /**
24
- * Extract model keys referenced by reference-type fields via `referenceTypes`.
25
- * Used to generate parameterized `ReferenceValue<Partial<ModelData>>` types.
26
- */
27
- export declare function getReferenceTypeModelRefs(fields: FieldSchemaForGen[]): Set<string>;
28
- export declare function getInlineSchemaReferences(fields: FieldSchemaForGen[]): Set<string>;
29
- export declare function toCamelCase(str: string): string;
30
- export declare function toPascalCase(str: string): string;
31
- export declare function toUpperSnakeCase(str: string): string;
32
- export declare function sanitizeFieldName(key: string): string;
33
- export declare function generateFieldDef(field: FieldSchemaForGen): string;
34
- //# sourceMappingURL=field-mapping.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-mapping.d.ts","sourceRoot":"","sources":["../../src/codegen/field-mapping.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,aAqBhC,CAAC;AAEH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAqD1D,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,IAAI,GAAE,QAAQ,GAAG,OAAkB,GAClC,MAAM,CAqCR;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAW3E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,iBAAiB,EAAE,GAC1B,GAAG,CAAC,MAAM,CAAC,CAUb;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,iBAAiB,EAAE,GAC1B,GAAG,CAAC,MAAM,CAAC,CAcb;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA2EjE"}