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