@formspec/build 0.1.0-alpha.2 → 0.1.0-alpha.21

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 (177) hide show
  1. package/README.md +120 -0
  2. package/dist/__tests__/alias-chain-propagation.test.d.ts +9 -0
  3. package/dist/__tests__/alias-chain-propagation.test.d.ts.map +1 -0
  4. package/dist/__tests__/chain-dsl-canonicalizer.test.d.ts +2 -0
  5. package/dist/__tests__/chain-dsl-canonicalizer.test.d.ts.map +1 -0
  6. package/dist/__tests__/class-schema.test.d.ts +2 -0
  7. package/dist/__tests__/class-schema.test.d.ts.map +1 -0
  8. package/dist/__tests__/constraint-validator.test.d.ts +2 -0
  9. package/dist/__tests__/constraint-validator.test.d.ts.map +1 -0
  10. package/dist/__tests__/date-extension.integration.test.d.ts +2 -0
  11. package/dist/__tests__/date-extension.integration.test.d.ts.map +1 -0
  12. package/dist/__tests__/extension-api.test.d.ts +2 -0
  13. package/dist/__tests__/extension-api.test.d.ts.map +1 -0
  14. package/dist/__tests__/extension-runtime.integration.test.d.ts +2 -0
  15. package/dist/__tests__/extension-runtime.integration.test.d.ts.map +1 -0
  16. package/dist/__tests__/fixtures/alias-chains.d.ts +37 -0
  17. package/dist/__tests__/fixtures/alias-chains.d.ts.map +1 -0
  18. package/dist/__tests__/fixtures/class-schema-regressions.d.ts +86 -0
  19. package/dist/__tests__/fixtures/class-schema-regressions.d.ts.map +1 -0
  20. package/dist/__tests__/fixtures/edge-cases.d.ts +132 -0
  21. package/dist/__tests__/fixtures/edge-cases.d.ts.map +1 -0
  22. package/dist/__tests__/fixtures/example-a-builtins.d.ts +31 -0
  23. package/dist/__tests__/fixtures/example-a-builtins.d.ts.map +1 -0
  24. package/dist/__tests__/fixtures/example-date-extension.d.ts +12 -0
  25. package/dist/__tests__/fixtures/example-date-extension.d.ts.map +1 -0
  26. package/dist/__tests__/fixtures/example-interface-types.d.ts +107 -0
  27. package/dist/__tests__/fixtures/example-interface-types.d.ts.map +1 -0
  28. package/dist/__tests__/fixtures/example-numeric-extension.d.ts +20 -0
  29. package/dist/__tests__/fixtures/example-numeric-extension.d.ts.map +1 -0
  30. package/dist/__tests__/fixtures/extension-forms.d.ts +7 -0
  31. package/dist/__tests__/fixtures/extension-forms.d.ts.map +1 -0
  32. package/dist/__tests__/fixtures/mixed-authoring-shipping-address.d.ts +31 -0
  33. package/dist/__tests__/fixtures/mixed-authoring-shipping-address.d.ts.map +1 -0
  34. package/dist/__tests__/fixtures/named-primitive-aliases.d.ts +15 -0
  35. package/dist/__tests__/fixtures/named-primitive-aliases.d.ts.map +1 -0
  36. package/dist/__tests__/fixtures/nested-array-path-constraints.d.ts +14 -0
  37. package/dist/__tests__/fixtures/nested-array-path-constraints.d.ts.map +1 -0
  38. package/dist/__tests__/fixtures/sample-forms.d.ts +65 -0
  39. package/dist/__tests__/fixtures/sample-forms.d.ts.map +1 -0
  40. package/dist/__tests__/generate-schemas.test.d.ts +2 -0
  41. package/dist/__tests__/generate-schemas.test.d.ts.map +1 -0
  42. package/dist/__tests__/guards.test.d.ts +2 -0
  43. package/dist/__tests__/guards.test.d.ts.map +1 -0
  44. package/dist/__tests__/ir-analyzer.test.d.ts +11 -0
  45. package/dist/__tests__/ir-analyzer.test.d.ts.map +1 -0
  46. package/dist/__tests__/ir-jsdoc-constraints.test.d.ts +12 -0
  47. package/dist/__tests__/ir-jsdoc-constraints.test.d.ts.map +1 -0
  48. package/dist/__tests__/ir-json-schema-generator.test.d.ts +11 -0
  49. package/dist/__tests__/ir-json-schema-generator.test.d.ts.map +1 -0
  50. package/dist/__tests__/ir-ui-schema-generator.test.d.ts +2 -0
  51. package/dist/__tests__/ir-ui-schema-generator.test.d.ts.map +1 -0
  52. package/dist/__tests__/mixed-authoring.test.d.ts +2 -0
  53. package/dist/__tests__/mixed-authoring.test.d.ts.map +1 -0
  54. package/dist/__tests__/numeric-extension.integration.test.d.ts +2 -0
  55. package/dist/__tests__/numeric-extension.integration.test.d.ts.map +1 -0
  56. package/dist/__tests__/parity/fixtures/address/chain-dsl.d.ts +9 -0
  57. package/dist/__tests__/parity/fixtures/address/chain-dsl.d.ts.map +1 -0
  58. package/dist/__tests__/parity/fixtures/address/expected-ir.d.ts +9 -0
  59. package/dist/__tests__/parity/fixtures/address/expected-ir.d.ts.map +1 -0
  60. package/dist/__tests__/parity/fixtures/address/tsdoc.d.ts +19 -0
  61. package/dist/__tests__/parity/fixtures/address/tsdoc.d.ts.map +1 -0
  62. package/dist/__tests__/parity/fixtures/plan-status/chain-dsl.d.ts +19 -0
  63. package/dist/__tests__/parity/fixtures/plan-status/chain-dsl.d.ts.map +1 -0
  64. package/dist/__tests__/parity/fixtures/plan-status/expected-ir.d.ts +6 -0
  65. package/dist/__tests__/parity/fixtures/plan-status/expected-ir.d.ts.map +1 -0
  66. package/dist/__tests__/parity/fixtures/plan-status/tsdoc.d.ts +17 -0
  67. package/dist/__tests__/parity/fixtures/plan-status/tsdoc.d.ts.map +1 -0
  68. package/dist/__tests__/parity/fixtures/product-config/chain-dsl.d.ts +13 -0
  69. package/dist/__tests__/parity/fixtures/product-config/chain-dsl.d.ts.map +1 -0
  70. package/dist/__tests__/parity/fixtures/product-config/expected-ir.d.ts +9 -0
  71. package/dist/__tests__/parity/fixtures/product-config/expected-ir.d.ts.map +1 -0
  72. package/dist/__tests__/parity/fixtures/product-config/tsdoc.d.ts +28 -0
  73. package/dist/__tests__/parity/fixtures/product-config/tsdoc.d.ts.map +1 -0
  74. package/dist/__tests__/parity/fixtures/usd-cents/chain-dsl.d.ts +9 -0
  75. package/dist/__tests__/parity/fixtures/usd-cents/chain-dsl.d.ts.map +1 -0
  76. package/dist/__tests__/parity/fixtures/usd-cents/expected-ir.d.ts +6 -0
  77. package/dist/__tests__/parity/fixtures/usd-cents/expected-ir.d.ts.map +1 -0
  78. package/dist/__tests__/parity/fixtures/usd-cents/tsdoc.d.ts +19 -0
  79. package/dist/__tests__/parity/fixtures/usd-cents/tsdoc.d.ts.map +1 -0
  80. package/dist/__tests__/parity/fixtures/user-registration/chain-dsl.d.ts +12 -0
  81. package/dist/__tests__/parity/fixtures/user-registration/chain-dsl.d.ts.map +1 -0
  82. package/dist/__tests__/parity/fixtures/user-registration/expected-ir.d.ts +9 -0
  83. package/dist/__tests__/parity/fixtures/user-registration/expected-ir.d.ts.map +1 -0
  84. package/dist/__tests__/parity/fixtures/user-registration/tsdoc.d.ts +19 -0
  85. package/dist/__tests__/parity/fixtures/user-registration/tsdoc.d.ts.map +1 -0
  86. package/dist/__tests__/parity/parity.test.d.ts +18 -0
  87. package/dist/__tests__/parity/parity.test.d.ts.map +1 -0
  88. package/dist/__tests__/parity/utils.d.ts +152 -0
  89. package/dist/__tests__/parity/utils.d.ts.map +1 -0
  90. package/dist/__tests__/path-target-parser.test.d.ts +9 -0
  91. package/dist/__tests__/path-target-parser.test.d.ts.map +1 -0
  92. package/dist/analyzer/class-analyzer.d.ts +100 -0
  93. package/dist/analyzer/class-analyzer.d.ts.map +1 -0
  94. package/dist/analyzer/jsdoc-constraints.d.ts +53 -0
  95. package/dist/analyzer/jsdoc-constraints.d.ts.map +1 -0
  96. package/dist/analyzer/program.d.ts +68 -0
  97. package/dist/analyzer/program.d.ts.map +1 -0
  98. package/dist/analyzer/tsdoc-parser.d.ts +123 -0
  99. package/dist/analyzer/tsdoc-parser.d.ts.map +1 -0
  100. package/dist/browser.cjs +1294 -0
  101. package/dist/browser.cjs.map +1 -0
  102. package/dist/browser.d.ts +73 -0
  103. package/dist/browser.d.ts.map +1 -0
  104. package/dist/browser.js +1245 -0
  105. package/dist/browser.js.map +1 -0
  106. package/dist/build.d.ts +1144 -0
  107. package/dist/canonicalize/chain-dsl-canonicalizer.d.ts +18 -0
  108. package/dist/canonicalize/chain-dsl-canonicalizer.d.ts.map +1 -0
  109. package/dist/canonicalize/index.d.ts +8 -0
  110. package/dist/canonicalize/index.d.ts.map +1 -0
  111. package/dist/canonicalize/tsdoc-canonicalizer.d.ts +34 -0
  112. package/dist/canonicalize/tsdoc-canonicalizer.d.ts.map +1 -0
  113. package/dist/cli.cjs +3859 -0
  114. package/dist/cli.cjs.map +1 -0
  115. package/dist/cli.js +3823 -103
  116. package/dist/cli.js.map +1 -1
  117. package/dist/extensions/index.d.ts +8 -0
  118. package/dist/extensions/index.d.ts.map +1 -0
  119. package/dist/extensions/registry.d.ts +83 -0
  120. package/dist/extensions/registry.d.ts.map +1 -0
  121. package/dist/generators/class-schema.d.ts +111 -0
  122. package/dist/generators/class-schema.d.ts.map +1 -0
  123. package/dist/generators/method-schema.d.ts +65 -0
  124. package/dist/generators/method-schema.d.ts.map +1 -0
  125. package/dist/generators/mixed-authoring.d.ts +51 -0
  126. package/dist/generators/mixed-authoring.d.ts.map +1 -0
  127. package/dist/index.cjs +3624 -0
  128. package/dist/index.cjs.map +1 -0
  129. package/dist/index.d.ts +45 -8
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +3584 -106
  132. package/dist/index.js.map +1 -1
  133. package/dist/internals.cjs +3368 -0
  134. package/dist/internals.cjs.map +1 -0
  135. package/dist/internals.d.ts +30 -0
  136. package/dist/internals.d.ts.map +1 -0
  137. package/dist/internals.js +3342 -0
  138. package/dist/internals.js.map +1 -0
  139. package/dist/json-schema/generator.d.ts +20 -5
  140. package/dist/json-schema/generator.d.ts.map +1 -1
  141. package/dist/json-schema/ir-generator.d.ts +114 -0
  142. package/dist/json-schema/ir-generator.d.ts.map +1 -0
  143. package/dist/json-schema/schema.d.ts +23 -0
  144. package/dist/json-schema/schema.d.ts.map +1 -0
  145. package/dist/json-schema/types.d.ts +45 -2
  146. package/dist/json-schema/types.d.ts.map +1 -1
  147. package/dist/ui-schema/generator.d.ts +7 -0
  148. package/dist/ui-schema/generator.d.ts.map +1 -1
  149. package/dist/ui-schema/ir-generator.d.ts +53 -0
  150. package/dist/ui-schema/ir-generator.d.ts.map +1 -0
  151. package/dist/ui-schema/schema.d.ts +434 -0
  152. package/dist/ui-schema/schema.d.ts.map +1 -0
  153. package/dist/ui-schema/types.d.ts +10 -73
  154. package/dist/ui-schema/types.d.ts.map +1 -1
  155. package/dist/validate/constraint-validator.d.ts +23 -0
  156. package/dist/validate/constraint-validator.d.ts.map +1 -0
  157. package/dist/validate/index.d.ts +9 -0
  158. package/dist/validate/index.d.ts.map +1 -0
  159. package/package.json +27 -7
  160. package/dist/__tests__/cli.test.js +0 -178
  161. package/dist/__tests__/cli.test.js.map +0 -1
  162. package/dist/__tests__/edge-cases.test.js +0 -217
  163. package/dist/__tests__/edge-cases.test.js.map +0 -1
  164. package/dist/__tests__/generator.test.js +0 -225
  165. package/dist/__tests__/generator.test.js.map +0 -1
  166. package/dist/__tests__/integration.test.js +0 -163
  167. package/dist/__tests__/integration.test.js.map +0 -1
  168. package/dist/__tests__/write-schemas.test.js +0 -196
  169. package/dist/__tests__/write-schemas.test.js.map +0 -1
  170. package/dist/json-schema/generator.js +0 -161
  171. package/dist/json-schema/generator.js.map +0 -1
  172. package/dist/json-schema/types.js +0 -7
  173. package/dist/json-schema/types.js.map +0 -1
  174. package/dist/ui-schema/generator.js +0 -150
  175. package/dist/ui-schema/generator.js.map +0 -1
  176. package/dist/ui-schema/types.js +0 -8
  177. package/dist/ui-schema/types.js.map +0 -1
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Static shipping-address model for mixed-authoring composition tests.
3
+ */
4
+ export declare class ShippingAddressModel {
5
+ /** @displayName Country */
6
+ country: string;
7
+ /** @displayName City */
8
+ city: string;
9
+ /** @displayName Postal Code */
10
+ postalCode?: string;
11
+ }
12
+ /**
13
+ * ChainDSL overlay for the runtime-backed city field.
14
+ */
15
+ export declare const shippingAddressOverlays: import("@formspec/core").FormSpec<readonly [import("@formspec/core").DynamicEnumField<"city", "cities">]>;
16
+ export declare class NumericShippingAddressModel {
17
+ cityCode: number;
18
+ }
19
+ export declare const incompatibleShippingAddressOverlays: import("@formspec/core").FormSpec<readonly [import("@formspec/core").DynamicEnumField<"cityCode", "cities">]>;
20
+ export declare class NestedShippingAddressModel {
21
+ address: {
22
+ city: string;
23
+ };
24
+ }
25
+ export declare const nestedShippingAddressOverlays: import("@formspec/core").FormSpec<readonly [import("@formspec/core").ObjectField<"address", readonly [import("@formspec/core").DynamicEnumField<"city", "cities">]>]>;
26
+ export declare const duplicateShippingAddressOverlays: import("@formspec/core").FormSpec<readonly [import("@formspec/core").DynamicEnumField<"city", "cities">, import("@formspec/core").DynamicEnumField<"city", "backup-cities">]>;
27
+ export declare const unknownShippingAddressOverlays: import("@formspec/core").FormSpec<readonly [import("@formspec/core").DynamicEnumField<"region", "regions">]>;
28
+ export declare const constrainedShippingAddressOverlays: import("@formspec/core").FormSpec<readonly [import("@formspec/core").TextField<"city">]>;
29
+ export declare const requiredShippingAddressOverlays: import("@formspec/core").FormSpec<readonly [import("@formspec/core").TextField<"postalCode">]>;
30
+ export declare const requiredCountryShippingAddressOverlays: import("@formspec/core").FormSpec<readonly [import("@formspec/core").TextField<"country">]>;
31
+ //# sourceMappingURL=mixed-authoring-shipping-address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixed-authoring-shipping-address.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/mixed-authoring-shipping-address.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,2BAA2B;IAC3B,OAAO,EAAG,MAAM,CAAC;IAEjB,wBAAwB;IACxB,IAAI,EAAG,MAAM,CAAC;IAEd,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,2GAInC,CAAC;AAEF,qBAAa,2BAA2B;IACtC,QAAQ,EAAG,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,mCAAmC,+GAE/C,CAAC;AAEF,qBAAa,0BAA0B;IACrC,OAAO,EAAG;QACR,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,eAAO,MAAM,6BAA6B,uKAEzC,CAAC;AAEF,eAAO,MAAM,gCAAgC,+KAG5C,CAAC;AAEF,eAAO,MAAM,8BAA8B,8GAAmD,CAAC;AAE/F,eAAO,MAAM,kCAAkC,0FAAiD,CAAC;AAEjG,eAAO,MAAM,+BAA+B,gGAE3C,CAAC;AAEF,eAAO,MAAM,sCAAsC,6FAElD,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** @multipleOf 1 */
2
+ export type Integer = number;
3
+ /** @minimum 0 @maximum 65535 */
4
+ export type PortNumber = Integer;
5
+ /** @minimum 0 @maximum 100 */
6
+ export type Percentage = number;
7
+ /** @minimum 0 @maximum 9007199254740991 */
8
+ export type BigCounter = bigint;
9
+ export declare class ServerConfig {
10
+ httpPort: PortNumber;
11
+ httpsPort: PortNumber;
12
+ cpuThreshold: Percentage;
13
+ requestCount: BigCounter;
14
+ }
15
+ //# sourceMappingURL=named-primitive-aliases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"named-primitive-aliases.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/named-primitive-aliases.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,gCAAgC;AAChC,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AAEjC,8BAA8B;AAC9B,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,qBAAa,YAAY;IACvB,QAAQ,EAAG,UAAU,CAAC;IACtB,SAAS,EAAG,UAAU,CAAC;IACvB,YAAY,EAAG,UAAU,CAAC;IAC1B,YAAY,EAAG,UAAU,CAAC;CAC3B"}
@@ -0,0 +1,14 @@
1
+ export interface Article {
2
+ tags: string[];
3
+ }
4
+ export declare class BlogConfig {
5
+ /**
6
+ * @minItems 1
7
+ * @maxItems 50
8
+ * @minItems :tags 1
9
+ * @maxItems :tags 20
10
+ * @uniqueItems :tags
11
+ */
12
+ articles: Article[];
13
+ }
14
+ //# sourceMappingURL=nested-array-path-constraints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested-array-path-constraints.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/nested-array-path-constraints.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,qBAAa,UAAU;IACrB;;;;;;OAMG;IACH,QAAQ,EAAG,OAAO,EAAE,CAAC;CACtB"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Test fixture for CLI analyzer.
3
+ *
4
+ * Contains both:
5
+ * - Decorated classes (class + decorator DSL)
6
+ * - FormSpec exports (chain DSL)
7
+ */
8
+ import type { InferFormSchema } from "@formspec/dsl";
9
+ /**
10
+ * FormSpec for user registration.
11
+ */
12
+ export declare const UserRegistrationForm: import("@formspec/core").FormSpec<readonly [import("@formspec/core").TextField<"username">, import("@formspec/core").TextField<"email">, import("@formspec/core").TextField<"password">, import("@formspec/core").BooleanField<"acceptTerms">]>;
13
+ /**
14
+ * FormSpec for product configuration.
15
+ */
16
+ export declare const ProductConfigForm: import("@formspec/core").FormSpec<readonly [import("@formspec/core").TextField<"name">, import("@formspec/core").NumberField<"price">, import("@formspec/core").StaticEnumField<"status", readonly ["draft", "active", "archived"]>]>;
17
+ /**
18
+ * FormSpec for method parameters.
19
+ */
20
+ export declare const ActivateParams: import("@formspec/core").FormSpec<readonly [import("@formspec/core").NumberField<"amount">, import("@formspec/core").NumberField<"installments">]>;
21
+ export declare const CancelParams: import("@formspec/core").FormSpec<readonly [import("@formspec/core").StaticEnumField<"reason", readonly ["user_request", "fraud", "other"]>, import("@formspec/core").TextField<"notes">]>;
22
+ /**
23
+ * Sample class with decorated fields and methods.
24
+ */
25
+ export declare class InstallmentPlan {
26
+ status: "active" | "paused" | "canceled";
27
+ amount: number;
28
+ customerEmail?: string;
29
+ installments: number;
30
+ /**
31
+ * Activates the plan with the given parameters.
32
+ */
33
+ activate(params: InferFormSchema<typeof ActivateParams>): {
34
+ success: boolean;
35
+ };
36
+ /**
37
+ * Cancels the plan.
38
+ */
39
+ cancelPlan(params: InferFormSchema<typeof CancelParams>): void;
40
+ /**
41
+ * Static factory method.
42
+ */
43
+ static createStandard(name: string, amount: number): InstallmentPlan;
44
+ }
45
+ export declare class SimpleProduct {
46
+ name: string;
47
+ price?: number;
48
+ active: boolean;
49
+ tags?: string[];
50
+ update(data: {
51
+ name?: string;
52
+ price?: number;
53
+ }): boolean;
54
+ }
55
+ /**
56
+ * Collect vehicle details for fleet management
57
+ * @displayName Vehicle Registration
58
+ */
59
+ export declare class VehicleRegistration {
60
+ /** @displayName Make */
61
+ make: string;
62
+ /** @displayName Model */
63
+ model: string;
64
+ }
65
+ //# sourceMappingURL=sample-forms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample-forms.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/sample-forms.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMrD;;GAEG;AACH,eAAO,MAAM,oBAAoB,iPAKhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,uOAM7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,oJAG1B,CAAC;AAEF,eAAO,MAAM,YAAY,4LAKxB,CAAC;AAMF;;GAEG;AACH,qBAAa,eAAe;IAC1B,MAAM,EAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IAE1C,MAAM,EAAG,MAAM,CAAC;IAEhB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,EAAG,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,cAAc,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;IAK9E;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,YAAY,CAAC,GAAG,IAAI;IAI9D;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;CAKrE;AAMD,qBAAa,aAAa;IACxB,IAAI,EAAG,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,EAAG,OAAO,CAAC;IAEjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;CAKzD;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,wBAAwB;IACxB,IAAI,EAAG,MAAM,CAAC;IAEd,yBAAyB;IACzB,KAAK,EAAG,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate-schemas.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-schemas.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/generate-schemas.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=guards.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/guards.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tests for the IR analysis pipeline.
3
+ *
4
+ * Verifies that `analyzeClassToIR`, `analyzeInterfaceToIR`, and
5
+ * `analyzeTypeAliasToIR` produce canonical IR nodes (FieldNode,
6
+ * TypeNode, ConstraintNode, AnnotationNode) directly.
7
+ *
8
+ * @see packages/core/src/types/ir.ts for IR type definitions
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=ir-analyzer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir-analyzer.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ir-analyzer.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Tests for JSDoc constraint and annotation extraction to IR nodes.
3
+ *
4
+ * Verifies that {@link extractJSDocConstraintNodes} produces
5
+ * {@link ConstraintNode} and {@link extractJSDocAnnotationNodes} produces
6
+ * {@link AnnotationNode} directly.
7
+ *
8
+ * @see packages/core/src/types/ir.ts for IR type definitions
9
+ * @see packages/core/src/types/constraint-definitions.ts for BUILTIN_CONSTRAINT_DEFINITIONS
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=ir-jsdoc-constraints.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir-jsdoc-constraints.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ir-jsdoc-constraints.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tests for `generateJsonSchemaFromIR`.
3
+ *
4
+ * All tests use hand-constructed FormIR objects and assert against expected
5
+ * JSON Schema 2020-12 output per design doc 003. Tests do NOT compare against
6
+ * the legacy `generateJsonSchema` function.
7
+ *
8
+ * @see scratch/design/003-json-schema-vocabulary.md
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=ir-json-schema-generator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir-json-schema-generator.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ir-json-schema-generator.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ir-ui-schema-generator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir-ui-schema-generator.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ir-ui-schema-generator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mixed-authoring.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixed-authoring.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/mixed-authoring.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=numeric-extension.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-extension.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/numeric-extension.integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Parity fixture — address — chain DSL definition.
3
+ *
4
+ * A simple address form with string fields for street, city, and postal code.
5
+ * No constraints or annotations so the provenance-free IR can be compared
6
+ * directly with the TSDoc equivalent.
7
+ */
8
+ export declare const addressForm: import("@formspec/core").FormSpec<readonly [import("@formspec/core").TextField<"street">, import("@formspec/core").TextField<"city">, import("@formspec/core").TextField<"postalCode">, import("@formspec/core").TextField<"country">]>;
9
+ //# sourceMappingURL=chain-dsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-dsl.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/address/chain-dsl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,eAAO,MAAM,WAAW,yOAKvB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Parity fixture — address — expected provenance-free IR.
3
+ *
4
+ * This is the canonical shape both the chain DSL and TSDoc surfaces must
5
+ * produce (after provenance stripping) for the address form.
6
+ */
7
+ import type { ProvenanceFreeFormIR } from "../../utils.js";
8
+ export declare const expectedIR: ProvenanceFreeFormIR;
9
+ //# sourceMappingURL=expected-ir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expected-ir.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/address/expected-ir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,eAAO,MAAM,UAAU,EAAE,oBAsCxB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Parity fixture — address — TSDoc class definition.
3
+ *
4
+ * Equivalent form definition using a TypeScript class.
5
+ * Must produce the same provenance-free IR as the chain DSL fixture.
6
+ *
7
+ * Field mapping:
8
+ * street: string (required) → field.text("street", { required: true })
9
+ * city: string (required) → field.text("city", { required: true })
10
+ * postalCode: string (required) → field.text("postalCode", { required: true })
11
+ * country: string (optional) → field.text("country")
12
+ */
13
+ export declare class AddressForm {
14
+ street: string;
15
+ city: string;
16
+ postalCode: string;
17
+ country?: string;
18
+ }
19
+ //# sourceMappingURL=tsdoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsdoc.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/address/tsdoc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,qBAAa,WAAW;IACtB,MAAM,EAAG,MAAM,CAAC;IAChB,IAAI,EAAG,MAAM,CAAC;IACd,UAAU,EAAG,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Parity fixture — plan-status — chain DSL definition.
3
+ *
4
+ * Covers the shared static enum surface:
5
+ * - field-level display name
6
+ * - labeled enum members via object options
7
+ * - required enum field
8
+ */
9
+ export declare const planStatusForm: import("@formspec/core").FormSpec<readonly [import("@formspec/core").StaticEnumField<"status", readonly [{
10
+ readonly id: "active";
11
+ readonly label: "Active";
12
+ }, {
13
+ readonly id: "paused";
14
+ readonly label: "Paused";
15
+ }, {
16
+ readonly id: "cancelled";
17
+ readonly label: "Cancelled";
18
+ }]>]>;
19
+ //# sourceMappingURL=chain-dsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-dsl.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/plan-status/chain-dsl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,cAAc;;;;;;;;;KAa1B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Parity fixture — plan-status — expected provenance-free IR.
3
+ */
4
+ import type { ProvenanceFreeFormIR } from "../../utils.js";
5
+ export declare const expectedIR: ProvenanceFreeFormIR;
6
+ //# sourceMappingURL=expected-ir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expected-ir.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/plan-status/expected-ir.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,eAAO,MAAM,UAAU,EAAE,oBA2BxB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Parity fixture — plan-status — TSDoc class definition.
3
+ *
4
+ * This stays on the shared static surface. The TSDoc field carries the same
5
+ * field-level label and member labels that the chain DSL expresses via
6
+ * `field.enum(..., [{ id, label }], { label })`.
7
+ */
8
+ export declare class SubscriptionForm {
9
+ /**
10
+ * @displayName Plan Status
11
+ * @displayName :active Active
12
+ * @displayName :paused Paused
13
+ * @displayName :cancelled Cancelled
14
+ */
15
+ status: "active" | "paused" | "cancelled";
16
+ }
17
+ //# sourceMappingURL=tsdoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsdoc.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/plan-status/tsdoc.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qBAAa,gBAAgB;IAC3B;;;;;OAKG;IACH,MAAM,EAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;CAC5C"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Parity fixture — product-config — chain DSL definition.
3
+ *
4
+ * A product configuration form with a nested object field for pricing.
5
+ * Uses field.objectWithConfig() to create an inline ObjectTypeNode — matching
6
+ * the anonymous inline object type used in the TSDoc fixture.
7
+ *
8
+ * Named classes/interfaces in the TSDoc fixture would produce a ReferenceTypeNode
9
+ * via the type registry, which would diverge from the chain DSL inline object.
10
+ * Both surfaces therefore use anonymous inline objects for the nested type.
11
+ */
12
+ export declare const productConfigForm: import("@formspec/core").FormSpec<readonly [import("@formspec/core").TextField<"sku">, import("@formspec/core").TextField<"name">, import("@formspec/core").BooleanField<"available">, import("@formspec/core").ObjectField<"pricing", readonly [import("@formspec/core").NumberField<"basePrice">, import("@formspec/core").TextField<"currency">]>]>;
13
+ //# sourceMappingURL=chain-dsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-dsl.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/product-config/chain-dsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,iBAAiB,wVAU7B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Parity fixture — product-config — expected provenance-free IR.
3
+ *
4
+ * This is the canonical shape both the chain DSL and TSDoc surfaces must
5
+ * produce (after provenance stripping) for the product-config form.
6
+ */
7
+ import type { ProvenanceFreeFormIR } from "../../utils.js";
8
+ export declare const expectedIR: ProvenanceFreeFormIR;
9
+ //# sourceMappingURL=expected-ir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expected-ir.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/product-config/expected-ir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,eAAO,MAAM,UAAU,EAAE,oBAyDxB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Parity fixture — product-config — TSDoc class definition.
3
+ *
4
+ * Equivalent form definition using a TypeScript class.
5
+ * Must produce the same provenance-free IR as the chain DSL fixture.
6
+ *
7
+ * The `pricing` field uses an anonymous inline object type so the TSDoc
8
+ * canonicalizer produces an inline ObjectTypeNode (not a ReferenceTypeNode).
9
+ * A named class or interface would be placed in the type registry and produce
10
+ * a ReferenceTypeNode, which would diverge from the chain DSL output.
11
+ *
12
+ * Field mapping:
13
+ * sku: string (required) → field.text("sku", { required: true })
14
+ * name: string (required) → field.text("name", { required: true })
15
+ * available: boolean (optional) → field.boolean("available")
16
+ * pricing.basePrice: number (required) → field.number("basePrice", { required: true })
17
+ * pricing.currency: string (required) → field.text("currency", { required: true })
18
+ */
19
+ export declare class ProductConfigForm {
20
+ sku: string;
21
+ name: string;
22
+ available?: boolean;
23
+ pricing: {
24
+ basePrice: number;
25
+ currency: string;
26
+ };
27
+ }
28
+ //# sourceMappingURL=tsdoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsdoc.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/product-config/tsdoc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,qBAAa,iBAAiB;IAC5B,GAAG,EAAG,MAAM,CAAC;IACb,IAAI,EAAG,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,EAAG;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Parity fixture — usd-cents — chain DSL definition.
3
+ *
4
+ * Mirrors the effective numeric semantics of the TSDoc alias chain:
5
+ * - integer-valued number fields via `multipleOf: 1`
6
+ * - inherited minimum bounds resolved into the final field constraints
7
+ */
8
+ export declare const usdCentsForm: import("@formspec/core").FormSpec<readonly [import("@formspec/core").NumberField<"unitPrice">, import("@formspec/core").NumberField<"quantity">]>;
9
+ //# sourceMappingURL=chain-dsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-dsl.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/usd-cents/chain-dsl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,eAAO,MAAM,YAAY,mJAWxB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Parity fixture — usd-cents — expected provenance-free IR.
3
+ */
4
+ import type { ProvenanceFreeFormIR } from "../../utils.js";
5
+ export declare const expectedIR: ProvenanceFreeFormIR;
6
+ //# sourceMappingURL=expected-ir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expected-ir.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/usd-cents/expected-ir.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,eAAO,MAAM,UAAU,EAAE,oBAgDxB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Parity fixture — usd-cents — TSDoc class definition.
3
+ *
4
+ * The alias chain exercises the same shared static semantics as the chain DSL:
5
+ * integer-valued fields represented as numbers plus `@multipleOf 1`, with
6
+ * per-alias minimum bounds flowing to the final field.
7
+ */
8
+ /** @multipleOf 1 */
9
+ type Integer = number;
10
+ /** @minimum 0 */
11
+ type USDCents = Integer;
12
+ /** @minimum 1 */
13
+ type Quantity = Integer;
14
+ export declare class LineItemForm {
15
+ unitPrice: USDCents;
16
+ quantity: Quantity;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=tsdoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsdoc.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/usd-cents/tsdoc.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oBAAoB;AACpB,KAAK,OAAO,GAAG,MAAM,CAAC;AAEtB,iBAAiB;AACjB,KAAK,QAAQ,GAAG,OAAO,CAAC;AAExB,iBAAiB;AACjB,KAAK,QAAQ,GAAG,OAAO,CAAC;AAExB,qBAAa,YAAY;IACvB,SAAS,EAAG,QAAQ,CAAC;IACrB,QAAQ,EAAG,QAAQ,CAAC;CACrB"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Parity fixture — user-registration — chain DSL definition.
3
+ *
4
+ * A user registration form with a mix of text, boolean, and enum fields.
5
+ * No constraints or annotations so the provenance-free IR can be compared
6
+ * directly with the TSDoc equivalent.
7
+ *
8
+ * Uses plain string enum options to match the string literal union type
9
+ * produced by the TSDoc surface.
10
+ */
11
+ export declare const userRegistrationForm: import("@formspec/core").FormSpec<readonly [import("@formspec/core").TextField<"email">, import("@formspec/core").TextField<"username">, import("@formspec/core").BooleanField<"agreedToTerms">, import("@formspec/core").StaticEnumField<"accountType", readonly ["personal", "business", "enterprise"]>]>;
12
+ //# sourceMappingURL=chain-dsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-dsl.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/user-registration/chain-dsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,oBAAoB,6SAKhC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Parity fixture — user-registration — expected provenance-free IR.
3
+ *
4
+ * This is the canonical shape both the chain DSL and TSDoc surfaces must
5
+ * produce (after provenance stripping) for the user-registration form.
6
+ */
7
+ import type { ProvenanceFreeFormIR } from "../../utils.js";
8
+ export declare const expectedIR: ProvenanceFreeFormIR;
9
+ //# sourceMappingURL=expected-ir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expected-ir.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/user-registration/expected-ir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,eAAO,MAAM,UAAU,EAAE,oBAyCxB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Parity fixture — user-registration — TSDoc class definition.
3
+ *
4
+ * Equivalent form definition using a TypeScript class.
5
+ * Must produce the same provenance-free IR as the chain DSL fixture.
6
+ *
7
+ * Field mapping:
8
+ * email: string (required) → field.text("email", { required: true })
9
+ * username: string (required) → field.text("username", { required: true })
10
+ * agreedToTerms: boolean (required) → field.boolean("agreedToTerms", { required: true })
11
+ * accountType: "personal" | "business" | "enterprise" (req) → field.enum("accountType", [...] as const, { required: true })
12
+ */
13
+ export declare class UserRegistrationForm {
14
+ email: string;
15
+ username: string;
16
+ agreedToTerms: boolean;
17
+ accountType: "personal" | "business" | "enterprise";
18
+ }
19
+ //# sourceMappingURL=tsdoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsdoc.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/parity/fixtures/user-registration/tsdoc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,qBAAa,oBAAoB;IAC/B,KAAK,EAAG,MAAM,CAAC;IACf,QAAQ,EAAG,MAAM,CAAC;IAClB,aAAa,EAAG,OAAO,CAAC;IACxB,WAAW,EAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;CACtD"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Parity tests.
3
+ *
4
+ * Proves that both authoring surfaces (chain DSL and TSDoc/class annotations)
5
+ * produce identical intermediate representations (IR) for equivalent shared
6
+ * form constructs, modulo provenance metadata.
7
+ *
8
+ * TSDoc-only helper types that the chain DSL cannot express directly, such as
9
+ * constrained primitive aliases, are normalized to their effective field
10
+ * semantics before parity comparison.
11
+ *
12
+ * Three-test pattern per fixture:
13
+ * 1. Chain DSL → IR matches expected IR
14
+ * 2. TSDoc class → IR matches expected IR
15
+ * 3. Chain DSL IR === TSDoc IR (modulo provenance)
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=parity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parity.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/parity/parity.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}