@formspec/build 0.1.0-alpha.10 → 0.1.0-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/browser.cjs +549 -0
  2. package/dist/browser.cjs.map +1 -0
  3. package/dist/browser.d.ts +4 -2
  4. package/dist/browser.d.ts.map +1 -1
  5. package/dist/browser.js +498 -45
  6. package/dist/browser.js.map +1 -1
  7. package/dist/build.d.ts +343 -33
  8. package/dist/cli.cjs +2267 -0
  9. package/dist/cli.cjs.map +1 -0
  10. package/dist/cli.js +2204 -101
  11. package/dist/cli.js.map +1 -1
  12. package/dist/generators/class-schema.d.ts +5 -9
  13. package/dist/generators/class-schema.d.ts.map +1 -1
  14. package/dist/index.cjs +2093 -0
  15. package/dist/index.cjs.map +1 -0
  16. package/dist/index.d.ts +4 -2
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2024 -114
  19. package/dist/index.js.map +1 -1
  20. package/dist/internals.cjs +1345 -0
  21. package/dist/internals.cjs.map +1 -0
  22. package/dist/internals.d.ts +1 -0
  23. package/dist/internals.d.ts.map +1 -1
  24. package/dist/internals.js +1297 -21
  25. package/dist/internals.js.map +1 -1
  26. package/dist/json-schema/generator.d.ts.map +1 -1
  27. package/dist/json-schema/schema.d.ts +16 -0
  28. package/dist/json-schema/schema.d.ts.map +1 -0
  29. package/dist/ui-schema/generator.d.ts +15 -0
  30. package/dist/ui-schema/generator.d.ts.map +1 -1
  31. package/dist/ui-schema/schema.d.ts +357 -0
  32. package/dist/ui-schema/schema.d.ts.map +1 -0
  33. package/dist/ui-schema/types.d.ts +8 -73
  34. package/dist/ui-schema/types.d.ts.map +1 -1
  35. package/package.json +14 -9
  36. package/dist/__tests__/analyzer-edge-cases.test.js +0 -376
  37. package/dist/__tests__/analyzer-edge-cases.test.js.map +0 -1
  38. package/dist/__tests__/analyzer.test.js +0 -190
  39. package/dist/__tests__/analyzer.test.js.map +0 -1
  40. package/dist/__tests__/cli.test.js +0 -178
  41. package/dist/__tests__/cli.test.js.map +0 -1
  42. package/dist/__tests__/codegen.test.js +0 -506
  43. package/dist/__tests__/codegen.test.js.map +0 -1
  44. package/dist/__tests__/decorator-pipeline.test.js +0 -460
  45. package/dist/__tests__/decorator-pipeline.test.js.map +0 -1
  46. package/dist/__tests__/edge-cases.test.js +0 -215
  47. package/dist/__tests__/edge-cases.test.js.map +0 -1
  48. package/dist/__tests__/fixtures/edge-cases.js +0 -137
  49. package/dist/__tests__/fixtures/edge-cases.js.map +0 -1
  50. package/dist/__tests__/fixtures/example-a-builtins.js +0 -100
  51. package/dist/__tests__/fixtures/example-a-builtins.js.map +0 -1
  52. package/dist/__tests__/fixtures/example-b-decorators.js +0 -5
  53. package/dist/__tests__/fixtures/example-b-decorators.js.map +0 -1
  54. package/dist/__tests__/fixtures/example-b-extended.js +0 -60
  55. package/dist/__tests__/fixtures/example-b-extended.js.map +0 -1
  56. package/dist/__tests__/fixtures/example-c-custom.js +0 -61
  57. package/dist/__tests__/fixtures/example-c-custom.js.map +0 -1
  58. package/dist/__tests__/fixtures/example-c-decorators.js +0 -4
  59. package/dist/__tests__/fixtures/example-c-decorators.js.map +0 -1
  60. package/dist/__tests__/fixtures/example-d-mixed-decorators.js +0 -75
  61. package/dist/__tests__/fixtures/example-d-mixed-decorators.js.map +0 -1
  62. package/dist/__tests__/fixtures/example-e-decorators.js +0 -10
  63. package/dist/__tests__/fixtures/example-e-decorators.js.map +0 -1
  64. package/dist/__tests__/fixtures/example-e-no-namespace.js +0 -61
  65. package/dist/__tests__/fixtures/example-e-no-namespace.js.map +0 -1
  66. package/dist/__tests__/fixtures/example-interface-types.js +0 -8
  67. package/dist/__tests__/fixtures/example-interface-types.js.map +0 -1
  68. package/dist/__tests__/fixtures/example-jsdoc-constraints.js +0 -98
  69. package/dist/__tests__/fixtures/example-jsdoc-constraints.js.map +0 -1
  70. package/dist/__tests__/fixtures/example-nested-class.js +0 -248
  71. package/dist/__tests__/fixtures/example-nested-class.js.map +0 -1
  72. package/dist/__tests__/fixtures/sample-forms.js +0 -78
  73. package/dist/__tests__/fixtures/sample-forms.js.map +0 -1
  74. package/dist/__tests__/generator.test.js +0 -234
  75. package/dist/__tests__/generator.test.js.map +0 -1
  76. package/dist/__tests__/integration.test.js +0 -161
  77. package/dist/__tests__/integration.test.js.map +0 -1
  78. package/dist/__tests__/interface-types.test.js +0 -404
  79. package/dist/__tests__/interface-types.test.js.map +0 -1
  80. package/dist/__tests__/jsdoc-constraints.test.js +0 -465
  81. package/dist/__tests__/jsdoc-constraints.test.js.map +0 -1
  82. package/dist/__tests__/write-schemas.test.js +0 -198
  83. package/dist/__tests__/write-schemas.test.js.map +0 -1
  84. package/dist/analyzer/class-analyzer.js +0 -377
  85. package/dist/analyzer/class-analyzer.js.map +0 -1
  86. package/dist/analyzer/decorator-extractor.js +0 -336
  87. package/dist/analyzer/decorator-extractor.js.map +0 -1
  88. package/dist/analyzer/jsdoc-constraints.js +0 -153
  89. package/dist/analyzer/jsdoc-constraints.js.map +0 -1
  90. package/dist/analyzer/program.js +0 -114
  91. package/dist/analyzer/program.js.map +0 -1
  92. package/dist/analyzer/type-converter.js +0 -474
  93. package/dist/analyzer/type-converter.js.map +0 -1
  94. package/dist/codegen/index.js +0 -597
  95. package/dist/codegen/index.js.map +0 -1
  96. package/dist/generators/class-schema.js +0 -140
  97. package/dist/generators/class-schema.js.map +0 -1
  98. package/dist/generators/method-schema.js +0 -108
  99. package/dist/generators/method-schema.js.map +0 -1
  100. package/dist/json-schema/generator.js +0 -166
  101. package/dist/json-schema/generator.js.map +0 -1
  102. package/dist/json-schema/types.js +0 -33
  103. package/dist/json-schema/types.js.map +0 -1
  104. package/dist/ui-schema/generator.js +0 -148
  105. package/dist/ui-schema/generator.js.map +0 -1
  106. package/dist/ui-schema/types.js +0 -8
  107. package/dist/ui-schema/types.js.map +0 -1
@@ -0,0 +1,357 @@
1
+ /**
2
+ * Zod schemas for JSON Forms UI Schema.
3
+ *
4
+ * These schemas are the source of truth for UI Schema validation.
5
+ * TypeScript types are derived from these schemas via `z.infer<>`.
6
+ *
7
+ * @see https://jsonforms.io/docs/uischema/
8
+ */
9
+ import { z } from "zod";
10
+ /**
11
+ * Zod schema for rule effect values.
12
+ */
13
+ export declare const ruleEffectSchema: z.ZodEnum<["SHOW", "HIDE", "ENABLE", "DISABLE"]>;
14
+ /**
15
+ * Rule effect types for conditional visibility.
16
+ */
17
+ export type RuleEffect = z.infer<typeof ruleEffectSchema>;
18
+ /**
19
+ * Zod schema for UI Schema element type strings.
20
+ */
21
+ export declare const uiSchemaElementTypeSchema: z.ZodEnum<["Control", "VerticalLayout", "HorizontalLayout", "Group", "Categorization", "Category", "Label"]>;
22
+ /**
23
+ * UI Schema element types.
24
+ */
25
+ export type UISchemaElementType = z.infer<typeof uiSchemaElementTypeSchema>;
26
+ /**
27
+ * JSON Schema subset used in rule conditions.
28
+ */
29
+ export interface RuleConditionSchema {
30
+ const?: unknown;
31
+ enum?: readonly unknown[];
32
+ type?: string;
33
+ not?: RuleConditionSchema;
34
+ minimum?: number;
35
+ maximum?: number;
36
+ exclusiveMinimum?: number;
37
+ exclusiveMaximum?: number;
38
+ minLength?: number;
39
+ properties?: Record<string, RuleConditionSchema>;
40
+ required?: string[];
41
+ allOf?: RuleConditionSchema[];
42
+ }
43
+ export declare const ruleConditionSchema: z.ZodType<RuleConditionSchema>;
44
+ /**
45
+ * Zod schema for a schema-based rule condition.
46
+ */
47
+ export declare const schemaBasedConditionSchema: z.ZodObject<{
48
+ scope: z.ZodString;
49
+ schema: z.ZodType<RuleConditionSchema, z.ZodTypeDef, RuleConditionSchema>;
50
+ }, "strict", z.ZodTypeAny, {
51
+ schema: RuleConditionSchema;
52
+ scope: string;
53
+ }, {
54
+ schema: RuleConditionSchema;
55
+ scope: string;
56
+ }>;
57
+ /**
58
+ * Condition for a rule.
59
+ */
60
+ export type SchemaBasedCondition = z.infer<typeof schemaBasedConditionSchema>;
61
+ /**
62
+ * Zod schema for a UI Schema rule.
63
+ */
64
+ export declare const ruleSchema: z.ZodObject<{
65
+ effect: z.ZodEnum<["SHOW", "HIDE", "ENABLE", "DISABLE"]>;
66
+ condition: z.ZodObject<{
67
+ scope: z.ZodString;
68
+ schema: z.ZodType<RuleConditionSchema, z.ZodTypeDef, RuleConditionSchema>;
69
+ }, "strict", z.ZodTypeAny, {
70
+ schema: RuleConditionSchema;
71
+ scope: string;
72
+ }, {
73
+ schema: RuleConditionSchema;
74
+ scope: string;
75
+ }>;
76
+ }, "strict", z.ZodTypeAny, {
77
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
78
+ condition: {
79
+ schema: RuleConditionSchema;
80
+ scope: string;
81
+ };
82
+ }, {
83
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
84
+ condition: {
85
+ schema: RuleConditionSchema;
86
+ scope: string;
87
+ };
88
+ }>;
89
+ /**
90
+ * Rule for conditional element visibility/enablement.
91
+ */
92
+ export type Rule = z.infer<typeof ruleSchema>;
93
+ /**
94
+ * Union of all UI Schema element types.
95
+ */
96
+ export type UISchemaElement = ControlElement | VerticalLayout | HorizontalLayout | GroupLayout | Categorization | Category | LabelElement;
97
+ export declare const uiSchemaElementSchema: z.ZodType<UISchemaElement>;
98
+ /**
99
+ * Zod schema for a Control element.
100
+ */
101
+ export declare const controlSchema: z.ZodObject<{
102
+ type: z.ZodLiteral<"Control">;
103
+ scope: z.ZodString;
104
+ label: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<false>]>>;
105
+ rule: z.ZodOptional<z.ZodObject<{
106
+ effect: z.ZodEnum<["SHOW", "HIDE", "ENABLE", "DISABLE"]>;
107
+ condition: z.ZodObject<{
108
+ scope: z.ZodString;
109
+ schema: z.ZodType<RuleConditionSchema, z.ZodTypeDef, RuleConditionSchema>;
110
+ }, "strict", z.ZodTypeAny, {
111
+ schema: RuleConditionSchema;
112
+ scope: string;
113
+ }, {
114
+ schema: RuleConditionSchema;
115
+ scope: string;
116
+ }>;
117
+ }, "strict", z.ZodTypeAny, {
118
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
119
+ condition: {
120
+ schema: RuleConditionSchema;
121
+ scope: string;
122
+ };
123
+ }, {
124
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
125
+ condition: {
126
+ schema: RuleConditionSchema;
127
+ scope: string;
128
+ };
129
+ }>>;
130
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
131
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
132
+ type: z.ZodLiteral<"Control">;
133
+ scope: z.ZodString;
134
+ label: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<false>]>>;
135
+ rule: z.ZodOptional<z.ZodObject<{
136
+ effect: z.ZodEnum<["SHOW", "HIDE", "ENABLE", "DISABLE"]>;
137
+ condition: z.ZodObject<{
138
+ scope: z.ZodString;
139
+ schema: z.ZodType<RuleConditionSchema, z.ZodTypeDef, RuleConditionSchema>;
140
+ }, "strict", z.ZodTypeAny, {
141
+ schema: RuleConditionSchema;
142
+ scope: string;
143
+ }, {
144
+ schema: RuleConditionSchema;
145
+ scope: string;
146
+ }>;
147
+ }, "strict", z.ZodTypeAny, {
148
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
149
+ condition: {
150
+ schema: RuleConditionSchema;
151
+ scope: string;
152
+ };
153
+ }, {
154
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
155
+ condition: {
156
+ schema: RuleConditionSchema;
157
+ scope: string;
158
+ };
159
+ }>>;
160
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
161
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
162
+ type: z.ZodLiteral<"Control">;
163
+ scope: z.ZodString;
164
+ label: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<false>]>>;
165
+ rule: z.ZodOptional<z.ZodObject<{
166
+ effect: z.ZodEnum<["SHOW", "HIDE", "ENABLE", "DISABLE"]>;
167
+ condition: z.ZodObject<{
168
+ scope: z.ZodString;
169
+ schema: z.ZodType<RuleConditionSchema, z.ZodTypeDef, RuleConditionSchema>;
170
+ }, "strict", z.ZodTypeAny, {
171
+ schema: RuleConditionSchema;
172
+ scope: string;
173
+ }, {
174
+ schema: RuleConditionSchema;
175
+ scope: string;
176
+ }>;
177
+ }, "strict", z.ZodTypeAny, {
178
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
179
+ condition: {
180
+ schema: RuleConditionSchema;
181
+ scope: string;
182
+ };
183
+ }, {
184
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
185
+ condition: {
186
+ schema: RuleConditionSchema;
187
+ scope: string;
188
+ };
189
+ }>>;
190
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
191
+ }, z.ZodTypeAny, "passthrough">>;
192
+ /**
193
+ * A Control element that binds to a JSON Schema property.
194
+ */
195
+ export type ControlElement = z.infer<typeof controlSchema>;
196
+ /**
197
+ * A vertical layout element.
198
+ */
199
+ export interface VerticalLayout {
200
+ type: "VerticalLayout";
201
+ elements: UISchemaElement[];
202
+ rule?: Rule | undefined;
203
+ options?: Record<string, unknown> | undefined;
204
+ [k: string]: unknown;
205
+ }
206
+ export declare const verticalLayoutSchema: z.ZodType<VerticalLayout>;
207
+ /**
208
+ * A horizontal layout element.
209
+ */
210
+ export interface HorizontalLayout {
211
+ type: "HorizontalLayout";
212
+ elements: UISchemaElement[];
213
+ rule?: Rule | undefined;
214
+ options?: Record<string, unknown> | undefined;
215
+ [k: string]: unknown;
216
+ }
217
+ export declare const horizontalLayoutSchema: z.ZodType<HorizontalLayout>;
218
+ /**
219
+ * A group element with a label.
220
+ */
221
+ export interface GroupLayout {
222
+ type: "Group";
223
+ label: string;
224
+ elements: UISchemaElement[];
225
+ rule?: Rule | undefined;
226
+ options?: Record<string, unknown> | undefined;
227
+ [k: string]: unknown;
228
+ }
229
+ export declare const groupLayoutSchema: z.ZodType<GroupLayout>;
230
+ /**
231
+ * A Category element, used inside a Categorization layout.
232
+ */
233
+ export interface Category {
234
+ type: "Category";
235
+ label: string;
236
+ elements: UISchemaElement[];
237
+ rule?: Rule | undefined;
238
+ options?: Record<string, unknown> | undefined;
239
+ [k: string]: unknown;
240
+ }
241
+ export declare const categorySchema: z.ZodType<Category>;
242
+ /**
243
+ * A Categorization element (tab-based layout).
244
+ */
245
+ export interface Categorization {
246
+ type: "Categorization";
247
+ elements: Category[];
248
+ label?: string | undefined;
249
+ rule?: Rule | undefined;
250
+ options?: Record<string, unknown> | undefined;
251
+ [k: string]: unknown;
252
+ }
253
+ export declare const categorizationSchema: z.ZodType<Categorization>;
254
+ /**
255
+ * Zod schema for a Label element.
256
+ */
257
+ export declare const labelElementSchema: z.ZodObject<{
258
+ type: z.ZodLiteral<"Label">;
259
+ text: z.ZodString;
260
+ rule: z.ZodOptional<z.ZodObject<{
261
+ effect: z.ZodEnum<["SHOW", "HIDE", "ENABLE", "DISABLE"]>;
262
+ condition: z.ZodObject<{
263
+ scope: z.ZodString;
264
+ schema: z.ZodType<RuleConditionSchema, z.ZodTypeDef, RuleConditionSchema>;
265
+ }, "strict", z.ZodTypeAny, {
266
+ schema: RuleConditionSchema;
267
+ scope: string;
268
+ }, {
269
+ schema: RuleConditionSchema;
270
+ scope: string;
271
+ }>;
272
+ }, "strict", z.ZodTypeAny, {
273
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
274
+ condition: {
275
+ schema: RuleConditionSchema;
276
+ scope: string;
277
+ };
278
+ }, {
279
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
280
+ condition: {
281
+ schema: RuleConditionSchema;
282
+ scope: string;
283
+ };
284
+ }>>;
285
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
286
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
287
+ type: z.ZodLiteral<"Label">;
288
+ text: z.ZodString;
289
+ rule: z.ZodOptional<z.ZodObject<{
290
+ effect: z.ZodEnum<["SHOW", "HIDE", "ENABLE", "DISABLE"]>;
291
+ condition: z.ZodObject<{
292
+ scope: z.ZodString;
293
+ schema: z.ZodType<RuleConditionSchema, z.ZodTypeDef, RuleConditionSchema>;
294
+ }, "strict", z.ZodTypeAny, {
295
+ schema: RuleConditionSchema;
296
+ scope: string;
297
+ }, {
298
+ schema: RuleConditionSchema;
299
+ scope: string;
300
+ }>;
301
+ }, "strict", z.ZodTypeAny, {
302
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
303
+ condition: {
304
+ schema: RuleConditionSchema;
305
+ scope: string;
306
+ };
307
+ }, {
308
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
309
+ condition: {
310
+ schema: RuleConditionSchema;
311
+ scope: string;
312
+ };
313
+ }>>;
314
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
315
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
316
+ type: z.ZodLiteral<"Label">;
317
+ text: z.ZodString;
318
+ rule: z.ZodOptional<z.ZodObject<{
319
+ effect: z.ZodEnum<["SHOW", "HIDE", "ENABLE", "DISABLE"]>;
320
+ condition: z.ZodObject<{
321
+ scope: z.ZodString;
322
+ schema: z.ZodType<RuleConditionSchema, z.ZodTypeDef, RuleConditionSchema>;
323
+ }, "strict", z.ZodTypeAny, {
324
+ schema: RuleConditionSchema;
325
+ scope: string;
326
+ }, {
327
+ schema: RuleConditionSchema;
328
+ scope: string;
329
+ }>;
330
+ }, "strict", z.ZodTypeAny, {
331
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
332
+ condition: {
333
+ schema: RuleConditionSchema;
334
+ scope: string;
335
+ };
336
+ }, {
337
+ effect: "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
338
+ condition: {
339
+ schema: RuleConditionSchema;
340
+ scope: string;
341
+ };
342
+ }>>;
343
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
344
+ }, z.ZodTypeAny, "passthrough">>;
345
+ /**
346
+ * A Label element for displaying static text.
347
+ */
348
+ export type LabelElement = z.infer<typeof labelElementSchema>;
349
+ /**
350
+ * Root UI Schema (always a layout — not a Control, Category, or Label).
351
+ */
352
+ export type UISchema = VerticalLayout | HorizontalLayout | GroupLayout | Categorization;
353
+ /**
354
+ * Zod schema for the root UI Schema (layout types only).
355
+ */
356
+ export declare const uiSchema: z.ZodType<UISchema>;
357
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/ui-schema/schema.ts"],"names":[],"mappings":"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"}
@@ -1,87 +1,22 @@
1
1
  /**
2
2
  * JSON Forms UI Schema type definitions.
3
3
  *
4
- * These types define the UI layout structure for JSON Forms.
4
+ * Types are derived from Zod schemas in ./schema.ts.
5
5
  * See: https://jsonforms.io/docs/uischema/
6
6
  */
7
- /**
8
- * UI Schema element types.
9
- */
10
- export type UISchemaElementType = "Control" | "VerticalLayout" | "HorizontalLayout" | "Group" | "Categorization" | "Category";
11
- /**
12
- * Rule effect types for conditional visibility.
13
- */
14
- export type RuleEffect = "SHOW" | "HIDE" | "ENABLE" | "DISABLE";
15
- /**
16
- * JSON Schema subset for rule conditions.
17
- */
18
- export interface RuleConditionSchema {
19
- const?: unknown;
20
- enum?: readonly unknown[];
21
- type?: string;
22
- minimum?: number;
23
- maximum?: number;
24
- properties?: Record<string, RuleConditionSchema>;
25
- allOf?: RuleConditionSchema[];
26
- }
27
- /**
28
- * Condition for a rule.
29
- */
30
- export interface SchemaBasedCondition {
31
- scope: string;
32
- schema: RuleConditionSchema;
33
- }
34
- /**
35
- * Rule for conditional element visibility/enablement.
36
- */
37
- export interface Rule {
38
- effect: RuleEffect;
39
- condition: SchemaBasedCondition;
40
- }
7
+ export type { RuleConditionSchema, SchemaBasedCondition, Rule, RuleEffect, ControlElement, VerticalLayout, HorizontalLayout, GroupLayout, Categorization, Category, LabelElement, UISchemaElement, UISchemaElementType, UISchema, } from "./schema.js";
8
+ import type { Rule, UISchemaElementType } from "./schema.js";
41
9
  /**
42
10
  * Base interface for all UI Schema elements.
11
+ *
12
+ * This is a manually maintained interface representing the common shape
13
+ * shared by all element types. It is kept as an interface (rather than
14
+ * derived from Zod) because it is the base of a discriminated union, not
15
+ * a union member itself.
43
16
  */
44
17
  export interface UISchemaElementBase {
45
18
  type: UISchemaElementType;
46
19
  rule?: Rule;
47
20
  options?: Record<string, unknown>;
48
21
  }
49
- /**
50
- * A Control element that binds to a JSON Schema property.
51
- */
52
- export interface ControlElement extends UISchemaElementBase {
53
- type: "Control";
54
- scope: string;
55
- label?: string;
56
- }
57
- /**
58
- * A vertical layout element.
59
- */
60
- export interface VerticalLayout extends UISchemaElementBase {
61
- type: "VerticalLayout";
62
- elements: UISchemaElement[];
63
- }
64
- /**
65
- * A horizontal layout element.
66
- */
67
- export interface HorizontalLayout extends UISchemaElementBase {
68
- type: "HorizontalLayout";
69
- elements: UISchemaElement[];
70
- }
71
- /**
72
- * A group element with a label.
73
- */
74
- export interface GroupLayout extends UISchemaElementBase {
75
- type: "Group";
76
- label: string;
77
- elements: UISchemaElement[];
78
- }
79
- /**
80
- * Union of all UI Schema element types.
81
- */
82
- export type UISchemaElement = ControlElement | VerticalLayout | HorizontalLayout | GroupLayout;
83
- /**
84
- * Root UI Schema (always a layout).
85
- */
86
- export type UISchema = VerticalLayout | HorizontalLayout | GroupLayout;
87
22
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ui-schema/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,SAAS,GACT,gBAAgB,GAChB,kBAAkB,GAClB,OAAO,GACP,gBAAgB,GAChB,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACjD,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,oBAAoB,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,mBAAmB;IACtD,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,cAAc,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAE/F;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,gBAAgB,GAAG,WAAW,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ui-schema/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,QAAQ,GACT,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@formspec/build",
3
- "version": "0.1.0-alpha.10",
3
+ "version": "0.1.0-alpha.11",
4
4
  "description": "Build tools to compile FormSpec forms to JSON Schema and UI Schema",
5
5
  "type": "module",
6
- "main": "./dist/index.js",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
7
8
  "types": "./dist/build.d.ts",
8
9
  "bin": {
9
10
  "formspec-build": "./dist/cli.js"
@@ -11,15 +12,18 @@
11
12
  "exports": {
12
13
  ".": {
13
14
  "types": "./dist/build.d.ts",
14
- "import": "./dist/index.js"
15
+ "import": "./dist/index.js",
16
+ "require": "./dist/index.cjs"
15
17
  },
16
18
  "./browser": {
17
19
  "types": "./dist/browser.d.ts",
18
- "import": "./dist/browser.js"
20
+ "import": "./dist/browser.js",
21
+ "require": "./dist/browser.cjs"
19
22
  },
20
23
  "./internals": {
21
24
  "types": "./dist/internals.d.ts",
22
- "import": "./dist/internals.js"
25
+ "import": "./dist/internals.js",
26
+ "require": "./dist/internals.cjs"
23
27
  }
24
28
  },
25
29
  "files": [
@@ -27,15 +31,16 @@
27
31
  "README.md"
28
32
  ],
29
33
  "dependencies": {
30
- "@formspec/core": "0.1.0-alpha.10"
34
+ "zod": "^3.25.0",
35
+ "@formspec/core": "0.1.0-alpha.11"
31
36
  },
32
37
  "peerDependencies": {
33
38
  "typescript": "^5.0.0"
34
39
  },
35
40
  "devDependencies": {
36
41
  "vitest": "^3.0.0",
37
- "@formspec/decorators": "0.1.0-alpha.9",
38
- "@formspec/dsl": "0.1.0-alpha.10"
42
+ "@formspec/decorators": "0.1.0-alpha.11",
43
+ "@formspec/dsl": "0.1.0-alpha.11"
39
44
  },
40
45
  "publishConfig": {
41
46
  "access": "public"
@@ -43,7 +48,7 @@
43
48
  "keywords": [],
44
49
  "license": "UNLICENSED",
45
50
  "scripts": {
46
- "build": "tsc && api-extractor run --local",
51
+ "build": "tsup && tsc --emitDeclarationOnly && api-extractor run --local",
47
52
  "clean": "rm -rf dist temp",
48
53
  "typecheck": "tsc --noEmit",
49
54
  "test": "pnpm run build && vitest run",