@kubuild/schema 0.1.0 → 0.3.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 ADDED
@@ -0,0 +1,117 @@
1
+ # @kubuild/schema
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@kubuild/schema.svg)](https://www.npmjs.com/package/@kubuild/schema)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue)](https://www.typescriptlang.org/)
6
+
7
+ Zod schemas and inferred TypeScript definitions for the **KUBUILD** portable page document format (`.stora`), Action Pipeline, Form Configuration, and JSON Schema generation utilities.
8
+
9
+ ---
10
+
11
+ ## 📦 Installation
12
+
13
+ ```bash
14
+ # Using pnpm (recommended)
15
+ pnpm add @kubuild/schema
16
+
17
+ # Using npm
18
+ npm install @kubuild/schema
19
+
20
+ # Using yarn
21
+ yarn add @kubuild/schema
22
+ ```
23
+
24
+ ---
25
+
26
+ ## ✨ Features
27
+
28
+ - **Runtime Validation with Zod**: Strict validation and sanitization for all page document structures, node trees, styles, and action pipelines.
29
+ - **Portable Document Model**: Type-safe definitions for `PageDocument`, `Node`, `StyleObject`, `Metadata`, and `AnimationConfig`.
30
+ - **Action Pipeline Schema**: Rich action trigger models (`onClick`, `onSubmit`, `onChange`, `onLoad`) and step definitions (`apiRequest`, `showToast`, `openModal`, `closeModal`, `navigate`, `custom`).
31
+ - **Form & Field Binding Schema**: Data structures for form configuration, field validation rules (regex, required, min/max length, email), and variable state binding.
32
+ - **JSON Schema Export**: Utility functions (`generateJsonSchema`) to produce standard JSON Schema definitions for external tooling and validators.
33
+
34
+ ---
35
+
36
+ ## 🚀 Quick Usage
37
+
38
+ ### Validating a Page Document
39
+
40
+ ```typescript
41
+ import { PageDocumentSchema, type PageDocument } from '@kubuild/schema';
42
+
43
+ const untrustedData = {
44
+ schema: 'stora.page',
45
+ version: '1.0.0',
46
+ metadata: {
47
+ title: 'My Landing Page',
48
+ createdAt: new Date().toISOString()
49
+ },
50
+ document: {
51
+ id: 'root-1',
52
+ type: 'container',
53
+ children: [
54
+ {
55
+ id: 'heading-1',
56
+ type: 'heading',
57
+ props: { content: 'Welcome to KUBUILD' },
58
+ styles: { fontSize: '2rem', fontWeight: 'bold' }
59
+ }
60
+ ]
61
+ }
62
+ };
63
+
64
+ // Validates and returns strongly typed PageDocument
65
+ const result = PageDocumentSchema.safeParse(untrustedData);
66
+
67
+ if (result.success) {
68
+ const page: PageDocument = result.data;
69
+ console.log('Document valid:', page.metadata.title);
70
+ } else {
71
+ console.error('Validation errors:', result.error.format());
72
+ }
73
+ ```
74
+
75
+ ### Validating Action Pipelines
76
+
77
+ ```typescript
78
+ import { ActionPipelineSchema, type ActionPipeline } from '@kubuild/schema';
79
+
80
+ const pipelineData = {
81
+ id: 'pipeline-submit-form',
82
+ name: 'Submit Lead Form',
83
+ trigger: 'onSubmit',
84
+ steps: [
85
+ {
86
+ id: 'step-api-1',
87
+ type: 'apiRequest',
88
+ name: 'Send to Backend',
89
+ config: {
90
+ url: 'https://api.example.com/leads',
91
+ method: 'POST',
92
+ headers: { 'Content-Type': 'application/json' },
93
+ body: '{{form}}'
94
+ },
95
+ onSuccess: [
96
+ {
97
+ id: 'step-toast-success',
98
+ type: 'showToast',
99
+ name: 'Success Notification',
100
+ config: {
101
+ message: 'Thank you! We will get in touch.',
102
+ type: 'success'
103
+ }
104
+ }
105
+ ]
106
+ }
107
+ ]
108
+ };
109
+
110
+ const pipeline: ActionPipeline = ActionPipelineSchema.parse(pipelineData);
111
+ ```
112
+
113
+ ---
114
+
115
+ ## 📄 License
116
+
117
+ MIT © [KUBUILD](https://github.com/kustora/kubuild)
@@ -0,0 +1,425 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Action Trigger Types
4
+ * Events in the DOM or component lifecycle that can trigger an action pipeline.
5
+ */
6
+ export declare const ActionTriggerTypeSchema: z.ZodEnum<{
7
+ load: "load";
8
+ change: "change";
9
+ blur: "blur";
10
+ click: "click";
11
+ focus: "focus";
12
+ submit: "submit";
13
+ }>;
14
+ export type ActionTriggerType = z.infer<typeof ActionTriggerTypeSchema>;
15
+ export type ActionTrigger = ActionTriggerType;
16
+ export declare const ActionTriggerSchema: z.ZodEnum<{
17
+ load: "load";
18
+ change: "change";
19
+ blur: "blur";
20
+ click: "click";
21
+ focus: "focus";
22
+ submit: "submit";
23
+ }>;
24
+ /**
25
+ * Action Step Types
26
+ * Discrete operations executed sequentially or conditionally within an action pipeline.
27
+ */
28
+ export declare const ActionStepTypeSchema: z.ZodEnum<{
29
+ navigate: "navigate";
30
+ api_request: "api_request";
31
+ set_state: "set_state";
32
+ reset_form: "reset_form";
33
+ show_toast: "show_toast";
34
+ open_modal: "open_modal";
35
+ close_modal: "close_modal";
36
+ copy_clipboard: "copy_clipboard";
37
+ custom_event: "custom_event";
38
+ }>;
39
+ export type ActionStepType = z.infer<typeof ActionStepTypeSchema>;
40
+ /**
41
+ * Condition Operators for branch & conditional step execution.
42
+ */
43
+ export declare const ConditionOperatorSchema: z.ZodEnum<{
44
+ contains: "contains";
45
+ regex: "regex";
46
+ equals: "equals";
47
+ not_equals: "not_equals";
48
+ not_contains: "not_contains";
49
+ is_truthy: "is_truthy";
50
+ is_falsy: "is_falsy";
51
+ gt: "gt";
52
+ gte: "gte";
53
+ lt: "lt";
54
+ lte: "lte";
55
+ }>;
56
+ export type ConditionOperator = z.infer<typeof ConditionOperatorSchema>;
57
+ /**
58
+ * Action Step Condition Schema
59
+ * Evaluated before running a step. If condition fails, step is skipped.
60
+ */
61
+ export declare const ActionStepConditionSchema: z.ZodObject<{
62
+ field: z.ZodString;
63
+ operator: z.ZodEnum<{
64
+ contains: "contains";
65
+ regex: "regex";
66
+ equals: "equals";
67
+ not_equals: "not_equals";
68
+ not_contains: "not_contains";
69
+ is_truthy: "is_truthy";
70
+ is_falsy: "is_falsy";
71
+ gt: "gt";
72
+ gte: "gte";
73
+ lt: "lt";
74
+ lte: "lte";
75
+ }>;
76
+ value: z.ZodOptional<z.ZodUnknown>;
77
+ }, z.core.$strip>;
78
+ export type ActionStepCondition = z.infer<typeof ActionStepConditionSchema>;
79
+ export declare function isSafeActionUrl(url: string): boolean;
80
+ /**
81
+ * 1. API Request Step Payload Schema
82
+ */
83
+ export declare const ApiRequestStepPayloadSchema: z.ZodObject<{
84
+ url: z.ZodString;
85
+ method: z.ZodDefault<z.ZodEnum<{
86
+ GET: "GET";
87
+ POST: "POST";
88
+ PUT: "PUT";
89
+ DELETE: "DELETE";
90
+ PATCH: "PATCH";
91
+ HEAD: "HEAD";
92
+ OPTIONS: "OPTIONS";
93
+ }>>;
94
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
95
+ queryParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
96
+ body: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodArray<z.ZodUnknown>]>>;
97
+ bodyFormat: z.ZodOptional<z.ZodEnum<{
98
+ raw: "raw";
99
+ formData: "formData";
100
+ text: "text";
101
+ json: "json";
102
+ "form-data": "form-data";
103
+ urlencoded: "urlencoded";
104
+ "url-encoded": "url-encoded";
105
+ }>>;
106
+ bodyType: z.ZodOptional<z.ZodEnum<{
107
+ raw: "raw";
108
+ formData: "formData";
109
+ text: "text";
110
+ json: "json";
111
+ "form-data": "form-data";
112
+ urlencoded: "urlencoded";
113
+ "url-encoded": "url-encoded";
114
+ }>>;
115
+ timeout: z.ZodOptional<z.ZodNumber>;
116
+ responseMapping: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
117
+ }, z.core.$strip>;
118
+ export type ApiRequestStepPayload = z.infer<typeof ApiRequestStepPayloadSchema>;
119
+ /**
120
+ * 2. Navigate Step Payload Schema
121
+ */
122
+ export declare const NavigateStepPayloadSchema: z.ZodObject<{
123
+ url: z.ZodString;
124
+ target: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
125
+ _self: "_self";
126
+ _blank: "_blank";
127
+ _parent: "_parent";
128
+ _top: "_top";
129
+ }>>>;
130
+ replace: z.ZodOptional<z.ZodBoolean>;
131
+ scroll: z.ZodOptional<z.ZodBoolean>;
132
+ behavior: z.ZodOptional<z.ZodEnum<{
133
+ auto: "auto";
134
+ smooth: "smooth";
135
+ }>>;
136
+ }, z.core.$strip>;
137
+ export type NavigateStepPayload = z.infer<typeof NavigateStepPayloadSchema>;
138
+ /**
139
+ * 3. Set State Step Payload Schema
140
+ */
141
+ export declare const SetStateStepPayloadSchema: z.ZodObject<{
142
+ key: z.ZodString;
143
+ value: z.ZodUnknown;
144
+ scope: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
145
+ session: "session";
146
+ document: "document";
147
+ local: "local";
148
+ runtime: "runtime";
149
+ }>>>;
150
+ }, z.core.$strip>;
151
+ export type SetStateStepPayload = z.infer<typeof SetStateStepPayloadSchema>;
152
+ /**
153
+ * 4. Reset Form Step Payload Schema
154
+ */
155
+ export declare const ResetFormStepPayloadSchema: z.ZodObject<{
156
+ formId: z.ZodOptional<z.ZodString>;
157
+ }, z.core.$strip>;
158
+ export type ResetFormStepPayload = z.infer<typeof ResetFormStepPayloadSchema>;
159
+ /**
160
+ * 5. Show Toast Step Payload Schema
161
+ */
162
+ export declare const ShowToastStepPayloadSchema: z.ZodObject<{
163
+ message: z.ZodString;
164
+ type: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
165
+ error: "error";
166
+ info: "info";
167
+ warning: "warning";
168
+ success: "success";
169
+ }>>>;
170
+ variant: z.ZodOptional<z.ZodEnum<{
171
+ error: "error";
172
+ info: "info";
173
+ warning: "warning";
174
+ success: "success";
175
+ }>>;
176
+ title: z.ZodOptional<z.ZodString>;
177
+ duration: z.ZodOptional<z.ZodNumber>;
178
+ position: z.ZodOptional<z.ZodEnum<{
179
+ "top-right": "top-right";
180
+ "top-left": "top-left";
181
+ "bottom-right": "bottom-right";
182
+ "bottom-left": "bottom-left";
183
+ "top-center": "top-center";
184
+ "bottom-center": "bottom-center";
185
+ }>>;
186
+ }, z.core.$strip>;
187
+ export type ShowToastStepPayload = z.infer<typeof ShowToastStepPayloadSchema>;
188
+ /**
189
+ * 6. Open Modal Step Payload Schema
190
+ */
191
+ export declare const OpenModalStepPayloadSchema: z.ZodObject<{
192
+ modalId: z.ZodOptional<z.ZodString>;
193
+ modalNodeId: z.ZodOptional<z.ZodString>;
194
+ toggle: z.ZodOptional<z.ZodBoolean>;
195
+ }, z.core.$strip>;
196
+ export type OpenModalStepPayload = z.infer<typeof OpenModalStepPayloadSchema>;
197
+ /**
198
+ * 7. Close Modal Step Payload Schema
199
+ */
200
+ export declare const CloseModalStepPayloadSchema: z.ZodObject<{
201
+ modalId: z.ZodOptional<z.ZodString>;
202
+ modalNodeId: z.ZodOptional<z.ZodString>;
203
+ }, z.core.$strip>;
204
+ export type CloseModalStepPayload = z.infer<typeof CloseModalStepPayloadSchema>;
205
+ /**
206
+ * 8. Copy Clipboard Step Payload Schema
207
+ */
208
+ export declare const CopyClipboardStepPayloadSchema: z.ZodObject<{
209
+ text: z.ZodOptional<z.ZodString>;
210
+ value: z.ZodOptional<z.ZodUnknown>;
211
+ notify: z.ZodOptional<z.ZodBoolean>;
212
+ toastMessage: z.ZodOptional<z.ZodString>;
213
+ }, z.core.$strip>;
214
+ export type CopyClipboardStepPayload = z.infer<typeof CopyClipboardStepPayloadSchema>;
215
+ /**
216
+ * 9. Custom Event Step Payload Schema
217
+ */
218
+ export declare const CustomEventStepPayloadSchema: z.ZodObject<{
219
+ eventName: z.ZodString;
220
+ detail: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
221
+ bubbles: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
222
+ cancelable: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
223
+ }, z.core.$strip>;
224
+ export type CustomEventStepPayload = z.infer<typeof CustomEventStepPayloadSchema>;
225
+ /**
226
+ * Dictionary of Step Payload Schemas by Step Type
227
+ */
228
+ export declare const StepPayloadSchemas: {
229
+ readonly api_request: z.ZodObject<{
230
+ url: z.ZodString;
231
+ method: z.ZodDefault<z.ZodEnum<{
232
+ GET: "GET";
233
+ POST: "POST";
234
+ PUT: "PUT";
235
+ DELETE: "DELETE";
236
+ PATCH: "PATCH";
237
+ HEAD: "HEAD";
238
+ OPTIONS: "OPTIONS";
239
+ }>>;
240
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
241
+ queryParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
242
+ body: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodArray<z.ZodUnknown>]>>;
243
+ bodyFormat: z.ZodOptional<z.ZodEnum<{
244
+ raw: "raw";
245
+ formData: "formData";
246
+ text: "text";
247
+ json: "json";
248
+ "form-data": "form-data";
249
+ urlencoded: "urlencoded";
250
+ "url-encoded": "url-encoded";
251
+ }>>;
252
+ bodyType: z.ZodOptional<z.ZodEnum<{
253
+ raw: "raw";
254
+ formData: "formData";
255
+ text: "text";
256
+ json: "json";
257
+ "form-data": "form-data";
258
+ urlencoded: "urlencoded";
259
+ "url-encoded": "url-encoded";
260
+ }>>;
261
+ timeout: z.ZodOptional<z.ZodNumber>;
262
+ responseMapping: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
263
+ }, z.core.$strip>;
264
+ readonly navigate: z.ZodObject<{
265
+ url: z.ZodString;
266
+ target: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
267
+ _self: "_self";
268
+ _blank: "_blank";
269
+ _parent: "_parent";
270
+ _top: "_top";
271
+ }>>>;
272
+ replace: z.ZodOptional<z.ZodBoolean>;
273
+ scroll: z.ZodOptional<z.ZodBoolean>;
274
+ behavior: z.ZodOptional<z.ZodEnum<{
275
+ auto: "auto";
276
+ smooth: "smooth";
277
+ }>>;
278
+ }, z.core.$strip>;
279
+ readonly set_state: z.ZodObject<{
280
+ key: z.ZodString;
281
+ value: z.ZodUnknown;
282
+ scope: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
283
+ session: "session";
284
+ document: "document";
285
+ local: "local";
286
+ runtime: "runtime";
287
+ }>>>;
288
+ }, z.core.$strip>;
289
+ readonly reset_form: z.ZodObject<{
290
+ formId: z.ZodOptional<z.ZodString>;
291
+ }, z.core.$strip>;
292
+ readonly show_toast: z.ZodObject<{
293
+ message: z.ZodString;
294
+ type: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
295
+ error: "error";
296
+ info: "info";
297
+ warning: "warning";
298
+ success: "success";
299
+ }>>>;
300
+ variant: z.ZodOptional<z.ZodEnum<{
301
+ error: "error";
302
+ info: "info";
303
+ warning: "warning";
304
+ success: "success";
305
+ }>>;
306
+ title: z.ZodOptional<z.ZodString>;
307
+ duration: z.ZodOptional<z.ZodNumber>;
308
+ position: z.ZodOptional<z.ZodEnum<{
309
+ "top-right": "top-right";
310
+ "top-left": "top-left";
311
+ "bottom-right": "bottom-right";
312
+ "bottom-left": "bottom-left";
313
+ "top-center": "top-center";
314
+ "bottom-center": "bottom-center";
315
+ }>>;
316
+ }, z.core.$strip>;
317
+ readonly open_modal: z.ZodObject<{
318
+ modalId: z.ZodOptional<z.ZodString>;
319
+ modalNodeId: z.ZodOptional<z.ZodString>;
320
+ toggle: z.ZodOptional<z.ZodBoolean>;
321
+ }, z.core.$strip>;
322
+ readonly close_modal: z.ZodObject<{
323
+ modalId: z.ZodOptional<z.ZodString>;
324
+ modalNodeId: z.ZodOptional<z.ZodString>;
325
+ }, z.core.$strip>;
326
+ readonly copy_clipboard: z.ZodObject<{
327
+ text: z.ZodOptional<z.ZodString>;
328
+ value: z.ZodOptional<z.ZodUnknown>;
329
+ notify: z.ZodOptional<z.ZodBoolean>;
330
+ toastMessage: z.ZodOptional<z.ZodString>;
331
+ }, z.core.$strip>;
332
+ readonly custom_event: z.ZodObject<{
333
+ eventName: z.ZodString;
334
+ detail: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
335
+ bubbles: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
336
+ cancelable: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
337
+ }, z.core.$strip>;
338
+ };
339
+ /**
340
+ * Action Step Interface
341
+ * Recursive definition allowing branching (onSuccess, onError).
342
+ */
343
+ export interface ActionStep {
344
+ id: string;
345
+ type: ActionStepType;
346
+ label?: string;
347
+ payload?: Record<string, unknown>;
348
+ condition?: ActionStepCondition;
349
+ timeout?: number;
350
+ continueOnError?: boolean;
351
+ onSuccess?: ActionStep[];
352
+ onError?: ActionStep[];
353
+ }
354
+ /**
355
+ * Action Step Schema
356
+ * Validates individual steps in an action pipeline, supporting recursive branching.
357
+ */
358
+ export declare const ActionStepSchema: z.ZodType<ActionStep>;
359
+ /**
360
+ * Action Pipeline Schema
361
+ * Defines an event trigger and an ordered sequence of action steps to execute.
362
+ */
363
+ export declare const ActionPipelineSchema: z.ZodObject<{
364
+ id: z.ZodString;
365
+ trigger: z.ZodEnum<{
366
+ load: "load";
367
+ change: "change";
368
+ blur: "blur";
369
+ click: "click";
370
+ focus: "focus";
371
+ submit: "submit";
372
+ }>;
373
+ label: z.ZodOptional<z.ZodString>;
374
+ debounceMs: z.ZodOptional<z.ZodNumber>;
375
+ preventDuplicate: z.ZodOptional<z.ZodBoolean>;
376
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
377
+ steps: z.ZodArray<z.ZodType<ActionStep, unknown, z.core.$ZodTypeInternals<ActionStep, unknown>>>;
378
+ }, z.core.$strip>;
379
+ export type ActionPipeline = z.infer<typeof ActionPipelineSchema>;
380
+ /**
381
+ * Type Guards
382
+ */
383
+ export declare function isActionTriggerType(value: unknown): value is ActionTriggerType;
384
+ export declare function isActionStepType(value: unknown): value is ActionStepType;
385
+ export declare function isConditionOperator(value: unknown): value is ConditionOperator;
386
+ export declare function isActionStepCondition(value: unknown): value is ActionStepCondition;
387
+ export declare function isActionStep(value: unknown): value is ActionStep;
388
+ export declare function isActionPipeline(value: unknown): value is ActionPipeline;
389
+ /**
390
+ * Validates a step's payload specifically according to its step type.
391
+ */
392
+ export declare function validateActionStepPayload(type: ActionStepType, payload: unknown): {
393
+ success: boolean;
394
+ data?: unknown;
395
+ error?: z.ZodError;
396
+ };
397
+ /**
398
+ * Sanitization Utilities
399
+ */
400
+ /**
401
+ * Sanitizes a URL string by checking if it contains dangerous protocols or scripts.
402
+ * Returns the trimmed URL if safe, or a fallback string (default empty string `""`).
403
+ */
404
+ export declare function sanitizeActionUrl(url: unknown, fallback?: string): string;
405
+ /**
406
+ * Sanitizes a general string value against script tags and dangerous HTML/protocols.
407
+ */
408
+ export declare function sanitizeActionString(value: unknown, fallback?: string): string;
409
+ /**
410
+ * Recursively sanitizes any arbitrary value (string, object, array, primitive) in an action payload.
411
+ */
412
+ export declare function sanitizeActionValue(value: unknown): unknown;
413
+ /**
414
+ * Sanitizes an action step payload object, cleaning dangerous URLs and injection strings recursively.
415
+ */
416
+ export declare function sanitizeActionPayload(payload: Record<string, unknown> | undefined): Record<string, unknown>;
417
+ /**
418
+ * Recursively sanitizes an ActionStep, including its payload, condition, onSuccess, and onError branches.
419
+ */
420
+ export declare function sanitizeActionStep(step: ActionStep): ActionStep;
421
+ /**
422
+ * Recursively sanitizes an ActionPipeline and all its nested steps.
423
+ */
424
+ export declare function sanitizeActionPipeline(pipeline: ActionPipeline): ActionPipeline;
425
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}