@tekton-ui/core 0.2.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 +758 -0
- package/dist/blueprint.d.ts +44 -0
- package/dist/blueprint.d.ts.map +1 -0
- package/dist/blueprint.js +163 -0
- package/dist/blueprint.js.map +1 -0
- package/dist/component-schemas.d.ts +78 -0
- package/dist/component-schemas.d.ts.map +1 -0
- package/dist/component-schemas.js +1037 -0
- package/dist/component-schemas.js.map +1 -0
- package/dist/css-generator.d.ts +42 -0
- package/dist/css-generator.d.ts.map +1 -0
- package/dist/css-generator.js +339 -0
- package/dist/css-generator.js.map +1 -0
- package/dist/icon-library.d.ts +109 -0
- package/dist/icon-library.d.ts.map +1 -0
- package/dist/icon-library.js +204 -0
- package/dist/icon-library.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/layout-css-generator.d.ts +158 -0
- package/dist/layout-css-generator.d.ts.map +1 -0
- package/dist/layout-css-generator.js +901 -0
- package/dist/layout-css-generator.js.map +1 -0
- package/dist/layout-resolver.d.ts +92 -0
- package/dist/layout-resolver.d.ts.map +1 -0
- package/dist/layout-resolver.js +275 -0
- package/dist/layout-resolver.js.map +1 -0
- package/dist/layout-tokens/index.d.ts +16 -0
- package/dist/layout-tokens/index.d.ts.map +1 -0
- package/dist/layout-tokens/index.js +16 -0
- package/dist/layout-tokens/index.js.map +1 -0
- package/dist/layout-tokens/keyboard.d.ts +254 -0
- package/dist/layout-tokens/keyboard.d.ts.map +1 -0
- package/dist/layout-tokens/keyboard.js +407 -0
- package/dist/layout-tokens/keyboard.js.map +1 -0
- package/dist/layout-tokens/mobile-shells.d.ts +78 -0
- package/dist/layout-tokens/mobile-shells.d.ts.map +1 -0
- package/dist/layout-tokens/mobile-shells.js +635 -0
- package/dist/layout-tokens/mobile-shells.js.map +1 -0
- package/dist/layout-tokens/pages.d.ts +100 -0
- package/dist/layout-tokens/pages.d.ts.map +1 -0
- package/dist/layout-tokens/pages.js +576 -0
- package/dist/layout-tokens/pages.js.map +1 -0
- package/dist/layout-tokens/responsive.d.ts +109 -0
- package/dist/layout-tokens/responsive.d.ts.map +1 -0
- package/dist/layout-tokens/responsive.js +167 -0
- package/dist/layout-tokens/responsive.js.map +1 -0
- package/dist/layout-tokens/safe-area.d.ts +156 -0
- package/dist/layout-tokens/safe-area.d.ts.map +1 -0
- package/dist/layout-tokens/safe-area.js +316 -0
- package/dist/layout-tokens/safe-area.js.map +1 -0
- package/dist/layout-tokens/sections-advanced.d.ts +277 -0
- package/dist/layout-tokens/sections-advanced.d.ts.map +1 -0
- package/dist/layout-tokens/sections-advanced.js +593 -0
- package/dist/layout-tokens/sections-advanced.js.map +1 -0
- package/dist/layout-tokens/sections.d.ts +137 -0
- package/dist/layout-tokens/sections.d.ts.map +1 -0
- package/dist/layout-tokens/sections.js +694 -0
- package/dist/layout-tokens/sections.js.map +1 -0
- package/dist/layout-tokens/shells.d.ts +77 -0
- package/dist/layout-tokens/shells.d.ts.map +1 -0
- package/dist/layout-tokens/shells.js +408 -0
- package/dist/layout-tokens/shells.js.map +1 -0
- package/dist/layout-tokens/touch-target.d.ts +119 -0
- package/dist/layout-tokens/touch-target.d.ts.map +1 -0
- package/dist/layout-tokens/touch-target.js +156 -0
- package/dist/layout-tokens/touch-target.js.map +1 -0
- package/dist/layout-tokens/types.d.ts +632 -0
- package/dist/layout-tokens/types.d.ts.map +1 -0
- package/dist/layout-tokens/types.js +49 -0
- package/dist/layout-tokens/types.js.map +1 -0
- package/dist/layout-validation.d.ts +1547 -0
- package/dist/layout-validation.d.ts.map +1 -0
- package/dist/layout-validation.js +628 -0
- package/dist/layout-validation.js.map +1 -0
- package/dist/render.d.ts +23 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +244 -0
- package/dist/render.js.map +1 -0
- package/dist/schema-validation.d.ts +208 -0
- package/dist/schema-validation.d.ts.map +1 -0
- package/dist/schema-validation.js +205 -0
- package/dist/schema-validation.js.map +1 -0
- package/dist/screen-generation/generators/css-in-js-generator.d.ts +82 -0
- package/dist/screen-generation/generators/css-in-js-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/css-in-js-generator.js +335 -0
- package/dist/screen-generation/generators/css-in-js-generator.js.map +1 -0
- package/dist/screen-generation/generators/index.d.ts +13 -0
- package/dist/screen-generation/generators/index.d.ts.map +1 -0
- package/dist/screen-generation/generators/index.js +32 -0
- package/dist/screen-generation/generators/index.js.map +1 -0
- package/dist/screen-generation/generators/react-generator.d.ts +100 -0
- package/dist/screen-generation/generators/react-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/react-generator.js +379 -0
- package/dist/screen-generation/generators/react-generator.js.map +1 -0
- package/dist/screen-generation/generators/tailwind-generator.d.ts +105 -0
- package/dist/screen-generation/generators/tailwind-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/tailwind-generator.js +355 -0
- package/dist/screen-generation/generators/tailwind-generator.js.map +1 -0
- package/dist/screen-generation/generators/types.d.ts +136 -0
- package/dist/screen-generation/generators/types.d.ts.map +1 -0
- package/dist/screen-generation/generators/types.js +18 -0
- package/dist/screen-generation/generators/types.js.map +1 -0
- package/dist/screen-generation/generators/utils.d.ts +187 -0
- package/dist/screen-generation/generators/utils.d.ts.map +1 -0
- package/dist/screen-generation/generators/utils.js +312 -0
- package/dist/screen-generation/generators/utils.js.map +1 -0
- package/dist/screen-generation/index.d.ts +14 -0
- package/dist/screen-generation/index.d.ts.map +1 -0
- package/dist/screen-generation/index.js +33 -0
- package/dist/screen-generation/index.js.map +1 -0
- package/dist/screen-generation/resolver/component-resolver.d.ts +157 -0
- package/dist/screen-generation/resolver/component-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/component-resolver.js +295 -0
- package/dist/screen-generation/resolver/component-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/index.d.ts +10 -0
- package/dist/screen-generation/resolver/index.d.ts.map +1 -0
- package/dist/screen-generation/resolver/index.js +46 -0
- package/dist/screen-generation/resolver/index.js.map +1 -0
- package/dist/screen-generation/resolver/layout-resolver.d.ts +155 -0
- package/dist/screen-generation/resolver/layout-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/layout-resolver.js +193 -0
- package/dist/screen-generation/resolver/layout-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/screen-resolver.d.ts +174 -0
- package/dist/screen-generation/resolver/screen-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/screen-resolver.js +373 -0
- package/dist/screen-generation/resolver/screen-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/token-resolver.d.ts +170 -0
- package/dist/screen-generation/resolver/token-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/token-resolver.js +260 -0
- package/dist/screen-generation/resolver/token-resolver.js.map +1 -0
- package/dist/screen-generation/types.d.ts +116 -0
- package/dist/screen-generation/types.d.ts.map +1 -0
- package/dist/screen-generation/types.js +33 -0
- package/dist/screen-generation/types.js.map +1 -0
- package/dist/screen-generation/validators.d.ts +286 -0
- package/dist/screen-generation/validators.d.ts.map +1 -0
- package/dist/screen-generation/validators.js +323 -0
- package/dist/screen-generation/validators.js.map +1 -0
- package/dist/screen-templates/__tests__/registry.test.d.ts +6 -0
- package/dist/screen-templates/__tests__/registry.test.d.ts.map +1 -0
- package/dist/screen-templates/__tests__/registry.test.js +247 -0
- package/dist/screen-templates/__tests__/registry.test.js.map +1 -0
- package/dist/screen-templates/__tests__/templates.test.d.ts +6 -0
- package/dist/screen-templates/__tests__/templates.test.d.ts.map +1 -0
- package/dist/screen-templates/__tests__/templates.test.js +179 -0
- package/dist/screen-templates/__tests__/templates.test.js.map +1 -0
- package/dist/screen-templates/index.d.ts +39 -0
- package/dist/screen-templates/index.d.ts.map +1 -0
- package/dist/screen-templates/index.js +79 -0
- package/dist/screen-templates/index.js.map +1 -0
- package/dist/screen-templates/registry.d.ts +177 -0
- package/dist/screen-templates/registry.d.ts.map +1 -0
- package/dist/screen-templates/registry.js +274 -0
- package/dist/screen-templates/registry.js.map +1 -0
- package/dist/screen-templates/templates/account/index.d.ts +6 -0
- package/dist/screen-templates/templates/account/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/account/index.js +6 -0
- package/dist/screen-templates/templates/account/index.js.map +1 -0
- package/dist/screen-templates/templates/account/profile.d.ts +23 -0
- package/dist/screen-templates/templates/account/profile.d.ts.map +1 -0
- package/dist/screen-templates/templates/account/profile.js +249 -0
- package/dist/screen-templates/templates/account/profile.js.map +1 -0
- package/dist/screen-templates/templates/auth/forgot-password.d.ts +23 -0
- package/dist/screen-templates/templates/auth/forgot-password.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/forgot-password.js +203 -0
- package/dist/screen-templates/templates/auth/forgot-password.js.map +1 -0
- package/dist/screen-templates/templates/auth/index.d.ts +9 -0
- package/dist/screen-templates/templates/auth/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/index.js +9 -0
- package/dist/screen-templates/templates/auth/index.js.map +1 -0
- package/dist/screen-templates/templates/auth/login.d.ts +24 -0
- package/dist/screen-templates/templates/auth/login.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/login.js +254 -0
- package/dist/screen-templates/templates/auth/login.js.map +1 -0
- package/dist/screen-templates/templates/auth/signup.d.ts +24 -0
- package/dist/screen-templates/templates/auth/signup.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/signup.js +315 -0
- package/dist/screen-templates/templates/auth/signup.js.map +1 -0
- package/dist/screen-templates/templates/auth/verification.d.ts +23 -0
- package/dist/screen-templates/templates/auth/verification.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/verification.js +239 -0
- package/dist/screen-templates/templates/auth/verification.js.map +1 -0
- package/dist/screen-templates/templates/feedback/confirmation.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/confirmation.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/confirmation.js +107 -0
- package/dist/screen-templates/templates/feedback/confirmation.js.map +1 -0
- package/dist/screen-templates/templates/feedback/empty.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/empty.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/empty.js +90 -0
- package/dist/screen-templates/templates/feedback/empty.js.map +1 -0
- package/dist/screen-templates/templates/feedback/error.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/error.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/error.js +99 -0
- package/dist/screen-templates/templates/feedback/error.js.map +1 -0
- package/dist/screen-templates/templates/feedback/index.d.ts +10 -0
- package/dist/screen-templates/templates/feedback/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/index.js +10 -0
- package/dist/screen-templates/templates/feedback/index.js.map +1 -0
- package/dist/screen-templates/templates/feedback/loading.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/loading.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/loading.js +77 -0
- package/dist/screen-templates/templates/feedback/loading.js.map +1 -0
- package/dist/screen-templates/templates/feedback/success.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/success.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/success.js +99 -0
- package/dist/screen-templates/templates/feedback/success.js.map +1 -0
- package/dist/screen-templates/templates/home/index.d.ts +6 -0
- package/dist/screen-templates/templates/home/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/home/index.js +6 -0
- package/dist/screen-templates/templates/home/index.js.map +1 -0
- package/dist/screen-templates/templates/home/landing.d.ts +24 -0
- package/dist/screen-templates/templates/home/landing.d.ts.map +1 -0
- package/dist/screen-templates/templates/home/landing.js +197 -0
- package/dist/screen-templates/templates/home/landing.js.map +1 -0
- package/dist/screen-templates/templates/settings/index.d.ts +6 -0
- package/dist/screen-templates/templates/settings/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/settings/index.js +6 -0
- package/dist/screen-templates/templates/settings/index.js.map +1 -0
- package/dist/screen-templates/templates/settings/preferences.d.ts +24 -0
- package/dist/screen-templates/templates/settings/preferences.d.ts.map +1 -0
- package/dist/screen-templates/templates/settings/preferences.js +265 -0
- package/dist/screen-templates/templates/settings/preferences.js.map +1 -0
- package/dist/screen-templates/types.d.ts +229 -0
- package/dist/screen-templates/types.d.ts.map +1 -0
- package/dist/screen-templates/types.js +7 -0
- package/dist/screen-templates/types.js.map +1 -0
- package/dist/theme-v2.d.ts +228 -0
- package/dist/theme-v2.d.ts.map +1 -0
- package/dist/theme-v2.js +158 -0
- package/dist/theme-v2.js.map +1 -0
- package/dist/theme.d.ts +60 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +76 -0
- package/dist/theme.js.map +1 -0
- package/dist/token-resolver.d.ts +69 -0
- package/dist/token-resolver.d.ts.map +1 -0
- package/dist/token-resolver.js +122 -0
- package/dist/token-resolver.js.map +1 -0
- package/dist/token-validation.d.ts +432 -0
- package/dist/token-validation.d.ts.map +1 -0
- package/dist/token-validation.js +140 -0
- package/dist/token-validation.js.map +1 -0
- package/dist/tokens.d.ts +158 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +10 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +77 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Screen Definition Validation
|
|
3
|
+
* Zod-based runtime validation for screen definitions
|
|
4
|
+
* [SPEC-LAYOUT-002] [PHASE-1]
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import type { ValidationResult } from '../schema-validation.js';
|
|
8
|
+
import type { ScreenDefinition, ComponentDefinition, ComponentType, ValidationContext } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* ResponsiveOverrides Zod Schema
|
|
11
|
+
*/
|
|
12
|
+
export declare const ResponsiveOverridesSchema: z.ZodObject<{
|
|
13
|
+
sm: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
14
|
+
md: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
15
|
+
lg: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
16
|
+
xl: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
17
|
+
'2xl': z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
18
|
+
}, "strict", z.ZodTypeAny, {
|
|
19
|
+
sm?: Record<string, unknown> | undefined;
|
|
20
|
+
md?: Record<string, unknown> | undefined;
|
|
21
|
+
lg?: Record<string, unknown> | undefined;
|
|
22
|
+
xl?: Record<string, unknown> | undefined;
|
|
23
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
24
|
+
}, {
|
|
25
|
+
sm?: Record<string, unknown> | undefined;
|
|
26
|
+
md?: Record<string, unknown> | undefined;
|
|
27
|
+
lg?: Record<string, unknown> | undefined;
|
|
28
|
+
xl?: Record<string, unknown> | undefined;
|
|
29
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* ComponentDefinition Zod Schema
|
|
33
|
+
* Supports nested children (recursive)
|
|
34
|
+
*/
|
|
35
|
+
export declare const ComponentDefinitionSchema: z.ZodType<ComponentDefinition>;
|
|
36
|
+
/**
|
|
37
|
+
* SectionDefinition Zod Schema
|
|
38
|
+
*/
|
|
39
|
+
export declare const SectionDefinitionSchema: z.ZodObject<{
|
|
40
|
+
id: z.ZodString;
|
|
41
|
+
pattern: z.ZodString;
|
|
42
|
+
components: z.ZodArray<z.ZodType<ComponentDefinition, z.ZodTypeDef, ComponentDefinition>, "many">;
|
|
43
|
+
responsive: z.ZodOptional<z.ZodObject<{
|
|
44
|
+
sm: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
45
|
+
md: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
46
|
+
lg: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
47
|
+
xl: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
48
|
+
'2xl': z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
49
|
+
}, "strict", z.ZodTypeAny, {
|
|
50
|
+
sm?: Record<string, unknown> | undefined;
|
|
51
|
+
md?: Record<string, unknown> | undefined;
|
|
52
|
+
lg?: Record<string, unknown> | undefined;
|
|
53
|
+
xl?: Record<string, unknown> | undefined;
|
|
54
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
55
|
+
}, {
|
|
56
|
+
sm?: Record<string, unknown> | undefined;
|
|
57
|
+
md?: Record<string, unknown> | undefined;
|
|
58
|
+
lg?: Record<string, unknown> | undefined;
|
|
59
|
+
xl?: Record<string, unknown> | undefined;
|
|
60
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
61
|
+
}>>;
|
|
62
|
+
}, "strip", z.ZodTypeAny, {
|
|
63
|
+
id: string;
|
|
64
|
+
pattern: string;
|
|
65
|
+
components: ComponentDefinition[];
|
|
66
|
+
responsive?: {
|
|
67
|
+
sm?: Record<string, unknown> | undefined;
|
|
68
|
+
md?: Record<string, unknown> | undefined;
|
|
69
|
+
lg?: Record<string, unknown> | undefined;
|
|
70
|
+
xl?: Record<string, unknown> | undefined;
|
|
71
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
72
|
+
} | undefined;
|
|
73
|
+
}, {
|
|
74
|
+
id: string;
|
|
75
|
+
pattern: string;
|
|
76
|
+
components: ComponentDefinition[];
|
|
77
|
+
responsive?: {
|
|
78
|
+
sm?: Record<string, unknown> | undefined;
|
|
79
|
+
md?: Record<string, unknown> | undefined;
|
|
80
|
+
lg?: Record<string, unknown> | undefined;
|
|
81
|
+
xl?: Record<string, unknown> | undefined;
|
|
82
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
83
|
+
} | undefined;
|
|
84
|
+
}>;
|
|
85
|
+
/**
|
|
86
|
+
* ScreenMeta Zod Schema
|
|
87
|
+
*/
|
|
88
|
+
export declare const ScreenMetaSchema: z.ZodObject<{
|
|
89
|
+
author: z.ZodOptional<z.ZodString>;
|
|
90
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
91
|
+
version: z.ZodOptional<z.ZodString>;
|
|
92
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
93
|
+
}, "strip", z.ZodTypeAny, {
|
|
94
|
+
author?: string | undefined;
|
|
95
|
+
createdAt?: string | undefined;
|
|
96
|
+
version?: string | undefined;
|
|
97
|
+
tags?: string[] | undefined;
|
|
98
|
+
}, {
|
|
99
|
+
author?: string | undefined;
|
|
100
|
+
createdAt?: string | undefined;
|
|
101
|
+
version?: string | undefined;
|
|
102
|
+
tags?: string[] | undefined;
|
|
103
|
+
}>;
|
|
104
|
+
/**
|
|
105
|
+
* ScreenDefinition Zod Schema
|
|
106
|
+
*/
|
|
107
|
+
export declare const ScreenDefinitionSchema: z.ZodObject<{
|
|
108
|
+
id: z.ZodString;
|
|
109
|
+
name: z.ZodString;
|
|
110
|
+
description: z.ZodOptional<z.ZodString>;
|
|
111
|
+
shell: z.ZodString;
|
|
112
|
+
page: z.ZodString;
|
|
113
|
+
themeId: z.ZodDefault<z.ZodString>;
|
|
114
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
115
|
+
id: z.ZodString;
|
|
116
|
+
pattern: z.ZodString;
|
|
117
|
+
components: z.ZodArray<z.ZodType<ComponentDefinition, z.ZodTypeDef, ComponentDefinition>, "many">;
|
|
118
|
+
responsive: z.ZodOptional<z.ZodObject<{
|
|
119
|
+
sm: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
120
|
+
md: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
121
|
+
lg: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
122
|
+
xl: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
123
|
+
'2xl': z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
124
|
+
}, "strict", z.ZodTypeAny, {
|
|
125
|
+
sm?: Record<string, unknown> | undefined;
|
|
126
|
+
md?: Record<string, unknown> | undefined;
|
|
127
|
+
lg?: Record<string, unknown> | undefined;
|
|
128
|
+
xl?: Record<string, unknown> | undefined;
|
|
129
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
130
|
+
}, {
|
|
131
|
+
sm?: Record<string, unknown> | undefined;
|
|
132
|
+
md?: Record<string, unknown> | undefined;
|
|
133
|
+
lg?: Record<string, unknown> | undefined;
|
|
134
|
+
xl?: Record<string, unknown> | undefined;
|
|
135
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
136
|
+
}>>;
|
|
137
|
+
}, "strip", z.ZodTypeAny, {
|
|
138
|
+
id: string;
|
|
139
|
+
pattern: string;
|
|
140
|
+
components: ComponentDefinition[];
|
|
141
|
+
responsive?: {
|
|
142
|
+
sm?: Record<string, unknown> | undefined;
|
|
143
|
+
md?: Record<string, unknown> | undefined;
|
|
144
|
+
lg?: Record<string, unknown> | undefined;
|
|
145
|
+
xl?: Record<string, unknown> | undefined;
|
|
146
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
147
|
+
} | undefined;
|
|
148
|
+
}, {
|
|
149
|
+
id: string;
|
|
150
|
+
pattern: string;
|
|
151
|
+
components: ComponentDefinition[];
|
|
152
|
+
responsive?: {
|
|
153
|
+
sm?: Record<string, unknown> | undefined;
|
|
154
|
+
md?: Record<string, unknown> | undefined;
|
|
155
|
+
lg?: Record<string, unknown> | undefined;
|
|
156
|
+
xl?: Record<string, unknown> | undefined;
|
|
157
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
158
|
+
} | undefined;
|
|
159
|
+
}>, "many">;
|
|
160
|
+
meta: z.ZodOptional<z.ZodObject<{
|
|
161
|
+
author: z.ZodOptional<z.ZodString>;
|
|
162
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
163
|
+
version: z.ZodOptional<z.ZodString>;
|
|
164
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
165
|
+
}, "strip", z.ZodTypeAny, {
|
|
166
|
+
author?: string | undefined;
|
|
167
|
+
createdAt?: string | undefined;
|
|
168
|
+
version?: string | undefined;
|
|
169
|
+
tags?: string[] | undefined;
|
|
170
|
+
}, {
|
|
171
|
+
author?: string | undefined;
|
|
172
|
+
createdAt?: string | undefined;
|
|
173
|
+
version?: string | undefined;
|
|
174
|
+
tags?: string[] | undefined;
|
|
175
|
+
}>>;
|
|
176
|
+
}, "strip", z.ZodTypeAny, {
|
|
177
|
+
name: string;
|
|
178
|
+
id: string;
|
|
179
|
+
shell: string;
|
|
180
|
+
page: string;
|
|
181
|
+
themeId: string;
|
|
182
|
+
sections: {
|
|
183
|
+
id: string;
|
|
184
|
+
pattern: string;
|
|
185
|
+
components: ComponentDefinition[];
|
|
186
|
+
responsive?: {
|
|
187
|
+
sm?: Record<string, unknown> | undefined;
|
|
188
|
+
md?: Record<string, unknown> | undefined;
|
|
189
|
+
lg?: Record<string, unknown> | undefined;
|
|
190
|
+
xl?: Record<string, unknown> | undefined;
|
|
191
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
192
|
+
} | undefined;
|
|
193
|
+
}[];
|
|
194
|
+
description?: string | undefined;
|
|
195
|
+
meta?: {
|
|
196
|
+
author?: string | undefined;
|
|
197
|
+
createdAt?: string | undefined;
|
|
198
|
+
version?: string | undefined;
|
|
199
|
+
tags?: string[] | undefined;
|
|
200
|
+
} | undefined;
|
|
201
|
+
}, {
|
|
202
|
+
name: string;
|
|
203
|
+
id: string;
|
|
204
|
+
shell: string;
|
|
205
|
+
page: string;
|
|
206
|
+
sections: {
|
|
207
|
+
id: string;
|
|
208
|
+
pattern: string;
|
|
209
|
+
components: ComponentDefinition[];
|
|
210
|
+
responsive?: {
|
|
211
|
+
sm?: Record<string, unknown> | undefined;
|
|
212
|
+
md?: Record<string, unknown> | undefined;
|
|
213
|
+
lg?: Record<string, unknown> | undefined;
|
|
214
|
+
xl?: Record<string, unknown> | undefined;
|
|
215
|
+
'2xl'?: Record<string, unknown> | undefined;
|
|
216
|
+
} | undefined;
|
|
217
|
+
}[];
|
|
218
|
+
description?: string | undefined;
|
|
219
|
+
themeId?: string | undefined;
|
|
220
|
+
meta?: {
|
|
221
|
+
author?: string | undefined;
|
|
222
|
+
createdAt?: string | undefined;
|
|
223
|
+
version?: string | undefined;
|
|
224
|
+
tags?: string[] | undefined;
|
|
225
|
+
} | undefined;
|
|
226
|
+
}>;
|
|
227
|
+
/**
|
|
228
|
+
* Validate a ComponentDefinition
|
|
229
|
+
* @param component - Component definition to validate
|
|
230
|
+
* @returns Validation result with helpful error messages
|
|
231
|
+
*/
|
|
232
|
+
export declare function validateComponent(component: unknown): ValidationResult;
|
|
233
|
+
/**
|
|
234
|
+
* Validate a SectionDefinition
|
|
235
|
+
* @param section - Section definition to validate
|
|
236
|
+
* @returns Validation result with helpful error messages
|
|
237
|
+
*/
|
|
238
|
+
export declare function validateSection(section: unknown): ValidationResult;
|
|
239
|
+
/**
|
|
240
|
+
* Validate a ScreenDefinition
|
|
241
|
+
* @param screen - Screen definition to validate
|
|
242
|
+
* @param context - Optional validation context for additional checks
|
|
243
|
+
* @returns Validation result with helpful error messages
|
|
244
|
+
*/
|
|
245
|
+
export declare function validateScreenDefinition(screen: unknown, context?: ValidationContext): ValidationResult;
|
|
246
|
+
/**
|
|
247
|
+
* Assert that a screen definition is valid (throws on invalid)
|
|
248
|
+
* @param screen - Screen definition to validate
|
|
249
|
+
* @param context - Optional validation context
|
|
250
|
+
* @throws Error if validation fails
|
|
251
|
+
*/
|
|
252
|
+
export declare function assertValidScreenDefinition(screen: unknown, context?: ValidationContext): asserts screen is ScreenDefinition;
|
|
253
|
+
/**
|
|
254
|
+
* Validate multiple screen definitions
|
|
255
|
+
* @param screens - Array of screen definitions to validate
|
|
256
|
+
* @param context - Optional validation context
|
|
257
|
+
* @returns Validation summary
|
|
258
|
+
*/
|
|
259
|
+
export declare function validateScreenDefinitions(screens: unknown[], context?: ValidationContext): {
|
|
260
|
+
totalScreens: number;
|
|
261
|
+
validScreens: number;
|
|
262
|
+
invalidScreens: number;
|
|
263
|
+
validationResults: Array<{
|
|
264
|
+
id: string;
|
|
265
|
+
valid: boolean;
|
|
266
|
+
errors?: string[];
|
|
267
|
+
warnings?: string[];
|
|
268
|
+
}>;
|
|
269
|
+
};
|
|
270
|
+
/**
|
|
271
|
+
* Check if a token ID matches the shell pattern
|
|
272
|
+
*/
|
|
273
|
+
export declare function isValidShellToken(tokenId: string): boolean;
|
|
274
|
+
/**
|
|
275
|
+
* Check if a token ID matches the page pattern
|
|
276
|
+
*/
|
|
277
|
+
export declare function isValidPageToken(tokenId: string): boolean;
|
|
278
|
+
/**
|
|
279
|
+
* Check if a token ID matches the section pattern
|
|
280
|
+
*/
|
|
281
|
+
export declare function isValidSectionToken(tokenId: string): boolean;
|
|
282
|
+
/**
|
|
283
|
+
* Get all component types used in a screen definition
|
|
284
|
+
*/
|
|
285
|
+
export declare function getUsedComponentTypes(screen: ScreenDefinition): Set<ComponentType>;
|
|
286
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/screen-generation/validators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAkEpB;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EAQ3B,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAapE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUlC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAW3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBjC,CAAC;AAMH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,gBAAgB,CActE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAclE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAqElB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,IAAI,gBAAgB,CAKpC;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAAE,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,KAAK,CAAC;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC,CAAC;CACJ,CAmBA;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CAAC,aAAa,CAAC,CAmBlF"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Screen Definition Validation
|
|
3
|
+
* Zod-based runtime validation for screen definitions
|
|
4
|
+
* [SPEC-LAYOUT-002] [PHASE-1]
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Component Type Validation
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Component type enum - 20 component types
|
|
12
|
+
*/
|
|
13
|
+
const COMPONENT_TYPES = [
|
|
14
|
+
// Primitive (10)
|
|
15
|
+
'Button',
|
|
16
|
+
'Input',
|
|
17
|
+
'Text',
|
|
18
|
+
'Heading',
|
|
19
|
+
'Checkbox',
|
|
20
|
+
'Radio',
|
|
21
|
+
'Switch',
|
|
22
|
+
'Slider',
|
|
23
|
+
'Badge',
|
|
24
|
+
'Avatar',
|
|
25
|
+
// Composed (10)
|
|
26
|
+
'Card',
|
|
27
|
+
'Modal',
|
|
28
|
+
'Tabs',
|
|
29
|
+
'Table',
|
|
30
|
+
'Link',
|
|
31
|
+
'List',
|
|
32
|
+
'Image',
|
|
33
|
+
'Form',
|
|
34
|
+
'Dropdown',
|
|
35
|
+
'Progress',
|
|
36
|
+
];
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// Token ID Pattern Validation
|
|
39
|
+
// ============================================================================
|
|
40
|
+
/**
|
|
41
|
+
* Shell token ID pattern: shell.{platform}.{name}
|
|
42
|
+
* Examples: shell.web.dashboard, shell.mobile.app
|
|
43
|
+
*/
|
|
44
|
+
const SHELL_TOKEN_PATTERN = /^shell\.[a-z]+\.[a-z-]+$/;
|
|
45
|
+
/**
|
|
46
|
+
* Page token ID pattern: page.{name}
|
|
47
|
+
* Examples: page.dashboard, page.settings
|
|
48
|
+
*/
|
|
49
|
+
const PAGE_TOKEN_PATTERN = /^page\.[a-z-]+$/;
|
|
50
|
+
/**
|
|
51
|
+
* Section token ID pattern: section.{name} or section.{name}-{number}
|
|
52
|
+
* Examples: section.grid-4, section.hero, section.split
|
|
53
|
+
*/
|
|
54
|
+
const SECTION_TOKEN_PATTERN = /^section\.[a-z]+([-][a-z0-9]+)*$/;
|
|
55
|
+
/**
|
|
56
|
+
* Screen ID pattern: kebab-case
|
|
57
|
+
* Examples: user-dashboard, settings-page
|
|
58
|
+
*/
|
|
59
|
+
const SCREEN_ID_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Zod Schemas
|
|
62
|
+
// ============================================================================
|
|
63
|
+
/**
|
|
64
|
+
* ResponsiveOverrides Zod Schema
|
|
65
|
+
*/
|
|
66
|
+
export const ResponsiveOverridesSchema = z
|
|
67
|
+
.object({
|
|
68
|
+
sm: z.record(z.unknown()).optional(),
|
|
69
|
+
md: z.record(z.unknown()).optional(),
|
|
70
|
+
lg: z.record(z.unknown()).optional(),
|
|
71
|
+
xl: z.record(z.unknown()).optional(),
|
|
72
|
+
'2xl': z.record(z.unknown()).optional(),
|
|
73
|
+
})
|
|
74
|
+
.strict();
|
|
75
|
+
/**
|
|
76
|
+
* ComponentDefinition Zod Schema
|
|
77
|
+
* Supports nested children (recursive)
|
|
78
|
+
*/
|
|
79
|
+
export const ComponentDefinitionSchema = z.lazy(() => z.object({
|
|
80
|
+
type: z.enum(COMPONENT_TYPES, {
|
|
81
|
+
errorMap: () => ({
|
|
82
|
+
message: `Component type must be one of: ${COMPONENT_TYPES.join(', ')}`,
|
|
83
|
+
}),
|
|
84
|
+
}),
|
|
85
|
+
props: z.record(z.unknown(), {
|
|
86
|
+
errorMap: () => ({ message: 'Component props must be a valid object' }),
|
|
87
|
+
}),
|
|
88
|
+
children: z.array(z.union([ComponentDefinitionSchema, z.string()])).optional(),
|
|
89
|
+
slot: z.string().optional(),
|
|
90
|
+
}));
|
|
91
|
+
/**
|
|
92
|
+
* SectionDefinition Zod Schema
|
|
93
|
+
*/
|
|
94
|
+
export const SectionDefinitionSchema = z.object({
|
|
95
|
+
id: z.string().min(1, 'Section ID is required and cannot be empty'),
|
|
96
|
+
pattern: z
|
|
97
|
+
.string()
|
|
98
|
+
.regex(SECTION_TOKEN_PATTERN, 'Section pattern must match: section.{name} or section.{name}-{number} (e.g., "section.grid-4")'),
|
|
99
|
+
components: z.array(ComponentDefinitionSchema).min(1, 'Section must have at least one component'),
|
|
100
|
+
responsive: ResponsiveOverridesSchema.optional(),
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* ScreenMeta Zod Schema
|
|
104
|
+
*/
|
|
105
|
+
export const ScreenMetaSchema = z.object({
|
|
106
|
+
author: z.string().optional(),
|
|
107
|
+
createdAt: z
|
|
108
|
+
.string()
|
|
109
|
+
.datetime({ message: 'createdAt must be a valid ISO 8601 date-time string' })
|
|
110
|
+
.optional(),
|
|
111
|
+
version: z
|
|
112
|
+
.string()
|
|
113
|
+
.regex(/^\d+\.\d+\.\d+$/, 'version must follow semantic versioning (e.g., "1.0.0")')
|
|
114
|
+
.optional(),
|
|
115
|
+
tags: z.array(z.string()).optional(),
|
|
116
|
+
});
|
|
117
|
+
/**
|
|
118
|
+
* ScreenDefinition Zod Schema
|
|
119
|
+
*/
|
|
120
|
+
export const ScreenDefinitionSchema = z.object({
|
|
121
|
+
id: z
|
|
122
|
+
.string()
|
|
123
|
+
.regex(SCREEN_ID_PATTERN, 'Screen ID must be kebab-case (lowercase letters, numbers, hyphens)'),
|
|
124
|
+
name: z.string().min(1, 'Screen name is required and cannot be empty'),
|
|
125
|
+
description: z.string().optional(),
|
|
126
|
+
shell: z
|
|
127
|
+
.string()
|
|
128
|
+
.regex(SHELL_TOKEN_PATTERN, 'Shell token must match pattern: shell.{platform}.{name} (e.g., "shell.web.dashboard")'),
|
|
129
|
+
page: z
|
|
130
|
+
.string()
|
|
131
|
+
.regex(PAGE_TOKEN_PATTERN, 'Page token must match pattern: page.{name} (e.g., "page.dashboard")'),
|
|
132
|
+
themeId: z.string().default('default'),
|
|
133
|
+
sections: z
|
|
134
|
+
.array(SectionDefinitionSchema)
|
|
135
|
+
.min(1, 'Screen must have at least one section definition'),
|
|
136
|
+
meta: ScreenMetaSchema.optional(),
|
|
137
|
+
});
|
|
138
|
+
// ============================================================================
|
|
139
|
+
// Validation Functions
|
|
140
|
+
// ============================================================================
|
|
141
|
+
/**
|
|
142
|
+
* Validate a ComponentDefinition
|
|
143
|
+
* @param component - Component definition to validate
|
|
144
|
+
* @returns Validation result with helpful error messages
|
|
145
|
+
*/
|
|
146
|
+
export function validateComponent(component) {
|
|
147
|
+
try {
|
|
148
|
+
ComponentDefinitionSchema.parse(component);
|
|
149
|
+
return { valid: true };
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
if (error instanceof z.ZodError) {
|
|
153
|
+
const errors = error.errors.map(err => {
|
|
154
|
+
const path = err.path.length > 0 ? `${err.path.join('.')}: ` : '';
|
|
155
|
+
return `${path}${err.message}`;
|
|
156
|
+
});
|
|
157
|
+
return { valid: false, errors };
|
|
158
|
+
}
|
|
159
|
+
return { valid: false, errors: ['Unknown validation error'] };
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Validate a SectionDefinition
|
|
164
|
+
* @param section - Section definition to validate
|
|
165
|
+
* @returns Validation result with helpful error messages
|
|
166
|
+
*/
|
|
167
|
+
export function validateSection(section) {
|
|
168
|
+
try {
|
|
169
|
+
SectionDefinitionSchema.parse(section);
|
|
170
|
+
return { valid: true };
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
if (error instanceof z.ZodError) {
|
|
174
|
+
const errors = error.errors.map(err => {
|
|
175
|
+
const path = err.path.length > 0 ? `${err.path.join('.')}: ` : '';
|
|
176
|
+
return `${path}${err.message}`;
|
|
177
|
+
});
|
|
178
|
+
return { valid: false, errors };
|
|
179
|
+
}
|
|
180
|
+
return { valid: false, errors: ['Unknown validation error'] };
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Validate a ScreenDefinition
|
|
185
|
+
* @param screen - Screen definition to validate
|
|
186
|
+
* @param context - Optional validation context for additional checks
|
|
187
|
+
* @returns Validation result with helpful error messages
|
|
188
|
+
*/
|
|
189
|
+
export function validateScreenDefinition(screen, context) {
|
|
190
|
+
const warnings = [];
|
|
191
|
+
// Basic schema validation
|
|
192
|
+
try {
|
|
193
|
+
ScreenDefinitionSchema.parse(screen);
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
if (error instanceof z.ZodError) {
|
|
197
|
+
const errors = error.errors.map(err => {
|
|
198
|
+
const path = err.path.length > 0 ? `${err.path.join('.')}: ` : '';
|
|
199
|
+
return `${path}${err.message}`;
|
|
200
|
+
});
|
|
201
|
+
return { valid: false, errors };
|
|
202
|
+
}
|
|
203
|
+
return { valid: false, errors: ['Unknown validation error'] };
|
|
204
|
+
}
|
|
205
|
+
// Type assertion after validation
|
|
206
|
+
const validScreen = screen;
|
|
207
|
+
// Context-based validation (if context provided)
|
|
208
|
+
if (context) {
|
|
209
|
+
// Check shell token availability
|
|
210
|
+
if (context.availableShells && !context.availableShells.includes(validScreen.shell)) {
|
|
211
|
+
warnings.push(`Shell token "${validScreen.shell}" not found in available shells`);
|
|
212
|
+
}
|
|
213
|
+
// Check page token availability
|
|
214
|
+
if (context.availablePages && !context.availablePages.includes(validScreen.page)) {
|
|
215
|
+
warnings.push(`Page token "${validScreen.page}" not found in available pages`);
|
|
216
|
+
}
|
|
217
|
+
// Check section pattern availability
|
|
218
|
+
if (context.availableSections) {
|
|
219
|
+
validScreen.sections.forEach(section => {
|
|
220
|
+
if (!context.availableSections.includes(section.pattern)) {
|
|
221
|
+
warnings.push(`Section pattern "${section.pattern}" in section "${section.id}" not found in available sections`);
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
// Check theme ID availability
|
|
226
|
+
if (context.availableThemes &&
|
|
227
|
+
validScreen.themeId &&
|
|
228
|
+
!context.availableThemes.includes(validScreen.themeId)) {
|
|
229
|
+
warnings.push(`Theme ID "${validScreen.themeId}" not found in available themes`);
|
|
230
|
+
}
|
|
231
|
+
// Strict mode: treat warnings as errors
|
|
232
|
+
if (context.strict && warnings.length > 0) {
|
|
233
|
+
return { valid: false, errors: warnings };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// Check for duplicate section IDs
|
|
237
|
+
const sectionIds = validScreen.sections.map(s => s.id);
|
|
238
|
+
const duplicateSectionIds = sectionIds.filter((id, index) => sectionIds.indexOf(id) !== index);
|
|
239
|
+
if (duplicateSectionIds.length > 0) {
|
|
240
|
+
warnings.push(`Duplicate section IDs found: ${[...new Set(duplicateSectionIds)].join(', ')}`);
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
valid: true,
|
|
244
|
+
warnings: warnings.length > 0 ? warnings : undefined,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Assert that a screen definition is valid (throws on invalid)
|
|
249
|
+
* @param screen - Screen definition to validate
|
|
250
|
+
* @param context - Optional validation context
|
|
251
|
+
* @throws Error if validation fails
|
|
252
|
+
*/
|
|
253
|
+
export function assertValidScreenDefinition(screen, context) {
|
|
254
|
+
const result = validateScreenDefinition(screen, context);
|
|
255
|
+
if (!result.valid) {
|
|
256
|
+
throw new Error(`Invalid screen definition: ${result.errors?.join(', ')}`);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Validate multiple screen definitions
|
|
261
|
+
* @param screens - Array of screen definitions to validate
|
|
262
|
+
* @param context - Optional validation context
|
|
263
|
+
* @returns Validation summary
|
|
264
|
+
*/
|
|
265
|
+
export function validateScreenDefinitions(screens, context) {
|
|
266
|
+
const results = screens.map((screen, index) => {
|
|
267
|
+
const result = validateScreenDefinition(screen, context);
|
|
268
|
+
const id = typeof screen === 'object' && screen !== null && 'id' in screen
|
|
269
|
+
? String(screen.id)
|
|
270
|
+
: `screen-${index}`;
|
|
271
|
+
return { id, ...result };
|
|
272
|
+
});
|
|
273
|
+
const validScreens = results.filter(r => r.valid).length;
|
|
274
|
+
const invalidScreens = results.filter(r => !r.valid).length;
|
|
275
|
+
return {
|
|
276
|
+
totalScreens: screens.length,
|
|
277
|
+
validScreens,
|
|
278
|
+
invalidScreens,
|
|
279
|
+
validationResults: results,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
// ============================================================================
|
|
283
|
+
// Utility Functions
|
|
284
|
+
// ============================================================================
|
|
285
|
+
/**
|
|
286
|
+
* Check if a token ID matches the shell pattern
|
|
287
|
+
*/
|
|
288
|
+
export function isValidShellToken(tokenId) {
|
|
289
|
+
return SHELL_TOKEN_PATTERN.test(tokenId);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Check if a token ID matches the page pattern
|
|
293
|
+
*/
|
|
294
|
+
export function isValidPageToken(tokenId) {
|
|
295
|
+
return PAGE_TOKEN_PATTERN.test(tokenId);
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Check if a token ID matches the section pattern
|
|
299
|
+
*/
|
|
300
|
+
export function isValidSectionToken(tokenId) {
|
|
301
|
+
return SECTION_TOKEN_PATTERN.test(tokenId);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Get all component types used in a screen definition
|
|
305
|
+
*/
|
|
306
|
+
export function getUsedComponentTypes(screen) {
|
|
307
|
+
const types = new Set();
|
|
308
|
+
function collectTypes(component) {
|
|
309
|
+
types.add(component.type);
|
|
310
|
+
if (component.children) {
|
|
311
|
+
component.children.forEach(child => {
|
|
312
|
+
if (typeof child !== 'string') {
|
|
313
|
+
collectTypes(child);
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
screen.sections.forEach(section => {
|
|
319
|
+
section.components.forEach(collectTypes);
|
|
320
|
+
});
|
|
321
|
+
return types;
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/screen-generation/validators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../../src/screen-templates/__tests__/registry.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|