@formspec/dsl 0.1.0-alpha.0 → 0.1.0-alpha.10
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 +343 -0
- package/dist/__tests__/builders.test.js +65 -4
- package/dist/__tests__/builders.test.js.map +1 -1
- package/dist/__tests__/inference.test-d.js +27 -9
- package/dist/__tests__/inference.test-d.js.map +1 -1
- package/dist/__tests__/validation.test.js +53 -26
- package/dist/__tests__/validation.test.js.map +1 -1
- package/dist/dsl.d.ts +621 -0
- package/dist/field.d.ts +15 -3
- package/dist/field.d.ts.map +1 -1
- package/dist/field.js +48 -8
- package/dist/field.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/inference.d.ts +102 -3
- package/dist/inference.d.ts.map +1 -1
- package/dist/predicate.d.ts +1 -0
- package/dist/predicate.d.ts.map +1 -1
- package/dist/predicate.js +1 -0
- package/dist/predicate.js.map +1 -1
- package/dist/structure.d.ts.map +1 -1
- package/dist/structure.js.map +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +6 -4
- package/dist/validation.js.map +1 -1
- package/package.json +5 -4
package/README.md
ADDED
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
# @formspec/dsl
|
|
2
|
+
|
|
3
|
+
Type-safe form definition using a fluent builder API. This is the recommended approach for defining forms programmatically, especially when you need runtime form construction or dynamic forms.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @formspec/dsl @formspec/build
|
|
9
|
+
# Or use the umbrella package:
|
|
10
|
+
npm install formspec
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Requirements
|
|
14
|
+
|
|
15
|
+
This package is ESM-only and requires:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
// package.json
|
|
19
|
+
{
|
|
20
|
+
"type": "module"
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
// tsconfig.json
|
|
26
|
+
{
|
|
27
|
+
"compilerOptions": {
|
|
28
|
+
"module": "NodeNext",
|
|
29
|
+
"moduleResolution": "NodeNext"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Quick Start
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { formspec, field, group, when, is, type InferFormSchema } from "@formspec/dsl";
|
|
38
|
+
import { buildFormSchemas } from "@formspec/build";
|
|
39
|
+
|
|
40
|
+
// Define a form with full type safety
|
|
41
|
+
const ContactForm = formspec(
|
|
42
|
+
field.text("name", { label: "Name", required: true }),
|
|
43
|
+
field.text("email", { label: "Email", required: true }),
|
|
44
|
+
field.enum("subject", ["general", "support", "sales"] as const, {
|
|
45
|
+
label: "Subject",
|
|
46
|
+
required: true,
|
|
47
|
+
}),
|
|
48
|
+
field.text("message", { label: "Message", required: true }),
|
|
49
|
+
field.boolean("subscribe", { label: "Subscribe to newsletter" })
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
// Infer TypeScript types from the form definition
|
|
53
|
+
type ContactData = InferFormSchema<typeof ContactForm>;
|
|
54
|
+
// Result: { name: string; email: string; subject: "general" | "support" | "sales"; message: string; subscribe: boolean }
|
|
55
|
+
|
|
56
|
+
// Generate JSON Schema and UI Schema
|
|
57
|
+
const { jsonSchema, uiSchema } = buildFormSchemas(ContactForm);
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Field Types
|
|
61
|
+
|
|
62
|
+
### Text Field
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
field.text("fieldName", {
|
|
66
|
+
label: "Display Label",
|
|
67
|
+
description: "Help text",
|
|
68
|
+
required: true,
|
|
69
|
+
minLength: 1,
|
|
70
|
+
maxLength: 100,
|
|
71
|
+
pattern: "^[a-zA-Z]+$", // Regex pattern
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Number Field
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
field.number("age", {
|
|
79
|
+
label: "Age",
|
|
80
|
+
required: true,
|
|
81
|
+
min: 0,
|
|
82
|
+
max: 120,
|
|
83
|
+
});
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Boolean Field
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
field.boolean("acceptTerms", {
|
|
90
|
+
label: "I accept the terms and conditions",
|
|
91
|
+
required: true,
|
|
92
|
+
});
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Enum Field (Dropdown/Select)
|
|
96
|
+
|
|
97
|
+
Use `as const` to preserve literal types for type inference:
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// Simple string options
|
|
101
|
+
field.enum("status", ["draft", "published", "archived"] as const, {
|
|
102
|
+
label: "Status",
|
|
103
|
+
required: true,
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// Options with separate IDs and labels
|
|
107
|
+
field.enum(
|
|
108
|
+
"country",
|
|
109
|
+
[
|
|
110
|
+
{ id: "us", label: "United States" },
|
|
111
|
+
{ id: "ca", label: "Canada" },
|
|
112
|
+
{ id: "uk", label: "United Kingdom" },
|
|
113
|
+
] as const,
|
|
114
|
+
{
|
|
115
|
+
label: "Country",
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Note:** Use `as const` when passing enum options from a variable. For inline array literals, the `const` type parameter preserves literal types automatically.
|
|
121
|
+
|
|
122
|
+
### Dynamic Enum Field
|
|
123
|
+
|
|
124
|
+
For dropdowns populated at runtime from an API:
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
field.dynamicEnum("customerId", "fetch_customers", {
|
|
128
|
+
label: "Customer",
|
|
129
|
+
required: true,
|
|
130
|
+
});
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
The second argument is a source identifier used with `@formspec/runtime` resolvers.
|
|
134
|
+
|
|
135
|
+
### Array Field
|
|
136
|
+
|
|
137
|
+
For repeatable field groups:
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
field.array(
|
|
141
|
+
"lineItems",
|
|
142
|
+
field.text("description", { label: "Description", required: true }),
|
|
143
|
+
field.number("quantity", { label: "Quantity", min: 1 }),
|
|
144
|
+
field.number("price", { label: "Unit Price", min: 0 })
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
// With configuration
|
|
148
|
+
field.arrayWithConfig(
|
|
149
|
+
"contacts",
|
|
150
|
+
{ label: "Contact List", minItems: 1, maxItems: 5 },
|
|
151
|
+
field.text("name", { label: "Name" }),
|
|
152
|
+
field.text("phone", { label: "Phone" })
|
|
153
|
+
);
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Object Field
|
|
157
|
+
|
|
158
|
+
For nested field groups:
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
field.object(
|
|
162
|
+
"address",
|
|
163
|
+
field.text("street", { label: "Street", required: true }),
|
|
164
|
+
field.text("city", { label: "City", required: true }),
|
|
165
|
+
field.text("zipCode", { label: "ZIP Code", required: true })
|
|
166
|
+
);
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Grouping
|
|
170
|
+
|
|
171
|
+
Use `group()` to visually organize fields:
|
|
172
|
+
|
|
173
|
+
```typescript
|
|
174
|
+
const UserForm = formspec(
|
|
175
|
+
group(
|
|
176
|
+
"Personal Information",
|
|
177
|
+
field.text("firstName", { label: "First Name", required: true }),
|
|
178
|
+
field.text("lastName", { label: "Last Name", required: true }),
|
|
179
|
+
field.text("email", { label: "Email", required: true })
|
|
180
|
+
),
|
|
181
|
+
group(
|
|
182
|
+
"Preferences",
|
|
183
|
+
field.enum("theme", ["light", "dark", "system"] as const, { label: "Theme" }),
|
|
184
|
+
field.boolean("notifications", { label: "Enable notifications" })
|
|
185
|
+
)
|
|
186
|
+
);
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Conditional Fields
|
|
190
|
+
|
|
191
|
+
Use `when()` and `is()` to show/hide fields based on other field values:
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
const OrderForm = formspec(
|
|
195
|
+
field.enum("shippingMethod", ["standard", "express", "pickup"] as const, {
|
|
196
|
+
label: "Shipping Method",
|
|
197
|
+
required: true,
|
|
198
|
+
}),
|
|
199
|
+
|
|
200
|
+
// Only show address fields when shipping method is not "pickup"
|
|
201
|
+
when(
|
|
202
|
+
is("shippingMethod", "standard"),
|
|
203
|
+
field.text("address", { label: "Shipping Address", required: true }),
|
|
204
|
+
field.text("city", { label: "City", required: true })
|
|
205
|
+
),
|
|
206
|
+
when(
|
|
207
|
+
is("shippingMethod", "express"),
|
|
208
|
+
field.text("address", { label: "Shipping Address", required: true }),
|
|
209
|
+
field.text("city", { label: "City", required: true }),
|
|
210
|
+
field.text("phone", { label: "Phone for courier", required: true })
|
|
211
|
+
)
|
|
212
|
+
);
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Type Inference
|
|
216
|
+
|
|
217
|
+
The library provides powerful type inference utilities:
|
|
218
|
+
|
|
219
|
+
```typescript
|
|
220
|
+
import { type InferFormSchema, type InferFieldValue } from "@formspec/dsl";
|
|
221
|
+
|
|
222
|
+
const MyForm = formspec(
|
|
223
|
+
field.text("name"),
|
|
224
|
+
field.number("age"),
|
|
225
|
+
field.enum("role", ["admin", "user", "guest"] as const)
|
|
226
|
+
);
|
|
227
|
+
|
|
228
|
+
// Infer the complete form data type
|
|
229
|
+
type FormData = InferFormSchema<typeof MyForm>;
|
|
230
|
+
// { name: string; age: number; role: "admin" | "user" | "guest" }
|
|
231
|
+
|
|
232
|
+
// Access form elements at runtime
|
|
233
|
+
for (const element of MyForm.elements) {
|
|
234
|
+
if (element._type === "field") {
|
|
235
|
+
console.log(element.name, element._field);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Validation
|
|
241
|
+
|
|
242
|
+
Validate form definitions at runtime:
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
import { formspec, field, validateForm, logValidationIssues } from "@formspec/dsl";
|
|
246
|
+
|
|
247
|
+
const form = formspec(
|
|
248
|
+
field.text("email"),
|
|
249
|
+
field.text("email") // Duplicate field name!
|
|
250
|
+
);
|
|
251
|
+
|
|
252
|
+
const result = validateForm(form.elements);
|
|
253
|
+
if (!result.valid) {
|
|
254
|
+
logValidationIssues(result, "MyForm");
|
|
255
|
+
// Logs: [MyForm] ERROR at email: Duplicate field name "email"
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Or use formspecWithValidation for automatic checking
|
|
259
|
+
import { formspecWithValidation } from "@formspec/dsl";
|
|
260
|
+
|
|
261
|
+
const validatedForm = formspecWithValidation(
|
|
262
|
+
{ name: "MyForm", validate: "throw" },
|
|
263
|
+
field.text("email"),
|
|
264
|
+
field.text("email") // Throws error!
|
|
265
|
+
);
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
## Schema Generation
|
|
269
|
+
|
|
270
|
+
Use `@formspec/build` to generate JSON Schema and UI Schema:
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
import { buildFormSchemas, writeSchemas } from "@formspec/build";
|
|
274
|
+
|
|
275
|
+
// Get schema objects
|
|
276
|
+
const { jsonSchema, uiSchema } = buildFormSchemas(MyForm);
|
|
277
|
+
|
|
278
|
+
// Or write to files
|
|
279
|
+
writeSchemas(MyForm, {
|
|
280
|
+
outDir: "./generated",
|
|
281
|
+
name: "MyForm",
|
|
282
|
+
});
|
|
283
|
+
// Creates:
|
|
284
|
+
// ./generated/MyForm-schema.json
|
|
285
|
+
// ./generated/MyForm-uischema.json
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## When to Use This Package
|
|
289
|
+
|
|
290
|
+
Use `@formspec/dsl` when:
|
|
291
|
+
|
|
292
|
+
- **Forms are defined programmatically** - Building forms from configuration or code
|
|
293
|
+
- **Runtime form construction** - Creating forms dynamically based on user input or API data
|
|
294
|
+
- **Full type inference needed** - Deriving TypeScript types from form definitions
|
|
295
|
+
- **No build step preferred** - Works directly at runtime without CLI codegen
|
|
296
|
+
|
|
297
|
+
Consider `@formspec/decorators` when:
|
|
298
|
+
|
|
299
|
+
- **Class-based forms preferred** - Using TypeScript classes with property decorators
|
|
300
|
+
- **Type inference from existing types** - Leveraging existing TypeScript class types
|
|
301
|
+
- **Static analysis available** - Using the CLI for build-time schema generation
|
|
302
|
+
|
|
303
|
+
## API Reference
|
|
304
|
+
|
|
305
|
+
### Functions
|
|
306
|
+
|
|
307
|
+
| Function | Description |
|
|
308
|
+
| ---------------------------------------------- | -------------------------------- |
|
|
309
|
+
| `formspec(...elements)` | Create a form specification |
|
|
310
|
+
| `formspecWithValidation(options, ...elements)` | Create a form with validation |
|
|
311
|
+
| `group(label, ...elements)` | Create a visual field group |
|
|
312
|
+
| `when(predicate, ...elements)` | Create conditional fields |
|
|
313
|
+
| `is(fieldName, value)` | Create an equality predicate |
|
|
314
|
+
| `validateForm(elements)` | Validate form elements |
|
|
315
|
+
| `logValidationIssues(result)` | Log validation issues to console |
|
|
316
|
+
|
|
317
|
+
### Field Builders
|
|
318
|
+
|
|
319
|
+
| Builder | Description |
|
|
320
|
+
| ----------------------------------------------------- | ------------------------- |
|
|
321
|
+
| `field.text(name, config?)` | Text input field |
|
|
322
|
+
| `field.number(name, config?)` | Numeric input field |
|
|
323
|
+
| `field.boolean(name, config?)` | Checkbox/toggle field |
|
|
324
|
+
| `field.enum(name, options, config?)` | Dropdown/select field |
|
|
325
|
+
| `field.dynamicEnum(name, source, config?)` | API-populated dropdown |
|
|
326
|
+
| `field.dynamicSchema(name, source, config?)` | Dynamic nested schema |
|
|
327
|
+
| `field.array(name, ...items)` | Repeatable field array |
|
|
328
|
+
| `field.arrayWithConfig(name, config, ...items)` | Array with configuration |
|
|
329
|
+
| `field.object(name, ...properties)` | Nested object field |
|
|
330
|
+
| `field.objectWithConfig(name, config, ...properties)` | Object with configuration |
|
|
331
|
+
|
|
332
|
+
### Type Utilities
|
|
333
|
+
|
|
334
|
+
| Type | Description |
|
|
335
|
+
| ----------------------- | ------------------------------------ |
|
|
336
|
+
| `InferFormSchema<F>` | Infer data type from FormSpec |
|
|
337
|
+
| `InferSchema<Elements>` | Infer data type from element array |
|
|
338
|
+
| `InferFieldValue<F>` | Infer value type from a single field |
|
|
339
|
+
| `ExtractFields<E>` | Extract all fields from an element |
|
|
340
|
+
|
|
341
|
+
## License
|
|
342
|
+
|
|
343
|
+
UNLICENSED
|
|
@@ -56,6 +56,68 @@ describe("field builders", () => {
|
|
|
56
56
|
expect(f.label).toBe("Status");
|
|
57
57
|
expect(f.required).toBe(true);
|
|
58
58
|
});
|
|
59
|
+
it("should create an enum field with object options", () => {
|
|
60
|
+
const f = field.enum("priority", [
|
|
61
|
+
{ id: "low", label: "Low Priority" },
|
|
62
|
+
{ id: "medium", label: "Medium Priority" },
|
|
63
|
+
{ id: "high", label: "High Priority" },
|
|
64
|
+
]);
|
|
65
|
+
expect(f._type).toBe("field");
|
|
66
|
+
expect(f._field).toBe("enum");
|
|
67
|
+
expect(f.name).toBe("priority");
|
|
68
|
+
expect(f.options).toEqual([
|
|
69
|
+
{ id: "low", label: "Low Priority" },
|
|
70
|
+
{ id: "medium", label: "Medium Priority" },
|
|
71
|
+
{ id: "high", label: "High Priority" },
|
|
72
|
+
]);
|
|
73
|
+
});
|
|
74
|
+
it("should include optional config with object options", () => {
|
|
75
|
+
const f = field.enum("priority", [
|
|
76
|
+
{ id: "low", label: "Low" },
|
|
77
|
+
{ id: "high", label: "High" },
|
|
78
|
+
], {
|
|
79
|
+
label: "Priority",
|
|
80
|
+
required: true,
|
|
81
|
+
});
|
|
82
|
+
expect(f.label).toBe("Priority");
|
|
83
|
+
expect(f.required).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
it("should handle empty options array", () => {
|
|
86
|
+
const f = field.enum("empty", []);
|
|
87
|
+
expect(f._field).toBe("enum");
|
|
88
|
+
expect(f.options).toEqual([]);
|
|
89
|
+
});
|
|
90
|
+
it("should throw error for mixed string and object options", () => {
|
|
91
|
+
expect(() => {
|
|
92
|
+
// Using 'as any' to bypass type checking for runtime validation test
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
94
|
+
field.enum("mixed", ["string", { id: "obj", label: "Object" }]);
|
|
95
|
+
}).toThrow(/options must be all strings or all objects/);
|
|
96
|
+
});
|
|
97
|
+
it("should throw error for object options missing id", () => {
|
|
98
|
+
expect(() => {
|
|
99
|
+
// @ts-expect-error - intentionally testing invalid object
|
|
100
|
+
field.enum("invalid", [{ label: "No ID" }]);
|
|
101
|
+
}).toThrow(/object options must have string "id" and "label"/);
|
|
102
|
+
});
|
|
103
|
+
it("should throw error for object options missing label", () => {
|
|
104
|
+
expect(() => {
|
|
105
|
+
// @ts-expect-error - intentionally testing invalid object
|
|
106
|
+
field.enum("invalid", [{ id: "missing-label" }]);
|
|
107
|
+
}).toThrow(/object options must have string "id" and "label"/);
|
|
108
|
+
});
|
|
109
|
+
it("should throw error for object options with non-string id", () => {
|
|
110
|
+
expect(() => {
|
|
111
|
+
// @ts-expect-error - intentionally testing invalid object
|
|
112
|
+
field.enum("invalid", [{ id: 123, label: "Number ID" }]);
|
|
113
|
+
}).toThrow(/object options must have string "id" and "label"/);
|
|
114
|
+
});
|
|
115
|
+
it("should throw error for object options with non-string label", () => {
|
|
116
|
+
expect(() => {
|
|
117
|
+
// @ts-expect-error - intentionally testing invalid object
|
|
118
|
+
field.enum("invalid", [{ id: "valid", label: 456 }]);
|
|
119
|
+
}).toThrow(/object options must have string "id" and "label"/);
|
|
120
|
+
});
|
|
59
121
|
});
|
|
60
122
|
describe("field.dynamicEnum", () => {
|
|
61
123
|
it("should create a dynamic enum field with source", () => {
|
|
@@ -158,10 +220,9 @@ describe("complex compositions", () => {
|
|
|
158
220
|
expect(form.elements).toHaveLength(2);
|
|
159
221
|
const customerGroup = form.elements[0];
|
|
160
222
|
expect(customerGroup._type).toBe("group");
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
223
|
+
// Type is narrowed after the assertion above, safe to access group properties
|
|
224
|
+
expect(customerGroup.elements).toHaveLength(2);
|
|
225
|
+
expect(customerGroup.elements[1]._type).toBe("field");
|
|
165
226
|
});
|
|
166
227
|
});
|
|
167
228
|
//# sourceMappingURL=builders.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.test.js","sourceRoot":"","sources":["../../src/__tests__/builders.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builders.test.js","sourceRoot":"","sources":["../../src/__tests__/builders.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,52 +17,70 @@ expectType({});
|
|
|
17
17
|
expectType({});
|
|
18
18
|
// StaticEnumField should infer to union of options
|
|
19
19
|
expectType({});
|
|
20
|
+
// StaticEnumField with object options should infer to union of id values
|
|
21
|
+
expectType({});
|
|
20
22
|
expectType({});
|
|
21
23
|
expectType({});
|
|
22
24
|
// =============================================================================
|
|
23
25
|
// InferSchema tests - Basic fields
|
|
24
26
|
// =============================================================================
|
|
25
27
|
// Test single text field
|
|
26
|
-
const
|
|
28
|
+
const _singleTextField = formspec(field.text("name"));
|
|
27
29
|
expectType({});
|
|
28
30
|
// Test multiple basic fields
|
|
29
|
-
const
|
|
31
|
+
const _multipleFields = formspec(field.text("name"), field.number("age"), field.boolean("active"));
|
|
30
32
|
expectType({});
|
|
31
33
|
// =============================================================================
|
|
32
34
|
// InferSchema tests - Enum fields
|
|
33
35
|
// =============================================================================
|
|
34
36
|
// Test static enum field
|
|
35
|
-
const
|
|
37
|
+
const _enumForm = formspec(field.enum("status", ["draft", "sent", "paid"]));
|
|
38
|
+
expectType({});
|
|
39
|
+
// Test static enum field with object options
|
|
40
|
+
const _objectEnumForm = formspec(field.enum("priority", [
|
|
41
|
+
{ id: "low", label: "Low Priority" },
|
|
42
|
+
{ id: "high", label: "High Priority" },
|
|
43
|
+
]));
|
|
36
44
|
expectType({});
|
|
37
45
|
// =============================================================================
|
|
38
46
|
// InferSchema tests - Groups
|
|
39
47
|
// =============================================================================
|
|
40
48
|
// Test fields inside groups
|
|
41
|
-
const
|
|
49
|
+
const _groupForm = formspec(group("Customer", field.text("name"), field.text("email")), field.number("amount"));
|
|
42
50
|
expectType({});
|
|
43
51
|
// =============================================================================
|
|
44
52
|
// InferSchema tests - Conditionals
|
|
45
53
|
// =============================================================================
|
|
46
|
-
// Test fields inside conditionals
|
|
47
|
-
const
|
|
54
|
+
// Test fields inside conditionals - should be optional
|
|
55
|
+
const _conditionalForm = formspec(field.enum("type", ["personal", "business"]), when(is("type", "business"), field.text("company")));
|
|
56
|
+
// company is optional since it's inside a conditional
|
|
57
|
+
expectType({});
|
|
58
|
+
// Test multiple conditionals - all conditional fields should be optional
|
|
59
|
+
const _multiConditionalForm = formspec(field.enum("accountType", ["personal", "business"]), when(is("accountType", "personal"), field.text("ssn")), when(is("accountType", "business"), field.text("ein"), field.text("companyName")));
|
|
60
|
+
expectType({});
|
|
61
|
+
// Test conditional inside group - still optional
|
|
62
|
+
const _conditionalInGroupForm = formspec(group("Details", field.text("name"), when(is("showExtra", true), field.text("extra"))), field.boolean("showExtra"));
|
|
63
|
+
expectType({});
|
|
64
|
+
// Test group inside conditional - all fields optional
|
|
65
|
+
const _groupInConditionalForm = formspec(field.boolean("showAddress"), when(is("showAddress", true), group("Address", field.text("street"), field.text("city"))));
|
|
48
66
|
expectType({});
|
|
49
67
|
// =============================================================================
|
|
50
68
|
// InferSchema tests - Array fields
|
|
51
69
|
// =============================================================================
|
|
52
70
|
// Test array fields
|
|
53
|
-
const
|
|
71
|
+
const _arrayForm = formspec(field.array("addresses", field.text("street"), field.text("city")));
|
|
54
72
|
expectType({});
|
|
55
73
|
// =============================================================================
|
|
56
74
|
// InferSchema tests - Object fields
|
|
57
75
|
// =============================================================================
|
|
58
76
|
// Test object fields
|
|
59
|
-
const
|
|
77
|
+
const _objectForm = formspec(field.object("address", field.text("street"), field.text("city"), field.text("zip")));
|
|
60
78
|
expectType({});
|
|
61
79
|
// =============================================================================
|
|
62
80
|
// InferFormSchema tests
|
|
63
81
|
// =============================================================================
|
|
64
82
|
// Test InferFormSchema convenience type
|
|
65
|
-
const
|
|
83
|
+
const _complexForm = formspec(field.text("name"), field.number("amount"), field.enum("status", ["active", "inactive"]));
|
|
66
84
|
expectType({});
|
|
67
85
|
// =============================================================================
|
|
68
86
|
// Negative tests - types should NOT match
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inference.test-d.js","sourceRoot":"","sources":["../../src/__tests__/inference.test-d.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAW/D,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,mCAAmC;AACnC,UAAU,CAAS,EAAwC,CAAC,CAAC;AAE7D,qCAAqC;AACrC,UAAU,CAAS,EAAyC,CAAC,CAAC;AAE9D,uCAAuC;AACvC,UAAU,CAAU,EAA6C,CAAC,CAAC;AAEnE,mDAAmD;AACnD,UAAU,CACR,EAAoF,CACrF,CAAC;AAIF,UAAU,CACR,EAA4D,CAC7D,CAAC;AAIF,UAAU,CACR,EAA2D,CAC5D,CAAC;AAEF,gFAAgF;AAChF,mCAAmC;AACnC,gFAAgF;AAEhF,yBAAyB;AACzB,MAAM,
|
|
1
|
+
{"version":3,"file":"inference.test-d.js","sourceRoot":"","sources":["../../src/__tests__/inference.test-d.ts"],"names":[],"mappings":"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"}
|