@formspec/build 0.1.0-alpha.27 → 0.1.0-alpha.29

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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -2
  3. package/dist/analyzer/class-analyzer.d.ts +12 -6
  4. package/dist/analyzer/class-analyzer.d.ts.map +1 -1
  5. package/dist/analyzer/program.d.ts +3 -2
  6. package/dist/analyzer/program.d.ts.map +1 -1
  7. package/dist/browser.cjs +485 -76
  8. package/dist/browser.cjs.map +1 -1
  9. package/dist/browser.js +486 -77
  10. package/dist/browser.js.map +1 -1
  11. package/dist/build-alpha.d.ts +18 -2
  12. package/dist/build-beta.d.ts +18 -2
  13. package/dist/build-internal.d.ts +18 -2
  14. package/dist/build.d.ts +18 -2
  15. package/dist/canonicalize/chain-dsl-canonicalizer.d.ts +5 -2
  16. package/dist/canonicalize/chain-dsl-canonicalizer.d.ts.map +1 -1
  17. package/dist/canonicalize/tsdoc-canonicalizer.d.ts +5 -1
  18. package/dist/canonicalize/tsdoc-canonicalizer.d.ts.map +1 -1
  19. package/dist/cli.cjs +1460 -143
  20. package/dist/cli.cjs.map +1 -1
  21. package/dist/cli.js +1458 -139
  22. package/dist/cli.js.map +1 -1
  23. package/dist/generators/class-schema.d.ts +6 -1
  24. package/dist/generators/class-schema.d.ts.map +1 -1
  25. package/dist/generators/method-schema.d.ts.map +1 -1
  26. package/dist/generators/mixed-authoring.d.ts.map +1 -1
  27. package/dist/index.cjs +1425 -141
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.ts +4 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1425 -139
  32. package/dist/index.js.map +1 -1
  33. package/dist/internals.cjs +1416 -178
  34. package/dist/internals.cjs.map +1 -1
  35. package/dist/internals.js +1416 -176
  36. package/dist/internals.js.map +1 -1
  37. package/dist/json-schema/generator.d.ts +3 -1
  38. package/dist/json-schema/generator.d.ts.map +1 -1
  39. package/dist/json-schema/ir-generator.d.ts.map +1 -1
  40. package/dist/metadata/collision-guards.d.ts +3 -0
  41. package/dist/metadata/collision-guards.d.ts.map +1 -0
  42. package/dist/metadata/index.d.ts +7 -0
  43. package/dist/metadata/index.d.ts.map +1 -0
  44. package/dist/metadata/policy.d.ts +11 -0
  45. package/dist/metadata/policy.d.ts.map +1 -0
  46. package/dist/metadata/resolve.d.ts +20 -0
  47. package/dist/metadata/resolve.d.ts.map +1 -0
  48. package/dist/ui-schema/generator.d.ts +11 -2
  49. package/dist/ui-schema/generator.d.ts.map +1 -1
  50. package/dist/ui-schema/ir-generator.d.ts +2 -1
  51. package/dist/ui-schema/ir-generator.d.ts.map +1 -1
  52. package/package.json +7 -6
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Routes through the canonical IR pipeline: Chain DSL → FormIR → JSON Schema 2020-12.
5
5
  */
6
- import type { FormElement, FormSpec } from "@formspec/core";
6
+ import type { FormElement, FormSpec, MetadataPolicyInput } from "@formspec/core";
7
7
  import { type JsonSchema2020 } from "./ir-generator.js";
8
8
  /**
9
9
  * Options for generating JSON Schema from a Chain DSL form.
@@ -16,6 +16,8 @@ export interface GenerateJsonSchemaOptions {
16
16
  * @defaultValue "x-formspec"
17
17
  */
18
18
  readonly vendorPrefix?: string | undefined;
19
+ /** Metadata resolution policy for chain DSL generation. */
20
+ readonly metadata?: MetadataPolicyInput | undefined;
19
21
  }
20
22
  /**
21
23
  * Generates a JSON Schema 2020-12 from a FormSpec.
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/json-schema/generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,SAAS,WAAW,EAAE,EACjE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EACjB,OAAO,CAAC,EAAE,yBAAyB,GAClC,cAAc,CAKhB"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/json-schema/generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,SAAS,WAAW,EAAE,EACjE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EACjB,OAAO,CAAC,EAAE,yBAAyB,GAClC,cAAc,CAQhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ir-generator.d.ts","sourceRoot":"","sources":["../../src/json-schema/ir-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,MAAM,EAgBP,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAMhE;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,iEAAiE;IACjE,oBAAoB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAChD,2CAA2C;IAC3C,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACpC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mDAAmD;IACnD,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,iEAAiE;IACjE,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAElC,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,qDAAqD;IACrD,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC;CAC/B;AAqBD;;;;GAIG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3D;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAqBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,+BAA+B,GACxC,cAAc,CAwChB"}
1
+ {"version":3,"file":"ir-generator.d.ts","sourceRoot":"","sources":["../../src/json-schema/ir-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,MAAM,EAgBP,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAQhE;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,iEAAiE;IACjE,oBAAoB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAChD,2CAA2C;IAC3C,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACpC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mDAAmD;IACnD,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,iEAAiE;IACjE,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAElC,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,qDAAqD;IACrD,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC;CAC/B;AAyBD;;;;GAIG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3D;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,+BAA+B,GACxC,cAAc,CAsDhB"}
@@ -0,0 +1,3 @@
1
+ import type { FormIR } from "@formspec/core/internals";
2
+ export declare function assertNoSerializedNameCollisions(ir: FormIR): void;
3
+ //# sourceMappingURL=collision-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collision-guards.d.ts","sourceRoot":"","sources":["../../src/metadata/collision-guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,MAAM,EAKP,MAAM,0BAA0B,CAAC;AA4HlC,wBAAgB,gCAAgC,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAejE"}
@@ -0,0 +1,7 @@
1
+ export type { NormalizedPluralizationPolicy as NormalizedMetadataPluralizationPolicy, NormalizedMetadataScalarPolicy, NormalizedDeclarationMetadataPolicy, NormalizedMetadataPolicy, MetadataResolutionContext, } from "./policy.js";
2
+ export { normalizeMetadataPolicy, getDeclarationMetadataPolicy, makeMetadataContext, defaultApiNameInference, defaultDisplayNameInference, getDefaultMetadataPolicy, } from "./policy.js";
3
+ export type { ExplicitMetadataInput } from "./resolve.js";
4
+ export { resolveMetadata, getSerializedName, getDisplayName } from "./resolve.js";
5
+ export type { ResolveFormIRMetadataOptions } from "./resolve.js";
6
+ export { resolveFormIRMetadata, mergeResolvedMetadata } from "./resolve.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,6BAA6B,IAAI,qCAAqC,EACtE,8BAA8B,EAC9B,mCAAmC,EACnC,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAClF,YAAY,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { MetadataAuthoringSurface, MetadataDeclarationKind, MetadataInferenceContext, MetadataPolicyInput, NormalizedDeclarationMetadataPolicy, NormalizedMetadataPolicy, NormalizedMetadataValuePolicy } from "@formspec/core/internals";
2
+ export type { NormalizedDeclarationMetadataPolicy, NormalizedMetadataPolicy, NormalizedMetadataPluralizationPolicy as NormalizedPluralizationPolicy, } from "@formspec/core/internals";
3
+ export type MetadataResolutionContext = MetadataInferenceContext;
4
+ export type NormalizedMetadataScalarPolicy = NormalizedMetadataValuePolicy;
5
+ export declare function defaultApiNameInference(_context: MetadataResolutionContext): string;
6
+ export declare function defaultDisplayNameInference(_context: MetadataResolutionContext): string;
7
+ export declare function normalizeMetadataPolicy(input?: MetadataPolicyInput): NormalizedMetadataPolicy;
8
+ export declare function getDeclarationMetadataPolicy(policy: NormalizedMetadataPolicy, declarationKind: MetadataDeclarationKind): NormalizedDeclarationMetadataPolicy;
9
+ export declare function makeMetadataContext(surface: MetadataAuthoringSurface, declarationKind: MetadataDeclarationKind, logicalName: string, buildContext?: unknown): MetadataResolutionContext;
10
+ export declare function getDefaultMetadataPolicy(): NormalizedMetadataPolicy;
11
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/metadata/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EAGxB,mBAAmB,EAEnB,mCAAmC,EACnC,wBAAwB,EAExB,6BAA6B,EAC9B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mCAAmC,EACnC,wBAAwB,EACxB,qCAAqC,IAAI,6BAA6B,GACvE,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AACjE,MAAM,MAAM,8BAA8B,GAAG,6BAA6B,CAAC;AAE3E,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,yBAAyB,GAClC,MAAM,CAER;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,yBAAyB,GAClC,MAAM,CAER;AAiED,wBAAgB,uBAAuB,CACrC,KAAK,CAAC,EAAE,mBAAmB,GAC1B,wBAAwB,CAM1B;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,wBAAwB,EAChC,eAAe,EAAE,uBAAuB,GACvC,mCAAmC,CAErC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,wBAAwB,EACjC,eAAe,EAAE,uBAAuB,EACxC,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,OAAO,GACrB,yBAAyB,CAO3B;AAED,wBAAgB,wBAAwB,IAAI,wBAAwB,CAEnE"}
@@ -0,0 +1,20 @@
1
+ import type { FormIR, MetadataAuthoringSurface, ResolvedMetadata } from "@formspec/core/internals";
2
+ import type { MetadataResolutionContext, NormalizedDeclarationMetadataPolicy, NormalizedMetadataPolicy } from "./policy.js";
3
+ export interface ExplicitMetadataInput {
4
+ readonly apiName?: string;
5
+ readonly displayName?: string;
6
+ readonly apiNamePlural?: string;
7
+ readonly displayNamePlural?: string;
8
+ }
9
+ export interface ResolveFormIRMetadataOptions {
10
+ readonly policy: NormalizedMetadataPolicy;
11
+ readonly surface: MetadataAuthoringSurface;
12
+ readonly buildContext?: unknown;
13
+ readonly rootLogicalName?: string;
14
+ }
15
+ export declare function resolveMetadata(explicit: ExplicitMetadataInput | undefined, policy: NormalizedDeclarationMetadataPolicy, context: MetadataResolutionContext): ResolvedMetadata | undefined;
16
+ export declare function mergeResolvedMetadata(baseMetadata: ResolvedMetadata | undefined, overlayMetadata: ResolvedMetadata | undefined): ResolvedMetadata | undefined;
17
+ export declare function getSerializedName(logicalName: string, metadata: ResolvedMetadata | undefined): string;
18
+ export declare function getDisplayName(metadata: ResolvedMetadata | undefined): string | undefined;
19
+ export declare function resolveFormIRMetadata(ir: FormIR, options: ResolveFormIRMetadataOptions): FormIR;
20
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/metadata/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,MAAM,EAEN,wBAAwB,EAExB,gBAAgB,EAIjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,yBAAyB,EACzB,mCAAmC,EACnC,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAkQD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,qBAAqB,GAAG,SAAS,EAC3C,MAAM,EAAE,mCAAmC,EAC3C,OAAO,EAAE,yBAAyB,GACjC,gBAAgB,GAAG,SAAS,CAE9B;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,gBAAgB,GAAG,SAAS,EAC1C,eAAe,EAAE,gBAAgB,GAAG,SAAS,GAC5C,gBAAgB,GAAG,SAAS,CA8B9B;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GACrC,MAAM,CAER;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEzF;AAED,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,4BAA4B,GACpC,MAAM,CAoBR"}
@@ -3,8 +3,17 @@
3
3
  *
4
4
  * Routes through the canonical IR pipeline: Chain DSL → FormIR → UI Schema.
5
5
  */
6
- import type { FormElement, FormSpec } from "@formspec/core";
6
+ import type { FormElement, FormSpec, MetadataPolicyInput } from "@formspec/core";
7
7
  import type { UISchema } from "./types.js";
8
+ /**
9
+ * Options for generating a UI Schema from a Chain DSL form.
10
+ *
11
+ * @public
12
+ */
13
+ export interface GenerateUiSchemaOptions {
14
+ /** Metadata resolution policy for chain DSL UI generation. */
15
+ readonly metadata?: MetadataPolicyInput | undefined;
16
+ }
8
17
  /**
9
18
  * Generates a JSON Forms UI Schema from a FormSpec.
10
19
  *
@@ -51,5 +60,5 @@ import type { UISchema } from "./types.js";
51
60
  *
52
61
  * @public
53
62
  */
54
- export declare function generateUiSchema<E extends readonly FormElement[]>(form: FormSpec<E>): UISchema;
63
+ export declare function generateUiSchema<E extends readonly FormElement[]>(form: FormSpec<E>, options?: GenerateUiSchemaOptions): UISchema;
55
64
  //# sourceMappingURL=generator.d.ts.map
@@ -1 +1 @@
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAG9F"}
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,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,WAAW,EAAE,EAC/D,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EACjB,OAAO,CAAC,EAAE,uBAAuB,GAChC,QAAQ,CAMV"}
@@ -12,7 +12,8 @@ import type { UISchema } from "./types.js";
12
12
  *
13
13
  * Mapping rules:
14
14
  * - `FieldNode` → `ControlElement` with `scope: "#/properties/<name>"`
15
- * - `displayName` annotation → `label` on the `ControlElement`
15
+ * - resolved `displayName` metadata → `label` on the `ControlElement`
16
+ * - `displayName` annotation → fallback `label` when metadata is absent
16
17
  * - `GroupLayoutNode` → `GroupLayout` with recursively converted `elements`
17
18
  * - `ConditionalLayoutNode` → children flattened with a `SHOW` rule
18
19
  * - Nested conditionals → combined `allOf` rule
@@ -1 +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,0BAA0B,CAAC;AAClG,OAAO,KAAK,EACV,QAAQ,EAMT,MAAM,YAAY,CAAC;AAuLpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAO3D"}
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,0BAA0B,CAAC;AAGlG,OAAO,KAAK,EACV,QAAQ,EAMT,MAAM,YAAY,CAAC;AAqMpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAS3D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formspec/build",
3
- "version": "0.1.0-alpha.27",
3
+ "version": "0.1.0-alpha.29",
4
4
  "description": "Build tools to compile FormSpec forms to JSON Schema and UI Schema",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -28,27 +28,28 @@
28
28
  },
29
29
  "files": [
30
30
  "dist",
31
- "README.md"
31
+ "README.md",
32
+ "LICENSE"
32
33
  ],
33
34
  "dependencies": {
34
35
  "@microsoft/tsdoc": "^0.16.0",
35
36
  "@microsoft/tsdoc-config": "^0.18.1",
36
37
  "zod": "^3.25.0",
37
- "@formspec/analysis": "0.1.0-alpha.27",
38
- "@formspec/core": "0.1.0-alpha.27"
38
+ "@formspec/analysis": "0.1.0-alpha.29",
39
+ "@formspec/core": "0.1.0-alpha.29"
39
40
  },
40
41
  "peerDependencies": {
41
42
  "typescript": "^5.0.0"
42
43
  },
43
44
  "devDependencies": {
44
45
  "vitest": "^3.0.0",
45
- "@formspec/dsl": "0.1.0-alpha.27"
46
+ "@formspec/dsl": "0.1.0-alpha.29"
46
47
  },
47
48
  "publishConfig": {
48
49
  "access": "public"
49
50
  },
50
51
  "keywords": [],
51
- "license": "UNLICENSED",
52
+ "license": "MIT",
52
53
  "scripts": {
53
54
  "build": "tsup && tsc --emitDeclarationOnly && pnpm run api-extractor:local",
54
55
  "clean": "rm -rf dist temp",