@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,651 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates the field-types.ts file with:
|
|
3
|
+
* - Value types for each field type (what the data looks like)
|
|
4
|
+
* - Field definition types (how to define fields in config)
|
|
5
|
+
*
|
|
6
|
+
* @generated by UniformGen
|
|
7
|
+
*/
|
|
8
|
+
export function generateFieldTypesFile() {
|
|
9
|
+
return `/**
|
|
10
|
+
* Field Types and Definitions
|
|
11
|
+
*
|
|
12
|
+
* This file contains:
|
|
13
|
+
* - Value types: What the actual data looks like for each field type
|
|
14
|
+
* - Field definitions: How to define fields in entity model configurations
|
|
15
|
+
*
|
|
16
|
+
* @generated by UniformGen - DO NOT EDIT MANUALLY
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
// =============================================================================
|
|
20
|
+
// VALUE TYPES - What the data looks like
|
|
21
|
+
// =============================================================================
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Rich text content (Lexical JSON format)
|
|
25
|
+
*/
|
|
26
|
+
export type RichtextValue = unknown;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Currency value with amount and code
|
|
30
|
+
*/
|
|
31
|
+
export interface CurrencyValue {
|
|
32
|
+
amount: number;
|
|
33
|
+
currency: string; // ISO 4217 code (USD, EUR, etc.)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Image reference with metadata
|
|
38
|
+
*/
|
|
39
|
+
export interface ImageValue {
|
|
40
|
+
id: string;
|
|
41
|
+
url: string;
|
|
42
|
+
alt?: string;
|
|
43
|
+
width?: number;
|
|
44
|
+
height?: number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Video reference with metadata
|
|
49
|
+
*/
|
|
50
|
+
export interface VideoValue {
|
|
51
|
+
id: string;
|
|
52
|
+
url: string;
|
|
53
|
+
thumbnail?: string;
|
|
54
|
+
duration?: number;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* File reference with metadata
|
|
59
|
+
*/
|
|
60
|
+
export interface FileValue {
|
|
61
|
+
id: string;
|
|
62
|
+
url: string;
|
|
63
|
+
name: string;
|
|
64
|
+
size: number;
|
|
65
|
+
mimeType: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Address structure
|
|
70
|
+
*/
|
|
71
|
+
export interface AddressValue {
|
|
72
|
+
street?: string;
|
|
73
|
+
city?: string;
|
|
74
|
+
state?: string;
|
|
75
|
+
postalCode?: string;
|
|
76
|
+
country?: string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Link value (internal route or external URL)
|
|
81
|
+
*/
|
|
82
|
+
export interface LinkValue {
|
|
83
|
+
type: 'route' | 'url';
|
|
84
|
+
route?: string;
|
|
85
|
+
url?: string;
|
|
86
|
+
target?: '_self' | '_blank';
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Entity reference value
|
|
91
|
+
*/
|
|
92
|
+
export interface ReferenceValue {
|
|
93
|
+
_type: 'reference';
|
|
94
|
+
_schema: string;
|
|
95
|
+
naturalKey: string;
|
|
96
|
+
_preview?: Record<string, unknown>;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Composite/inline value
|
|
101
|
+
*/
|
|
102
|
+
export interface CompositeValue {
|
|
103
|
+
_type: 'composite';
|
|
104
|
+
_schema: string;
|
|
105
|
+
fields: Record<string, unknown>;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// =============================================================================
|
|
109
|
+
// FILTER OPERATOR TYPES - For typed filtering
|
|
110
|
+
// =============================================================================
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Text field filter operators
|
|
114
|
+
*/
|
|
115
|
+
export interface TextFilter {
|
|
116
|
+
eq?: string;
|
|
117
|
+
ne?: string;
|
|
118
|
+
contains?: string;
|
|
119
|
+
startsWith?: string;
|
|
120
|
+
endsWith?: string;
|
|
121
|
+
in?: string[];
|
|
122
|
+
notIn?: string[];
|
|
123
|
+
isNull?: boolean;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Number field filter operators
|
|
128
|
+
*/
|
|
129
|
+
export interface NumberFilter {
|
|
130
|
+
eq?: number;
|
|
131
|
+
ne?: number;
|
|
132
|
+
gt?: number;
|
|
133
|
+
gte?: number;
|
|
134
|
+
lt?: number;
|
|
135
|
+
lte?: number;
|
|
136
|
+
in?: number[];
|
|
137
|
+
notIn?: number[];
|
|
138
|
+
isNull?: boolean;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Boolean field filter operators
|
|
143
|
+
*/
|
|
144
|
+
export interface BooleanFilter {
|
|
145
|
+
eq?: boolean;
|
|
146
|
+
ne?: boolean;
|
|
147
|
+
isNull?: boolean;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Date field filter operators
|
|
152
|
+
* Values should be ISO 8601 date strings
|
|
153
|
+
*/
|
|
154
|
+
export interface DateFilter {
|
|
155
|
+
eq?: string;
|
|
156
|
+
ne?: string;
|
|
157
|
+
gt?: string;
|
|
158
|
+
gte?: string;
|
|
159
|
+
lt?: string;
|
|
160
|
+
lte?: string;
|
|
161
|
+
isNull?: boolean;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Select field filter operators (with literal type for values)
|
|
166
|
+
*/
|
|
167
|
+
export interface SelectFilter<T extends string = string> {
|
|
168
|
+
eq?: T;
|
|
169
|
+
ne?: T;
|
|
170
|
+
in?: T[];
|
|
171
|
+
notIn?: T[];
|
|
172
|
+
isNull?: boolean;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Multiselect field filter operators
|
|
177
|
+
*/
|
|
178
|
+
export interface MultiselectFilter<T extends string = string> {
|
|
179
|
+
contains?: T;
|
|
180
|
+
containsAny?: T[];
|
|
181
|
+
containsAll?: T[];
|
|
182
|
+
isNull?: boolean;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Reference field filter operators
|
|
187
|
+
*/
|
|
188
|
+
export interface ReferenceFilter {
|
|
189
|
+
eq?: string;
|
|
190
|
+
ne?: string;
|
|
191
|
+
in?: string[];
|
|
192
|
+
notIn?: string[];
|
|
193
|
+
isNull?: boolean;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Generic filter input for API
|
|
198
|
+
*/
|
|
199
|
+
export interface FilterInput {
|
|
200
|
+
field: string;
|
|
201
|
+
operator: string;
|
|
202
|
+
value: unknown;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Sort input for queries
|
|
207
|
+
*/
|
|
208
|
+
export interface SortInput {
|
|
209
|
+
field: string;
|
|
210
|
+
direction: 'ASC' | 'DESC';
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// =============================================================================
|
|
214
|
+
// RESOLVE TYPES - For frontend entity resolution
|
|
215
|
+
// =============================================================================
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Variant context for entity resolution
|
|
219
|
+
* Used to select the appropriate variant based on user context
|
|
220
|
+
*
|
|
221
|
+
* Context dimensions are configured in the CMS as "context" entities.
|
|
222
|
+
* Common contexts include: device, region, market, customerId, etc.
|
|
223
|
+
*/
|
|
224
|
+
export interface VariantContext {
|
|
225
|
+
/** Locale code for translation resolution (e.g., 'en-US', 'ja-JP') */
|
|
226
|
+
locale?: string;
|
|
227
|
+
/** Context dimensions for variant selection (dynamic, configured in CMS) */
|
|
228
|
+
contexts?: Record<string, unknown>;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Reference resolution options
|
|
233
|
+
*/
|
|
234
|
+
export interface ReferenceResolutionOptions {
|
|
235
|
+
/** Maximum depth for nested resolution (null = unlimited) */
|
|
236
|
+
maxDepth?: number;
|
|
237
|
+
/** Whether to resolve media references */
|
|
238
|
+
resolveMedia?: boolean;
|
|
239
|
+
/** Whether to resolve entity references */
|
|
240
|
+
resolveEntities?: boolean;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Resolved entity record metadata
|
|
245
|
+
*/
|
|
246
|
+
export interface ResolvedRecord {
|
|
247
|
+
id: string;
|
|
248
|
+
modelKey: string;
|
|
249
|
+
naturalKey: string | null;
|
|
250
|
+
metadata?: Record<string, unknown>;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Resolved variant info
|
|
255
|
+
*/
|
|
256
|
+
export interface ResolvedVariant {
|
|
257
|
+
id: string;
|
|
258
|
+
variantKey: string;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Zone layout mode
|
|
263
|
+
*/
|
|
264
|
+
export type ZoneLayoutMode = 'GRID' | 'LIST';
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Field source for debugging
|
|
268
|
+
*/
|
|
269
|
+
export type FieldSource = 'ENTITY' | 'TEMPLATE';
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Responsive visibility settings for zones
|
|
273
|
+
*/
|
|
274
|
+
export interface ZoneResponsiveSettings {
|
|
275
|
+
mobile?: boolean;
|
|
276
|
+
tablet?: boolean;
|
|
277
|
+
desktop?: boolean;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Grid position within a zone at a specific breakpoint
|
|
282
|
+
*/
|
|
283
|
+
export interface GridPosition {
|
|
284
|
+
x: number;
|
|
285
|
+
y: number;
|
|
286
|
+
w: number;
|
|
287
|
+
h: number;
|
|
288
|
+
minW?: number;
|
|
289
|
+
maxW?: number;
|
|
290
|
+
minH?: number;
|
|
291
|
+
maxH?: number;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Field layout positions per breakpoint
|
|
296
|
+
*/
|
|
297
|
+
export interface FieldLayout {
|
|
298
|
+
lg?: GridPosition;
|
|
299
|
+
md?: GridPosition;
|
|
300
|
+
sm?: GridPosition;
|
|
301
|
+
xs?: GridPosition;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Resolved field with value and layout attached
|
|
306
|
+
*/
|
|
307
|
+
export interface ResolvedField {
|
|
308
|
+
/** Field key */
|
|
309
|
+
key: string;
|
|
310
|
+
/** Field type - primitive type OR modelKey for inline entities OR 'zone' */
|
|
311
|
+
type: string;
|
|
312
|
+
/** Human-readable label */
|
|
313
|
+
label?: string;
|
|
314
|
+
/** Whether field is required */
|
|
315
|
+
required?: boolean;
|
|
316
|
+
/** Fully resolved value (can be ZoneValue when type is 'zone') */
|
|
317
|
+
value: unknown;
|
|
318
|
+
/** Grid layout position (used when layoutMode is GRID) */
|
|
319
|
+
layout?: FieldLayout;
|
|
320
|
+
/** Order in list (used when layoutMode is LIST, derived from zoneOrder) */
|
|
321
|
+
order?: number;
|
|
322
|
+
/** Where this field originated from (for debugging) */
|
|
323
|
+
source?: FieldSource;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Zone value structure - used when a field has type: 'zone'
|
|
328
|
+
* Contains entity fields placed in this zone
|
|
329
|
+
*/
|
|
330
|
+
export interface ZoneValue {
|
|
331
|
+
/** Zone identifier */
|
|
332
|
+
key: string;
|
|
333
|
+
/** Human-readable label */
|
|
334
|
+
label: string;
|
|
335
|
+
/** Layout mode for fields within this zone */
|
|
336
|
+
layoutMode: ZoneLayoutMode;
|
|
337
|
+
/** Responsive visibility settings */
|
|
338
|
+
responsive?: ZoneResponsiveSettings;
|
|
339
|
+
/** Entity fields placed in this zone */
|
|
340
|
+
fields: ResolvedField[];
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Grid configuration from design system
|
|
345
|
+
* Used by @eide/foir-renderer for layout positioning
|
|
346
|
+
*/
|
|
347
|
+
export interface GridConfig {
|
|
348
|
+
/** Breakpoint pixel values (e.g., { lg: 1200, md: 996, sm: 768, xs: 480 }) */
|
|
349
|
+
breakpoints: Record<string, number>;
|
|
350
|
+
/** Column counts per breakpoint (e.g., { lg: 12, md: 10, sm: 6, xs: 4 }) */
|
|
351
|
+
cols: Record<string, number>;
|
|
352
|
+
/** Height of each grid row in pixels */
|
|
353
|
+
rowHeight: number;
|
|
354
|
+
/** Padding around the container [x, y] */
|
|
355
|
+
containerPadding: [number, number];
|
|
356
|
+
/** Margin between grid items [x, y] */
|
|
357
|
+
margin: [number, number];
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Simplified template reference (no layout embedded)
|
|
362
|
+
* Layout information is now in the fields array
|
|
363
|
+
*/
|
|
364
|
+
export interface ResolvedTemplateRef {
|
|
365
|
+
id: string;
|
|
366
|
+
modelKey: string;
|
|
367
|
+
naturalKey: string | null;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* All renderable content (new unified structure)
|
|
372
|
+
*
|
|
373
|
+
* - Templates are just references (no layout embedded)
|
|
374
|
+
* - Zones become regular fields with type: 'zone'
|
|
375
|
+
* - Top-level fields array contains all renderable content
|
|
376
|
+
*/
|
|
377
|
+
export interface ResolvedContent {
|
|
378
|
+
/** Template reference (null if no template assigned) */
|
|
379
|
+
template: ResolvedTemplateRef | null;
|
|
380
|
+
/** Layout mode for the content (GRID if fields have positions, LIST otherwise) */
|
|
381
|
+
layoutMode: ZoneLayoutMode;
|
|
382
|
+
/** All renderable fields including zones (ordered for rendering) */
|
|
383
|
+
fields: ResolvedField[];
|
|
384
|
+
/** Content fields not placed in any zone/layout */
|
|
385
|
+
extraContent?: ResolvedField[];
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* Resolution context output
|
|
390
|
+
*/
|
|
391
|
+
export interface ResolutionContext {
|
|
392
|
+
locale: string;
|
|
393
|
+
contexts: Record<string, unknown>;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Breadcrumb node types
|
|
398
|
+
*/
|
|
399
|
+
export type BreadcrumbType = 'home' | 'context' | 'static' | 'entity';
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Breadcrumb for navigation
|
|
403
|
+
*/
|
|
404
|
+
export interface Breadcrumb {
|
|
405
|
+
/** Display label */
|
|
406
|
+
label: string;
|
|
407
|
+
/** Route URL */
|
|
408
|
+
url: string;
|
|
409
|
+
/** Node type for styling hints */
|
|
410
|
+
type?: BreadcrumbType;
|
|
411
|
+
/** Is this the current/active page? */
|
|
412
|
+
isCurrent?: boolean;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Base resolved entity content (new format)
|
|
417
|
+
*/
|
|
418
|
+
export interface ResolvedEntityContentBase {
|
|
419
|
+
record: ResolvedRecord;
|
|
420
|
+
variant: ResolvedVariant;
|
|
421
|
+
/** Renderable content (template with zones + extra content) */
|
|
422
|
+
content: ResolvedContent;
|
|
423
|
+
resolvedWith: ResolutionContext;
|
|
424
|
+
breadcrumbs?: Breadcrumb[];
|
|
425
|
+
/** Grid configuration from design system for layout rendering */
|
|
426
|
+
gridConfig?: GridConfig;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
// =============================================================================
|
|
430
|
+
// FIELD DEFINITION TYPES - How to define fields in config
|
|
431
|
+
// =============================================================================
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Base field definition properties shared by all field types
|
|
435
|
+
*/
|
|
436
|
+
export interface BaseFieldDef {
|
|
437
|
+
/** Unique field identifier (camelCase) */
|
|
438
|
+
key: string;
|
|
439
|
+
/** Display label */
|
|
440
|
+
label: string;
|
|
441
|
+
/** Whether field is required */
|
|
442
|
+
required?: boolean;
|
|
443
|
+
/** Help text shown to users */
|
|
444
|
+
helpText?: string;
|
|
445
|
+
/** Default value */
|
|
446
|
+
defaultValue?: unknown;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Text field definition
|
|
451
|
+
*/
|
|
452
|
+
export interface TextFieldDef extends BaseFieldDef {
|
|
453
|
+
type: 'text';
|
|
454
|
+
maxLength?: number;
|
|
455
|
+
minLength?: number;
|
|
456
|
+
pattern?: string;
|
|
457
|
+
ui?: {
|
|
458
|
+
widget?: 'text-input' | 'textarea' | 'code-editor';
|
|
459
|
+
placeholder?: string;
|
|
460
|
+
rows?: number;
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Number field definition
|
|
466
|
+
*/
|
|
467
|
+
export interface NumberFieldDef extends BaseFieldDef {
|
|
468
|
+
type: 'number';
|
|
469
|
+
min?: number;
|
|
470
|
+
max?: number;
|
|
471
|
+
step?: number;
|
|
472
|
+
ui?: {
|
|
473
|
+
widget?: 'number-input' | 'slider';
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Boolean field definition
|
|
479
|
+
*/
|
|
480
|
+
export interface BooleanFieldDef extends BaseFieldDef {
|
|
481
|
+
type: 'boolean';
|
|
482
|
+
ui?: {
|
|
483
|
+
widget?: 'checkbox' | 'switch';
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Date field definition
|
|
489
|
+
*/
|
|
490
|
+
export interface DateFieldDef extends BaseFieldDef {
|
|
491
|
+
type: 'date';
|
|
492
|
+
ui?: {
|
|
493
|
+
widget?: 'date-picker' | 'datetime-picker';
|
|
494
|
+
format?: 'date-only' | 'datetime';
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* Rich text field definition
|
|
500
|
+
*/
|
|
501
|
+
export interface RichtextFieldDef extends BaseFieldDef {
|
|
502
|
+
type: 'richtext';
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Image field definition
|
|
507
|
+
*/
|
|
508
|
+
export interface ImageFieldDef extends BaseFieldDef {
|
|
509
|
+
type: 'image';
|
|
510
|
+
allowedTypes?: string[];
|
|
511
|
+
maxSize?: number;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Video field definition
|
|
516
|
+
*/
|
|
517
|
+
export interface VideoFieldDef extends BaseFieldDef {
|
|
518
|
+
type: 'video';
|
|
519
|
+
allowedTypes?: string[];
|
|
520
|
+
maxSize?: number;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* File field definition
|
|
525
|
+
*/
|
|
526
|
+
export interface FileFieldDef extends BaseFieldDef {
|
|
527
|
+
type: 'file';
|
|
528
|
+
allowedTypes?: string[];
|
|
529
|
+
maxSize?: number;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Select field definition (single choice)
|
|
534
|
+
*/
|
|
535
|
+
export interface SelectFieldDef extends BaseFieldDef {
|
|
536
|
+
type: 'select';
|
|
537
|
+
options: Array<{ label: string; value: string }>;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* Multiselect field definition (multiple choices)
|
|
542
|
+
*/
|
|
543
|
+
export interface MultiselectFieldDef extends BaseFieldDef {
|
|
544
|
+
type: 'multiselect';
|
|
545
|
+
options: Array<{ label: string; value: string }>;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Entity reference field definition
|
|
550
|
+
*/
|
|
551
|
+
export interface EntityReferenceFieldDef extends BaseFieldDef {
|
|
552
|
+
type: 'entity-reference';
|
|
553
|
+
/** Entity model keys that can be referenced */
|
|
554
|
+
referenceTypes: string[];
|
|
555
|
+
/** Allow multiple references */
|
|
556
|
+
multiple?: boolean;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* List field definition (array of items)
|
|
561
|
+
*/
|
|
562
|
+
export interface ListFieldDef extends BaseFieldDef {
|
|
563
|
+
type: 'list';
|
|
564
|
+
/** Type of items in the list */
|
|
565
|
+
itemType: string;
|
|
566
|
+
minItems?: number;
|
|
567
|
+
maxItems?: number;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* Link field definition
|
|
572
|
+
*/
|
|
573
|
+
export interface LinkFieldDef extends BaseFieldDef {
|
|
574
|
+
type: 'link';
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
/**
|
|
578
|
+
* JSON field definition (unstructured data)
|
|
579
|
+
*/
|
|
580
|
+
export interface JsonFieldDef extends BaseFieldDef {
|
|
581
|
+
type: 'json';
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/**
|
|
585
|
+
* Design system style field definition
|
|
586
|
+
*/
|
|
587
|
+
export interface DesignSystemStyleFieldDef extends BaseFieldDef {
|
|
588
|
+
type: 'design-system-style';
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* Inline schema field definition (references another entity model)
|
|
593
|
+
* The type value is the key of an entity model with modes.inline = true
|
|
594
|
+
*/
|
|
595
|
+
export interface InlineSchemaFieldDef extends BaseFieldDef {
|
|
596
|
+
/** Entity model key (e.g., 'hero-banner', 'product-card') */
|
|
597
|
+
type: string;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* Union of all strongly-typed field definitions
|
|
602
|
+
*/
|
|
603
|
+
export type FieldDef =
|
|
604
|
+
| TextFieldDef
|
|
605
|
+
| NumberFieldDef
|
|
606
|
+
| BooleanFieldDef
|
|
607
|
+
| DateFieldDef
|
|
608
|
+
| RichtextFieldDef
|
|
609
|
+
| ImageFieldDef
|
|
610
|
+
| VideoFieldDef
|
|
611
|
+
| FileFieldDef
|
|
612
|
+
| SelectFieldDef
|
|
613
|
+
| MultiselectFieldDef
|
|
614
|
+
| EntityReferenceFieldDef
|
|
615
|
+
| ListFieldDef
|
|
616
|
+
| LinkFieldDef
|
|
617
|
+
| JsonFieldDef
|
|
618
|
+
| DesignSystemStyleFieldDef
|
|
619
|
+
| InlineSchemaFieldDef;
|
|
620
|
+
|
|
621
|
+
/**
|
|
622
|
+
* Known primitive field type keys
|
|
623
|
+
*/
|
|
624
|
+
export const PRIMITIVE_FIELD_TYPES = [
|
|
625
|
+
'text',
|
|
626
|
+
'number',
|
|
627
|
+
'boolean',
|
|
628
|
+
'date',
|
|
629
|
+
'richtext',
|
|
630
|
+
'image',
|
|
631
|
+
'video',
|
|
632
|
+
'file',
|
|
633
|
+
'select',
|
|
634
|
+
'multiselect',
|
|
635
|
+
'entity-reference',
|
|
636
|
+
'list',
|
|
637
|
+
'link',
|
|
638
|
+
'json',
|
|
639
|
+
'design-system-style',
|
|
640
|
+
] as const;
|
|
641
|
+
|
|
642
|
+
export type PrimitiveFieldType = typeof PRIMITIVE_FIELD_TYPES[number];
|
|
643
|
+
|
|
644
|
+
/**
|
|
645
|
+
* Check if a type is a primitive field type
|
|
646
|
+
*/
|
|
647
|
+
export function isPrimitiveFieldType(type: string): type is PrimitiveFieldType {
|
|
648
|
+
return PRIMITIVE_FIELD_TYPES.includes(type as PrimitiveFieldType);
|
|
649
|
+
}
|
|
650
|
+
`;
|
|
651
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/generators/types/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,iBAAiB,IAAI,MAAM,CA8H1C"}
|