@eide/foir-cli 0.1.2 → 0.1.4

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 (52) hide show
  1. package/dist/cli.js +3 -0
  2. package/dist/codegen/fetch-models.d.ts +40 -0
  3. package/dist/codegen/fetch-models.d.ts.map +1 -0
  4. package/dist/codegen/fetch-models.js +45 -0
  5. package/dist/codegen/field-mapping.d.ts +28 -0
  6. package/dist/codegen/field-mapping.d.ts.map +1 -0
  7. package/dist/codegen/field-mapping.js +194 -0
  8. package/dist/codegen/generators/config.d.ts +5 -0
  9. package/dist/codegen/generators/config.d.ts.map +1 -0
  10. package/dist/codegen/generators/config.js +82 -0
  11. package/dist/codegen/generators/documents.d.ts +6 -0
  12. package/dist/codegen/generators/documents.d.ts.map +1 -0
  13. package/dist/codegen/generators/documents.js +91 -0
  14. package/dist/codegen/generators/field-types.d.ts +5 -0
  15. package/dist/codegen/generators/field-types.d.ts.map +1 -0
  16. package/dist/codegen/generators/field-types.js +339 -0
  17. package/dist/codegen/generators/model-index.d.ts +6 -0
  18. package/dist/codegen/generators/model-index.d.ts.map +1 -0
  19. package/dist/codegen/generators/model-index.js +26 -0
  20. package/dist/codegen/generators/model-types.d.ts +12 -0
  21. package/dist/codegen/generators/model-types.d.ts.map +1 -0
  22. package/dist/codegen/generators/model-types.js +150 -0
  23. package/dist/codegen/generators/swift-field-types.d.ts +5 -0
  24. package/dist/codegen/generators/swift-field-types.d.ts.map +1 -0
  25. package/dist/codegen/generators/swift-field-types.js +145 -0
  26. package/dist/codegen/generators/swift-model-keys.d.ts +6 -0
  27. package/dist/codegen/generators/swift-model-keys.d.ts.map +1 -0
  28. package/dist/codegen/generators/swift-model-keys.js +25 -0
  29. package/dist/codegen/generators/swift-types.d.ts +13 -0
  30. package/dist/codegen/generators/swift-types.d.ts.map +1 -0
  31. package/dist/codegen/generators/swift-types.js +184 -0
  32. package/dist/codegen/swift-field-mapping.d.ts +30 -0
  33. package/dist/codegen/swift-field-mapping.d.ts.map +1 -0
  34. package/dist/codegen/swift-field-mapping.js +156 -0
  35. package/dist/codegen/write-files.d.ts +15 -0
  36. package/dist/codegen/write-files.d.ts.map +1 -0
  37. package/dist/codegen/write-files.js +36 -0
  38. package/dist/commands/models.d.ts.map +1 -1
  39. package/dist/commands/models.js +0 -6
  40. package/dist/commands/pull.d.ts +4 -0
  41. package/dist/commands/pull.d.ts.map +1 -0
  42. package/dist/commands/pull.js +150 -0
  43. package/dist/config/pull-config.d.ts +27 -0
  44. package/dist/config/pull-config.d.ts.map +1 -0
  45. package/dist/config/pull-config.js +66 -0
  46. package/dist/config/types.d.ts +33 -0
  47. package/dist/config/types.d.ts.map +1 -0
  48. package/dist/config/types.js +15 -0
  49. package/dist/graphql/queries.d.ts +1 -0
  50. package/dist/graphql/queries.d.ts.map +1 -1
  51. package/dist/graphql/queries.js +8 -0
  52. package/package.json +9 -3
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Pull config loader — searches for foir.config.ts / .foirrc.ts and merges with CLI flags.
3
+ */
4
+ export interface PullCliFlags {
5
+ config?: string;
6
+ only?: string;
7
+ noPrettier?: boolean;
8
+ dryRun?: boolean;
9
+ out?: string;
10
+ swift?: string;
11
+ }
12
+ export interface ResolvedPullConfig {
13
+ output: {
14
+ types: string;
15
+ documents: string;
16
+ swift?: string;
17
+ };
18
+ only: string[];
19
+ includeInline: boolean;
20
+ prettier: boolean;
21
+ dryRun: boolean;
22
+ }
23
+ /**
24
+ * Load and merge config from file + CLI flags.
25
+ */
26
+ export declare function loadPullConfig(flags: PullCliFlags): Promise<ResolvedPullConfig>;
27
+ //# sourceMappingURL=pull-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-config.d.ts","sourceRoot":"","sources":["../../src/config/pull-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+CH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAwB7B"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Pull config loader — searches for foir.config.ts / .foirrc.ts and merges with CLI flags.
3
+ */
4
+ import { resolve } from 'path';
5
+ import { pathToFileURL } from 'url';
6
+ import { existsSync } from 'fs';
7
+ const CONFIG_FILE_NAMES = [
8
+ 'foir.config.ts',
9
+ 'foir.config.js',
10
+ 'foir.config.mjs',
11
+ '.foirrc.ts',
12
+ '.foirrc.js',
13
+ '.foirrc.mjs',
14
+ ];
15
+ const DEFAULT_TYPES_DIR = './src/generated/types';
16
+ const DEFAULT_DOCS_DIR = './src/generated/documents';
17
+ /**
18
+ * Resolve a config file from the given directory (or cwd).
19
+ */
20
+ function findConfigFile(explicitPath) {
21
+ if (explicitPath) {
22
+ const abs = resolve(explicitPath);
23
+ if (existsSync(abs))
24
+ return abs;
25
+ throw new Error(`Config file not found: ${explicitPath}`);
26
+ }
27
+ const cwd = process.cwd();
28
+ for (const name of CONFIG_FILE_NAMES) {
29
+ const candidate = resolve(cwd, name);
30
+ if (existsSync(candidate))
31
+ return candidate;
32
+ }
33
+ return null;
34
+ }
35
+ /**
36
+ * Dynamically import a config file (supports .ts via tsx loader, .js, .mjs).
37
+ */
38
+ async function loadConfigFile(filePath) {
39
+ const url = pathToFileURL(filePath).href;
40
+ const mod = await import(url);
41
+ const config = mod.default ?? mod;
42
+ return config;
43
+ }
44
+ /**
45
+ * Load and merge config from file + CLI flags.
46
+ */
47
+ export async function loadPullConfig(flags) {
48
+ let fileConfig = {};
49
+ const configPath = findConfigFile(flags.config);
50
+ if (configPath) {
51
+ const full = await loadConfigFile(configPath);
52
+ fileConfig = full.pull ?? {};
53
+ }
54
+ // Merge: defaults ← file config ← CLI flags
55
+ const types = flags.out ?? fileConfig.output?.types ?? DEFAULT_TYPES_DIR;
56
+ const documents = fileConfig.output?.documents ?? DEFAULT_DOCS_DIR;
57
+ const swift = flags.swift ?? fileConfig.output?.swift;
58
+ const output = { types, documents, ...(swift ? { swift } : {}) };
59
+ const only = flags.only
60
+ ? flags.only.split(',').map((s) => s.trim())
61
+ : fileConfig.only ?? [];
62
+ const includeInline = fileConfig.includeInline ?? true;
63
+ const prettier = flags.noPrettier ? false : (fileConfig.prettier ?? true);
64
+ const dryRun = flags.dryRun ?? false;
65
+ return { output, only, includeInline, prettier, dryRun };
66
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Configuration types for foir-cli
3
+ */
4
+ export interface FoirPullConfig {
5
+ output?: {
6
+ /** Directory for generated TypeScript types (default: './src/generated/types') */
7
+ types?: string;
8
+ /** Directory for generated GraphQL documents (default: './src/generated/documents') */
9
+ documents?: string;
10
+ /** Directory for generated Swift files (e.g., './generated/swift') */
11
+ swift?: string;
12
+ };
13
+ /** Filter to specific model keys */
14
+ only?: string[];
15
+ /** Include inline-only models for type resolution (default: true) */
16
+ includeInline?: boolean;
17
+ /** Format output with Prettier (default: true) */
18
+ prettier?: boolean;
19
+ }
20
+ export interface FoirConfig {
21
+ pull?: FoirPullConfig;
22
+ }
23
+ /**
24
+ * Helper to create a type-safe foir config.
25
+ * Used in foir.config.ts files:
26
+ *
27
+ * ```ts
28
+ * import { defineConfig } from '@eide/foir-cli/config';
29
+ * export default defineConfig({ pull: { output: { types: './src/generated' } } });
30
+ * ```
31
+ */
32
+ export declare function defineConfig(config: FoirConfig): FoirConfig;
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Configuration types for foir-cli
3
+ */
4
+ /**
5
+ * Helper to create a type-safe foir config.
6
+ * Used in foir.config.ts files:
7
+ *
8
+ * ```ts
9
+ * import { defineConfig } from '@eide/foir-cli/config';
10
+ * export default defineConfig({ pull: { output: { types: './src/generated' } } });
11
+ * ```
12
+ */
13
+ export function defineConfig(config) {
14
+ return config;
15
+ }
@@ -15,6 +15,7 @@ export declare const UNPUBLISH_RECORD = "\n mutation($id: ID!) { unpublishRecor
15
15
  export declare const DUPLICATE_RECORD = "\n mutation($input: DuplicateRecordInput!) { duplicateRecord(input: $input) { record { id modelKey naturalKey } variant { id variantKey } version { id versionNumber } } }\n";
16
16
  export declare const RECORD_VERSIONS = "\n query($parentId: ID!, $limit: Int, $offset: Int) { recordVersions(parentId: $parentId, limit: $limit, offset: $offset) { items { id versionNumber publishStatus data contentHash changeDescription createdAt createdBy } } }\n";
17
17
  export declare const RECORD_VARIANTS = "\n query($recordId: ID!, $limit: Int, $offset: Int) { recordVariants(recordId: $recordId, limit: $limit, offset: $offset) { items { id variantKey variantName isDefault priority createdAt } } }\n";
18
+ export declare const MODELS_FOR_CODEGEN = "\n query($limit: Int) {\n models(limit: $limit) {\n items { id key name pluralName description category fields config hooks }\n total\n }\n }\n";
18
19
  export declare const MODEL_BY_KEY = "\n query($key: String!) { modelByKey(key: $key) { id key name pluralName description category icon fields config hooks displayField extensionId systemEntity deletable editable currentVersionId publishedVersionNumber createdAt updatedAt } }\n";
19
20
  export declare const MODELS = "\n query($search: String, $category: String, $limit: Int, $offset: Int) {\n models(search: $search, category: $category, limit: $limit, offset: $offset) {\n items { id key name category config systemEntity createdAt updatedAt }\n total\n }\n }\n";
20
21
  export declare const CREATE_MODEL = "\n mutation($input: CreateModelInput!) { createModel(input: $input) { id key name fields config createdAt } }\n";
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/graphql/queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/graphql/queries.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mBAAmB,8HAE/B,CAAC;AAIF,eAAO,MAAM,aAAa,oVAOzB,CAAC;AAEF,eAAO,MAAM,WAAW,oOAEvB,CAAC;AAEF,eAAO,MAAM,cAAc,2JAE1B,CAAC;AAEF,eAAO,MAAM,cAAc,mHAE1B,CAAC;AAEF,eAAO,MAAM,cAAc,sFAE1B,CAAC;AAIF,eAAO,MAAM,MAAM,6QAElB,CAAC;AAEF,eAAO,MAAM,aAAa,uVAEzB,CAAC;AAEF,eAAO,MAAM,OAAO,wVAOnB,CAAC;AAEF,eAAO,MAAM,aAAa,+MAEzB,CAAC;AAEF,eAAO,MAAM,aAAa,qJAEzB,CAAC;AAEF,eAAO,MAAM,aAAa,kFAEzB,CAAC;AAEF,eAAO,MAAM,eAAe,8EAE3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,0DAE5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,kLAE5B,CAAC;AAEF,eAAO,MAAM,eAAe,uOAE3B,CAAC;AAEF,eAAO,MAAM,eAAe,wMAE3B,CAAC;AAIF,eAAO,MAAM,kBAAkB,sKAO9B,CAAC;AAEF,eAAO,MAAM,YAAY,uPAExB,CAAC;AAEF,eAAO,MAAM,MAAM,4QAOlB,CAAC;AAEF,eAAO,MAAM,YAAY,qHAExB,CAAC;AAEF,eAAO,MAAM,YAAY,qHAExB,CAAC;AAEF,eAAO,MAAM,YAAY,sDAExB,CAAC;AAEF,eAAO,MAAM,cAAc,wNAE1B,CAAC;AAIF,eAAO,MAAM,aAAa,2UAOzB,CAAC;AAIF,eAAO,MAAM,SAAS,qTAOrB,CAAC;AAEF,eAAO,MAAM,QAAQ,oGAEpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,wHAE7B,CAAC;AAEF,eAAO,MAAM,eAAe,iHAE3B,CAAC;AAEF,eAAO,MAAM,eAAe,+EAE3B,CAAC;AAIF,eAAO,MAAM,QAAQ,qNAEpB,CAAC;AAEF,eAAO,MAAM,OAAO,+LAEnB,CAAC;AAEF,eAAO,MAAM,cAAc,2MAE1B,CAAC;AAEF,eAAO,MAAM,cAAc,oHAE1B,CAAC;AAEF,eAAO,MAAM,cAAc,uIAE1B,CAAC;AAEF,eAAO,MAAM,cAAc,wDAE1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,iKAEjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,8JAEnC,CAAC;AAIF,eAAO,MAAM,WAAW,uQAEvB,CAAC;AAEF,eAAO,MAAM,UAAU,4SAEtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,wTAE7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,iIAE7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,oJAE7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,2DAE7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,+GAE5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,+GAE5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,gHAE7B,CAAC;AAEF,eAAO,MAAM,cAAc,6GAE1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,mLAE5B,CAAC;AAIF,eAAO,MAAM,YAAY,oIAExB,CAAC;AAEF,eAAO,MAAM,oBAAoB,oLAEhC,CAAC;AAEF,eAAO,MAAM,OAAO,0JAEnB,CAAC;AAEF,eAAO,MAAM,WAAW,wHAEvB,CAAC;AAEF,eAAO,MAAM,cAAc,+DAE1B,CAAC;AAIF,eAAO,MAAM,UAAU,kRAEtB,CAAC;AAEF,eAAO,MAAM,SAAS,4NAErB,CAAC;AAEF,eAAO,MAAM,gBAAgB,wOAE5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,yIAE9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,oHAElC,CAAC;AAIF,eAAO,MAAM,UAAU,sQAEtB,CAAC;AAEF,eAAO,MAAM,SAAS,+SAErB,CAAC;AAEF,eAAO,MAAM,iBAAiB,iKAE7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,4KAErC,CAAC;AAEF,eAAO,MAAM,sBAAsB,sUAOlC,CAAC;AAEF,eAAO,MAAM,iBAAiB,oIAE7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,+FAE/B,CAAC;AAIF,eAAO,MAAM,SAAS,sSAOrB,CAAC;AAEF,eAAO,MAAM,QAAQ,wQAEpB,CAAC;AAEF,eAAO,MAAM,eAAe,2HAE3B,CAAC;AAEF,eAAO,MAAM,eAAe,qJAE3B,CAAC;AAEF,eAAO,MAAM,eAAe,gEAE3B,CAAC;AAEF,eAAO,MAAM,cAAc,4FAE1B,CAAC;AAEF,eAAO,MAAM,eAAe,oFAE3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,yFAE5B,CAAC;AAIF,eAAO,MAAM,aAAa,8QASzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,oFAElC,CAAC;AAEF,eAAO,MAAM,2BAA2B,gDAEvC,CAAC;AAIF,eAAO,MAAM,OAAO,mPAEnB,CAAC;AAEF,eAAO,MAAM,MAAM,4IAElB,CAAC;AAEF,eAAO,MAAM,cAAc,4JAE1B,CAAC;AAEF,eAAO,MAAM,cAAc,qGAE1B,CAAC;AAEF,eAAO,MAAM,aAAa,6HAEzB,CAAC;AAEF,eAAO,MAAM,aAAa,gJAEzB,CAAC;AAEF,eAAO,MAAM,aAAa,uDAEzB,CAAC;AAIF,eAAO,MAAM,KAAK,+VAOjB,CAAC;AAEF,eAAO,MAAM,IAAI,yKAEhB,CAAC;AAEF,eAAO,MAAM,kBAAkB,uFAE9B,CAAC;AAEF,eAAO,MAAM,WAAW,uRAEvB,CAAC;AAEF,eAAO,MAAM,oBAAoB,qOAEhC,CAAC;AAEF,eAAO,MAAM,WAAW,qDAEvB,CAAC;AAIF,eAAO,MAAM,KAAK,6XAOjB,CAAC;AAEF,eAAO,MAAM,IAAI,qLAEhB,CAAC;AAEF,eAAO,MAAM,WAAW,8HAEvB,CAAC;AAEF,eAAO,MAAM,YAAY,qHAExB,CAAC;AAEF,eAAO,MAAM,WAAW,iEAEvB,CAAC;AAIF,eAAO,MAAM,eAAe,qNAE3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,yIAEjC,CAAC;AAEF,eAAO,MAAM,4BAA4B,qJAExC,CAAC;AAEF,eAAO,MAAM,4BAA4B,iJAExC,CAAC;AAEF,eAAO,MAAM,4BAA4B,oKAExC,CAAC;AAEF,eAAO,MAAM,4BAA4B,oEAExC,CAAC"}
@@ -67,6 +67,14 @@ export const RECORD_VARIANTS = `
67
67
  query($recordId: ID!, $limit: Int, $offset: Int) { recordVariants(recordId: $recordId, limit: $limit, offset: $offset) { items { id variantKey variantName isDefault priority createdAt } } }
68
68
  `;
69
69
  // --- Models ---
70
+ export const MODELS_FOR_CODEGEN = `
71
+ query($limit: Int) {
72
+ models(limit: $limit) {
73
+ items { id key name pluralName description category fields config hooks }
74
+ total
75
+ }
76
+ }
77
+ `;
70
78
  export const MODEL_BY_KEY = `
71
79
  query($key: String!) { modelByKey(key: $key) { id key name pluralName description category icon fields config hooks displayField extensionId systemEntity deletable editable currentVersionId publishedVersionNumber createdAt updatedAt } }
72
80
  `;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eide/foir-cli",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Universal platform CLI for EIDE — scriptable, composable resource management",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -13,6 +13,10 @@
13
13
  ".": {
14
14
  "types": "./dist/cli.js",
15
15
  "import": "./dist/cli.js"
16
+ },
17
+ "./config": {
18
+ "types": "./dist/config/types.js",
19
+ "import": "./dist/config/types.js"
16
20
  }
17
21
  },
18
22
  "files": [
@@ -32,7 +36,8 @@
32
36
  "cms",
33
37
  "cli",
34
38
  "graphql",
35
- "platform"
39
+ "platform",
40
+ "codegen"
36
41
  ],
37
42
  "author": "EIDE Team",
38
43
  "license": "UNLICENSED",
@@ -43,7 +48,8 @@
43
48
  "graphql-request": "^7.1.2",
44
49
  "inquirer": "^9.2.12",
45
50
  "open": "^10.1.0",
46
- "ora": "^8.1.1"
51
+ "ora": "^8.1.1",
52
+ "prettier": "^3.4.2"
47
53
  },
48
54
  "devDependencies": {
49
55
  "@foir/config": "workspace:*",