@formspec/build 0.1.0-alpha.10 → 0.1.0-alpha.12
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 +51 -15
- package/dist/__tests__/chain-dsl-canonicalizer.test.d.ts +2 -0
- package/dist/__tests__/chain-dsl-canonicalizer.test.d.ts.map +1 -0
- package/dist/__tests__/constraint-validator.test.d.ts +2 -0
- package/dist/__tests__/constraint-validator.test.d.ts.map +1 -0
- package/dist/__tests__/extension-api.test.d.ts +2 -0
- package/dist/__tests__/extension-api.test.d.ts.map +1 -0
- package/dist/__tests__/fixtures/example-a-builtins.d.ts +18 -0
- package/dist/__tests__/fixtures/example-a-builtins.d.ts.map +1 -1
- package/dist/__tests__/ir-analyzer.test.d.ts +11 -0
- package/dist/__tests__/ir-analyzer.test.d.ts.map +1 -0
- package/dist/__tests__/ir-jsdoc-constraints.test.d.ts +12 -0
- package/dist/__tests__/ir-jsdoc-constraints.test.d.ts.map +1 -0
- package/dist/__tests__/ir-json-schema-generator.test.d.ts +11 -0
- package/dist/__tests__/ir-json-schema-generator.test.d.ts.map +1 -0
- package/dist/__tests__/ir-ui-schema-generator.test.d.ts +2 -0
- package/dist/__tests__/ir-ui-schema-generator.test.d.ts.map +1 -0
- package/dist/__tests__/jsdoc-constraints.test.d.ts +4 -4
- package/dist/__tests__/parity/fixtures/address/chain-dsl.d.ts +9 -0
- package/dist/__tests__/parity/fixtures/address/chain-dsl.d.ts.map +1 -0
- package/dist/__tests__/parity/fixtures/address/expected-ir.d.ts +9 -0
- package/dist/__tests__/parity/fixtures/address/expected-ir.d.ts.map +1 -0
- package/dist/__tests__/parity/fixtures/address/tsdoc.d.ts +19 -0
- package/dist/__tests__/parity/fixtures/address/tsdoc.d.ts.map +1 -0
- package/dist/__tests__/parity/fixtures/product-config/chain-dsl.d.ts +13 -0
- package/dist/__tests__/parity/fixtures/product-config/chain-dsl.d.ts.map +1 -0
- package/dist/__tests__/parity/fixtures/product-config/expected-ir.d.ts +9 -0
- package/dist/__tests__/parity/fixtures/product-config/expected-ir.d.ts.map +1 -0
- package/dist/__tests__/parity/fixtures/product-config/tsdoc.d.ts +28 -0
- package/dist/__tests__/parity/fixtures/product-config/tsdoc.d.ts.map +1 -0
- package/dist/__tests__/parity/fixtures/user-registration/chain-dsl.d.ts +12 -0
- package/dist/__tests__/parity/fixtures/user-registration/chain-dsl.d.ts.map +1 -0
- package/dist/__tests__/parity/fixtures/user-registration/expected-ir.d.ts +9 -0
- package/dist/__tests__/parity/fixtures/user-registration/expected-ir.d.ts.map +1 -0
- package/dist/__tests__/parity/fixtures/user-registration/tsdoc.d.ts +19 -0
- package/dist/__tests__/parity/fixtures/user-registration/tsdoc.d.ts.map +1 -0
- package/dist/__tests__/parity/parity.test.d.ts +14 -0
- package/dist/__tests__/parity/parity.test.d.ts.map +1 -0
- package/dist/__tests__/parity/utils.d.ts +139 -0
- package/dist/__tests__/parity/utils.d.ts.map +1 -0
- package/dist/analyzer/class-analyzer.d.ts +54 -99
- package/dist/analyzer/class-analyzer.d.ts.map +1 -1
- package/dist/analyzer/jsdoc-constraints.d.ts +78 -30
- package/dist/analyzer/jsdoc-constraints.d.ts.map +1 -1
- package/dist/analyzer/tsdoc-parser.d.ts +61 -0
- package/dist/analyzer/tsdoc-parser.d.ts.map +1 -0
- package/dist/browser.cjs +1200 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.ts +12 -6
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +1147 -44
- package/dist/browser.js.map +1 -1
- package/dist/build.d.ts +385 -160
- package/dist/canonicalize/chain-dsl-canonicalizer.d.ts +18 -0
- package/dist/canonicalize/chain-dsl-canonicalizer.d.ts.map +1 -0
- package/dist/canonicalize/index.d.ts +8 -0
- package/dist/canonicalize/index.d.ts.map +1 -0
- package/dist/canonicalize/tsdoc-canonicalizer.d.ts +34 -0
- package/dist/canonicalize/tsdoc-canonicalizer.d.ts.map +1 -0
- package/dist/cli.cjs +2028 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.js +1978 -101
- package/dist/cli.js.map +1 -1
- package/dist/extensions/index.d.ts +8 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/registry.d.ts +55 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/generators/class-schema.d.ts +28 -47
- package/dist/generators/class-schema.d.ts.map +1 -1
- package/dist/generators/method-schema.d.ts +6 -8
- package/dist/generators/method-schema.d.ts.map +1 -1
- package/dist/index.cjs +1832 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1779 -114
- package/dist/index.js.map +1 -1
- package/dist/internals.cjs +2125 -0
- package/dist/internals.cjs.map +1 -0
- package/dist/internals.d.ts +12 -2
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +2084 -21
- package/dist/internals.js.map +1 -1
- package/dist/json-schema/generator.d.ts +10 -5
- package/dist/json-schema/generator.d.ts.map +1 -1
- package/dist/json-schema/ir-generator.d.ts +84 -0
- package/dist/json-schema/ir-generator.d.ts.map +1 -0
- package/dist/json-schema/schema.d.ts +16 -0
- package/dist/json-schema/schema.d.ts.map +1 -0
- package/dist/json-schema/types.d.ts +5 -6
- package/dist/json-schema/types.d.ts.map +1 -1
- package/dist/ui-schema/generator.d.ts +5 -0
- package/dist/ui-schema/generator.d.ts.map +1 -1
- package/dist/ui-schema/ir-generator.d.ts +53 -0
- package/dist/ui-schema/ir-generator.d.ts.map +1 -0
- package/dist/ui-schema/schema.d.ts +357 -0
- package/dist/ui-schema/schema.d.ts.map +1 -0
- package/dist/ui-schema/types.d.ts +8 -73
- package/dist/ui-schema/types.d.ts.map +1 -1
- package/dist/validate/constraint-validator.d.ts +66 -0
- package/dist/validate/constraint-validator.d.ts.map +1 -0
- package/dist/validate/index.d.ts +9 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/package.json +15 -9
- package/dist/__tests__/analyzer-edge-cases.test.d.ts +0 -13
- package/dist/__tests__/analyzer-edge-cases.test.d.ts.map +0 -1
- package/dist/__tests__/analyzer-edge-cases.test.js +0 -376
- package/dist/__tests__/analyzer-edge-cases.test.js.map +0 -1
- package/dist/__tests__/analyzer.test.d.ts +0 -5
- package/dist/__tests__/analyzer.test.d.ts.map +0 -1
- package/dist/__tests__/analyzer.test.js +0 -190
- package/dist/__tests__/analyzer.test.js.map +0 -1
- package/dist/__tests__/cli.test.js +0 -178
- package/dist/__tests__/cli.test.js.map +0 -1
- package/dist/__tests__/codegen.test.d.ts +0 -5
- package/dist/__tests__/codegen.test.d.ts.map +0 -1
- package/dist/__tests__/codegen.test.js +0 -506
- package/dist/__tests__/codegen.test.js.map +0 -1
- package/dist/__tests__/decorator-pipeline.test.d.ts +0 -11
- package/dist/__tests__/decorator-pipeline.test.d.ts.map +0 -1
- package/dist/__tests__/decorator-pipeline.test.js +0 -460
- package/dist/__tests__/decorator-pipeline.test.js.map +0 -1
- package/dist/__tests__/edge-cases.test.js +0 -215
- package/dist/__tests__/edge-cases.test.js.map +0 -1
- package/dist/__tests__/fixtures/edge-cases.js +0 -137
- package/dist/__tests__/fixtures/edge-cases.js.map +0 -1
- package/dist/__tests__/fixtures/example-a-builtins.js +0 -100
- package/dist/__tests__/fixtures/example-a-builtins.js.map +0 -1
- package/dist/__tests__/fixtures/example-b-decorators.d.ts +0 -5
- package/dist/__tests__/fixtures/example-b-decorators.d.ts.map +0 -1
- package/dist/__tests__/fixtures/example-b-decorators.js +0 -5
- package/dist/__tests__/fixtures/example-b-decorators.js.map +0 -1
- package/dist/__tests__/fixtures/example-b-extended.d.ts +0 -5
- package/dist/__tests__/fixtures/example-b-extended.d.ts.map +0 -1
- package/dist/__tests__/fixtures/example-b-extended.js +0 -60
- package/dist/__tests__/fixtures/example-b-extended.js.map +0 -1
- package/dist/__tests__/fixtures/example-c-custom.d.ts +0 -5
- package/dist/__tests__/fixtures/example-c-custom.d.ts.map +0 -1
- package/dist/__tests__/fixtures/example-c-custom.js +0 -61
- package/dist/__tests__/fixtures/example-c-custom.js.map +0 -1
- package/dist/__tests__/fixtures/example-c-decorators.d.ts +0 -5
- package/dist/__tests__/fixtures/example-c-decorators.d.ts.map +0 -1
- package/dist/__tests__/fixtures/example-c-decorators.js +0 -4
- package/dist/__tests__/fixtures/example-c-decorators.js.map +0 -1
- package/dist/__tests__/fixtures/example-d-mixed-decorators.d.ts +0 -6
- package/dist/__tests__/fixtures/example-d-mixed-decorators.d.ts.map +0 -1
- package/dist/__tests__/fixtures/example-d-mixed-decorators.js +0 -75
- package/dist/__tests__/fixtures/example-d-mixed-decorators.js.map +0 -1
- package/dist/__tests__/fixtures/example-e-decorators.d.ts +0 -11
- package/dist/__tests__/fixtures/example-e-decorators.d.ts.map +0 -1
- package/dist/__tests__/fixtures/example-e-decorators.js +0 -10
- package/dist/__tests__/fixtures/example-e-decorators.js.map +0 -1
- package/dist/__tests__/fixtures/example-e-no-namespace.d.ts +0 -5
- package/dist/__tests__/fixtures/example-e-no-namespace.d.ts.map +0 -1
- package/dist/__tests__/fixtures/example-e-no-namespace.js +0 -61
- package/dist/__tests__/fixtures/example-e-no-namespace.js.map +0 -1
- package/dist/__tests__/fixtures/example-interface-types.js +0 -8
- package/dist/__tests__/fixtures/example-interface-types.js.map +0 -1
- package/dist/__tests__/fixtures/example-jsdoc-constraints.d.ts +0 -16
- package/dist/__tests__/fixtures/example-jsdoc-constraints.d.ts.map +0 -1
- package/dist/__tests__/fixtures/example-jsdoc-constraints.js +0 -98
- package/dist/__tests__/fixtures/example-jsdoc-constraints.js.map +0 -1
- package/dist/__tests__/fixtures/example-nested-class.d.ts +0 -45
- package/dist/__tests__/fixtures/example-nested-class.d.ts.map +0 -1
- package/dist/__tests__/fixtures/example-nested-class.js +0 -248
- package/dist/__tests__/fixtures/example-nested-class.js.map +0 -1
- package/dist/__tests__/fixtures/sample-forms.js +0 -78
- package/dist/__tests__/fixtures/sample-forms.js.map +0 -1
- package/dist/__tests__/generator.test.js +0 -234
- package/dist/__tests__/generator.test.js.map +0 -1
- package/dist/__tests__/integration.test.js +0 -161
- package/dist/__tests__/integration.test.js.map +0 -1
- package/dist/__tests__/interface-types.test.d.ts +0 -11
- package/dist/__tests__/interface-types.test.d.ts.map +0 -1
- package/dist/__tests__/interface-types.test.js +0 -404
- package/dist/__tests__/interface-types.test.js.map +0 -1
- package/dist/__tests__/jsdoc-constraints.test.js +0 -465
- package/dist/__tests__/jsdoc-constraints.test.js.map +0 -1
- package/dist/__tests__/write-schemas.test.js +0 -198
- package/dist/__tests__/write-schemas.test.js.map +0 -1
- package/dist/analyzer/class-analyzer.js +0 -377
- package/dist/analyzer/class-analyzer.js.map +0 -1
- package/dist/analyzer/decorator-extractor.d.ts +0 -78
- package/dist/analyzer/decorator-extractor.d.ts.map +0 -1
- package/dist/analyzer/decorator-extractor.js +0 -336
- package/dist/analyzer/decorator-extractor.js.map +0 -1
- package/dist/analyzer/jsdoc-constraints.js +0 -153
- package/dist/analyzer/jsdoc-constraints.js.map +0 -1
- package/dist/analyzer/program.js +0 -114
- package/dist/analyzer/program.js.map +0 -1
- package/dist/analyzer/type-converter.d.ts +0 -75
- package/dist/analyzer/type-converter.d.ts.map +0 -1
- package/dist/analyzer/type-converter.js +0 -474
- package/dist/analyzer/type-converter.js.map +0 -1
- package/dist/codegen/index.d.ts +0 -75
- package/dist/codegen/index.d.ts.map +0 -1
- package/dist/codegen/index.js +0 -597
- package/dist/codegen/index.js.map +0 -1
- package/dist/generators/class-schema.js +0 -140
- package/dist/generators/class-schema.js.map +0 -1
- package/dist/generators/method-schema.js +0 -108
- package/dist/generators/method-schema.js.map +0 -1
- package/dist/json-schema/generator.js +0 -166
- package/dist/json-schema/generator.js.map +0 -1
- package/dist/json-schema/types.js +0 -33
- package/dist/json-schema/types.js.map +0 -1
- package/dist/ui-schema/generator.js +0 -148
- package/dist/ui-schema/generator.js.map +0 -1
- package/dist/ui-schema/types.js +0 -8
- package/dist/ui-schema/types.js.map +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for JSON Schema output validation.
|
|
3
|
+
*
|
|
4
|
+
* These schemas cover the subset of JSON Schema that FormSpec generates,
|
|
5
|
+
* plus the FormSpec-specific `x-formspec-*` extension properties.
|
|
6
|
+
*
|
|
7
|
+
* @see https://json-schema.org/draft/2020-12/schema
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import type { JSONSchema7 } from "./types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Zod schema for JSON Schema primitive type strings.
|
|
13
|
+
*/
|
|
14
|
+
export declare const jsonSchemaTypeSchema: z.ZodEnum<["string", "number", "integer", "boolean", "object", "array", "null"]>;
|
|
15
|
+
export declare const jsonSchema7Schema: z.ZodType<JSONSchema7>;
|
|
16
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/json-schema/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C;;GAEG;AACH,eAAO,MAAM,oBAAoB,kFAQ/B,CAAC;AAeH,eAAO,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAoEpD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* JSON Schema
|
|
2
|
+
* JSON Schema type definitions.
|
|
3
3
|
*
|
|
4
4
|
* These types are a subset of JSON Schema sufficient for form generation.
|
|
5
5
|
*/
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export type JSONSchemaType = "string" | "number" | "integer" | "boolean" | "object" | "array" | "null";
|
|
10
10
|
/**
|
|
11
|
-
* A JSON Schema definition (
|
|
11
|
+
* A JSON Schema definition (legacy subset used by Zod validator and types.ts).
|
|
12
12
|
*/
|
|
13
13
|
export interface JSONSchema7 {
|
|
14
14
|
$schema?: string;
|
|
@@ -73,16 +73,15 @@ export type ExtendedJSONSchema7 = JSONSchema7 & FormSpecSchemaExtensions;
|
|
|
73
73
|
* @param key - Extension key (must start with `x-formspec-`)
|
|
74
74
|
* @param value - Extension value
|
|
75
75
|
*/
|
|
76
|
-
export declare function setSchemaExtension(schema:
|
|
76
|
+
export declare function setSchemaExtension(schema: object, key: `x-formspec-${string}`, value: unknown): void;
|
|
77
77
|
/**
|
|
78
78
|
* Reads a FormSpec extension property from a JSON Schema node.
|
|
79
79
|
*
|
|
80
|
-
*
|
|
81
|
-
* including nested schemas typed as `JSONSchema7`.
|
|
80
|
+
* Accepts any schema object — `JSONSchema7`, `JsonSchema2020`, `ExtendedJSONSchema7`, etc.
|
|
82
81
|
*
|
|
83
82
|
* @param schema - Any JSON Schema node
|
|
84
83
|
* @param key - Extension key (must start with `x-formspec-`)
|
|
85
84
|
* @returns The extension value, or `undefined` if not present
|
|
86
85
|
*/
|
|
87
|
-
export declare function getSchemaExtension(schema:
|
|
86
|
+
export declare function getSchemaExtension(schema: object, key: `x-formspec-${string}`): unknown;
|
|
88
87
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/json-schema/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,OAAO,GACP,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,IAAI,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IAGzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAGzC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAG7C,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,WAAW,CAAC;IAGlB,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IAGnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,OAAO,CAAC,EAAE,OAAO,CAAC;IAMlB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAExC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,2DAA2D;AAC3D,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,cAAc,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AAE/E,sFAAsF;AACtF,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,wBAAwB,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/json-schema/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,OAAO,GACP,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,IAAI,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IAGzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAGzC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAG7C,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,WAAW,CAAC;IAGlB,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IAGnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,OAAO,CAAC,EAAE,OAAO,CAAC;IAMlB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAExC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,2DAA2D;AAC3D,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,cAAc,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AAE/E,sFAAsF;AACtF,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,wBAAwB,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,MAAM,EAAE,EAC3B,KAAK,EAAE,OAAO,GACb,IAAI,CAEN;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,MAAM,EAAE,GAAG,OAAO,CAEvF"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* JSON Forms UI Schema generator for FormSpec forms.
|
|
3
|
+
*
|
|
4
|
+
* Routes through the canonical IR pipeline: Chain DSL → FormIR → UI Schema.
|
|
3
5
|
*/
|
|
4
6
|
import type { FormElement, FormSpec } from "@formspec/core";
|
|
5
7
|
import type { UISchema } from "./types.js";
|
|
6
8
|
/**
|
|
7
9
|
* Generates a JSON Forms UI Schema from a FormSpec.
|
|
8
10
|
*
|
|
11
|
+
* All generation routes through the canonical IR. The chain DSL is first
|
|
12
|
+
* canonicalized to a FormIR, then the IR-based generator produces the schema.
|
|
13
|
+
*
|
|
9
14
|
* @example
|
|
10
15
|
* ```typescript
|
|
11
16
|
* const form = formspec(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/ui-schema/generator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/ui-schema/generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAG9F"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON Forms UI Schema generator that operates on the canonical FormIR.
|
|
3
|
+
*
|
|
4
|
+
* This generator consumes the IR produced by the Canonicalize phase and
|
|
5
|
+
* produces a JSON Forms UI Schema. All downstream UI Schema generation
|
|
6
|
+
* should use this module for UI Schema generation.
|
|
7
|
+
*/
|
|
8
|
+
import type { FormIR } from "@formspec/core";
|
|
9
|
+
import type { UISchema } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Generates a JSON Forms UI Schema from a canonical `FormIR`.
|
|
12
|
+
*
|
|
13
|
+
* Mapping rules:
|
|
14
|
+
* - `FieldNode` → `ControlElement` with `scope: "#/properties/<name>"`
|
|
15
|
+
* - `displayName` annotation → `label` on the `ControlElement`
|
|
16
|
+
* - `GroupLayoutNode` → `GroupLayout` with recursively converted `elements`
|
|
17
|
+
* - `ConditionalLayoutNode` → children flattened with a `SHOW` rule
|
|
18
|
+
* - Nested conditionals → combined `allOf` rule
|
|
19
|
+
* - Root wrapper is always `{ type: "VerticalLayout", elements: [...] }`
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const ir = canonicalizeDSL(
|
|
24
|
+
* formspec(
|
|
25
|
+
* group("Customer", field.text("name", { label: "Name" })),
|
|
26
|
+
* when(is("status", "draft"), field.text("notes", { label: "Notes" })),
|
|
27
|
+
* )
|
|
28
|
+
* );
|
|
29
|
+
*
|
|
30
|
+
* const uiSchema = generateUiSchemaFromIR(ir);
|
|
31
|
+
* // {
|
|
32
|
+
* // type: "VerticalLayout",
|
|
33
|
+
* // elements: [
|
|
34
|
+
* // {
|
|
35
|
+
* // type: "Group",
|
|
36
|
+
* // label: "Customer",
|
|
37
|
+
* // elements: [{ type: "Control", scope: "#/properties/name", label: "Name" }]
|
|
38
|
+
* // },
|
|
39
|
+
* // {
|
|
40
|
+
* // type: "Control",
|
|
41
|
+
* // scope: "#/properties/notes",
|
|
42
|
+
* // label: "Notes",
|
|
43
|
+
* // rule: { effect: "SHOW", condition: { scope: "#/properties/status", schema: { const: "draft" } } }
|
|
44
|
+
* // }
|
|
45
|
+
* // ]
|
|
46
|
+
* // }
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param ir - The canonical FormIR produced by the Canonicalize phase
|
|
50
|
+
* @returns A validated JSON Forms UI Schema
|
|
51
|
+
*/
|
|
52
|
+
export declare function generateUiSchemaFromIR(ir: FormIR): UISchema;
|
|
53
|
+
//# sourceMappingURL=ir-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir-generator.d.ts","sourceRoot":"","sources":["../../src/ui-schema/ir-generator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAA6C,MAAM,gBAAgB,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAsD,MAAM,YAAY,CAAC;AA2K/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAO3D"}
|
|
@@ -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
|
-
*
|
|
4
|
+
* Types are derived from Zod schemas in ./schema.ts.
|
|
5
5
|
* See: https://jsonforms.io/docs/uischema/
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
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"}
|