@formspec/cli 0.1.0-alpha.8 → 0.1.0-alpha.9

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 (55) hide show
  1. package/README.md +50 -37
  2. package/dist/__tests__/analyzer.test.d.ts +4 -1
  3. package/dist/__tests__/analyzer.test.d.ts.map +1 -1
  4. package/dist/__tests__/analyzer.test.js +5 -104
  5. package/dist/__tests__/analyzer.test.js.map +1 -1
  6. package/dist/__tests__/codegen.test.d.ts +4 -1
  7. package/dist/__tests__/codegen.test.d.ts.map +1 -1
  8. package/dist/__tests__/codegen.test.js +30 -484
  9. package/dist/__tests__/codegen.test.js.map +1 -1
  10. package/dist/__tests__/edge-cases.test.d.ts +5 -7
  11. package/dist/__tests__/edge-cases.test.d.ts.map +1 -1
  12. package/dist/__tests__/edge-cases.test.js +6 -373
  13. package/dist/__tests__/edge-cases.test.js.map +1 -1
  14. package/dist/__tests__/fixtures/edge-cases.d.ts.map +1 -1
  15. package/dist/__tests__/fixtures/edge-cases.js.map +1 -1
  16. package/dist/__tests__/integration.test.js +29 -18
  17. package/dist/__tests__/integration.test.js.map +1 -1
  18. package/dist/index.js +38 -18
  19. package/dist/index.js.map +1 -1
  20. package/dist/output/writer.d.ts +5 -5
  21. package/dist/output/writer.d.ts.map +1 -1
  22. package/dist/output/writer.js +13 -13
  23. package/dist/output/writer.js.map +1 -1
  24. package/dist/runtime/formspec-loader.d.ts.map +1 -1
  25. package/dist/runtime/formspec-loader.js +1 -3
  26. package/dist/runtime/formspec-loader.js.map +1 -1
  27. package/package.json +4 -4
  28. package/dist/analyzer/class-analyzer.d.ts +0 -75
  29. package/dist/analyzer/class-analyzer.d.ts.map +0 -1
  30. package/dist/analyzer/class-analyzer.js +0 -151
  31. package/dist/analyzer/class-analyzer.js.map +0 -1
  32. package/dist/analyzer/decorator-extractor.d.ts +0 -87
  33. package/dist/analyzer/decorator-extractor.d.ts.map +0 -1
  34. package/dist/analyzer/decorator-extractor.js +0 -193
  35. package/dist/analyzer/decorator-extractor.js.map +0 -1
  36. package/dist/analyzer/program.d.ts +0 -37
  37. package/dist/analyzer/program.d.ts.map +0 -1
  38. package/dist/analyzer/program.js +0 -89
  39. package/dist/analyzer/program.js.map +0 -1
  40. package/dist/analyzer/type-converter.d.ts +0 -97
  41. package/dist/analyzer/type-converter.d.ts.map +0 -1
  42. package/dist/analyzer/type-converter.js +0 -360
  43. package/dist/analyzer/type-converter.js.map +0 -1
  44. package/dist/codegen/index.d.ts +0 -76
  45. package/dist/codegen/index.d.ts.map +0 -1
  46. package/dist/codegen/index.js +0 -558
  47. package/dist/codegen/index.js.map +0 -1
  48. package/dist/generators/class-schema.d.ts +0 -43
  49. package/dist/generators/class-schema.d.ts.map +0 -1
  50. package/dist/generators/class-schema.js +0 -61
  51. package/dist/generators/class-schema.js.map +0 -1
  52. package/dist/generators/method-schema.d.ts +0 -57
  53. package/dist/generators/method-schema.d.ts.map +0 -1
  54. package/dist/generators/method-schema.js +0 -108
  55. package/dist/generators/method-schema.js.map +0 -1
package/README.md CHANGED
@@ -53,14 +53,17 @@ formspec generate <file> [className] [options]
53
53
  ```
54
54
 
55
55
  **Arguments:**
56
+
56
57
  - `<file>` - Path to TypeScript source file
57
58
  - `[className]` - Optional class name to analyze (required for decorated classes)
58
59
 
59
60
  **Options:**
61
+
60
62
  - `-o, --output <dir>` - Output directory (default: `./generated`)
61
63
  - `-c, --compiled <path>` - Path to compiled JS file (auto-detected if omitted)
62
64
 
63
65
  **Examples:**
66
+
64
67
  ```bash
65
68
  # Generate from a decorated class
66
69
  formspec generate ./src/forms.ts UserForm -o ./generated
@@ -78,12 +81,15 @@ formspec codegen <files...> [options]
78
81
  ```
79
82
 
80
83
  **Arguments:**
84
+
81
85
  - `<files...>` - TypeScript source files to analyze
82
86
 
83
87
  **Options:**
88
+
84
89
  - `-o, --output <file>` - Output file (default: `./__formspec_types__.ts`)
85
90
 
86
91
  **Examples:**
92
+
87
93
  ```bash
88
94
  # Generate type metadata for a single file
89
95
  formspec codegen ./src/forms.ts -o ./src/__formspec_types__.ts
@@ -93,18 +99,20 @@ formspec codegen ./src/**/*.ts -o ./src/__formspec_types__.ts
93
99
  ```
94
100
 
95
101
  **Usage in code:**
102
+
96
103
  ```typescript
97
104
  // Import once at application entry point (side-effect import)
98
- import './__formspec_types__.js';
105
+ import "./__formspec_types__.js";
99
106
 
100
107
  // Then use runtime schema generation
101
- import { UserForm } from './forms.js';
102
- import { buildFormSchemas } from '@formspec/decorators';
108
+ import { UserForm } from "./forms.js";
109
+ import { buildFormSchemas } from "@formspec/decorators";
103
110
 
104
111
  const { jsonSchema, uiSchema } = buildFormSchemas(UserForm);
105
112
  ```
106
113
 
107
114
  **When to use `codegen`:**
115
+
108
116
  - You want to generate schemas at runtime (not build time)
109
117
  - You're using the decorator DSL (not chain DSL)
110
118
  - You need type information that TypeScript erases at compile time
@@ -165,11 +173,11 @@ Generated by `buildFormSchemas()` at runtime. Compatible with [JSON Forms](https
165
173
 
166
174
  ### Which Format to Use
167
175
 
168
- | Use Case | Format | Generated By |
169
- |----------|--------|--------------|
170
- | Custom form renderer | FormSpec Native | `formspec generate` CLI |
171
- | JSON Forms library | JSON Forms | `buildFormSchemas()` |
172
- | Server-side generation | Either | Depends on your renderer |
176
+ | Use Case | Format | Generated By |
177
+ | ---------------------- | --------------- | ------------------------ |
178
+ | Custom form renderer | FormSpec Native | `formspec generate` CLI |
179
+ | JSON Forms library | JSON Forms | `buildFormSchemas()` |
180
+ | Server-side generation | Either | Depends on your renderer |
173
181
 
174
182
  Both formats are generated from the same FormSpec definition, ensuring consistency between build-time and runtime generation.
175
183
 
@@ -179,18 +187,20 @@ Both formats are generated from the same FormSpec definition, ensuring consisten
179
187
 
180
188
  FormSpec offers two approaches for defining forms:
181
189
 
182
- | Approach | Best For | Schema Generation |
183
- |----------|----------|-------------------|
184
- | **Decorators + CLI** | Class-based data models, DTOs | Build-time (static analysis) or runtime (with codegen) |
185
- | **Chain DSL** | Dynamic forms, runtime construction | Build-time or runtime (no code generation needed) |
190
+ | Approach | Best For | Schema Generation |
191
+ | -------------------- | ----------------------------------- | ------------------------------------------------------ |
192
+ | **Decorators + CLI** | Class-based data models, DTOs | Build-time (static analysis) or runtime (with codegen) |
193
+ | **Chain DSL** | Dynamic forms, runtime construction | Build-time or runtime (no code generation needed) |
186
194
 
187
195
  **Use decorators + CLI when:**
196
+
188
197
  - Your forms map directly to TypeScript classes or DTOs
189
198
  - You prefer class-based modeling with validation constraints
190
199
  - You want type information inferred from TypeScript (no redundant type hints)
191
200
  - You need to generate schemas at build time for CI/CD pipelines
192
201
 
193
202
  **Use Chain DSL (`@formspec/dsl`) when:**
203
+
194
204
  - Forms are constructed dynamically at runtime
195
205
  - Form definitions come from a database or API
196
206
  - Forms don't correspond to specific TypeScript types
@@ -204,15 +214,15 @@ Both approaches produce identical JSON Schema and UI Schema output.
204
214
 
205
215
  The CLI uses the TypeScript Compiler API to statically analyze your source files. It automatically infers:
206
216
 
207
- | TypeScript Type | JSON Schema | FormSpec Field |
208
- |-----------------|-------------|----------------|
209
- | `string` | `{ "type": "string" }` | `{ "_field": "text" }` |
210
- | `number` | `{ "type": "number" }` | `{ "_field": "number" }` |
211
- | `boolean` | `{ "type": "boolean" }` | `{ "_field": "boolean" }` |
212
- | `"a" \| "b" \| "c"` | `{ "enum": ["a", "b", "c"] }` | `{ "_field": "enum", "options": [...] }` |
213
- | `string[]` | `{ "type": "array", "items": {...} }` | `{ "_field": "array" }` |
214
- | `{ a: string }` | `{ "type": "object", "properties": {...} }` | `{ "_field": "object" }` |
215
- | `field?: T` | not in `required` array | `{ "required": false }` |
217
+ | TypeScript Type | JSON Schema | FormSpec Field |
218
+ | ------------------- | ------------------------------------------- | ---------------------------------------- |
219
+ | `string` | `{ "type": "string" }` | `{ "_field": "text" }` |
220
+ | `number` | `{ "type": "number" }` | `{ "_field": "number" }` |
221
+ | `boolean` | `{ "type": "boolean" }` | `{ "_field": "boolean" }` |
222
+ | `"a" \| "b" \| "c"` | `{ "enum": ["a", "b", "c"] }` | `{ "_field": "enum", "options": [...] }` |
223
+ | `string[]` | `{ "type": "array", "items": {...} }` | `{ "_field": "array" }` |
224
+ | `{ a: string }` | `{ "type": "object", "properties": {...} }` | `{ "_field": "object" }` |
225
+ | `field?: T` | not in `required` array | `{ "required": false }` |
216
226
 
217
227
  ### Decorator Recognition
218
228
 
@@ -220,21 +230,21 @@ The CLI recognizes decorators by name through static analysis. You don't need a
220
230
 
221
231
  #### Supported Decorators
222
232
 
223
- | Decorator | Purpose | Example |
224
- |-----------|---------|---------|
225
- | `@Label(text)` | Set field label | `@Label("Full Name")` |
226
- | `@Placeholder(text)` | Set placeholder text | `@Placeholder("Enter name...")` |
227
- | `@Description(text)` | Set field description | `@Description("Your legal name")` |
228
- | `@Min(n)` | Set minimum value | `@Min(0)` |
229
- | `@Max(n)` | Set maximum value | `@Max(100)` |
230
- | `@MinLength(n)` | Set minimum string length | `@MinLength(1)` |
231
- | `@MaxLength(n)` | Set maximum string length | `@MaxLength(255)` |
232
- | `@MinItems(n)` | Set minimum array items | `@MinItems(1)` |
233
- | `@MaxItems(n)` | Set maximum array items | `@MaxItems(10)` |
234
- | `@Pattern(regex)` | Set validation pattern | `@Pattern("^[a-z]+$")` |
235
- | `@EnumOptions(opts)` | Override enum options | `@EnumOptions([{id: "us", label: "United States"}])` |
236
- | `@ShowWhen(cond)` | Conditional visibility | `@ShowWhen({ field: "type", value: "other" })` |
237
- | `@Group(name)` | Group fields together | `@Group("Contact Info")` |
233
+ | Decorator | Purpose | Example |
234
+ | -------------------- | ------------------------- | ---------------------------------------------------- |
235
+ | `@Label(text)` | Set field label | `@Label("Full Name")` |
236
+ | `@Placeholder(text)` | Set placeholder text | `@Placeholder("Enter name...")` |
237
+ | `@Description(text)` | Set field description | `@Description("Your legal name")` |
238
+ | `@Min(n)` | Set minimum value | `@Min(0)` |
239
+ | `@Max(n)` | Set maximum value | `@Max(100)` |
240
+ | `@MinLength(n)` | Set minimum string length | `@MinLength(1)` |
241
+ | `@MaxLength(n)` | Set maximum string length | `@MaxLength(255)` |
242
+ | `@MinItems(n)` | Set minimum array items | `@MinItems(1)` |
243
+ | `@MaxItems(n)` | Set maximum array items | `@MaxItems(10)` |
244
+ | `@Pattern(regex)` | Set validation pattern | `@Pattern("^[a-z]+$")` |
245
+ | `@EnumOptions(opts)` | Override enum options | `@EnumOptions([{id: "us", label: "United States"}])` |
246
+ | `@ShowWhen(cond)` | Conditional visibility | `@ShowWhen({ field: "type", value: "other" })` |
247
+ | `@Group(name)` | Group fields together | `@Group("Contact Info")` |
238
248
 
239
249
  #### Using Decorators
240
250
 
@@ -365,7 +375,7 @@ class ContactForm {
365
375
  @Label("Country")
366
376
  @EnumOptions([
367
377
  { id: "us", label: "United States" },
368
- { id: "ca", label: "Canada" }
378
+ { id: "ca", label: "Canada" },
369
379
  ])
370
380
  country!: "us" | "ca";
371
381
  }
@@ -374,6 +384,7 @@ class ContactForm {
374
384
  Running `formspec generate ./contact-form.ts ContactForm` produces:
375
385
 
376
386
  **schema.json:**
387
+
377
388
  ```json
378
389
  {
379
390
  "type": "object",
@@ -388,6 +399,7 @@ Running `formspec generate ./contact-form.ts ContactForm` produces:
388
399
  ```
389
400
 
390
401
  **ux_spec.json:**
402
+
391
403
  ```json
392
404
  {
393
405
  "elements": [
@@ -458,6 +470,7 @@ formspec generate ./src/forms.ts MyClass -o ./generated
458
470
  ### Decorators Not Being Recognized
459
471
 
460
472
  Ensure:
473
+
461
474
  1. Decorator names match exactly (case-sensitive): `@Label`, not `@label`
462
475
  2. Decorators are function calls: `@Label("text")`, not `@Label`
463
476
  3. The decorator is imported (even if it's a stub)
@@ -1,5 +1,8 @@
1
1
  /**
2
- * Unit tests for the analyzer module.
2
+ * Unit tests for the analyzer module (imported from @formspec/build).
3
+ *
4
+ * These tests verify that the CLI can use the analysis API from @formspec/build.
5
+ * Comprehensive analyzer tests are in @formspec/build.
3
6
  */
4
7
  export {};
5
8
  //# sourceMappingURL=analyzer.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/analyzer.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
1
+ {"version":3,"file":"analyzer.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/analyzer.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,11 +1,12 @@
1
1
  /**
2
- * Unit tests for the analyzer module.
2
+ * Unit tests for the analyzer module (imported from @formspec/build).
3
+ *
4
+ * These tests verify that the CLI can use the analysis API from @formspec/build.
5
+ * Comprehensive analyzer tests are in @formspec/build.
3
6
  */
4
7
  import { describe, it, expect } from "vitest";
5
8
  import * as path from "node:path";
6
- import { createProgramContext, findClassByName } from "../analyzer/program.js";
7
- import { analyzeClass } from "../analyzer/class-analyzer.js";
8
- import { convertType } from "../analyzer/type-converter.js";
9
+ import { createProgramContext, findClassByName, analyzeClass } from "@formspec/build/internals";
9
10
  const fixturesDir = path.join(__dirname, "fixtures");
10
11
  const sampleFormsPath = path.join(fixturesDir, "sample-forms.ts");
11
12
  describe("program", () => {
@@ -65,105 +66,5 @@ describe("analyzeClass", () => {
65
66
  expect(emailField?.optional).toBe(true);
66
67
  expect(amountField?.optional).toBe(false);
67
68
  });
68
- it("analyzes instance methods", () => {
69
- const ctx = createProgramContext(sampleFormsPath);
70
- const classDecl = findClassByName(ctx.sourceFile, "InstallmentPlan");
71
- if (!classDecl)
72
- throw new Error("InstallmentPlan class not found");
73
- const analysis = analyzeClass(classDecl, ctx.checker);
74
- expect(analysis.instanceMethods).toHaveLength(2);
75
- const methodNames = analysis.instanceMethods.map((m) => m.name);
76
- expect(methodNames).toContain("activate");
77
- expect(methodNames).toContain("cancelPlan");
78
- });
79
- it("analyzes static methods", () => {
80
- const ctx = createProgramContext(sampleFormsPath);
81
- const classDecl = findClassByName(ctx.sourceFile, "InstallmentPlan");
82
- if (!classDecl)
83
- throw new Error("InstallmentPlan class not found");
84
- const analysis = analyzeClass(classDecl, ctx.checker);
85
- expect(analysis.staticMethods).toHaveLength(1);
86
- expect(analysis.staticMethods[0]?.name).toBe("createStandard");
87
- });
88
- it("detects InferSchema references in method parameters", () => {
89
- const ctx = createProgramContext(sampleFormsPath);
90
- const classDecl = findClassByName(ctx.sourceFile, "InstallmentPlan");
91
- if (!classDecl)
92
- throw new Error("InstallmentPlan class not found");
93
- const analysis = analyzeClass(classDecl, ctx.checker);
94
- const activateMethod = analysis.instanceMethods.find((m) => m.name === "activate");
95
- expect(activateMethod?.parameters).toHaveLength(1);
96
- expect(activateMethod?.parameters[0]?.formSpecExportName).toBe("ActivateParams");
97
- const cancelMethod = analysis.instanceMethods.find((m) => m.name === "cancelPlan");
98
- expect(cancelMethod?.parameters[0]?.formSpecExportName).toBe("CancelParams");
99
- });
100
- it("analyzes SimpleProduct without FormSpec references", () => {
101
- const ctx = createProgramContext(sampleFormsPath);
102
- const classDecl = findClassByName(ctx.sourceFile, "SimpleProduct");
103
- if (!classDecl)
104
- throw new Error("SimpleProduct class not found");
105
- const analysis = analyzeClass(classDecl, ctx.checker);
106
- expect(analysis.name).toBe("SimpleProduct");
107
- expect(analysis.fields).toHaveLength(4);
108
- expect(analysis.instanceMethods).toHaveLength(1);
109
- expect(analysis.staticMethods).toHaveLength(0);
110
- // The update method shouldn't have a FormSpec reference
111
- const updateMethod = analysis.instanceMethods[0];
112
- expect(updateMethod?.parameters[0]?.formSpecExportName).toBeNull();
113
- });
114
- });
115
- describe("convertType", () => {
116
- it("converts string type", () => {
117
- const ctx = createProgramContext(sampleFormsPath);
118
- const classDecl = findClassByName(ctx.sourceFile, "SimpleProduct");
119
- if (!classDecl)
120
- throw new Error("SimpleProduct class not found");
121
- const analysis = analyzeClass(classDecl, ctx.checker);
122
- const nameField = analysis.fields.find((f) => f.name === "name");
123
- if (!nameField)
124
- throw new Error("name field not found");
125
- const result = convertType(nameField.type, ctx.checker);
126
- expect(result.jsonSchema.type).toBe("string");
127
- expect(result.formSpecFieldType).toBe("text");
128
- });
129
- it("converts number type", () => {
130
- const ctx = createProgramContext(sampleFormsPath);
131
- const classDecl = findClassByName(ctx.sourceFile, "SimpleProduct");
132
- if (!classDecl)
133
- throw new Error("SimpleProduct class not found");
134
- const analysis = analyzeClass(classDecl, ctx.checker);
135
- const priceField = analysis.fields.find((f) => f.name === "price");
136
- if (!priceField)
137
- throw new Error("price field not found");
138
- const result = convertType(priceField.type, ctx.checker);
139
- // price is optional so it's number | undefined
140
- expect(result.formSpecFieldType).toBe("number");
141
- });
142
- it("converts boolean type", () => {
143
- const ctx = createProgramContext(sampleFormsPath);
144
- const classDecl = findClassByName(ctx.sourceFile, "SimpleProduct");
145
- if (!classDecl)
146
- throw new Error("SimpleProduct class not found");
147
- const analysis = analyzeClass(classDecl, ctx.checker);
148
- const activeField = analysis.fields.find((f) => f.name === "active");
149
- if (!activeField)
150
- throw new Error("active field not found");
151
- const result = convertType(activeField.type, ctx.checker);
152
- expect(result.jsonSchema.type).toBe("boolean");
153
- expect(result.formSpecFieldType).toBe("boolean");
154
- });
155
- it("converts string literal union to enum", () => {
156
- const ctx = createProgramContext(sampleFormsPath);
157
- const classDecl = findClassByName(ctx.sourceFile, "InstallmentPlan");
158
- if (!classDecl)
159
- throw new Error("InstallmentPlan class not found");
160
- const analysis = analyzeClass(classDecl, ctx.checker);
161
- const statusField = analysis.fields.find((f) => f.name === "status");
162
- if (!statusField)
163
- throw new Error("status field not found");
164
- const result = convertType(statusField.type, ctx.checker);
165
- expect(result.jsonSchema.enum).toEqual(["active", "paused", "canceled"]);
166
- expect(result.formSpecFieldType).toBe("enum");
167
- });
168
69
  });
169
70
  //# sourceMappingURL=analyzer.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.test.js","sourceRoot":"","sources":["../../src/__tests__/analyzer.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer.test.js","sourceRoot":"","sources":["../../src/__tests__/analyzer.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  /**
2
- * Tests for the codegen type generation functions.
2
+ * Tests for the codegen type generation functions (imported from @formspec/build).
3
+ *
4
+ * Comprehensive codegen tests are in @formspec/build.
5
+ * This file verifies the CLI can access the codegen API.
3
6
  */
4
7
  export {};
5
8
  //# sourceMappingURL=codegen.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/codegen.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
1
+ {"version":3,"file":"codegen.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/codegen.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}