formspec 0.1.0-alpha.21 → 0.1.0-alpha.23

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/dist/index.cjs CHANGED
@@ -20,17 +20,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
- buildFormSchemas: () => import_build.buildFormSchemas,
24
- buildMixedAuthoringSchemas: () => import_build.buildMixedAuthoringSchemas,
23
+ buildFormSchemas: () => buildFormSchemas,
25
24
  createInitialFieldState: () => import_core.createInitialFieldState,
26
- defineResolvers: () => import_runtime.defineResolvers,
25
+ defineResolvers: () => defineResolvers,
27
26
  field: () => import_dsl.field,
28
- formspec: () => import_dsl.formspec,
29
- formspecWithValidation: () => import_dsl.formspecWithValidation,
30
- generateJsonSchema: () => import_build.generateJsonSchema,
31
- generateUiSchema: () => import_build.generateUiSchema,
32
- group: () => import_dsl.group,
33
- is: () => import_dsl.is,
27
+ formspec: () => formspec,
28
+ formspecWithValidation: () => formspecWithValidation,
29
+ generateJsonSchema: () => generateJsonSchema,
30
+ generateUiSchema: () => generateUiSchema,
31
+ group: () => group,
32
+ is: () => is,
34
33
  isArrayField: () => import_core2.isArrayField,
35
34
  isBooleanField: () => import_core2.isBooleanField,
36
35
  isConditional: () => import_core2.isConditional,
@@ -44,19 +43,49 @@ __export(index_exports, {
44
43
  isTextField: () => import_core2.isTextField,
45
44
  logValidationIssues: () => import_dsl.logValidationIssues,
46
45
  validateForm: () => import_dsl.validateForm,
47
- when: () => import_dsl.when,
48
- writeSchemas: () => import_build.writeSchemas
46
+ when: () => when,
47
+ writeSchemas: () => writeSchemas
49
48
  });
50
49
  module.exports = __toCommonJS(index_exports);
51
50
  var import_core = require("@formspec/core");
52
51
  var import_core2 = require("@formspec/core");
53
52
  var import_dsl = require("@formspec/dsl");
53
+ var import_dsl2 = require("@formspec/dsl");
54
54
  var import_build = require("@formspec/build");
55
55
  var import_runtime = require("@formspec/runtime");
56
+ function group(label, ...elements) {
57
+ return (0, import_dsl2.group)(label, ...elements);
58
+ }
59
+ function when(predicate, ...elements) {
60
+ return (0, import_dsl2.when)(predicate, ...elements);
61
+ }
62
+ function is(field2, value) {
63
+ return (0, import_dsl2.is)(field2, value);
64
+ }
65
+ function formspec(...elements) {
66
+ return (0, import_dsl2.formspec)(...elements);
67
+ }
68
+ function formspecWithValidation(options, ...elements) {
69
+ return (0, import_dsl2.formspecWithValidation)(options, ...elements);
70
+ }
71
+ function generateJsonSchema(form, options) {
72
+ return (0, import_build.generateJsonSchema)(form, options);
73
+ }
74
+ function generateUiSchema(form) {
75
+ return (0, import_build.generateUiSchema)(form);
76
+ }
77
+ function buildFormSchemas(form, options) {
78
+ return (0, import_build.buildFormSchemas)(form, options);
79
+ }
80
+ function writeSchemas(form, options) {
81
+ return (0, import_build.writeSchemas)(form, options);
82
+ }
83
+ function defineResolvers(form, resolvers) {
84
+ return (0, import_runtime.defineResolvers)(form, resolvers);
85
+ }
56
86
  // Annotate the CommonJS export names for ESM import in node:
57
87
  0 && (module.exports = {
58
88
  buildFormSchemas,
59
- buildMixedAuthoringSchemas,
60
89
  createInitialFieldState,
61
90
  defineResolvers,
62
91
  field,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * FormSpec - Type-safe form specifications\n *\n * This package re-exports everything from the FormSpec library for convenience.\n * You can import everything you need from a single package:\n *\n * @example\n * ```typescript\n * import {\n * // DSL functions\n * formspec, field, group, when, is,\n * // Type inference\n * type InferSchema,\n * // Schema generation\n * buildFormSchemas,\n * // Resolvers\n * defineResolvers,\n * // Core types\n * type FormSpec, type FormElement,\n * } from \"formspec\";\n *\n * // Define a form\n * const InvoiceForm = formspec(\n * group(\"Customer\",\n * field.text(\"name\", { label: \"Name\", required: true }),\n * field.dynamicEnum(\"country\", \"fetch_countries\", { label: \"Country\" }),\n * ),\n * group(\"Details\",\n * field.number(\"amount\", { label: \"Amount\", min: 0 }),\n * field.enum(\"status\", [\"draft\", \"sent\", \"paid\"]),\n * when(is(\"status\", \"draft\"),\n * field.text(\"notes\", { label: \"Internal Notes\" }),\n * ),\n * ),\n * );\n *\n * // Infer the schema type\n * type Schema = InferSchema<typeof InvoiceForm.elements>;\n *\n * // Generate JSON Schema and UI Schema\n * const { jsonSchema, uiSchema } = buildFormSchemas(InvoiceForm);\n *\n * // Define resolvers for dynamic data\n * const resolvers = defineResolvers(InvoiceForm, {\n * fetch_countries: async () => ({\n * options: [{ value: \"us\", label: \"United States\" }],\n * validity: \"valid\",\n * }),\n * });\n * ```\n *\n * @packageDocumentation\n */\n\n// =============================================================================\n// Core types\n// =============================================================================\n\nexport type {\n // Validity\n Validity,\n\n // Field state\n FieldState,\n\n // Form state\n FormState,\n\n // Data sources\n DataSourceRegistry,\n DataSourceOption,\n FetchOptionsResponse,\n DataSourceValueType,\n\n // Elements\n TextField,\n NumberField,\n BooleanField,\n StaticEnumField,\n DynamicEnumField,\n DynamicSchemaField,\n ArrayField,\n ObjectField,\n AnyField,\n Group,\n Conditional,\n FormElement,\n FormSpec,\n\n // Predicates\n EqualsPredicate,\n Predicate,\n} from \"@formspec/core\";\n\nexport { createInitialFieldState } from \"@formspec/core\";\n\n// Type guards\nexport {\n isField,\n isTextField,\n isNumberField,\n isBooleanField,\n isStaticEnumField,\n isDynamicEnumField,\n isDynamicSchemaField,\n isArrayField,\n isObjectField,\n isGroup,\n isConditional,\n} from \"@formspec/core\";\n\n// =============================================================================\n// DSL functions\n// =============================================================================\n\nexport {\n field,\n group,\n when,\n is,\n formspec,\n formspecWithValidation,\n validateForm,\n logValidationIssues,\n} from \"@formspec/dsl\";\n\n// Re-export enum option types (commonly used)\nexport type { EnumOption, EnumOptionValue } from \"@formspec/dsl\";\n\nexport type {\n // Type inference\n InferFieldValue,\n ExtractFields,\n ExtractFieldsFromArray,\n BuildSchema,\n InferSchema,\n InferFormSchema,\n // Validation\n FormSpecOptions,\n ValidationSeverity,\n ValidationIssue,\n ValidationResult,\n} from \"@formspec/dsl\";\n\n// =============================================================================\n// Build tools\n// =============================================================================\n\nexport {\n generateJsonSchema,\n generateUiSchema,\n buildFormSchemas,\n buildMixedAuthoringSchemas,\n writeSchemas,\n} from \"@formspec/build\";\n\nexport type {\n JsonSchema2020,\n JSONSchema7,\n JSONSchemaType,\n UISchema,\n UISchemaElement,\n UISchemaElementType,\n ControlElement,\n VerticalLayout,\n HorizontalLayout,\n GroupLayout,\n Rule,\n RuleEffect,\n SchemaBasedCondition,\n BuildResult,\n BuildMixedAuthoringSchemasOptions,\n MixedAuthoringSchemas,\n WriteSchemasOptions,\n WriteSchemasResult,\n} from \"@formspec/build\";\n\n// =============================================================================\n// Runtime helpers\n// =============================================================================\n\nexport { defineResolvers } from \"@formspec/runtime\";\n\nexport type { Resolver, ResolverMap, ResolverRegistry } from \"@formspec/runtime\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8FA,kBAAwC;AAGxC,IAAAA,eAYO;AAMP,iBASO;AAwBP,mBAMO;AA2BP,qBAAgC;","names":["import_core"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * FormSpec - Type-safe form specifications\n *\n * This package re-exports everything from the FormSpec library for convenience.\n * You can import everything you need from a single package:\n *\n * @example\n * ```typescript\n * import {\n * // DSL functions\n * formspec, field, group, when, is,\n * // Type inference\n * type InferSchema,\n * // Schema generation\n * buildFormSchemas,\n * // Resolvers\n * defineResolvers,\n * // Core types\n * type FormSpec, type FormElement,\n * } from \"formspec\";\n *\n * // Define a form\n * const InvoiceForm = formspec(\n * group(\"Customer\",\n * field.text(\"name\", { label: \"Name\", required: true }),\n * field.dynamicEnum(\"country\", \"fetch_countries\", { label: \"Country\" }),\n * ),\n * group(\"Details\",\n * field.number(\"amount\", { label: \"Amount\", min: 0 }),\n * field.enum(\"status\", [\"draft\", \"sent\", \"paid\"]),\n * when(is(\"status\", \"draft\"),\n * field.text(\"notes\", { label: \"Internal Notes\" }),\n * ),\n * ),\n * );\n *\n * // Infer the schema type\n * type Schema = InferSchema<typeof InvoiceForm.elements>;\n *\n * // Generate JSON Schema and UI Schema\n * const { jsonSchema, uiSchema } = buildFormSchemas(InvoiceForm);\n *\n * // Define resolvers for dynamic data\n * const resolvers = defineResolvers(InvoiceForm, {\n * fetch_countries: async () => ({\n * options: [{ value: \"us\", label: \"United States\" }],\n * validity: \"valid\",\n * }),\n * });\n * ```\n *\n * @packageDocumentation\n */\n\n// =============================================================================\n// Core types\n// =============================================================================\n\nimport type {\n AnyField,\n ArrayField,\n BooleanField,\n Conditional,\n DataSourceValueType,\n DynamicEnumField,\n DynamicSchemaField,\n EnumOption,\n EnumOptionValue,\n EqualsPredicate,\n FormElement,\n FormSpec,\n Group,\n NumberField,\n ObjectField,\n Predicate,\n StaticEnumField,\n TextField,\n} from \"@formspec/core\";\n\nexport type {\n // Validity\n Validity,\n\n // Field state\n FieldState,\n\n // Form state\n FormState,\n\n // Data sources\n DataSourceRegistry,\n DataSourceOption,\n FetchOptionsResponse,\n DataSourceValueType,\n // Elements\n TextField,\n NumberField,\n BooleanField,\n EnumOption,\n EnumOptionValue,\n StaticEnumField,\n DynamicEnumField,\n DynamicSchemaField,\n ArrayField,\n ObjectField,\n AnyField,\n Group,\n Conditional,\n FormElement,\n FormSpec,\n // Predicates\n EqualsPredicate,\n Predicate,\n} from \"@formspec/core\";\n\nexport { createInitialFieldState } from \"@formspec/core\";\n\n// Type guards\nexport {\n isField,\n isTextField,\n isNumberField,\n isBooleanField,\n isStaticEnumField,\n isDynamicEnumField,\n isDynamicSchemaField,\n isArrayField,\n isObjectField,\n isGroup,\n isConditional,\n} from \"@formspec/core\";\n\n// =============================================================================\n// DSL functions\n// =============================================================================\n\nexport { field, validateForm, logValidationIssues } from \"@formspec/dsl\";\nimport {\n group as dslGroup,\n when as dslWhen,\n is as dslIs,\n formspec as dslFormspec,\n formspecWithValidation as dslFormspecWithValidation,\n type FormSpecOptions,\n} from \"@formspec/dsl\";\nexport type {\n // Validation\n FormSpecOptions,\n ValidationSeverity,\n ValidationIssue,\n ValidationResult,\n} from \"@formspec/dsl\";\n\n// =============================================================================\n// Build tools\n// =============================================================================\n\nimport {\n buildFormSchemas as buildFormSchemasInternal,\n generateJsonSchema as generateJsonSchemaInternal,\n generateUiSchema as generateUiSchemaInternal,\n writeSchemas as writeSchemasInternal,\n type BuildFormSchemasOptions,\n type BuildResult,\n type GenerateJsonSchemaOptions,\n type JsonSchema2020,\n type UISchema,\n type WriteSchemasOptions,\n type WriteSchemasResult,\n} from \"@formspec/build\";\n\nexport type {\n BuildFormSchemasOptions,\n GenerateJsonSchemaOptions,\n JsonSchema2020,\n UISchema,\n UISchemaElement,\n UISchemaElementType,\n ControlElement,\n VerticalLayout,\n HorizontalLayout,\n GroupLayout,\n Categorization,\n Category,\n LabelElement,\n Rule,\n RuleEffect,\n RuleConditionSchema,\n SchemaBasedCondition,\n BuildResult,\n WriteSchemasOptions,\n WriteSchemasResult,\n} from \"@formspec/build\";\n\n// =============================================================================\n// Runtime helpers\n// =============================================================================\n\nimport {\n defineResolvers as defineResolversInternal,\n type ResolverMap,\n type ResolverRegistry,\n type ResolverSourcesForForm,\n} from \"@formspec/runtime\";\n\nexport type {\n ExtractDynamicSources,\n ExtractDynamicSourcesFromArray,\n Resolver,\n ResolverMap,\n ResolverRegistry,\n ResolverSourcesForForm,\n} from \"@formspec/runtime\";\n\n// =============================================================================\n// Local DSL wrappers and inference helpers\n// =============================================================================\n\n/**\n * Creates a visual group of form elements.\n *\n * @public\n */\nexport function group<const Elements extends readonly FormElement[]>(\n label: string,\n ...elements: Elements\n): Group<Elements> {\n return dslGroup(label, ...elements);\n}\n\n/**\n * Creates a conditional wrapper that shows elements based on a predicate.\n *\n * @public\n */\nexport function when<\n const K extends string,\n const V,\n const Elements extends readonly FormElement[],\n>(predicate: Predicate<K, V>, ...elements: Elements): Conditional<K, V, Elements> {\n return dslWhen(predicate, ...elements);\n}\n\n/**\n * Creates an equality predicate that checks if a field equals a specific value.\n *\n * @public\n */\nexport function is<const K extends string, const V>(field: K, value: V): EqualsPredicate<K, V> {\n return dslIs(field, value);\n}\n\n/**\n * Creates a complete form specification.\n *\n * @public\n */\nexport function formspec<const Elements extends readonly FormElement[]>(\n ...elements: Elements\n): FormSpec<Elements> {\n return dslFormspec(...elements);\n}\n\n/**\n * Creates a complete form specification with validation options.\n *\n * @public\n */\nexport function formspecWithValidation<const Elements extends readonly FormElement[]>(\n options: FormSpecOptions,\n ...elements: Elements\n): FormSpec<Elements> {\n return dslFormspecWithValidation(options, ...elements);\n}\n\n/**\n * Infers the value type from a single field.\n *\n * @public\n */\nexport type InferFieldValue<F> =\n F extends TextField<string>\n ? string\n : F extends NumberField<string>\n ? number\n : F extends BooleanField<string>\n ? boolean\n : F extends StaticEnumField<string, infer O extends readonly EnumOptionValue[]>\n ? O extends readonly EnumOption[]\n ? O[number][\"id\"]\n : O extends readonly string[]\n ? O[number]\n : never\n : F extends DynamicEnumField<string, infer Source>\n ? DataSourceValueType<Source>\n : F extends DynamicSchemaField<string>\n ? Record<string, unknown>\n : F extends ArrayField<string, infer Items extends readonly FormElement[]>\n ? InferSchema<Items>[]\n : F extends ObjectField<string, infer Properties extends readonly FormElement[]>\n ? InferSchema<Properties>\n : never;\n\n/**\n * Extracts all fields from a single element.\n *\n * @public\n */\nexport type ExtractFields<E> = E extends AnyField\n ? E\n : E extends Group<infer Elements>\n ? ExtractFieldsFromArray<Elements>\n : E extends Conditional<string, unknown, infer Elements>\n ? ExtractFieldsFromArray<Elements>\n : never;\n\n/**\n * Extracts fields from an array of elements.\n *\n * @public\n */\nexport type ExtractFieldsFromArray<Elements> = Elements extends readonly [\n infer First,\n ...infer Rest,\n]\n ? ExtractFields<First> | ExtractFieldsFromArray<Rest>\n : never;\n\n/**\n * Extracts fields that are not inside conditionals.\n *\n * @public\n */\nexport type ExtractNonConditionalFields<E> = E extends AnyField\n ? E\n : E extends Group<infer Elements>\n ? ExtractNonConditionalFieldsFromArray<Elements>\n : E extends Conditional<string, unknown, infer _Elements>\n ? never\n : never;\n\n/**\n * Extracts non-conditional fields from an array of elements.\n *\n * @public\n */\nexport type ExtractNonConditionalFieldsFromArray<Elements> = Elements extends readonly [\n infer First,\n ...infer Rest,\n]\n ? ExtractNonConditionalFields<First> | ExtractNonConditionalFieldsFromArray<Rest>\n : never;\n\n/**\n * Extracts fields that are inside conditionals.\n *\n * @public\n */\nexport type ExtractConditionalFields<E> = E extends AnyField\n ? never\n : E extends Group<infer Elements>\n ? ExtractConditionalFieldsFromArray<Elements>\n : E extends Conditional<string, unknown, infer Elements>\n ? ExtractFieldsFromArray<Elements>\n : never;\n\n/**\n * Extracts conditional fields from an array of elements.\n *\n * @public\n */\nexport type ExtractConditionalFieldsFromArray<Elements> = Elements extends readonly [\n infer First,\n ...infer Rest,\n]\n ? ExtractConditionalFields<First> | ExtractConditionalFieldsFromArray<Rest>\n : never;\n\n/**\n * Builds a schema type from extracted fields.\n *\n * @public\n */\nexport type BuildSchema<Fields> = {\n [N in Fields extends { name: infer K extends string } ? K : never]: InferFieldValue<\n Extract<Fields, { name: N } & AnyField>\n >;\n};\n\n/**\n * Utility type that flattens intersection types.\n *\n * @public\n */\nexport type FlattenIntersection<T> = {\n [K in keyof T]: T[K];\n} & {};\n\n/**\n * Infers the schema type from an array of form elements.\n *\n * @public\n */\nexport type InferSchema<Elements extends readonly FormElement[]> = FlattenIntersection<\n BuildSchema<ExtractNonConditionalFieldsFromArray<Elements>> &\n Partial<BuildSchema<ExtractConditionalFieldsFromArray<Elements>>>\n>;\n\n/**\n * Infers the schema type from a FormSpec.\n *\n * @public\n */\nexport type InferFormSchema<F extends FormSpec<readonly FormElement[]>> =\n F extends FormSpec<infer Elements> ? InferSchema<Elements> : never;\n\n/**\n * Generates a JSON Schema 2020-12 from a FormSpec.\n *\n * @public\n */\nexport function generateJsonSchema<E extends readonly FormElement[]>(\n form: FormSpec<E>,\n options?: GenerateJsonSchemaOptions\n): JsonSchema2020 {\n return generateJsonSchemaInternal(form, options);\n}\n\n/**\n * Generates a UI schema from a FormSpec.\n *\n * @public\n */\nexport function generateUiSchema<E extends readonly FormElement[]>(form: FormSpec<E>): UISchema {\n return generateUiSchemaInternal(form);\n}\n\n/**\n * Builds both JSON Schema and UI Schema from a FormSpec.\n *\n * @public\n */\nexport function buildFormSchemas<E extends readonly FormElement[]>(\n form: FormSpec<E>,\n options?: BuildFormSchemasOptions\n): BuildResult {\n return buildFormSchemasInternal(form, options);\n}\n\n/**\n * Builds and writes both JSON Schema and UI Schema files to disk.\n *\n * @public\n */\nexport function writeSchemas<E extends readonly FormElement[]>(\n form: FormSpec<E>,\n options: WriteSchemasOptions\n): WriteSchemasResult {\n return writeSchemasInternal(form, options);\n}\n\n/**\n * Defines resolvers for a form's dynamic data sources.\n *\n * @public\n */\nexport function defineResolvers<\n E extends readonly FormElement[],\n Sources extends string = ResolverSourcesForForm<E>,\n>(form: FormSpec<E>, resolvers: ResolverMap<Sources>): ResolverRegistry<Sources> {\n return defineResolversInternal(form, resolvers);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmHA,kBAAwC;AAGxC,IAAAA,eAYO;AAMP,iBAAyD;AACzD,IAAAC,cAOO;AAaP,mBAYO;AA6BP,qBAKO;AAoBA,SAAS,MACd,UACG,UACc;AACjB,aAAO,YAAAC,OAAS,OAAO,GAAG,QAAQ;AACpC;AAOO,SAAS,KAId,cAA+B,UAAiD;AAChF,aAAO,YAAAC,MAAQ,WAAW,GAAG,QAAQ;AACvC;AAOO,SAAS,GAAoCC,QAAU,OAAiC;AAC7F,aAAO,YAAAC,IAAMD,QAAO,KAAK;AAC3B;AAOO,SAAS,YACX,UACiB;AACpB,aAAO,YAAAE,UAAY,GAAG,QAAQ;AAChC;AAOO,SAAS,uBACd,YACG,UACiB;AACpB,aAAO,YAAAC,wBAA0B,SAAS,GAAG,QAAQ;AACvD;AAoJO,SAAS,mBACd,MACA,SACgB;AAChB,aAAO,aAAAC,oBAA2B,MAAM,OAAO;AACjD;AAOO,SAAS,iBAAmD,MAA6B;AAC9F,aAAO,aAAAC,kBAAyB,IAAI;AACtC;AAOO,SAAS,iBACd,MACA,SACa;AACb,aAAO,aAAAC,kBAAyB,MAAM,OAAO;AAC/C;AAOO,SAAS,aACd,MACA,SACoB;AACpB,aAAO,aAAAC,cAAqB,MAAM,OAAO;AAC3C;AAOO,SAAS,gBAGd,MAAmB,WAA4D;AAC/E,aAAO,eAAAC,iBAAwB,MAAM,SAAS;AAChD;","names":["import_core","import_dsl","dslGroup","dslWhen","field","dslIs","dslFormspec","dslFormspecWithValidation","generateJsonSchemaInternal","generateUiSchemaInternal","buildFormSchemasInternal","writeSchemasInternal","defineResolversInternal"]}
package/dist/index.d.ts CHANGED
@@ -51,14 +51,141 @@
51
51
  *
52
52
  * @packageDocumentation
53
53
  */
54
- export type { Validity, FieldState, FormState, DataSourceRegistry, DataSourceOption, FetchOptionsResponse, DataSourceValueType, TextField, NumberField, BooleanField, StaticEnumField, DynamicEnumField, DynamicSchemaField, ArrayField, ObjectField, AnyField, Group, Conditional, FormElement, FormSpec, EqualsPredicate, Predicate, } from "@formspec/core";
54
+ import type { AnyField, ArrayField, BooleanField, Conditional, DataSourceValueType, DynamicEnumField, DynamicSchemaField, EnumOption, EnumOptionValue, EqualsPredicate, FormElement, FormSpec, Group, NumberField, ObjectField, Predicate, StaticEnumField, TextField } from "@formspec/core";
55
+ export type { Validity, FieldState, FormState, DataSourceRegistry, DataSourceOption, FetchOptionsResponse, DataSourceValueType, TextField, NumberField, BooleanField, EnumOption, EnumOptionValue, StaticEnumField, DynamicEnumField, DynamicSchemaField, ArrayField, ObjectField, AnyField, Group, Conditional, FormElement, FormSpec, EqualsPredicate, Predicate, } from "@formspec/core";
55
56
  export { createInitialFieldState } from "@formspec/core";
56
57
  export { isField, isTextField, isNumberField, isBooleanField, isStaticEnumField, isDynamicEnumField, isDynamicSchemaField, isArrayField, isObjectField, isGroup, isConditional, } from "@formspec/core";
57
- export { field, group, when, is, formspec, formspecWithValidation, validateForm, logValidationIssues, } from "@formspec/dsl";
58
- export type { EnumOption, EnumOptionValue } from "@formspec/dsl";
59
- export type { InferFieldValue, ExtractFields, ExtractFieldsFromArray, BuildSchema, InferSchema, InferFormSchema, FormSpecOptions, ValidationSeverity, ValidationIssue, ValidationResult, } from "@formspec/dsl";
60
- export { generateJsonSchema, generateUiSchema, buildFormSchemas, buildMixedAuthoringSchemas, writeSchemas, } from "@formspec/build";
61
- export type { JsonSchema2020, JSONSchema7, JSONSchemaType, UISchema, UISchemaElement, UISchemaElementType, ControlElement, VerticalLayout, HorizontalLayout, GroupLayout, Rule, RuleEffect, SchemaBasedCondition, BuildResult, BuildMixedAuthoringSchemasOptions, MixedAuthoringSchemas, WriteSchemasOptions, WriteSchemasResult, } from "@formspec/build";
62
- export { defineResolvers } from "@formspec/runtime";
63
- export type { Resolver, ResolverMap, ResolverRegistry } from "@formspec/runtime";
58
+ export { field, validateForm, logValidationIssues } from "@formspec/dsl";
59
+ import { type FormSpecOptions } from "@formspec/dsl";
60
+ export type { FormSpecOptions, ValidationSeverity, ValidationIssue, ValidationResult, } from "@formspec/dsl";
61
+ import { type BuildFormSchemasOptions, type BuildResult, type GenerateJsonSchemaOptions, type JsonSchema2020, type UISchema, type WriteSchemasOptions, type WriteSchemasResult } from "@formspec/build";
62
+ export type { BuildFormSchemasOptions, GenerateJsonSchemaOptions, JsonSchema2020, UISchema, UISchemaElement, UISchemaElementType, ControlElement, VerticalLayout, HorizontalLayout, GroupLayout, Categorization, Category, LabelElement, Rule, RuleEffect, RuleConditionSchema, SchemaBasedCondition, BuildResult, WriteSchemasOptions, WriteSchemasResult, } from "@formspec/build";
63
+ import { type ResolverMap, type ResolverRegistry, type ResolverSourcesForForm } from "@formspec/runtime";
64
+ export type { ExtractDynamicSources, ExtractDynamicSourcesFromArray, Resolver, ResolverMap, ResolverRegistry, ResolverSourcesForForm, } from "@formspec/runtime";
65
+ /**
66
+ * Creates a visual group of form elements.
67
+ *
68
+ * @public
69
+ */
70
+ export declare function group<const Elements extends readonly FormElement[]>(label: string, ...elements: Elements): Group<Elements>;
71
+ /**
72
+ * Creates a conditional wrapper that shows elements based on a predicate.
73
+ *
74
+ * @public
75
+ */
76
+ export declare function when<const K extends string, const V, const Elements extends readonly FormElement[]>(predicate: Predicate<K, V>, ...elements: Elements): Conditional<K, V, Elements>;
77
+ /**
78
+ * Creates an equality predicate that checks if a field equals a specific value.
79
+ *
80
+ * @public
81
+ */
82
+ export declare function is<const K extends string, const V>(field: K, value: V): EqualsPredicate<K, V>;
83
+ /**
84
+ * Creates a complete form specification.
85
+ *
86
+ * @public
87
+ */
88
+ export declare function formspec<const Elements extends readonly FormElement[]>(...elements: Elements): FormSpec<Elements>;
89
+ /**
90
+ * Creates a complete form specification with validation options.
91
+ *
92
+ * @public
93
+ */
94
+ export declare function formspecWithValidation<const Elements extends readonly FormElement[]>(options: FormSpecOptions, ...elements: Elements): FormSpec<Elements>;
95
+ /**
96
+ * Infers the value type from a single field.
97
+ *
98
+ * @public
99
+ */
100
+ export type InferFieldValue<F> = F extends TextField<string> ? string : F extends NumberField<string> ? number : F extends BooleanField<string> ? boolean : F extends StaticEnumField<string, infer O extends readonly EnumOptionValue[]> ? O extends readonly EnumOption[] ? O[number]["id"] : O extends readonly string[] ? O[number] : never : F extends DynamicEnumField<string, infer Source> ? DataSourceValueType<Source> : F extends DynamicSchemaField<string> ? Record<string, unknown> : F extends ArrayField<string, infer Items extends readonly FormElement[]> ? InferSchema<Items>[] : F extends ObjectField<string, infer Properties extends readonly FormElement[]> ? InferSchema<Properties> : never;
101
+ /**
102
+ * Extracts all fields from a single element.
103
+ *
104
+ * @public
105
+ */
106
+ export type ExtractFields<E> = E extends AnyField ? E : E extends Group<infer Elements> ? ExtractFieldsFromArray<Elements> : E extends Conditional<string, unknown, infer Elements> ? ExtractFieldsFromArray<Elements> : never;
107
+ /**
108
+ * Extracts fields from an array of elements.
109
+ *
110
+ * @public
111
+ */
112
+ export type ExtractFieldsFromArray<Elements> = Elements extends readonly [infer First, ...infer Rest] ? ExtractFields<First> | ExtractFieldsFromArray<Rest> : never;
113
+ /**
114
+ * Extracts fields that are not inside conditionals.
115
+ *
116
+ * @public
117
+ */
118
+ export type ExtractNonConditionalFields<E> = E extends AnyField ? E : E extends Group<infer Elements> ? ExtractNonConditionalFieldsFromArray<Elements> : E extends Conditional<string, unknown, infer _Elements> ? never : never;
119
+ /**
120
+ * Extracts non-conditional fields from an array of elements.
121
+ *
122
+ * @public
123
+ */
124
+ export type ExtractNonConditionalFieldsFromArray<Elements> = Elements extends readonly [infer First, ...infer Rest] ? ExtractNonConditionalFields<First> | ExtractNonConditionalFieldsFromArray<Rest> : never;
125
+ /**
126
+ * Extracts fields that are inside conditionals.
127
+ *
128
+ * @public
129
+ */
130
+ export type ExtractConditionalFields<E> = E extends AnyField ? never : E extends Group<infer Elements> ? ExtractConditionalFieldsFromArray<Elements> : E extends Conditional<string, unknown, infer Elements> ? ExtractFieldsFromArray<Elements> : never;
131
+ /**
132
+ * Extracts conditional fields from an array of elements.
133
+ *
134
+ * @public
135
+ */
136
+ export type ExtractConditionalFieldsFromArray<Elements> = Elements extends readonly [infer First, ...infer Rest] ? ExtractConditionalFields<First> | ExtractConditionalFieldsFromArray<Rest> : never;
137
+ /**
138
+ * Builds a schema type from extracted fields.
139
+ *
140
+ * @public
141
+ */
142
+ export type BuildSchema<Fields> = { [N in Fields extends { name: infer K extends string } ? K : never]: InferFieldValue<Extract<Fields, { name: N } & AnyField>> };
143
+ /**
144
+ * Utility type that flattens intersection types.
145
+ *
146
+ * @public
147
+ */
148
+ export type FlattenIntersection<T> = { [K in keyof T]: T[K] } & {};
149
+ /**
150
+ * Infers the schema type from an array of form elements.
151
+ *
152
+ * @public
153
+ */
154
+ export type InferSchema<Elements extends readonly FormElement[]> = FlattenIntersection<BuildSchema<ExtractNonConditionalFieldsFromArray<Elements>> & Partial<BuildSchema<ExtractConditionalFieldsFromArray<Elements>>>>;
155
+ /**
156
+ * Infers the schema type from a FormSpec.
157
+ *
158
+ * @public
159
+ */
160
+ export type InferFormSchema<F extends FormSpec<readonly FormElement[]>> = F extends FormSpec<infer Elements> ? InferSchema<Elements> : never;
161
+ /**
162
+ * Generates a JSON Schema 2020-12 from a FormSpec.
163
+ *
164
+ * @public
165
+ */
166
+ export declare function generateJsonSchema<E extends readonly FormElement[]>(form: FormSpec<E>, options?: GenerateJsonSchemaOptions): JsonSchema2020;
167
+ /**
168
+ * Generates a UI schema from a FormSpec.
169
+ *
170
+ * @public
171
+ */
172
+ export declare function generateUiSchema<E extends readonly FormElement[]>(form: FormSpec<E>): UISchema;
173
+ /**
174
+ * Builds both JSON Schema and UI Schema from a FormSpec.
175
+ *
176
+ * @public
177
+ */
178
+ export declare function buildFormSchemas<E extends readonly FormElement[]>(form: FormSpec<E>, options?: BuildFormSchemasOptions): BuildResult;
179
+ /**
180
+ * Builds and writes both JSON Schema and UI Schema files to disk.
181
+ *
182
+ * @public
183
+ */
184
+ export declare function writeSchemas<E extends readonly FormElement[]>(form: FormSpec<E>, options: WriteSchemasOptions): WriteSchemasResult;
185
+ /**
186
+ * Defines resolvers for a form's dynamic data sources.
187
+ *
188
+ * @public
189
+ */
190
+ export declare function defineResolvers<E extends readonly FormElement[], Sources extends string = ResolverSourcesForForm<E>>(form: FormSpec<E>, resolvers: ResolverMap<Sources>): ResolverRegistry<Sources>;
64
191
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAMH,YAAY,EAEV,QAAQ,EAGR,UAAU,EAGV,SAAS,EAGT,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EAGnB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EAGR,eAAe,EACf,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,EACL,OAAO,EACP,WAAW,EACX,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,OAAO,EACP,aAAa,GACd,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEjE,YAAY,EAEV,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,eAAe,EAEf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,IAAI,EACJ,UAAU,EACV,oBAAoB,EACpB,WAAW,EACX,iCAAiC,EACjC,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,27 +13,55 @@ import {
13
13
  isGroup,
14
14
  isConditional
15
15
  } from "@formspec/core";
16
+ import { field, validateForm, logValidationIssues } from "@formspec/dsl";
16
17
  import {
17
- field,
18
- group,
19
- when,
20
- is,
21
- formspec,
22
- formspecWithValidation,
23
- validateForm,
24
- logValidationIssues
18
+ group as dslGroup,
19
+ when as dslWhen,
20
+ is as dslIs,
21
+ formspec as dslFormspec,
22
+ formspecWithValidation as dslFormspecWithValidation
25
23
  } from "@formspec/dsl";
26
24
  import {
27
- generateJsonSchema,
28
- generateUiSchema,
29
- buildFormSchemas,
30
- buildMixedAuthoringSchemas,
31
- writeSchemas
25
+ buildFormSchemas as buildFormSchemasInternal,
26
+ generateJsonSchema as generateJsonSchemaInternal,
27
+ generateUiSchema as generateUiSchemaInternal,
28
+ writeSchemas as writeSchemasInternal
32
29
  } from "@formspec/build";
33
- import { defineResolvers } from "@formspec/runtime";
30
+ import {
31
+ defineResolvers as defineResolversInternal
32
+ } from "@formspec/runtime";
33
+ function group(label, ...elements) {
34
+ return dslGroup(label, ...elements);
35
+ }
36
+ function when(predicate, ...elements) {
37
+ return dslWhen(predicate, ...elements);
38
+ }
39
+ function is(field2, value) {
40
+ return dslIs(field2, value);
41
+ }
42
+ function formspec(...elements) {
43
+ return dslFormspec(...elements);
44
+ }
45
+ function formspecWithValidation(options, ...elements) {
46
+ return dslFormspecWithValidation(options, ...elements);
47
+ }
48
+ function generateJsonSchema(form, options) {
49
+ return generateJsonSchemaInternal(form, options);
50
+ }
51
+ function generateUiSchema(form) {
52
+ return generateUiSchemaInternal(form);
53
+ }
54
+ function buildFormSchemas(form, options) {
55
+ return buildFormSchemasInternal(form, options);
56
+ }
57
+ function writeSchemas(form, options) {
58
+ return writeSchemasInternal(form, options);
59
+ }
60
+ function defineResolvers(form, resolvers) {
61
+ return defineResolversInternal(form, resolvers);
62
+ }
34
63
  export {
35
64
  buildFormSchemas,
36
- buildMixedAuthoringSchemas,
37
65
  createInitialFieldState,
38
66
  defineResolvers,
39
67
  field,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * FormSpec - Type-safe form specifications\n *\n * This package re-exports everything from the FormSpec library for convenience.\n * You can import everything you need from a single package:\n *\n * @example\n * ```typescript\n * import {\n * // DSL functions\n * formspec, field, group, when, is,\n * // Type inference\n * type InferSchema,\n * // Schema generation\n * buildFormSchemas,\n * // Resolvers\n * defineResolvers,\n * // Core types\n * type FormSpec, type FormElement,\n * } from \"formspec\";\n *\n * // Define a form\n * const InvoiceForm = formspec(\n * group(\"Customer\",\n * field.text(\"name\", { label: \"Name\", required: true }),\n * field.dynamicEnum(\"country\", \"fetch_countries\", { label: \"Country\" }),\n * ),\n * group(\"Details\",\n * field.number(\"amount\", { label: \"Amount\", min: 0 }),\n * field.enum(\"status\", [\"draft\", \"sent\", \"paid\"]),\n * when(is(\"status\", \"draft\"),\n * field.text(\"notes\", { label: \"Internal Notes\" }),\n * ),\n * ),\n * );\n *\n * // Infer the schema type\n * type Schema = InferSchema<typeof InvoiceForm.elements>;\n *\n * // Generate JSON Schema and UI Schema\n * const { jsonSchema, uiSchema } = buildFormSchemas(InvoiceForm);\n *\n * // Define resolvers for dynamic data\n * const resolvers = defineResolvers(InvoiceForm, {\n * fetch_countries: async () => ({\n * options: [{ value: \"us\", label: \"United States\" }],\n * validity: \"valid\",\n * }),\n * });\n * ```\n *\n * @packageDocumentation\n */\n\n// =============================================================================\n// Core types\n// =============================================================================\n\nexport type {\n // Validity\n Validity,\n\n // Field state\n FieldState,\n\n // Form state\n FormState,\n\n // Data sources\n DataSourceRegistry,\n DataSourceOption,\n FetchOptionsResponse,\n DataSourceValueType,\n\n // Elements\n TextField,\n NumberField,\n BooleanField,\n StaticEnumField,\n DynamicEnumField,\n DynamicSchemaField,\n ArrayField,\n ObjectField,\n AnyField,\n Group,\n Conditional,\n FormElement,\n FormSpec,\n\n // Predicates\n EqualsPredicate,\n Predicate,\n} from \"@formspec/core\";\n\nexport { createInitialFieldState } from \"@formspec/core\";\n\n// Type guards\nexport {\n isField,\n isTextField,\n isNumberField,\n isBooleanField,\n isStaticEnumField,\n isDynamicEnumField,\n isDynamicSchemaField,\n isArrayField,\n isObjectField,\n isGroup,\n isConditional,\n} from \"@formspec/core\";\n\n// =============================================================================\n// DSL functions\n// =============================================================================\n\nexport {\n field,\n group,\n when,\n is,\n formspec,\n formspecWithValidation,\n validateForm,\n logValidationIssues,\n} from \"@formspec/dsl\";\n\n// Re-export enum option types (commonly used)\nexport type { EnumOption, EnumOptionValue } from \"@formspec/dsl\";\n\nexport type {\n // Type inference\n InferFieldValue,\n ExtractFields,\n ExtractFieldsFromArray,\n BuildSchema,\n InferSchema,\n InferFormSchema,\n // Validation\n FormSpecOptions,\n ValidationSeverity,\n ValidationIssue,\n ValidationResult,\n} from \"@formspec/dsl\";\n\n// =============================================================================\n// Build tools\n// =============================================================================\n\nexport {\n generateJsonSchema,\n generateUiSchema,\n buildFormSchemas,\n buildMixedAuthoringSchemas,\n writeSchemas,\n} from \"@formspec/build\";\n\nexport type {\n JsonSchema2020,\n JSONSchema7,\n JSONSchemaType,\n UISchema,\n UISchemaElement,\n UISchemaElementType,\n ControlElement,\n VerticalLayout,\n HorizontalLayout,\n GroupLayout,\n Rule,\n RuleEffect,\n SchemaBasedCondition,\n BuildResult,\n BuildMixedAuthoringSchemasOptions,\n MixedAuthoringSchemas,\n WriteSchemasOptions,\n WriteSchemasResult,\n} from \"@formspec/build\";\n\n// =============================================================================\n// Runtime helpers\n// =============================================================================\n\nexport { defineResolvers } from \"@formspec/runtime\";\n\nexport type { Resolver, ResolverMap, ResolverRegistry } from \"@formspec/runtime\";\n"],"mappings":";AA8FA,SAAS,+BAA+B;AAGxC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAwBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA2BP,SAAS,uBAAuB;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * FormSpec - Type-safe form specifications\n *\n * This package re-exports everything from the FormSpec library for convenience.\n * You can import everything you need from a single package:\n *\n * @example\n * ```typescript\n * import {\n * // DSL functions\n * formspec, field, group, when, is,\n * // Type inference\n * type InferSchema,\n * // Schema generation\n * buildFormSchemas,\n * // Resolvers\n * defineResolvers,\n * // Core types\n * type FormSpec, type FormElement,\n * } from \"formspec\";\n *\n * // Define a form\n * const InvoiceForm = formspec(\n * group(\"Customer\",\n * field.text(\"name\", { label: \"Name\", required: true }),\n * field.dynamicEnum(\"country\", \"fetch_countries\", { label: \"Country\" }),\n * ),\n * group(\"Details\",\n * field.number(\"amount\", { label: \"Amount\", min: 0 }),\n * field.enum(\"status\", [\"draft\", \"sent\", \"paid\"]),\n * when(is(\"status\", \"draft\"),\n * field.text(\"notes\", { label: \"Internal Notes\" }),\n * ),\n * ),\n * );\n *\n * // Infer the schema type\n * type Schema = InferSchema<typeof InvoiceForm.elements>;\n *\n * // Generate JSON Schema and UI Schema\n * const { jsonSchema, uiSchema } = buildFormSchemas(InvoiceForm);\n *\n * // Define resolvers for dynamic data\n * const resolvers = defineResolvers(InvoiceForm, {\n * fetch_countries: async () => ({\n * options: [{ value: \"us\", label: \"United States\" }],\n * validity: \"valid\",\n * }),\n * });\n * ```\n *\n * @packageDocumentation\n */\n\n// =============================================================================\n// Core types\n// =============================================================================\n\nimport type {\n AnyField,\n ArrayField,\n BooleanField,\n Conditional,\n DataSourceValueType,\n DynamicEnumField,\n DynamicSchemaField,\n EnumOption,\n EnumOptionValue,\n EqualsPredicate,\n FormElement,\n FormSpec,\n Group,\n NumberField,\n ObjectField,\n Predicate,\n StaticEnumField,\n TextField,\n} from \"@formspec/core\";\n\nexport type {\n // Validity\n Validity,\n\n // Field state\n FieldState,\n\n // Form state\n FormState,\n\n // Data sources\n DataSourceRegistry,\n DataSourceOption,\n FetchOptionsResponse,\n DataSourceValueType,\n // Elements\n TextField,\n NumberField,\n BooleanField,\n EnumOption,\n EnumOptionValue,\n StaticEnumField,\n DynamicEnumField,\n DynamicSchemaField,\n ArrayField,\n ObjectField,\n AnyField,\n Group,\n Conditional,\n FormElement,\n FormSpec,\n // Predicates\n EqualsPredicate,\n Predicate,\n} from \"@formspec/core\";\n\nexport { createInitialFieldState } from \"@formspec/core\";\n\n// Type guards\nexport {\n isField,\n isTextField,\n isNumberField,\n isBooleanField,\n isStaticEnumField,\n isDynamicEnumField,\n isDynamicSchemaField,\n isArrayField,\n isObjectField,\n isGroup,\n isConditional,\n} from \"@formspec/core\";\n\n// =============================================================================\n// DSL functions\n// =============================================================================\n\nexport { field, validateForm, logValidationIssues } from \"@formspec/dsl\";\nimport {\n group as dslGroup,\n when as dslWhen,\n is as dslIs,\n formspec as dslFormspec,\n formspecWithValidation as dslFormspecWithValidation,\n type FormSpecOptions,\n} from \"@formspec/dsl\";\nexport type {\n // Validation\n FormSpecOptions,\n ValidationSeverity,\n ValidationIssue,\n ValidationResult,\n} from \"@formspec/dsl\";\n\n// =============================================================================\n// Build tools\n// =============================================================================\n\nimport {\n buildFormSchemas as buildFormSchemasInternal,\n generateJsonSchema as generateJsonSchemaInternal,\n generateUiSchema as generateUiSchemaInternal,\n writeSchemas as writeSchemasInternal,\n type BuildFormSchemasOptions,\n type BuildResult,\n type GenerateJsonSchemaOptions,\n type JsonSchema2020,\n type UISchema,\n type WriteSchemasOptions,\n type WriteSchemasResult,\n} from \"@formspec/build\";\n\nexport type {\n BuildFormSchemasOptions,\n GenerateJsonSchemaOptions,\n JsonSchema2020,\n UISchema,\n UISchemaElement,\n UISchemaElementType,\n ControlElement,\n VerticalLayout,\n HorizontalLayout,\n GroupLayout,\n Categorization,\n Category,\n LabelElement,\n Rule,\n RuleEffect,\n RuleConditionSchema,\n SchemaBasedCondition,\n BuildResult,\n WriteSchemasOptions,\n WriteSchemasResult,\n} from \"@formspec/build\";\n\n// =============================================================================\n// Runtime helpers\n// =============================================================================\n\nimport {\n defineResolvers as defineResolversInternal,\n type ResolverMap,\n type ResolverRegistry,\n type ResolverSourcesForForm,\n} from \"@formspec/runtime\";\n\nexport type {\n ExtractDynamicSources,\n ExtractDynamicSourcesFromArray,\n Resolver,\n ResolverMap,\n ResolverRegistry,\n ResolverSourcesForForm,\n} from \"@formspec/runtime\";\n\n// =============================================================================\n// Local DSL wrappers and inference helpers\n// =============================================================================\n\n/**\n * Creates a visual group of form elements.\n *\n * @public\n */\nexport function group<const Elements extends readonly FormElement[]>(\n label: string,\n ...elements: Elements\n): Group<Elements> {\n return dslGroup(label, ...elements);\n}\n\n/**\n * Creates a conditional wrapper that shows elements based on a predicate.\n *\n * @public\n */\nexport function when<\n const K extends string,\n const V,\n const Elements extends readonly FormElement[],\n>(predicate: Predicate<K, V>, ...elements: Elements): Conditional<K, V, Elements> {\n return dslWhen(predicate, ...elements);\n}\n\n/**\n * Creates an equality predicate that checks if a field equals a specific value.\n *\n * @public\n */\nexport function is<const K extends string, const V>(field: K, value: V): EqualsPredicate<K, V> {\n return dslIs(field, value);\n}\n\n/**\n * Creates a complete form specification.\n *\n * @public\n */\nexport function formspec<const Elements extends readonly FormElement[]>(\n ...elements: Elements\n): FormSpec<Elements> {\n return dslFormspec(...elements);\n}\n\n/**\n * Creates a complete form specification with validation options.\n *\n * @public\n */\nexport function formspecWithValidation<const Elements extends readonly FormElement[]>(\n options: FormSpecOptions,\n ...elements: Elements\n): FormSpec<Elements> {\n return dslFormspecWithValidation(options, ...elements);\n}\n\n/**\n * Infers the value type from a single field.\n *\n * @public\n */\nexport type InferFieldValue<F> =\n F extends TextField<string>\n ? string\n : F extends NumberField<string>\n ? number\n : F extends BooleanField<string>\n ? boolean\n : F extends StaticEnumField<string, infer O extends readonly EnumOptionValue[]>\n ? O extends readonly EnumOption[]\n ? O[number][\"id\"]\n : O extends readonly string[]\n ? O[number]\n : never\n : F extends DynamicEnumField<string, infer Source>\n ? DataSourceValueType<Source>\n : F extends DynamicSchemaField<string>\n ? Record<string, unknown>\n : F extends ArrayField<string, infer Items extends readonly FormElement[]>\n ? InferSchema<Items>[]\n : F extends ObjectField<string, infer Properties extends readonly FormElement[]>\n ? InferSchema<Properties>\n : never;\n\n/**\n * Extracts all fields from a single element.\n *\n * @public\n */\nexport type ExtractFields<E> = E extends AnyField\n ? E\n : E extends Group<infer Elements>\n ? ExtractFieldsFromArray<Elements>\n : E extends Conditional<string, unknown, infer Elements>\n ? ExtractFieldsFromArray<Elements>\n : never;\n\n/**\n * Extracts fields from an array of elements.\n *\n * @public\n */\nexport type ExtractFieldsFromArray<Elements> = Elements extends readonly [\n infer First,\n ...infer Rest,\n]\n ? ExtractFields<First> | ExtractFieldsFromArray<Rest>\n : never;\n\n/**\n * Extracts fields that are not inside conditionals.\n *\n * @public\n */\nexport type ExtractNonConditionalFields<E> = E extends AnyField\n ? E\n : E extends Group<infer Elements>\n ? ExtractNonConditionalFieldsFromArray<Elements>\n : E extends Conditional<string, unknown, infer _Elements>\n ? never\n : never;\n\n/**\n * Extracts non-conditional fields from an array of elements.\n *\n * @public\n */\nexport type ExtractNonConditionalFieldsFromArray<Elements> = Elements extends readonly [\n infer First,\n ...infer Rest,\n]\n ? ExtractNonConditionalFields<First> | ExtractNonConditionalFieldsFromArray<Rest>\n : never;\n\n/**\n * Extracts fields that are inside conditionals.\n *\n * @public\n */\nexport type ExtractConditionalFields<E> = E extends AnyField\n ? never\n : E extends Group<infer Elements>\n ? ExtractConditionalFieldsFromArray<Elements>\n : E extends Conditional<string, unknown, infer Elements>\n ? ExtractFieldsFromArray<Elements>\n : never;\n\n/**\n * Extracts conditional fields from an array of elements.\n *\n * @public\n */\nexport type ExtractConditionalFieldsFromArray<Elements> = Elements extends readonly [\n infer First,\n ...infer Rest,\n]\n ? ExtractConditionalFields<First> | ExtractConditionalFieldsFromArray<Rest>\n : never;\n\n/**\n * Builds a schema type from extracted fields.\n *\n * @public\n */\nexport type BuildSchema<Fields> = {\n [N in Fields extends { name: infer K extends string } ? K : never]: InferFieldValue<\n Extract<Fields, { name: N } & AnyField>\n >;\n};\n\n/**\n * Utility type that flattens intersection types.\n *\n * @public\n */\nexport type FlattenIntersection<T> = {\n [K in keyof T]: T[K];\n} & {};\n\n/**\n * Infers the schema type from an array of form elements.\n *\n * @public\n */\nexport type InferSchema<Elements extends readonly FormElement[]> = FlattenIntersection<\n BuildSchema<ExtractNonConditionalFieldsFromArray<Elements>> &\n Partial<BuildSchema<ExtractConditionalFieldsFromArray<Elements>>>\n>;\n\n/**\n * Infers the schema type from a FormSpec.\n *\n * @public\n */\nexport type InferFormSchema<F extends FormSpec<readonly FormElement[]>> =\n F extends FormSpec<infer Elements> ? InferSchema<Elements> : never;\n\n/**\n * Generates a JSON Schema 2020-12 from a FormSpec.\n *\n * @public\n */\nexport function generateJsonSchema<E extends readonly FormElement[]>(\n form: FormSpec<E>,\n options?: GenerateJsonSchemaOptions\n): JsonSchema2020 {\n return generateJsonSchemaInternal(form, options);\n}\n\n/**\n * Generates a UI schema from a FormSpec.\n *\n * @public\n */\nexport function generateUiSchema<E extends readonly FormElement[]>(form: FormSpec<E>): UISchema {\n return generateUiSchemaInternal(form);\n}\n\n/**\n * Builds both JSON Schema and UI Schema from a FormSpec.\n *\n * @public\n */\nexport function buildFormSchemas<E extends readonly FormElement[]>(\n form: FormSpec<E>,\n options?: BuildFormSchemasOptions\n): BuildResult {\n return buildFormSchemasInternal(form, options);\n}\n\n/**\n * Builds and writes both JSON Schema and UI Schema files to disk.\n *\n * @public\n */\nexport function writeSchemas<E extends readonly FormElement[]>(\n form: FormSpec<E>,\n options: WriteSchemasOptions\n): WriteSchemasResult {\n return writeSchemasInternal(form, options);\n}\n\n/**\n * Defines resolvers for a form's dynamic data sources.\n *\n * @public\n */\nexport function defineResolvers<\n E extends readonly FormElement[],\n Sources extends string = ResolverSourcesForForm<E>,\n>(form: FormSpec<E>, resolvers: ResolverMap<Sources>): ResolverRegistry<Sources> {\n return defineResolversInternal(form, resolvers);\n}\n"],"mappings":";AAmHA,SAAS,+BAA+B;AAGxC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP,SAAS,OAAO,cAAc,2BAA2B;AACzD;AAAA,EACE,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,0BAA0B;AAAA,OAErB;AAaP;AAAA,EACE,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,OAQX;AA6BP;AAAA,EACE,mBAAmB;AAAA,OAId;AAoBA,SAAS,MACd,UACG,UACc;AACjB,SAAO,SAAS,OAAO,GAAG,QAAQ;AACpC;AAOO,SAAS,KAId,cAA+B,UAAiD;AAChF,SAAO,QAAQ,WAAW,GAAG,QAAQ;AACvC;AAOO,SAAS,GAAoCA,QAAU,OAAiC;AAC7F,SAAO,MAAMA,QAAO,KAAK;AAC3B;AAOO,SAAS,YACX,UACiB;AACpB,SAAO,YAAY,GAAG,QAAQ;AAChC;AAOO,SAAS,uBACd,YACG,UACiB;AACpB,SAAO,0BAA0B,SAAS,GAAG,QAAQ;AACvD;AAoJO,SAAS,mBACd,MACA,SACgB;AAChB,SAAO,2BAA2B,MAAM,OAAO;AACjD;AAOO,SAAS,iBAAmD,MAA6B;AAC9F,SAAO,yBAAyB,IAAI;AACtC;AAOO,SAAS,iBACd,MACA,SACa;AACb,SAAO,yBAAyB,MAAM,OAAO;AAC/C;AAOO,SAAS,aACd,MACA,SACoB;AACpB,SAAO,qBAAqB,MAAM,OAAO;AAC3C;AAOO,SAAS,gBAGd,MAAmB,WAA4D;AAC/E,SAAO,wBAAwB,MAAM,SAAS;AAChD;","names":["field"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "formspec",
3
- "version": "0.1.0-alpha.21",
3
+ "version": "0.1.0-alpha.23",
4
4
  "description": "Type-safe form specifications that compile to JSON Schema and JSON Forms UI Schema",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -18,10 +18,10 @@
18
18
  "README.md"
19
19
  ],
20
20
  "dependencies": {
21
- "@formspec/core": "0.1.0-alpha.21",
22
- "@formspec/dsl": "0.1.0-alpha.21",
23
- "@formspec/build": "0.1.0-alpha.21",
24
- "@formspec/runtime": "0.1.0-alpha.21"
21
+ "@formspec/core": "0.1.0-alpha.23",
22
+ "@formspec/dsl": "0.1.0-alpha.23",
23
+ "@formspec/build": "0.1.0-alpha.23",
24
+ "@formspec/runtime": "0.1.0-alpha.23"
25
25
  },
26
26
  "publishConfig": {
27
27
  "access": "public"
@@ -36,11 +36,11 @@
36
36
  ],
37
37
  "license": "UNLICENSED",
38
38
  "scripts": {
39
- "build": "tsup && tsc --emitDeclarationOnly && declaration-file-normalizer dist/index.d.ts && api-extractor run --local",
39
+ "build": "tsup && tsc --emitDeclarationOnly && declaration-file-normalizer dist/index.d.ts && pnpm run api-extractor:local",
40
40
  "clean": "rm -rf dist temp",
41
41
  "typecheck": "tsc --noEmit",
42
- "api-extractor": "api-extractor run",
43
- "api-extractor:local": "api-extractor run --local",
44
- "api-documenter": "api-documenter markdown -i temp -o docs"
42
+ "api-extractor": "api-extractor run && node ../../scripts/normalize-generated-markdown.mjs api-report",
43
+ "api-extractor:local": "api-extractor run --local && node ../../scripts/normalize-generated-markdown.mjs api-report",
44
+ "api-documenter": "api-documenter markdown -i temp -o docs && node ../../scripts/normalize-generated-markdown.mjs docs"
45
45
  }
46
46
  }