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/formspec-alpha.d.ts +1612 -0
- package/dist/formspec-beta.d.ts +1612 -0
- package/dist/formspec-internal.d.ts +1612 -0
- package/dist/formspec.d.ts +1475 -162
- package/dist/index.cjs +41 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +135 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +43 -15
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
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: () =>
|
|
24
|
-
buildMixedAuthoringSchemas: () => import_build.buildMixedAuthoringSchemas,
|
|
23
|
+
buildFormSchemas: () => buildFormSchemas,
|
|
25
24
|
createInitialFieldState: () => import_core.createInitialFieldState,
|
|
26
|
-
defineResolvers: () =>
|
|
25
|
+
defineResolvers: () => defineResolvers,
|
|
27
26
|
field: () => import_dsl.field,
|
|
28
|
-
formspec: () =>
|
|
29
|
-
formspecWithValidation: () =>
|
|
30
|
-
generateJsonSchema: () =>
|
|
31
|
-
generateUiSchema: () =>
|
|
32
|
-
group: () =>
|
|
33
|
-
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: () =>
|
|
48
|
-
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,
|
package/dist/index.cjs.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":";;;;;;;;;;;;;;;;;;;;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
|
-
|
|
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,
|
|
58
|
-
|
|
59
|
-
export type {
|
|
60
|
-
|
|
61
|
-
export type {
|
|
62
|
-
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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 {
|
|
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.
|
|
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.
|
|
22
|
-
"@formspec/dsl": "0.1.0-alpha.
|
|
23
|
-
"@formspec/build": "0.1.0-alpha.
|
|
24
|
-
"@formspec/runtime": "0.1.0-alpha.
|
|
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
|
|
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
|
}
|