@formhaus/core 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/check-definition-BTMV3Ziq.d.ts +10 -0
- package/dist/chunk-BXI5P7PF.js +3 -0
- package/dist/chunk-BXI5P7PF.js.map +1 -0
- package/dist/chunk-EPXEKDCK.js +3 -0
- package/dist/chunk-EPXEKDCK.js.map +1 -0
- package/dist/chunk-OMINRKEL.js +5 -0
- package/dist/chunk-OMINRKEL.js.map +1 -0
- package/dist/cloud.d.ts +4 -61
- package/dist/cloud.js +1 -2
- package/dist/cloud.js.map +1 -1
- package/dist/controller-x_emKgtv.d.ts +84 -0
- package/dist/{definition-BAHgjY7x.d.ts → definition-Bufih_Bx.d.ts} +5 -2
- package/dist/index.d.ts +10 -94
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +25 -0
- package/dist/internal.js +2 -0
- package/dist/internal.js.map +1 -0
- package/dist/runtime-DOIq-Zce.d.ts +79 -0
- package/dist/server.d.ts +7 -9
- package/dist/server.iife.js +4 -3
- package/dist/server.iife.js.map +1 -1
- package/dist/server.js +1 -3
- package/dist/server.js.map +1 -1
- package/dist/validate-field-glVVoN3E.d.ts +19 -0
- package/fixtures/cloud/responses.json +612 -0
- package/fixtures/submissions/comparisons.json +198 -0
- package/fixtures/submissions/rules.json +25 -4
- package/package.json +9 -3
- package/schema/form-definition.schema.json +19 -4
package/dist/server.iife.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/visibility/evaluate-condition.ts","../src/visibility/is-visible.ts","../src/visibility/is-step-visible.ts","../src/engine/engine-utils.ts","../src/engine/step-routes.ts","../src/definition-validation/definition-analysis.ts","../src/definition-validation/shape-errors.ts","../src/definition-validation/validate-definition.ts","../src/server/check-definition.ts","../src/engine/lifecycle-error.ts","../src/engine/pending-inputs.ts","../src/validation/default-messages.ts","../src/validation/validate-field.ts","../src/validation/validate-step.ts","../src/engine/validation-state.ts","../src/engine/step-skip.ts","../src/engine/submission.ts","../src/engine/navigation.ts","../src/engine/subscriptions.ts","../src/engine/visibility-index.ts","../src/engine/visibility-state.ts","../src/engine/runtime.ts","../src/server/type-checks.ts","../src/server/validate-submission.ts"],"names":["isBlank","value","evaluateCondition","condition","values","isVisible","field","_a","_b","matches","isStepVisible","hasFieldsAndSteps","definition","hasRoutes","step","conditionFields","source","getAllFields","createValues","fields","initialValues","getChangedKeys","previous","next","keys","key","definitionErrors","steps","warnings","stepIndexes","fieldIndexes","index","route","target","routeFallthroughWarnings","_c","_d","targets","to","candidate","sibling","exits","activeSteps","indexes","result","available","stepValues","reconcileStepIndex","previousStep","preserved","nextIds","before","predecessor","candidates","__spreadValues","ActivePath","analyzeDefinition","graph","fieldKeys","depend","owner","id","dependencies","dependency","pattern","e","earlier","isEntry","listOf","path","check","required","item","entry","name","conditions","shapeErrors","detectCycles","visiting","cycles","start","stack","frame","neighbor","nodes","node","validateDefinition","input","shape","cycle","checkDefinition","errors","rejected","message","FormLifecycleError","phase","cause","afterCommit","callback","error","activePath","engine","watchCheckedInputs","checked","TYPE_MESSAGES","getDefaultMessage","rule","params","BOOLEAN_TYPES","isEmpty","boundError","size","rules","unit","min","max","patternError","validateField","allValues","validators","sizeError","matchError","validateStep","validateFields","applyValidationErrors","navigate","previousErrors","structureChanged","moveToFirstError","firstErrorKey","targetIndex","clearResolvedMatchErrors","cleared","getValidationValues","pruneOffPathErrors","pathFields","pruned","getSubmitValues","withoutSkipped","validateForm","validateOne","previousError","visibleKeys","resetEngine","previousValues","loadingFields","changedValues","changedFields","resetValues","skipTarget","skipCurrentStep","includeCurrentStep","skipStepAt","submitAsync","submit","keepSkipped","lifecycle","dispatched","epoch","operation","inputsChanged","stale","allowed","hasStepErrors","moveTo","advance","nextStep","skipStep","skipStepAsync","changeStep","committed","skippedValues","edited","submitted","skipped","direction","reason","skipping","validating","validate","toIndex","context","prevStep","goToStepWithField","fieldKey","FormSubscriptions","listener","listeners","indexConditions","dependent","dependents","VisibilityState","valuesChanged","stepIndex","clearedFields","changedKey","seed","queue","queued","clear","current","quietEngines","FormEngine","options","total","previousSteps","valueChanged","hadError","stepId","revalidated","loading","validation","warning","MAX_STRING_LENGTH","MAX_EMAIL_LENGTH","MAX_ITEMS","EMAIL","DECIMAL","DATE","DATE_ONLY","DATE_TIME","TEXT_TYPES","FORMATS","normalizeValue","parsed","isOption","option","lengthError","multiselectError","stringError","formatError","format","primitiveError","typeError","allow","hasOwn","knownValues","typeErrors","withoutRules","invalid","strip","__spreadProps","ignoredValidators","applySkips","skippedSteps","requested","validateSubmission","engineOptions"],"mappings":"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","file":"server.iife.js","sourcesContent":["import type { ShowCondition } from '../types';\n\nexport function isBlank(value: unknown): boolean {\n return value == null || value === '' || (Array.isArray(value) && !value.length);\n}\n\nexport function evaluateCondition(\n condition: ShowCondition,\n values: Record<string, unknown>,\n): boolean {\n const value = values[condition.field];\n\n if (condition.eq !== undefined) {\n return value === condition.eq;\n }\n\n if (condition.neq !== undefined) {\n return value !== condition.neq;\n }\n\n if (condition.in !== undefined) {\n return condition.in.includes(value as string | number);\n }\n\n if (condition.notIn !== undefined) {\n return !condition.notIn.includes(value as string | number);\n }\n\n if (condition.notEmpty === true) {\n return !isBlank(value);\n }\n\n return true;\n}\n","import type { FormField, ShowCondition } from '../types';\nimport { evaluateCondition } from './evaluate-condition';\n\nexport function isVisible(\n field: Pick<FormField, 'show' | 'showAny'>,\n values: Record<string, unknown>,\n): boolean {\n const matches = (condition: ShowCondition) => evaluateCondition(condition, values);\n return (field.show ?? []).every(matches) && (!field.showAny?.length || field.showAny.some(matches));\n}\n","import type { FormStep } from '../types';\nimport { isVisible } from './is-visible';\n\nexport const isStepVisible: (step: FormStep, values: Record<string, unknown>) => boolean = isVisible;\n","import type { FormDefinition, FormField } from '../types';\n\nexport function hasFieldsAndSteps(definition: FormDefinition): boolean {\n return !!definition.fields?.length && !!definition.steps?.length;\n}\n\nexport function hasRoutes(definition: FormDefinition): boolean {\n return !!definition.steps?.some((step) => step.routes?.length);\n}\n\nexport function conditionFields(source: Pick<FormField, 'show' | 'showAny'>): string[] {\n return [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field);\n}\n\nexport function getAllFields(definition: FormDefinition): FormField[] {\n return definition.steps?.length ? definition.steps.flatMap((step) => step.fields) : definition.fields ?? [];\n}\n\nexport function createValues(\n fields: FormField[],\n initialValues?: Record<string, unknown>,\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n for (const field of fields) {\n if (field.defaultValue !== undefined) values[field.key] = field.defaultValue;\n }\n return Object.assign(values, initialValues);\n}\n\nexport function getChangedKeys(\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n): Set<string> {\n const keys = new Set([...Object.keys(previous), ...Object.keys(next)]);\n return new Set([...keys].filter((key) => !Object.is(previous[key], next[key])));\n}\n","import type { FormDefinition, FormStep } from '../types';\nimport { isStepVisible, isVisible } from '../visibility';\nimport { conditionFields, getAllFields, hasFieldsAndSteps, hasRoutes } from './engine-utils';\n\nexport function definitionErrors(definition: FormDefinition): string[] {\n const steps = definition.steps ?? [];\n const warnings = hasFieldsAndSteps(definition) ? ['FormEngine rejects a definition with both \"fields\" and \"steps\".'] : [];\n const stepIndexes = new Map<string, number>();\n const fieldIndexes = new Map<string, number>();\n steps.forEach((step, index) => {\n if (stepIndexes.has(step.id)) warnings.push(`Duplicate step id \"${step.id}\".`);\n stepIndexes.set(step.id, index);\n for (const field of step.fields) fieldIndexes.set(field.key, index);\n });\n for (const { key } of getAllFields(definition)) {\n if (key in Object.prototype || key === 'prototype') warnings.push(`Reserved field key \"${key}\".`);\n }\n if (!hasRoutes(definition)) return warnings;\n steps.forEach((step, index) => {\n for (const route of step.routes ?? []) {\n const target = route.to === null ? null : stepIndexes.get(route.to);\n if (target === undefined || (target !== null && target <= index)) {\n warnings.push(`Invalid route from \"${step.id}\" to \"${route.to}\": targets must be later steps or null.`);\n }\n for (const field of conditionFields(route)) {\n if (!((fieldIndexes.get(field) ?? Infinity) <= index)) {\n warnings.push(`Invalid route on \"${step.id}\": condition field \"${field}\" must belong to this or an earlier step.`);\n }\n }\n }\n });\n return warnings;\n}\n\nexport function routeFallthroughWarnings(definition: FormDefinition): string[] {\n const steps = definition.steps ?? [];\n const warnings: string[] = [];\n for (const step of steps) {\n const targets = new Set((step.routes ?? []).map((route) => route.to).filter((to) => to !== null));\n for (const target of targets) {\n const index = steps.findIndex((candidate) => candidate.id === target);\n const sibling = steps[index + 1];\n const exits = steps[index]?.routes?.some((route) => !route.show?.length && !route.showAny?.length);\n if (sibling && targets.has(sibling.id) && !exits) {\n warnings.push(`Route branch \"${target}\" from \"${step.id}\" continues into sibling branch \"${sibling.id}\". Add an unconditional route where it should continue.`);\n }\n }\n }\n return warnings;\n}\n\nexport function activeSteps(definition: FormDefinition, values: Record<string, unknown>): FormStep[] {\n const steps = definition.steps ?? [];\n if (!hasRoutes(definition)) return steps.filter((step) => isStepVisible(step, values));\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n const result: FormStep[] = [];\n const available: Record<string, unknown> = {};\n for (let index = 0; index < steps.length;) {\n const step = steps[index];\n if (!isStepVisible(step, available)) { index++; continue; }\n result.push(step);\n Object.assign(available, stepValues(step, values, available));\n const route = step.routes?.find((route) => (\n isVisible(route, available) && (route.to === null || ((indexes.get(route.to) ?? -1) > index\n && isStepVisible(steps[indexes.get(route.to)!], available)))\n ));\n if (route?.to === null) break;\n index = route ? indexes.get(route.to)! : index + 1;\n }\n return result;\n}\n\nexport function reconcileStepIndex(previous: FormStep[], next: FormStep[], index: number): number {\n const previousStep = previous[index] ?? previous[previous.length - 1];\n const preserved = next.findIndex((step) => step.id === previousStep?.id);\n if (preserved !== -1) return preserved;\n const nextIds = new Map(next.map((step, index) => [step.id, index]));\n for (let before = Math.min(index - 1, previous.length - 1); before >= 0; before--) {\n const predecessor = nextIds.get(previous[before].id);\n if (predecessor !== undefined) return predecessor;\n }\n return 0;\n}\n\nfunction stepValues(step: FormStep, values: Record<string, unknown>, previous: Record<string, unknown>) {\n const candidates = { ...previous };\n for (const field of step.fields) candidates[field.key] = values[field.key];\n const result: Record<string, unknown> = {};\n for (const field of step.fields) {\n if (isVisible(field, candidates) && values[field.key] !== undefined) result[field.key] = values[field.key];\n }\n return result;\n}\n\nexport class ActivePath {\n readonly enabled: boolean;\n private source: Record<string, unknown> | null = null;\n private activeStepList: FormStep[] = [];\n private activeValueMap: Record<string, unknown> = {};\n\n constructor(private definition: FormDefinition) {\n this.enabled = hasRoutes(definition);\n }\n\n invalidate(): void { this.source = null; }\n\n steps(values: Record<string, unknown>): FormStep[] {\n this.refresh(values);\n return this.activeStepList;\n }\n\n values(values: Record<string, unknown>): Record<string, unknown> {\n this.refresh(values);\n return this.activeValueMap;\n }\n\n private refresh(values: Record<string, unknown>): void {\n if (this.source === values) return;\n this.source = values;\n this.activeStepList = activeSteps(this.definition, values);\n const result: Record<string, unknown> = {};\n for (const step of this.activeStepList) Object.assign(result, stepValues(step, values, result));\n this.activeValueMap = result;\n }\n}\n","import { conditionFields, getAllFields, hasRoutes } from '../engine/engine-utils';\nimport type { FormDefinition, FormField } from '../types';\n\nexport interface DefinitionAnalysis {\n graph: Map<string, string[]>;\n warnings: string[];\n}\n\nexport function analyzeDefinition(definition: FormDefinition): DefinitionAnalysis {\n const warnings: string[] = [];\n const graph = new Map<string, string[]>();\n const fields = getAllFields(definition);\n const fieldKeys = new Set<string>();\n for (const { key } of fields) {\n if (fieldKeys.has(key)) warnings.push(`Duplicate field key \"${key}\" — fields will share state and overwrite each other`);\n fieldKeys.add(key);\n }\n const depend = (owner: string, id: string, source: Pick<FormField, 'show' | 'showAny'>, keys: string[]) => {\n const dependencies = conditionFields(source);\n for (const dependency of dependencies) {\n if (typeof dependency !== 'string') warnings.push(`${owner} \"${id}\" has a show condition without a \"field\" name`);\n else if (!fieldKeys.has(dependency)) warnings.push(`${owner} \"${id}\" has show condition referencing non-existent field \"${dependency}\"`);\n }\n if (dependencies.length) for (const key of keys) graph.set(key, [...(graph.get(key) ?? []), ...dependencies]);\n };\n for (const field of fields) {\n depend('Field', field.key, field, [field.key]);\n const pattern = field.validation?.pattern;\n if (pattern === undefined) continue;\n try {\n new RegExp(pattern);\n } catch {\n warnings.push(`Field \"${field.key}\" has invalid regex pattern: \"${pattern}\"`);\n }\n }\n const earlier = new Set<string>();\n for (const step of definition.steps ?? []) {\n depend('Step', step.id, step, step.fields.map((field) => field.key));\n for (const field of conditionFields(step)) {\n if (hasRoutes(definition) && fieldKeys.has(field) && !earlier.has(field)) {\n warnings.push(`Step \"${step.id}\" condition field \"${field}\" must belong to an earlier step.`);\n }\n }\n for (const { key } of step.fields) earlier.add(key);\n if (step.skip && (step.next === false || !definition.steps![1])) {\n warnings.push(`Step \"${step.id}\" has \"skip\" but no Next button or later step.`);\n }\n }\n return { graph, warnings };\n}\n","type Entry = Record<string, unknown>;\ntype Check = (value: unknown, path: string) => string[];\n\nexport const isEntry = (value: unknown): value is Entry =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nfunction listOf(value: unknown, path: string, check: Check, required = false): string[] {\n if (value == null && !required) return [];\n if (!Array.isArray(value)) return [`${path} must be an array.`];\n return value.flatMap((item, index) => check(item, `${path}[${index}]`));\n}\n\nfunction entry(name: string, check: (value: Entry, path: string) => string[]): Check {\n return (value, path) => (isEntry(value) ? check(value, path) : [`${path} must be ${name}.`]);\n}\n\nconst condition = entry('a condition object', () => []);\n\nfunction conditions(value: Entry, path: string): string[] {\n return [...listOf(value.show, `${path}.show`, condition), ...listOf(value.showAny, `${path}.showAny`, condition)];\n}\n\nconst field = entry('a field object', conditions);\nconst route = entry('a route object', conditions);\nconst step = entry('a step object', (value, path) => [\n ...listOf(value.fields, `${path}.fields`, field, true),\n ...conditions(value, path),\n ...listOf(value.routes, `${path}.routes`, route),\n]);\n\nexport function shapeErrors(definition: unknown): string[] {\n if (!isEntry(definition)) return ['Form definition must be an object.'];\n return [...listOf(definition.fields, 'fields', field), ...listOf(definition.steps, 'steps', step)];\n}\n","import { definitionErrors, routeFallthroughWarnings } from '../engine/step-routes';\nimport type { FormDefinition } from '../types';\nimport { analyzeDefinition } from './definition-analysis';\nimport { isEntry, shapeErrors } from './shape-errors';\n\nfunction detectCycles(graph: Map<string, string[]>): string[][] {\n const visiting = new Map<string, boolean>();\n const cycles: string[][] = [];\n for (const start of graph.keys()) {\n if (visiting.has(start)) continue;\n visiting.set(start, true);\n const stack: [string, number][] = [[start, 0]];\n while (stack.length > 0) {\n const frame = stack[stack.length - 1];\n const neighbor = graph.get(frame[0])?.[frame[1]++];\n if (neighbor === undefined) {\n visiting.set(frame[0], false);\n stack.pop();\n } else if (visiting.get(neighbor)) {\n const nodes = stack.map(([node]) => node);\n cycles.push([...nodes.slice(nodes.indexOf(neighbor)), neighbor]);\n } else if (!visiting.has(neighbor)) {\n visiting.set(neighbor, true);\n stack.push([neighbor, 0]);\n }\n }\n }\n return cycles;\n}\n\nexport function validateDefinition(input: unknown): string[] {\n const shape = shapeErrors(input);\n if (shape.length) return shape;\n const definition = input as FormDefinition;\n const { graph, warnings } = analyzeDefinition(definition);\n if (!isEntry(definition.submit)) warnings.unshift('Form definition is missing the \"submit\" action.');\n for (const cycle of detectCycles(graph)) {\n warnings.push(`Circular show condition detected: ${cycle.join(' -> ')}`);\n }\n return [...definitionErrors(definition), ...warnings, ...routeFallthroughWarnings(definition)];\n}\n","import { validateDefinition } from '../definition-validation';\nimport { shapeErrors } from '../definition-validation/shape-errors';\nimport { definitionErrors } from '../engine/step-routes';\nimport type { FormDefinition } from '../types';\n\nexport interface DefinitionCheck {\n errors: string[];\n warnings: string[];\n}\n\nexport function checkDefinition(input: unknown): DefinitionCheck {\n const shape = shapeErrors(input);\n if (shape.length) return { errors: shape, warnings: [] };\n const definition = input as FormDefinition;\n const errors = definitionErrors(definition);\n const rejected = new Set(errors);\n return { errors, warnings: validateDefinition(definition).filter((message) => !rejected.has(message)) };\n}\n","export class FormLifecycleError extends Error {\n readonly committed = true;\n readonly cause: unknown;\n\n constructor(readonly phase: 'afterStepChange' | 'afterSubmit', cause: unknown) {\n super(`The action completed, but ${phase} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\n this.name = 'FormLifecycleError';\n this.cause = cause;\n }\n}\n\nexport async function afterCommit(phase: 'afterStepChange' | 'afterSubmit', callback: () => void | Promise<void>): Promise<void> {\n try { await callback(); }\n catch (error) { throw new FormLifecycleError(phase, error); }\n}\n","import type { EngineInternals } from './runtime-internals';\n\nfunction activePath(engine: EngineInternals): string {\n return engine.visibleSteps.map((step) => step.id).join('\\n');\n}\n\nexport function watchCheckedInputs(engine: EngineInternals, checked: Record<string, unknown>): () => boolean {\n const path = activePath(engine);\n return () => activePath(engine) !== path || Object.keys(checked).some(\n (key) => checked[key] !== undefined && !Object.is(engine.values[key], checked[key]),\n );\n}\n","export const TYPE_MESSAGES = {\n email: 'Enter a valid email',\n number: 'Enter a number',\n boolean: 'Must be true or false',\n option: 'Select one of the available options',\n options: 'Must be a list of available options',\n string: 'Must be text',\n date: 'Enter a valid date',\n datetime: 'Enter a valid date and time',\n file: 'Must be a file reference',\n value: 'Invalid value',\n};\n\nexport function getDefaultMessage(rule: string, params?: Record<string, unknown>): string {\n switch (rule) {\n case 'required':\n return 'This field is required';\n case 'minLength':\n return `Must be at least ${params?.min} ${params?.unit ?? 'characters'}`;\n case 'maxLength':\n return `Must be at most ${params?.max} ${params?.unit ?? 'characters'}`;\n case 'min':\n return `Must be at least ${params?.min}`;\n case 'max':\n return `Must be at most ${params?.max}`;\n case 'pattern':\n return 'Invalid format';\n case 'matchField':\n return 'Fields must match';\n default:\n return 'Invalid value';\n }\n}\n","import type { FieldValidation, FormField } from '../types';\nimport { isBlank } from '../visibility';\nimport { getDefaultMessage } from './default-messages';\n\nexport type ValidatorFn = (\n value: unknown,\n allValues: Record<string, unknown>,\n) => string | null;\n\nexport const BOOLEAN_TYPES = new Set(['checkbox', 'switch']);\n\nfunction isEmpty(value: unknown, field: FormField): boolean {\n return isBlank(value) || (value === false && BOOLEAN_TYPES.has(field.type));\n}\n\nfunction boundError(\n size: number,\n rule: 'Length' | '',\n rules: FieldValidation,\n unit?: string,\n): string | undefined {\n const min = rules[`min${rule}`];\n const max = rules[`max${rule}`];\n if (min !== undefined && size < min) return rules[`min${rule}Message`] ?? getDefaultMessage(`min${rule}`, { min, unit });\n if (max !== undefined && size > max) return rules[`max${rule}Message`] ?? getDefaultMessage(`max${rule}`, { max, unit });\n return undefined;\n}\n\nfunction patternError(value: unknown, rules: FieldValidation): string | undefined {\n if (rules.pattern === undefined) return undefined;\n try {\n return new RegExp(rules.pattern).test(String(value)) ? undefined : rules.patternMessage ?? getDefaultMessage('pattern');\n } catch {\n return undefined;\n }\n}\n\nexport function validateField(\n field: FormField,\n value: unknown,\n allValues: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): string | null {\n const rules = field.validation;\n if (!rules) return null;\n if (isEmpty(value, field)) {\n if (!rules.required) return null;\n return typeof rules.required === 'string' ? rules.required : getDefaultMessage('required');\n }\n const sizeError = typeof value === 'string' || Array.isArray(value)\n ? boundError(value.length, 'Length', rules, Array.isArray(value) ? 'items' : undefined)\n : typeof value === 'number' ? boundError(value, '', rules) : undefined;\n const matchError = rules.matchField !== undefined && value !== allValues[rules.matchField]\n ? rules.matchFieldMessage ?? getDefaultMessage('matchField')\n : undefined;\n return (sizeError\n ?? patternError(value, rules)\n ?? matchError\n ?? (rules.validator ? validators?.[rules.validator]?.(value, allValues) : undefined)) || null;\n}\n","import type { FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport { type ValidatorFn, validateField } from './validate-field';\n\nexport function validateStep(\n step: FormStep,\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n return validateFields(step.fields, values, validators);\n}\n\nexport function validateFields(\n fields: FormField[],\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n const errors: Record<string, string> = {};\n\n for (const field of fields) {\n if (!isVisible(field, values)) continue;\n\n const error = validateField(field, values[field.key], values, validators);\n if (error) {\n errors[field.key] = error;\n }\n }\n\n return errors;\n}\n","import { validateField, validateFields, validateStep } from '../validation';\nimport { createValues, getChangedKeys, hasRoutes } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\n\nexport function applyValidationErrors(engine: EngineInternals, errors: Record<string, string>, navigate = false): void {\n const previousErrors = engine.errors;\n engine.errors = {};\n engine.topLevelErrors = [];\n for (const [key, message] of Object.entries(errors)) {\n if (engine.visibility.isFieldVisible(key, engine.values)) engine.errors[key] = message;\n else engine.topLevelErrors.push(message);\n }\n const structureChanged = navigate && moveToFirstError(engine, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors), structureChanged });\n}\n\nfunction moveToFirstError(engine: EngineInternals, errors: Record<string, string>): boolean {\n const firstErrorKey = Object.keys(errors).find((key) => engine.errors[key] !== undefined);\n const targetIndex = firstErrorKey && engine.isMultiStep\n ? engine.visibility.findStepIndex(firstErrorKey, engine.values, engine.currentStepIndex)\n : null;\n if (targetIndex === null || targetIndex === engine.currentStepIndex) return false;\n engine.currentStepIndex = targetIndex;\n return true;\n}\n\nexport function clearResolvedMatchErrors(engine: EngineInternals, key: string): string[] {\n const cleared: string[] = [];\n for (const field of engine.visibility.allFields) {\n if (field.validation?.matchField !== key || engine.errors[field.key] === undefined) continue;\n if (validateField(field, engine.values[field.key], getValidationValues(engine), engine.validators)) continue;\n delete engine.errors[field.key];\n cleared.push(field.key);\n }\n return cleared;\n}\n\nexport function pruneOffPathErrors(engine: EngineInternals): string[] {\n const pathFields = new Set(engine.visibleSteps.flatMap((step) => step.fields.map((field) => field.key)));\n const pruned = Object.keys(engine.errors).filter((key) => !pathFields.has(key));\n for (const key of pruned) delete engine.errors[key];\n return pruned;\n}\n\nexport function getValidationValues(engine: EngineInternals): Record<string, unknown> {\n return hasRoutes(engine.definition) ? getSubmitValues(engine) : withoutSkipped(engine, { ...engine.values });\n}\n\nfunction withoutSkipped(engine: EngineInternals, values: Record<string, unknown>): Record<string, unknown> {\n for (const key of [...engine.skipped.values()].flat()) delete values[key];\n return values;\n}\n\nexport function validateForm(engine: EngineInternals, navigate = false): Record<string, string> {\n const previousErrors = engine.errors;\n const errors: Record<string, string> = {};\n if (engine.isMultiStep) {\n for (const step of engine.visibleSteps) {\n if (engine.skipped.has(step.id)) continue;\n Object.assign(errors, validateStep(step, getValidationValues(engine), engine.validators));\n }\n } else {\n Object.assign(\n errors,\n validateFields(engine.definition.fields ?? [], engine.values, engine.validators),\n );\n }\n engine.errors = errors;\n const structureChanged = navigate && moveToFirstError(engine, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, errors), structureChanged });\n return errors;\n}\n\nexport function validateOne(engine: EngineInternals, key: string): string | null {\n const field = engine.visibility.fieldByKey.get(key);\n if (!field || !engine.visibility.isFieldVisible(key, engine.values)) return null;\n const previousError = engine.errors[key];\n const error = validateField(field, engine.values[key], getValidationValues(engine), engine.validators);\n if (error) engine.errors[key] = error;\n else delete engine.errors[key];\n const fieldKeys = Object.is(previousError, engine.errors[key]) ? [] : [key];\n engine.notify({ fieldKeys });\n return error;\n}\n\nexport function getSubmitValues(engine: EngineInternals): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n const visibleKeys = engine.visibility.getVisibleFieldKeys(\n engine.values,\n engine.currentStepIndex,\n );\n for (const key of visibleKeys) {\n if (engine.values[key] !== undefined) result[key] = engine.values[key];\n }\n return withoutSkipped(engine, result);\n}\n\nexport function resetEngine(engine: EngineInternals, values?: Record<string, unknown>): void {\n const previousValues = engine.values;\n const previousErrors = engine.errors;\n const loadingFields = Object.keys(engine.fieldLoading);\n engine.validationEpoch++;\n engine.operationEpoch++;\n engine.submitting = false;\n engine.values = createValues(engine.visibility.allFields, values);\n engine.errors = {};\n engine.topLevelErrors = [];\n engine.fieldLoading = {};\n engine.stepValidating = false;\n engine.currentStepIndex = 0;\n engine.skipped.clear();\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n const changedValues = getChangedKeys(previousValues, engine.values);\n const changedFields = new Set([\n ...changedValues,\n ...getChangedKeys(previousErrors, engine.errors),\n ...loadingFields,\n ]);\n engine.notify({\n fieldKeys: changedFields,\n structureChanged: true,\n valuesChanged: changedValues.size > 0,\n });\n}\n","import type { FormStep } from '../types';\nimport { createValues } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\nimport { activeSteps } from './step-routes';\n\nfunction resetValues(engine: EngineInternals): Record<string, unknown> {\n const fields = engine.currentStep?.fields ?? [];\n const values = { ...engine.values };\n for (const { key } of fields) delete values[key];\n return Object.assign(values, createValues(fields));\n}\n\nexport function skipTarget(engine: EngineInternals): FormStep | undefined {\n return activeSteps(engine.definition, resetValues(engine))[engine.currentStepIndex + 1];\n}\n\nexport function skipCurrentStep(engine: EngineInternals): string[] {\n const step = engine.currentStep!;\n const fieldKeys = step.fields.map(({ key }) => key);\n engine.values = resetValues(engine);\n for (const key of fieldKeys) delete engine.errors[key];\n engine.skipped.set(step.id, fieldKeys);\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n engine.notify({ fieldKeys, structureChanged: true, valuesChanged: true });\n return fieldKeys;\n}\n\nexport function includeCurrentStep(engine: EngineInternals): void {\n const step = engine.currentStep;\n if (step) engine.skipped.delete(step.id);\n}\n\nexport function skipStepAt(engine: EngineInternals, index: number): string[] {\n engine.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n return skipCurrentStep(engine);\n}\n","import { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport type { SubmitFn } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\nimport { getSubmitValues, validateForm } from './validation-state';\nimport { includeCurrentStep } from './step-skip';\n\nexport async function submitAsync(engine: EngineInternals, submit: SubmitFn, keepSkipped = false): Promise<boolean> {\n if (engine.submitting || engine.stepValidating) return false;\n if (!keepSkipped) includeCurrentStep(engine);\n const lifecycle = { ...engine.lifecycle };\n let dispatched = false;\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n let values = getSubmitValues(engine);\n const inputsChanged = watchCheckedInputs(engine, values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch || inputsChanged();\n engine.submitting = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (Object.keys(validateForm(engine, true)).length > 0 || stale()) return false;\n if (lifecycle.onBeforeSubmit) {\n const allowed = await lifecycle.onBeforeSubmit(values);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (lifecycle.onBeforeSubmit) {\n if (Object.keys(validateForm(engine, true)).length > 0 || stale()) return false;\n values = getSubmitValues(engine);\n }\n dispatched = true;\n await submit(values, [...engine.skipped.keys()]);\n if (operation !== engine.operationEpoch) return true;\n await afterCommit('afterSubmit', () => lifecycle.onAfterSubmit?.(values));\n return true;\n } catch (error) {\n if (!dispatched && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.submitting = false;\n engine.notify();\n }\n }\n}\n","import { getChangedKeys } from './engine-utils';\nimport { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport { validateStep } from '../validation';\nimport { applyValidationErrors, getValidationValues } from './validation-state';\nimport { includeCurrentStep, skipCurrentStep, skipTarget } from './step-skip';\nimport { submitAsync } from './submission';\nimport type { StepChangeContext, SubmitFn } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\n\nfunction hasStepErrors(engine: EngineInternals): boolean {\n const step = engine.currentStep;\n if (!step) return true;\n const errors = validateStep(step, getValidationValues(engine), engine.validators);\n if (Object.keys(errors).length === 0) return false;\n const previousErrors = { ...engine.errors };\n Object.assign(engine.errors, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors) });\n return true;\n}\n\nfunction moveTo(engine: EngineInternals, index: number): void {\n engine.validationEpoch++;\n engine.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n}\n\nfunction advance(engine: EngineInternals): boolean {\n if (engine.isLastStep) return false;\n moveTo(engine, engine.currentStepIndex + 1);\n return true;\n}\n\nexport function nextStep(engine: EngineInternals): boolean {\n if (!engine.isMultiStep) return false;\n includeCurrentStep(engine);\n return !hasStepErrors(engine) && advance(engine);\n}\n\nexport function skipStep(engine: EngineInternals): boolean {\n if (!engine.isMultiStep || !skipTarget(engine)) return false;\n skipCurrentStep(engine);\n return advance(engine);\n}\n\nexport async function skipStepAsync(engine: EngineInternals, submit?: SubmitFn): Promise<boolean> {\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting) return false;\n if (skipTarget(engine)) return changeStep(engine, 'next', 'skip');\n const step = engine.currentStep;\n if (!submit || !step) return false;\n const values = engine.values;\n const errors = { ...engine.errors };\n let committed = false;\n const fieldKeys = skipCurrentStep(engine);\n const skippedValues = engine.values;\n const edited = watchCheckedInputs(engine, { ...skippedValues });\n try {\n return await submitAsync(engine, async (submitted, skipped) => {\n await submit(submitted, skipped);\n committed = true;\n }, true);\n } finally {\n if (!committed && engine.values === skippedValues && !edited()) {\n engine.values = values;\n engine.errors = { ...errors, ...engine.errors };\n engine.skipped.delete(step.id);\n engine.notify({ fieldKeys, structureChanged: true, valuesChanged: true });\n }\n }\n}\n\nexport async function changeStep(engine: EngineInternals, direction: 'next' | 'back', reason: StepChangeContext['reason'] = direction): Promise<boolean> {\n const skipping = reason === 'skip';\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting) return false;\n if (!skipping && (direction === 'next' ? engine.isLastStep : engine.isFirstStep)) return false;\n const step = engine.currentStep!;\n const validating = direction === 'next' && !skipping;\n if (validating) includeCurrentStep(engine);\n if (validating && hasStepErrors(engine)) return false;\n const lifecycle = { ...engine.lifecycle };\n const validate = engine.onStepValidate;\n let committed = false;\n const fromIndex = engine.currentStepIndex;\n const toIndex = fromIndex + (direction === 'next' ? 1 : -1);\n const target = skipping ? skipTarget(engine) : engine.visibleSteps[toIndex];\n if (!target) return false;\n const context = { fromStepId: step.id, toStepId: target.id, direction, reason, values: { ...getValidationValues(engine) } };\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n const inputsChanged = watchCheckedInputs(engine, context.values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch\n || engine.currentStep?.id !== step.id || inputsChanged();\n engine.stepValidating = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (validating && validate) {\n const result = await validate!(step.id, context.values);\n if (stale()) return false;\n if (result && Object.keys(result).length > 0) {\n applyValidationErrors(engine, result);\n return false;\n }\n }\n if (lifecycle.onBeforeStepChange) {\n const allowed = await lifecycle.onBeforeStepChange(context);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (validating && hasStepErrors(engine)) return false;\n committed = true;\n if (skipping) skipCurrentStep(engine);\n moveTo(engine, toIndex);\n await afterCommit('afterStepChange', () => lifecycle.onAfterStepChange?.(context));\n return true;\n } catch (error) {\n if (!committed && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.stepValidating = false;\n engine.notify();\n }\n }\n}\n\nexport function prevStep(engine: EngineInternals): void {\n if (engine.isMultiStep && !engine.isFirstStep) moveTo(engine, engine.currentStepIndex - 1);\n}\n\nexport function goToStepWithField(engine: EngineInternals, fieldKey: string): void {\n if (!engine.isMultiStep) return;\n const targetIndex = engine.visibility.findStepIndex(\n fieldKey,\n engine.values,\n engine.currentStepIndex,\n );\n if (targetIndex === engine.currentStepIndex) engine.notify();\n else if (targetIndex !== null) moveTo(engine, targetIndex);\n}\n","export interface NotifyOptions {\n fieldKeys?: Iterable<string>;\n structureChanged?: boolean;\n}\n\nexport class FormSubscriptions {\n private version = 0;\n private listeners = new Set<() => void>();\n private fieldVersions = new Map<string, number>();\n private fieldListeners = new Map<string, Set<() => void>>();\n private structureVersion = 0;\n private structureListeners = new Set<() => void>();\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n getSnapshot(): number {\n return this.version;\n }\n\n subscribeField(key: string, listener: () => void): () => void {\n const listeners = this.fieldListeners.get(key) ?? new Set();\n listeners.add(listener);\n this.fieldListeners.set(key, listeners);\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) this.fieldListeners.delete(key);\n };\n }\n\n getFieldSnapshot(key: string): number {\n return this.fieldVersions.get(key) ?? 0;\n }\n\n subscribeStructure(listener: () => void): () => void {\n this.structureListeners.add(listener);\n return () => this.structureListeners.delete(listener);\n }\n\n getStructureSnapshot(): number {\n return this.structureVersion;\n }\n\n notify({ fieldKeys = [], structureChanged = false }: NotifyOptions = {}): void {\n for (const key of new Set(fieldKeys)) this.notifyField(key);\n if (structureChanged) this.notifyStructure();\n\n this.version++;\n for (const listener of this.listeners) listener();\n }\n\n private notifyField(key: string): void {\n this.fieldVersions.set(key, (this.fieldVersions.get(key) ?? 0) + 1);\n for (const listener of this.fieldListeners.get(key) ?? []) listener();\n }\n\n private notifyStructure(): void {\n this.structureVersion++;\n for (const listener of this.structureListeners) listener();\n }\n}\n","import type { FormField, FormStep } from '../types';\nimport { conditionFields } from './engine-utils';\n\nexport function indexConditions<T extends FormField | FormStep>(dependent: T, index: Map<string, Set<T>>): void {\n for (const field of conditionFields(dependent)) {\n const dependents = index.get(field) ?? new Set<T>();\n dependents.add(dependent);\n index.set(field, dependents);\n }\n}\n","import { conditionFields, getAllFields } from './engine-utils';\nimport { indexConditions } from './visibility-index';\nimport { ActivePath } from './step-routes';\nimport type { ValidatorFn } from '../validation';\nimport { validateStep } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport { isStepVisible, isVisible } from '../visibility';\n\ninterface VisibilityCache {\n visibleSteps: FormStep[];\n currentStep: FormStep | null;\n visibleFields: FormField[];\n canGoNext: boolean;\n}\n\nexport class VisibilityState {\n readonly allFields: FormField[];\n readonly fieldByKey: Map<string, FormField>;\n private routeFields = new Set<string>();\n private readonly path: ActivePath;\n private fieldDependents = new Map<string, Set<FormField>>();\n private stepDependents = new Map<string, Set<FormStep>>();\n private stepByFieldKey = new Map<string, FormStep>();\n private visibilityDirty = true;\n private canGoNextDirty = true;\n private cache: VisibilityCache = {\n visibleSteps: [],\n currentStep: null,\n visibleFields: [],\n canGoNext: false,\n };\n\n constructor(private definition: FormDefinition) {\n this.allFields = getAllFields(definition);\n this.fieldByKey = new Map(this.allFields.map((field) => [field.key, field]));\n this.path = new ActivePath(definition);\n for (const step of definition.steps ?? []) {\n for (const field of step.fields) this.stepByFieldKey.set(field.key, step);\n }\n this.buildIndexes();\n }\n\n markChanged(structureChanged: boolean, valuesChanged: boolean): void {\n if (structureChanged || valuesChanged) this.path.invalidate();\n if (structureChanged) {\n this.visibilityDirty = true;\n this.canGoNextDirty = true;\n } else if (valuesChanged) {\n this.canGoNextDirty = true;\n }\n }\n\n state(values: Record<string, unknown>, stepIndex: number): VisibilityCache {\n this.recomputeVisibility(values, stepIndex);\n return this.cache;\n }\n\n getCanGoNext(\n values: Record<string, unknown>,\n stepIndex: number,\n validators: Record<string, ValidatorFn>,\n ): boolean {\n this.recomputeVisibility(values, stepIndex);\n if (!this.canGoNextDirty) return this.cache.canGoNext;\n this.canGoNextDirty = false;\n const step = this.cache.currentStep;\n const errors = step ? validateStep(step, this.conditionValues(values), validators) : {};\n this.cache.canGoNext = this.isMultiStep && Object.keys(errors).length === 0;\n return this.cache.canGoNext;\n }\n\n findStepIndex(fieldKey: string, values: Record<string, unknown>, stepIndex: number): number | null {\n const steps = this.state(values, stepIndex).visibleSteps;\n const target = steps.findIndex((step) => step.fields.some((field) => field.key === fieldKey));\n return target === -1 ? null : target;\n }\n\n affectsStructure(key: string, clearedFields: Set<string>): boolean {\n return this.routeFields.has(key) || this.fieldDependents.has(key) || this.stepDependents.has(key) || clearedFields.size > 0;\n }\n\n cascadeHiddenFields(\n changedKey: string,\n values: Record<string, unknown>,\n errors: Record<string, string>,\n ): Set<string> {\n this.path.invalidate();\n if (this.hasRoutes) return this.reconcileHidden(values, errors);\n return this.drainQueue(new Set([changedKey]), values, errors);\n }\n\n reconcileHidden(values: Record<string, unknown>, errors: Record<string, string>): Set<string> {\n this.path.invalidate();\n const seed = new Set([...this.fieldDependents.keys(), ...this.stepDependents.keys()]);\n return this.drainQueue(seed, values, errors);\n }\n private drainQueue(\n seed: Set<string>,\n values: Record<string, unknown>,\n errors: Record<string, string>,\n ): Set<string> {\n const queue = [...seed];\n const queued = new Set(queue);\n const cleared = new Set<string>();\n const clear = (key: string) => {\n delete values[key];\n delete errors[key];\n this.path.invalidate();\n cleared.add(key);\n if (queued.has(key)) return;\n queued.add(key);\n queue.push(key);\n };\n\n for (let index = 0; index < queue.length; index++) {\n const key = queue[index];\n queued.delete(key);\n this.clearHiddenFields(this.fieldDependents.get(key), values, clear);\n this.clearHiddenSteps(this.stepDependents.get(key), values, clear);\n }\n return cleared;\n }\n\n isFieldVisible(key: string, values: Record<string, unknown>): boolean {\n const field = this.fieldByKey.get(key);\n if (!field || !isVisible(field, this.conditionValues(values))) return false;\n const step = this.stepByFieldKey.get(key);\n return !step || this.path.steps(values).includes(step);\n }\n\n getVisibleFieldKeys(values: Record<string, unknown>, stepIndex: number): Set<string> {\n if (this.hasRoutes) return new Set(Object.keys(this.path.values(values)));\n const keys = new Set<string>();\n const fields = this.isMultiStep\n ? this.state(values, stepIndex).visibleSteps.flatMap((step) => step.fields)\n : this.definition.fields ?? [];\n for (const field of fields) {\n if (isVisible(field, this.conditionValues(values))) keys.add(field.key);\n }\n return keys;\n }\n private conditionValues(values: Record<string, unknown>) { return this.hasRoutes ? this.path.values(values) : values; }\n private get hasRoutes(): boolean { return this.path.enabled; }\n private get isMultiStep(): boolean { return (this.definition.steps ?? []).length > 0; }\n private buildIndexes(): void {\n for (const field of this.allFields) {\n indexConditions(field, this.fieldDependents);\n }\n for (const step of this.definition.steps ?? []) {\n indexConditions(step, this.stepDependents);\n for (const route of step.routes ?? []) {\n for (const field of conditionFields(route)) this.routeFields.add(field);\n }\n }\n }\n private recomputeVisibility(values: Record<string, unknown>, stepIndex: number): void {\n if (!this.visibilityDirty) return;\n this.visibilityDirty = false;\n if (!this.isMultiStep) {\n this.cache.visibleSteps = [];\n this.cache.currentStep = null;\n this.cache.visibleFields = (this.definition.fields ?? []).filter((field) => isVisible(field, this.conditionValues(values)));\n return;\n }\n this.cache.visibleSteps = this.path.steps(values);\n const steps = this.cache.visibleSteps;\n this.cache.currentStep = steps[stepIndex] ?? steps[steps.length - 1] ?? null;\n const current = this.cache.currentStep;\n this.cache.visibleFields = current\n ? current.fields.filter((field) => isVisible(field, this.conditionValues(values)))\n : [];\n }\n private clearHiddenFields(\n fields: Iterable<FormField> | undefined,\n values: Record<string, unknown>,\n clear: (key: string) => void,\n ): void {\n for (const field of fields ?? []) {\n const step = this.stepByFieldKey.get(field.key);\n if (this.hasRoutes && step && !this.path.steps(values).includes(step)) continue;\n if (isVisible(field, this.conditionValues(values)) || values[field.key] === undefined) continue;\n clear(field.key);\n }\n }\n private clearHiddenSteps(\n steps: Iterable<FormStep> | undefined,\n values: Record<string, unknown>,\n clear: (key: string) => void,\n ): void {\n for (const step of steps ?? []) {\n if (isStepVisible(step, this.conditionValues(values))) continue;\n for (const field of step.fields) {\n if (values[field.key] === undefined) continue;\n clear(field.key);\n }\n }\n }\n}\n","import { validateDefinition } from '../definition-validation';\nimport { shapeErrors } from '../definition-validation/shape-errors';\nimport type { ValidatorFn } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport type { FormEngineOptions, StepValidateFn, SubmitFn } from './engine-options';\nimport { createValues } from './engine-utils';\nimport { changeStep, goToStepWithField, nextStep, prevStep, skipStep, skipStepAsync } from './navigation';\nimport type { EngineInternals, RuntimeNotifyOptions } from './runtime-internals';\nimport { FormSubscriptions, type NotifyOptions } from './subscriptions';\nimport {\n applyValidationErrors,\n getSubmitValues,\n resetEngine,\n validateForm,\n validateOne,\n clearResolvedMatchErrors,\n pruneOffPathErrors,\n} from './validation-state';\nimport { submitAsync } from './submission';\nimport { definitionErrors, reconcileStepIndex } from './step-routes';\nimport { VisibilityState } from './visibility-state';\n\nexport const quietEngines = new WeakSet<FormEngineOptions>();\n\nexport class FormEngine {\n values: Record<string, unknown>;\n errors: Record<string, string> = {};\n topLevelErrors: string[] = [];\n currentStepIndex = 0;\n fieldLoading: Record<string, boolean> = {};\n stepValidating = false;\n submitting = false;\n private readonly skipped = new Map<string, string[]>();\n private validationEpoch = 0;\n private operationEpoch = 0;\n private readonly lifecycle: FormEngineOptions;\n\n private readonly validators: Record<string, ValidatorFn>;\n private get onStepValidate(): StepValidateFn | undefined { return this.lifecycle.onStepValidate; }\n private readonly visibility: VisibilityState;\n private readonly subscriptions = new FormSubscriptions();\n\n constructor(\n readonly definition: FormDefinition,\n initialValues?: Record<string, unknown>,\n options?: FormEngineOptions,\n ) {\n const shape = shapeErrors(definition);\n const errors = shape.length ? shape : definitionErrors(definition);\n if (errors.length) throw new Error(errors.join('\\n'));\n this.lifecycle = options ?? {};\n this.validators = options?.validators ?? {};\n this.visibility = new VisibilityState(definition);\n if (!quietEngines.has(this.lifecycle)) this.warnAboutDefinition();\n this.values = createValues(this.visibility.allFields, initialValues);\n this.visibility.reconcileHidden(this.values, this.errors);\n }\n\n get isMultiStep(): boolean {\n return (this.definition.steps ?? []).length > 0;\n }\n\n get visibleSteps(): FormStep[] {\n return this.visibility.state(this.values, this.currentStepIndex).visibleSteps;\n }\n\n get currentStep(): FormStep | null {\n return this.visibility.state(this.values, this.currentStepIndex).currentStep;\n }\n\n get visibleFields(): FormField[] {\n return this.visibility.state(this.values, this.currentStepIndex).visibleFields;\n }\n\n get isFirstStep(): boolean {\n return this.currentStepIndex === 0;\n }\n\n get isLastStep(): boolean {\n return this.currentStepIndex >= this.visibleSteps.length - 1;\n }\n\n get canGoNext(): boolean {\n return this.visibility.getCanGoNext(this.values, this.currentStepIndex, this.validators);\n }\n\n get progress(): { current: number; total: number } {\n const total = this.visibleSteps.length;\n return { current: Math.min(this.currentStepIndex + 1, total), total };\n }\n\n subscribe(listener: () => void): () => void {\n return this.subscriptions.subscribe(listener);\n }\n\n getSnapshot(): number {\n return this.subscriptions.getSnapshot();\n }\n\n subscribeField(key: string, listener: () => void): () => void {\n return this.subscriptions.subscribeField(key, listener);\n }\n\n getFieldSnapshot(key: string): number {\n return this.subscriptions.getFieldSnapshot(key);\n }\n\n subscribeStructure(listener: () => void): () => void {\n return this.subscriptions.subscribeStructure(listener);\n }\n\n getStructureSnapshot(): number {\n return this.subscriptions.getStructureSnapshot();\n }\n\n setValue(key: string, value: unknown): void {\n const previousSteps = this.isMultiStep ? this.visibleSteps : null;\n const valueChanged = !Object.is(this.values[key], value);\n const hadError = this.errors[key] !== undefined;\n this.values[key] = value;\n delete this.errors[key];\n for (const [stepId, keys] of this.skipped) if (valueChanged && keys.includes(key)) this.skipped.delete(stepId);\n const clearedFields = this.visibility.cascadeHiddenFields(key, this.values, this.errors);\n const revalidated = clearResolvedMatchErrors(this.internals, key);\n const changedFields = new Set([...clearedFields, ...revalidated]);\n if (valueChanged || hadError) changedFields.add(key);\n const valuesChanged = valueChanged || clearedFields.size > 0;\n const structureChanged = valuesChanged && this.visibility.affectsStructure(key, clearedFields);\n if (previousSteps && structureChanged) {\n this.visibility.markChanged(true, true);\n this.currentStepIndex = reconcileStepIndex(previousSteps, this.visibleSteps, this.currentStepIndex);\n for (const pruned of pruneOffPathErrors(this.internals)) changedFields.add(pruned);\n }\n this.notify({ fieldKeys: changedFields, structureChanged, valuesChanged });\n }\n\n setErrors(errors: Record<string, string>): void {\n applyValidationErrors(this.internals, errors, true);\n }\n\n setFieldLoading(key: string, loading: boolean): void {\n const previous = this.fieldLoading[key] === true;\n if (loading) this.fieldLoading[key] = true;\n else delete this.fieldLoading[key];\n this.notify({ fieldKeys: previous === loading ? [] : [key] });\n }\n\n cancelPendingActions(): void {\n this.validationEpoch++;\n this.operationEpoch++;\n this.stepValidating = false;\n this.submitting = false;\n this.notify();\n }\n\n nextStep(): boolean { return nextStep(this.internals); }\n nextStepAsync(reason: 'next' | 'autoAdvance' = 'next'): Promise<boolean> { return changeStep(this.internals, 'next', reason); }\n prevStepAsync(): Promise<boolean> { return changeStep(this.internals, 'back'); }\n skipStep(): boolean { return skipStep(this.internals); }\n skipStepAsync(submit?: SubmitFn): Promise<boolean> { return skipStepAsync(this.internals, submit); }\n isStepSkipped(stepId: string): boolean { return this.skipped.has(stepId); }\n submitAsync(submit: SubmitFn): Promise<boolean> { return submitAsync(this.internals, submit); }\n prevStep(): void { prevStep(this.internals); }\n validate(): Record<string, string> { return validateForm(this.internals); }\n validateField(key: string): string | null { return validateOne(this.internals, key); }\n getSubmitValues(): Record<string, unknown> { return getSubmitValues(this.internals); }\n goToStepWithField(key: string): void { goToStepWithField(this.internals, key); }\n reset(values?: Record<string, unknown>): void { resetEngine(this.internals, values); }\n\n private warnAboutDefinition(): void {\n const warnings = validateDefinition(this.definition);\n for (const { key, validation } of this.visibility.allFields) {\n const name = validation?.validator;\n if (name && !this.validators[name]) warnings.push(`Field \"${key}\" references unknown validator \"${name}\".`);\n }\n for (const warning of warnings) console.warn(`[FormEngine] ${warning}`);\n }\n\n private get internals(): EngineInternals {\n return this as unknown as EngineInternals;\n }\n\n private notify(options: RuntimeNotifyOptions = {}): void {\n this.visibility.markChanged(!!options.structureChanged, !!options.valuesChanged);\n this.subscriptions.notify(options);\n }\n}\n","import type { FormField } from '../types';\nimport { getDefaultMessage, TYPE_MESSAGES } from '../validation/default-messages';\nimport { BOOLEAN_TYPES } from '../validation/validate-field';\n\nexport const MAX_STRING_LENGTH = 10000;\nconst MAX_EMAIL_LENGTH = 254;\nconst MAX_ITEMS = 1000;\nconst EMAIL = /^[^\\s@]+@[^\\s@.]+(?:\\.[^\\s@.]+)+$/;\nconst DECIMAL = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/;\nconst DATE = '\\\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\\\d|3[01])';\nconst DATE_ONLY = new RegExp(`^${DATE}$`);\nconst DATE_TIME = new RegExp(`^${DATE}T(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d{1,3})?)?(?:Z|[+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)?$`);\nconst TEXT_TYPES = new Set(['text', 'phone', 'password', 'textarea', 'autocomplete']);\nconst FORMATS = new Map<string, [RegExp, string, number]>([\n ['email', [EMAIL, TYPE_MESSAGES.email, MAX_EMAIL_LENGTH]],\n ['date', [DATE_ONLY, TYPE_MESSAGES.date, MAX_STRING_LENGTH]],\n ['datetime', [DATE_TIME, TYPE_MESSAGES.datetime, MAX_STRING_LENGTH]],\n]);\n\nexport function normalizeValue(field: FormField, value: unknown): unknown {\n if (field.type !== 'number' || typeof value !== 'string' || !DECIMAL.test(value)) return value;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : value;\n}\n\nfunction isOption(field: FormField, value: unknown): boolean {\n return !field.options || field.options.some((option) => option.value === value);\n}\n\nfunction lengthError(field: FormField, value: string): string | null {\n const max = Math.min(MAX_STRING_LENGTH, field.validation?.maxLength ?? MAX_STRING_LENGTH);\n if (value.length <= max) return null;\n return field.validation?.maxLengthMessage ?? getDefaultMessage('maxLength', { max });\n}\n\nfunction multiselectError(field: FormField, value: unknown): string | null {\n if (!Array.isArray(value)) return TYPE_MESSAGES.options;\n if (value.length > (field.options?.length ?? MAX_ITEMS)) return TYPE_MESSAGES.option;\n const valid = value.every((item) => typeof item === 'string' && item.length <= MAX_STRING_LENGTH && isOption(field, item));\n return valid ? null : TYPE_MESSAGES.option;\n}\n\nfunction stringError(field: FormField, value: unknown, message: string): string | null {\n return typeof value === 'string' ? lengthError(field, value) : message;\n}\n\nfunction formatError(field: FormField, value: unknown, [format, message, max]: [RegExp, string, number]): string | null {\n if (typeof value !== 'string') return message;\n return lengthError(field, value) ?? (value.length <= max && format.test(value) ? null : message);\n}\n\nfunction primitiveError(field: FormField, value: unknown): string | null {\n if (typeof value === 'boolean' || (typeof value === 'number' && Number.isFinite(value))) return null;\n return stringError(field, value, TYPE_MESSAGES.value);\n}\n\nfunction isBlank(field: FormField, value: unknown): boolean {\n return value == null || value === '' || (field.type === 'multiselect' && Array.isArray(value) && !value.length);\n}\n\nexport function typeError(field: FormField, value: unknown): string | null {\n if (isBlank(field, value)) return null;\n if (BOOLEAN_TYPES.has(field.type)) return typeof value === 'boolean' ? null : TYPE_MESSAGES.boolean;\n if (field.type === 'number') return typeof value === 'number' && Number.isFinite(value) ? null : TYPE_MESSAGES.number;\n if (field.type === 'multiselect') return multiselectError(field, value);\n if (field.type === 'file') return stringError(field, value, TYPE_MESSAGES.file);\n const format = FORMATS.get(field.type);\n if (format) return formatError(field, value, format);\n if (field.type === 'select' || field.type === 'radio') return stringError(field, value, TYPE_MESSAGES.option) ?? (isOption(field, value) ? null : TYPE_MESSAGES.option);\n return TEXT_TYPES.has(field.type) ? stringError(field, value, TYPE_MESSAGES.string) : primitiveError(field, value);\n}\n","import type { FormDefinition, FormField } from '../types';\nimport type { ValidatorFn } from '../validation';\nimport { getAllFields } from '../engine/engine-utils';\nimport type { EngineInternals } from '../engine/runtime-internals';\nimport { FormEngine, quietEngines } from '../engine/runtime';\nimport { skipStepAt } from '../engine/step-skip';\nimport { normalizeValue, typeError } from './type-checks';\n\nexport interface SubmissionOptions {\n skippedSteps?: string[];\n}\n\nexport interface SubmissionResult {\n values: Record<string, unknown>;\n errors: Record<string, string>;\n}\n\nconst allow: ValidatorFn = () => null;\n\nconst hasOwn = (source: object, key: string) => Object.prototype.hasOwnProperty.call(source, key);\n\nfunction knownValues(fields: FormField[], input: unknown): Record<string, unknown> {\n const source = input !== null && typeof input === 'object' && !Array.isArray(input) ? input as Record<string, unknown> : {};\n const values: Record<string, unknown> = {};\n for (const field of fields) {\n if (hasOwn(source, field.key)) values[field.key] = normalizeValue(field, source[field.key]);\n }\n return values;\n}\n\nfunction typeErrors(fields: FormField[], values: Record<string, unknown>): Map<string, string> {\n const errors = new Map<string, string>();\n for (const field of fields) {\n const error = hasOwn(values, field.key) ? typeError(field, values[field.key]) : null;\n if (error) errors.set(field.key, error);\n }\n return errors;\n}\n\nfunction withoutRules(definition: FormDefinition, invalid: Map<string, string>): FormDefinition {\n const strip = (fields: FormField[]) => fields.map((field) => (invalid.has(field.key) ? { ...field, validation: undefined } : field));\n const steps = definition.steps?.map((step) => ({ ...step, fields: strip(step.fields) }));\n return { ...definition, ...(definition.fields && { fields: strip(definition.fields) }), ...(steps && { steps }) };\n}\n\nfunction ignoredValidators(fields: FormField[]): Record<string, ValidatorFn> {\n const validators: Record<string, ValidatorFn> = {};\n for (const { validation } of fields) if (validation?.validator) validators[validation.validator] = allow;\n return validators;\n}\n\nfunction applySkips(engine: FormEngine, skippedSteps: unknown): void {\n if (!Array.isArray(skippedSteps)) return;\n const requested = new Set(skippedSteps);\n for (let index = 0; index < engine.visibleSteps.length; index++) {\n const step = engine.visibleSteps[index];\n if (step.skip && requested.has(step.id)) skipStepAt(engine as unknown as EngineInternals, index);\n }\n}\n\nexport function validateSubmission(\n definition: FormDefinition,\n input: unknown,\n options: SubmissionOptions = {},\n): SubmissionResult {\n const fields = getAllFields(definition);\n const initialValues = knownValues(fields, input);\n const invalid = typeErrors(fields, initialValues);\n const engineOptions = { validators: ignoredValidators(fields) };\n quietEngines.add(engineOptions);\n const engine = new FormEngine(withoutRules(definition, invalid), initialValues, engineOptions);\n applySkips(engine, options.skippedSteps);\n const errors = engine.validate();\n const values = engine.getSubmitValues();\n for (const [key, error] of invalid) if (hasOwn(values, key)) errors[key] = error;\n return { values, errors };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/visibility/evaluate-condition.ts","../src/definition-validation/issues.ts","../src/definition-validation/conditions.ts","../src/definition-validation/context.ts","../src/definition-validation/fields.ts","../src/definition-validation/graph.ts","../src/definition-validation/shape.ts","../src/definition-validation/paths.ts","../src/definition-validation/structure.ts","../src/definition-validation/check-definition.ts","../src/engine/engine-utils.ts","../src/engine/lifecycle-error.ts","../src/engine/pending-inputs.ts","../src/validation/default-messages.ts","../src/visibility/is-visible.ts","../src/validation/type-checks.ts","../src/validation/validate-field.ts","../src/validation/validate-step.ts","../src/engine/validation-state.ts","../src/engine/step-routes.ts","../src/engine/step-skip.ts","../src/engine/submission.ts","../src/engine/navigation.ts","../src/engine/subscriptions.ts","../src/engine/warnings.ts","../src/engine/visibility-index.ts","../src/engine/visibility-state.ts","../src/engine/runtime.ts","../src/server/validate-submission.ts"],"names":["CONDITION_OPERATORS","isBlank","value","toNumber","number","compare","operand","test","evaluateCondition","condition","values","a","b","FormDefinitionError","issues","issue","create","severity","code","path","problem","hint","__spreadValues","error","warning","pointer","key","isError","oneOf","shown","distance","row","_","index","next","j","closest","candidates","lower","candidate","suggest","match","OPERATORS","LIST_OPERATORS","NEGATIONS","COMPARISONS","STRING_TYPES","BOOLEAN_TYPES","expectedType","field","comparisonIssue","target","operator","valueIssue","_a","result","operands","expected","wrong","item","options","option","missing","operatorIssues","keys","unknown","count","referenceIssue","context","owner","step","sameStep","allowed","conditionIssues","entry","operators","reference","mismatch","collect","source","name","collectAction","action","createContext","definition","validators","_b","steps","entries","position","conditions","route","BUILT_IN_TYPES","CHOICE_TYPES","UNSIZED_TYPES","typeIssue","optionIssues","defaults","rangeIssue","rules","min","max","low","high","applicableIssues","numeric","names","sized","patternIssue","pattern","e","ruleIssues","dependencyIssues","fieldIssues","dependencyGraph","graph","link","owners","dependencies","known","fieldsOf","findCycles","visiting","cycles","start","stack","frame","neighbor","nodes","node","cycleIssues","cycle","fallthroughIssues","_c","targets","to","sibling","exits","graphIssues","isEntry","KINDS","typed","kind","valid","list","check","required","text","RULES","validation","shapeIssues","input","metaIssues","conditional","successors","indexes","from","reachableSteps","seen","queue","RESERVED","stepIssues","first","later","keyIssues","reachable","exclusive","clash","other","structureIssues","ordered","checkDefinition","shape","parseDefinition","errors","conditionFields","getAllFields","createValues","fields","initialValues","getChangedKeys","previous","FormLifecycleError","phase","cause","afterCommit","callback","activePath","engine","watchCheckedInputs","checked","TYPE_MESSAGES","getDefaultMessage","rule","params","isVisible","matches","CLIENT_TYPES","MAX_STRING_LENGTH","MAX_EMAIL_LENGTH","MAX_ITEMS","EMAIL","DECIMAL","DATE","DATE_ONLY","DATE_TIME","TEXT_TYPES","FORMATS","normalizeValue","parsed","isOption","lengthError","_d","multiselectError","stringError","message","formatError","format","primitiveError","typeError","clientTypeError","__spreadProps","isEmpty","boundError","size","unit","patternError","validateFieldValue","allValues","_e","matchMessage","sizeError","matchError","validateStep","validateFields","applyValidationErrors","navigate","previousErrors","structureChanged","moveToFirstError","firstErrorKey","targetIndex","clearResolvedMatchErrors","cleared","getValidationValues","pruneOffPathErrors","pathFields","pruned","getSubmitValues","withoutSkipped","validateForm","validateOne","previousError","fieldKeys","resetEngine","previousValues","loadingFields","changedValues","changedFields","activeSteps","available","stepValues","reconcileStepIndex","previousStep","preserved","nextIds","before","predecessor","ActivePath","groups","resetValues","skipTarget","skipCurrentStep","includeCurrentStep","skipStepAt","submitForm","submit","keepSkipped","lifecycle","dispatched","epoch","operation","inputsChanged","stale","skippedSteps","hasStepErrors","moveTo","skipStep","changeStep","committed","skippedValues","edited","submitted","skipped","direction","reason","skipping","validating","validate","toIndex","goToStepWithField","fieldKey","FormSubscriptions","listener","listeners","isProduction","warnInDevelopment","indexConditions","dependent","dependents","VisibilityState","valuesChanged","stepIndex","clearedFields","seed","queued","clear","current","FormEngine","warn","total","previousSteps","valueChanged","hadError","stepId","revalidated","loading","handler","BODY_MESSAGE","allow","hasOwn","knownValues","typeErrors","withoutRules","invalid","strip","ignoredValidators","given","isBody","applySkips","requested","validateSubmission","engineOptions"],"mappings":"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","file":"server.iife.js","sourcesContent":["import type { ShowCondition } from '../types';\n\nexport const CONDITION_OPERATORS = ['eq', 'neq', 'in', 'notIn', 'notEmpty', 'gt', 'gte', 'lt', 'lte'] as const;\n\nexport function isBlank(value: unknown): boolean {\n return value == null || value === '' || (Array.isArray(value) && !value.length);\n}\n\nfunction toNumber(value: unknown): number | undefined {\n const number = typeof value === 'string' && value.trim() !== '' ? Number(value) : value;\n return typeof number === 'number' && Number.isFinite(number) ? number : undefined;\n}\n\nfunction compare(value: unknown, operand: number, test: (value: number, operand: number) => boolean): boolean {\n const number = toNumber(value);\n return number !== undefined && test(number, operand);\n}\n\nexport function evaluateCondition(\n condition: ShowCondition,\n values: Record<string, unknown>,\n): boolean {\n const value = values[condition.field];\n if (condition.eq !== undefined) return value === condition.eq;\n if (condition.neq !== undefined) return value !== condition.neq;\n if (condition.in !== undefined) return condition.in.includes(value as string | number);\n if (condition.notIn !== undefined) return !condition.notIn.includes(value as string | number);\n if (condition.notEmpty !== undefined) return !condition.notEmpty || !isBlank(value);\n if (condition.gt !== undefined) return compare(value, condition.gt, (a, b) => a > b);\n if (condition.gte !== undefined) return compare(value, condition.gte, (a, b) => a >= b);\n if (condition.lt !== undefined) return compare(value, condition.lt, (a, b) => a < b);\n if (condition.lte !== undefined) return compare(value, condition.lte, (a, b) => a <= b);\n return false;\n}\n","export type DefinitionIssueCode =\n | 'invalid-type'\n | 'missing-property'\n | 'fields-and-steps'\n | 'duplicate-step-id'\n | 'duplicate-key'\n | 'reserved-key'\n | 'route-target'\n | 'unknown-field'\n | 'forward-reference'\n | 'condition-operator-count'\n | 'unknown-operator'\n | 'condition-value-mismatch'\n | 'condition-cycle'\n | 'invalid-pattern'\n | 'invalid-range'\n | 'rule-not-applicable'\n | 'missing-options'\n | 'default-not-in-options'\n | 'unknown-field-type'\n | 'unknown-validator'\n | 'skip-unreachable'\n | 'route-fallthrough';\n\nexport interface DefinitionIssue {\n code: DefinitionIssueCode;\n severity: 'error' | 'warning';\n path: string;\n message: string;\n hint?: string;\n}\n\nexport class FormDefinitionError extends Error {\n readonly issues: DefinitionIssue[];\n\n constructor(issues: DefinitionIssue[]) {\n super(`Invalid form definition:\\n${issues.map((issue) => issue.message).join('\\n')}`);\n this.name = 'FormDefinitionError';\n this.issues = issues;\n }\n}\n\nfunction create(severity: DefinitionIssue['severity']) {\n return (code: DefinitionIssueCode, path: string, problem: string, hint?: string): DefinitionIssue => ({\n code,\n severity,\n path,\n message: `${path || '/'}: ${problem}.${hint ? ` ${hint}.` : ''}`,\n ...(hint && { hint: `${hint}.` }),\n });\n}\n\nexport const error = create('error');\nexport const warning = create('warning');\n\nexport function pointer(key: string): string {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\nexport function isError(issue: DefinitionIssue): boolean {\n return issue.severity === 'error';\n}\n\nexport function oneOf(values: string[]): string {\n if (values.length === 1) return `Use ${JSON.stringify(values[0])}`;\n const shown = values.slice(0, 10).map((value) => JSON.stringify(value)).join(', ');\n return values.length > 10 ? `Use one of: ${shown}, ...` : `Use one of: ${shown}`;\n}\n\nfunction distance(a: string, b: string): number {\n let row = Array.from({ length: b.length + 1 }, (_, index) => index);\n for (let i = 1; i <= a.length; i++) {\n const next = [i];\n for (let j = 1; j <= b.length; j++) {\n next[j] = Math.min(row[j] + 1, next[j - 1] + 1, row[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));\n }\n row = next;\n }\n return row[b.length];\n}\n\nexport function closest(value: string, candidates: string[]): string | undefined {\n const lower = value.toLowerCase();\n return candidates.find((candidate) => candidate !== value && distance(lower, candidate.toLowerCase()) <= (candidate.length > 4 ? 2 : 1));\n}\n\nexport function suggest(value: string, candidates: string[]): string | undefined {\n const match = closest(value, candidates);\n if (match !== undefined) return `Use ${JSON.stringify(match)}`;\n return candidates.length ? oneOf(candidates) : undefined;\n}\n","import type { FormField, ShowCondition } from '../types';\nimport { CONDITION_OPERATORS } from '../visibility/evaluate-condition';\nimport type { CheckContext, ConditionEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, oneOf, pointer, suggest, warning } from './issues';\n\nconst OPERATORS: readonly string[] = CONDITION_OPERATORS;\nconst LIST_OPERATORS = new Set(['in', 'notIn']);\nconst NEGATIONS = new Set(['neq', 'notIn']);\nconst COMPARISONS = new Set(['gt', 'gte', 'lt', 'lte']);\nconst STRING_TYPES = new Set(['text', 'email', 'phone', 'password', 'textarea', 'date', 'datetime', 'select', 'radio', 'autocomplete']);\nconst BOOLEAN_TYPES = new Set(['checkbox', 'switch']);\n\nfunction expectedType(field: FormField): string | undefined {\n if (field.type === 'number') return 'number';\n if (BOOLEAN_TYPES.has(field.type)) return 'boolean';\n return STRING_TYPES.has(field.type) ? 'string' : undefined;\n}\n\nfunction comparisonIssue(target: FormField, operator: string, path: string): DefinitionIssue | undefined {\n if (target.type !== 'multiselect' && !BOOLEAN_TYPES.has(target.type)) return undefined;\n return warning('condition-value-mismatch', path, `\"${target.key}\" is a ${target.type} field, so \"${operator}\" never matches it`, 'Compare a number, text, radio or select field');\n}\n\nfunction valueIssue(target: FormField, operator: string, operand: unknown, path: string): DefinitionIssue | undefined {\n if (operator === 'notEmpty') return undefined;\n if (COMPARISONS.has(operator)) return comparisonIssue(target, operator, path);\n if (target.type === 'multiselect') {\n const result = NEGATIONS.has(operator) ? 'always' : 'never';\n return warning('condition-value-mismatch', path, `\"${target.key}\" holds a list of values, so \"${operator}\" ${result} matches it`, 'Use notEmpty, or a select or radio field');\n }\n const operands = LIST_OPERATORS.has(operator) && Array.isArray(operand) ? operand : [operand];\n const expected = expectedType(target);\n const wrong = expected && operands.find((item) => typeof item !== expected);\n if (expected && wrong !== undefined) {\n return warning('condition-value-mismatch', path, `${JSON.stringify(wrong)} is a ${typeof wrong}, but \"${target.key}\" holds a ${expected}`, `Use a ${expected} value`);\n }\n const options = expected === 'string' && !target.optionsFrom && target.options?.length ? target.options.map((option) => option.value) : null;\n const missing = options && operands.find((item) => !options.includes(item as string));\n if (options && missing !== undefined) {\n return warning('condition-value-mismatch', path, `${JSON.stringify(missing)} is not an option of \"${target.key}\"`, oneOf(options));\n }\n return undefined;\n}\n\nfunction operatorIssues(condition: ShowCondition, path: string): DefinitionIssue[] {\n const keys = Object.keys(condition).filter((key) => key !== 'field');\n const unknown = keys.filter((key) => !OPERATORS.includes(key));\n const issues = unknown.map((key) => error('unknown-operator', `${path}/${pointer(key)}`, `\"${key}\" is not a condition operator`, suggest(key, [...OPERATORS])));\n const count = keys.length - unknown.length;\n if (count !== 1 && !(count === 0 && unknown.length)) {\n const problem = count ? `the condition has ${count} operators` : 'the condition has no operator';\n issues.push(error('condition-operator-count', path, problem, `Use exactly one of: ${OPERATORS.join(', ')}`));\n }\n return issues;\n}\n\nfunction referenceIssue(context: CheckContext, { condition, path, owner, step, key }: ConditionEntry): DefinitionIssue | undefined {\n const target = context.keys.get(condition.field);\n if (!target) {\n const candidates = context.keyList.filter((candidate) => candidate !== key);\n return error('unknown-field', `${path}/field`, `\"${condition.field}\" is not a field key`, suggest(condition.field, candidates));\n }\n if (step < 0 || owner === 'action') return undefined;\n const sameStep = owner === 'step' ? 'this or a later step' : 'a later step';\n if (target.step < step || (owner !== 'step' && target.step === step)) return undefined;\n const allowed = owner === 'step' ? 'earlier steps' : 'this or an earlier step';\n return error('forward-reference', `${path}/field`, `\"${condition.field}\" belongs to ${sameStep}`, `${owner === 'route' ? 'Route' : owner === 'step' ? 'Step' : 'Field'} conditions can use fields of ${allowed}`);\n}\n\nexport function conditionIssues(context: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n for (const entry of context.conditions) {\n const { condition, path } = entry;\n if (typeof condition.field !== 'string') {\n issues.push(error('missing-property', `${path}/field`, 'the condition has no \"field\"', 'Add the key of the field to test'));\n continue;\n }\n const operators = operatorIssues(condition, path);\n issues.push(...operators);\n const reference = referenceIssue(context, entry);\n if (reference) issues.push(reference);\n const target = context.keys.get(condition.field);\n const operator = OPERATORS.find((key) => key in condition);\n if (!reference && !operators.length && target && operator) {\n const mismatch = valueIssue(target.field, operator, condition[operator as keyof ShowCondition], `${path}/${operator}`);\n if (mismatch) issues.push(mismatch);\n }\n }\n return issues;\n}\n","import type { FormAction, FormDefinition, FormField, ShowCondition } from '../types';\n\nexport interface FieldEntry {\n field: FormField;\n path: string;\n step: number;\n}\n\nexport interface ConditionEntry {\n condition: ShowCondition;\n path: string;\n owner: 'field' | 'step' | 'route' | 'action';\n step: number;\n key?: string;\n}\n\nexport interface CheckContext {\n definition: FormDefinition;\n entries: FieldEntry[];\n keys: Map<string, FieldEntry>;\n keyList: string[];\n conditions: ConditionEntry[];\n validators?: Record<string, unknown>;\n}\n\ntype Owner = { show?: ShowCondition[]; showAny?: ShowCondition[] };\n\nfunction collect(target: ConditionEntry[], source: Owner, path: string, owner: ConditionEntry['owner'], step: number, key?: string): void {\n for (const name of ['show', 'showAny'] as const) {\n (source[name] ?? []).forEach((condition, index) => target.push({ condition, path: `${path}/${name}/${index}`, owner, step, key }));\n }\n}\n\nfunction collectAction(target: ConditionEntry[], action: FormAction | false | undefined, path: string, step: number): void {\n (action ? action.disabled ?? [] : []).forEach((condition, index) => (\n target.push({ condition, path: `${path}/disabled/${index}`, owner: 'action', step })\n ));\n}\n\nexport function createContext(definition: FormDefinition, validators?: Record<string, unknown>): CheckContext {\n const steps = definition.steps ?? [];\n const entries: FieldEntry[] = steps.length\n ? steps.flatMap((step, index) => step.fields.map((field, position) => ({ field, path: `/steps/${index}/fields/${position}`, step: index })))\n : (definition.fields ?? []).map((field, position) => ({ field, path: `/fields/${position}`, step: -1 }));\n const keys = new Map<string, FieldEntry>();\n for (const entry of entries) if (!keys.has(entry.field.key)) keys.set(entry.field.key, entry);\n const conditions: ConditionEntry[] = [];\n for (const entry of entries) collect(conditions, entry.field, entry.path, 'field', entry.step, entry.field.key);\n steps.forEach((step, index) => {\n collect(conditions, step, `/steps/${index}`, 'step', index);\n (step.routes ?? []).forEach((route, position) => collect(conditions, route, `/steps/${index}/routes/${position}`, 'route', index));\n for (const name of ['next', 'back', 'skip'] as const) collectAction(conditions, step[name], `/steps/${index}/${name}`, index);\n });\n collectAction(conditions, definition.submit, '/submit', -1);\n collectAction(conditions, definition.cancel, '/cancel', -1);\n return {\n definition,\n entries,\n keys,\n keyList: [...keys.keys()],\n conditions,\n validators,\n };\n}\n","import type { FieldValidation } from '../types';\nimport type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { closest, error, oneOf, suggest, warning } from './issues';\n\nconst BUILT_IN_TYPES = ['text', 'email', 'phone', 'number', 'password', 'select', 'autocomplete', 'multiselect', 'checkbox', 'radio', 'switch', 'file', 'date', 'datetime', 'textarea'];\nconst CHOICE_TYPES = new Set(['select', 'radio', 'multiselect']);\nconst UNSIZED_TYPES = new Set(['number', 'checkbox', 'switch']);\n\nfunction typeIssue({ field, path }: FieldEntry): DefinitionIssue[] {\n const match = BUILT_IN_TYPES.includes(field.type) ? undefined : closest(field.type, BUILT_IN_TYPES);\n if (match === undefined) return [];\n return [warning('unknown-field-type', `${path}/type`, `\"${field.type}\" is not a built-in field type`, `Use \"${match}\", or register a component for \"${field.type}\"`)];\n}\n\nfunction optionIssues({ field, path }: FieldEntry): DefinitionIssue[] {\n if (!CHOICE_TYPES.has(field.type)) return [];\n if (!Array.isArray(field.options)) {\n return field.optionsFrom ? [] : [warning('missing-options', `${path}/options`, `the ${field.type} field \"${field.key}\" has no options`, 'Add \"options\" or \"optionsFrom\"')];\n }\n const values = field.options.map((option) => option.value);\n const defaults = field.type === 'multiselect' && Array.isArray(field.defaultValue) ? field.defaultValue : [field.defaultValue];\n const missing = field.defaultValue === undefined || !values.length || field.optionsFrom ? undefined : defaults.find((value) => !values.includes(value as string));\n if (missing === undefined) return [];\n return [warning('default-not-in-options', `${path}/defaultValue`, `${JSON.stringify(missing)} is not an option of \"${field.key}\"`, oneOf(values))];\n}\n\nfunction rangeIssue(rules: FieldValidation, path: string, min: 'min' | 'minLength', max: 'max' | 'maxLength'): DefinitionIssue[] {\n const low = rules[min];\n const high = rules[max];\n if (low === undefined || high === undefined || low <= high) return [];\n return [error('invalid-range', `${path}/validation/${min}`, `${min} (${low}) is greater than ${max} (${high})`, `Lower ${min} or raise ${max}`)];\n}\n\nfunction applicableIssues({ field, path }: FieldEntry, rules: FieldValidation): DefinitionIssue[] {\n if (!BUILT_IN_TYPES.includes(field.type)) return [];\n const numeric = field.type === 'number';\n const names = numeric ? [] : (['min', 'max'] as const).filter((name) => rules[name] !== undefined);\n const sized = UNSIZED_TYPES.has(field.type) ? (['minLength', 'maxLength'] as const).filter((name) => rules[name] !== undefined) : [];\n return [\n ...names.map((name) => warning('rule-not-applicable', `${path}/validation/${name}`, `\"${name}\" applies to number fields only`, `Use ${name}Length to limit text length`)),\n ...sized.map((name) => warning('rule-not-applicable', `${path}/validation/${name}`, `\"${name}\" does not apply to ${field.type} fields`, numeric ? 'Use min and max for numbers' : `Remove ${name}`)),\n ];\n}\n\nfunction patternIssue(pattern: string | undefined, path: string): DefinitionIssue[] {\n if (pattern === undefined) return [];\n try {\n new RegExp(pattern);\n return [];\n } catch {\n return [error('invalid-pattern', `${path}/validation/pattern`, `${JSON.stringify(pattern)} is not a valid regular expression`, 'Fix the pattern or escape special characters with a backslash')];\n }\n}\n\nfunction ruleIssues(context: CheckContext, entry: FieldEntry): DefinitionIssue[] {\n const rules = entry.field.validation;\n if (!rules) return [];\n const { path } = entry;\n const issues = [\n ...rangeIssue(rules, path, 'minLength', 'maxLength'),\n ...rangeIssue(rules, path, 'min', 'max'),\n ...applicableIssues(entry, rules),\n ...patternIssue(rules.pattern, path),\n ];\n if (rules.matchField !== undefined && !context.keys.has(rules.matchField)) {\n issues.push(error('unknown-field', `${path}/validation/matchField`, `\"${rules.matchField}\" is not a field key`, suggest(rules.matchField, context.keyList)));\n }\n const validators = context.validators;\n if (rules.validator !== undefined && validators && !Object.prototype.hasOwnProperty.call(validators, rules.validator)) {\n issues.push(warning('unknown-validator', `${path}/validation/validator`, `the validator \"${rules.validator}\" is not registered`, 'Pass it in the \"validators\" option'));\n }\n return issues;\n}\n\nfunction dependencyIssues(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n return (field.optionsDependsOn ?? []).flatMap((key, index) => (\n context.keys.has(key) ? [] : [warning('unknown-field', `${path}/optionsDependsOn/${index}`, `\"${key}\" is not a field key`, suggest(key, context.keyList))]\n ));\n}\n\nexport function fieldIssues(context: CheckContext): DefinitionIssue[] {\n return context.entries.flatMap((entry) => [\n ...typeIssue(entry),\n ...optionIssues(entry),\n ...ruleIssues(context, entry),\n ...dependencyIssues(context, entry),\n ]);\n}\n","import type { CheckContext } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, warning } from './issues';\n\nfunction dependencyGraph({ definition, entries, keys }: CheckContext): Map<string, string[]> {\n const graph = new Map<string, string[]>();\n const link = (owners: string[], dependencies: string[]) => {\n const known = dependencies.filter((key) => keys.has(key));\n if (known.length) for (const owner of owners) graph.set(owner, [...(graph.get(owner) ?? []), ...known]);\n };\n const fieldsOf = (source: { show?: { field: string }[]; showAny?: { field: string }[] }) => (\n [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field)\n );\n for (const { field } of entries) link([field.key], fieldsOf(field));\n for (const step of definition.steps ?? []) link(step.fields.map((field) => field.key), fieldsOf(step));\n return graph;\n}\n\nfunction findCycles(graph: Map<string, string[]>): string[][] {\n const visiting = new Map<string, boolean>();\n const cycles: string[][] = [];\n for (const start of graph.keys()) {\n if (visiting.has(start)) continue;\n visiting.set(start, true);\n const stack: [string, number][] = [[start, 0]];\n while (stack.length > 0) {\n const frame = stack[stack.length - 1];\n const neighbor = graph.get(frame[0])?.[frame[1]++];\n if (neighbor === undefined) {\n visiting.set(frame[0], false);\n stack.pop();\n } else if (visiting.get(neighbor)) {\n const nodes = stack.map(([node]) => node);\n cycles.push([...nodes.slice(nodes.indexOf(neighbor)), neighbor]);\n } else if (!visiting.has(neighbor)) {\n visiting.set(neighbor, true);\n stack.push([neighbor, 0]);\n }\n }\n }\n return cycles;\n}\n\nfunction cycleIssues(context: CheckContext): DefinitionIssue[] {\n return findCycles(dependencyGraph(context)).map((cycle) => (\n error('condition-cycle', context.keys.get(cycle[0])!.path, `show conditions form a cycle: ${cycle.join(' -> ')}`, 'Remove one of the conditions in the cycle')\n ));\n}\n\nfunction fallthroughIssues({ definition }: CheckContext): DefinitionIssue[] {\n const steps = definition.steps ?? [];\n const issues: DefinitionIssue[] = [];\n steps.forEach((step, index) => {\n const targets = new Set((step.routes ?? []).map((route) => route.to).filter((to) => to !== null));\n for (const target of targets) {\n const position = steps.findIndex((candidate) => candidate.id === target);\n const sibling = steps[position + 1];\n const exits = steps[position]?.routes?.some((route) => !route.show?.length && !route.showAny?.length);\n if (!sibling || !targets.has(sibling.id) || exits) continue;\n issues.push(warning('route-fallthrough', `/steps/${position}`, `branch \"${target}\" from \"${step.id}\" continues into the sibling branch \"${sibling.id}\"`, `Add an unconditional route on \"${target}\" to the step where the branches meet`));\n }\n if (step.skip && (step.next === false || !steps[1])) {\n issues.push(warning('skip-unreachable', `/steps/${index}/skip`, `step \"${step.id}\" has \"skip\" but no Continue button or later step`, 'Remove \"skip\", or remove \"next\": false'));\n }\n });\n return issues;\n}\n\nexport function graphIssues(context: CheckContext): DefinitionIssue[] {\n return [...cycleIssues(context), ...fallthroughIssues(context)];\n}\n","import type { DefinitionIssue } from './issues';\nimport { error, pointer, warning } from './issues';\n\ntype Entry = Record<string, unknown>;\ntype Check = (value: Entry, path: string) => DefinitionIssue[];\ntype Kind = 'string' | 'number' | 'boolean' | 'scalar' | 'list';\n\nexport const isEntry = (value: unknown): value is Entry =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst KINDS: Record<Kind, [(value: unknown) => boolean, string]> = {\n string: [(value) => typeof value === 'string', 'a string'],\n number: [(value) => typeof value === 'number' && Number.isFinite(value), 'a number'],\n boolean: [(value) => typeof value === 'boolean', 'true or false'],\n scalar: [(value) => ['string', 'number', 'boolean'].includes(typeof value), 'a string, number or boolean'],\n list: [(value) => Array.isArray(value) && value.every((item) => ['string', 'number'].includes(typeof item)), 'an array of strings or numbers'],\n};\n\nfunction typed(value: Entry, rules: Record<string, Kind>, path: string): DefinitionIssue[] {\n return Object.entries(rules).flatMap(([key, kind]) => {\n const [valid, name] = KINDS[kind];\n return value[key] === undefined || valid(value[key]) ? [] : [error('invalid-type', `${path}/${pointer(key)}`, `\"${key}\" must be ${name}`)];\n });\n}\n\nfunction list(value: unknown, path: string, name: string, check: Check, required = false): DefinitionIssue[] {\n if (value == null && !required) return [];\n if (!Array.isArray(value)) return [error('invalid-type', path, 'must be an array', required ? 'Use [] when there is nothing to list' : undefined)];\n return value.flatMap((item, index) => (\n isEntry(item) ? check(item, `${path}/${index}`) : [error('invalid-type', `${path}/${index}`, `must be ${name}`)]\n ));\n}\n\nfunction text(value: Entry, key: string, path: string): DefinitionIssue[] {\n return typeof value[key] === 'string' ? [] : [error('missing-property', `${path}/${key}`, `\"${key}\" must be a string`)];\n}\n\nconst condition: Check = (value, path) => typed(value, { field: 'string', eq: 'scalar', neq: 'scalar', in: 'list', notIn: 'list', notEmpty: 'boolean', gt: 'number', gte: 'number', lt: 'number', lte: 'number' }, path);\n\nfunction conditions(value: Entry, path: string): DefinitionIssue[] {\n return [\n ...list(value.show, `${path}/show`, 'a condition object', condition),\n ...list(value.showAny, `${path}/showAny`, 'a condition object', condition),\n ];\n}\n\nfunction action(value: unknown, path: string): DefinitionIssue[] {\n return isEntry(value) ? list(value.disabled, `${path}/disabled`, 'a condition object', condition) : [];\n}\n\nconst option: Check = (value, path) => text(value, 'value', path);\n\nconst RULES: Record<string, Kind> = {\n minLength: 'number', maxLength: 'number', min: 'number', max: 'number', pattern: 'string', matchField: 'string', validator: 'string',\n};\n\nfunction validation(value: unknown, path: string): DefinitionIssue[] {\n if (value === undefined) return [];\n return isEntry(value) ? typed(value, RULES, path) : [error('invalid-type', path, 'must be an object of validation rules')];\n}\n\nfunction dependencies(value: unknown, path: string): DefinitionIssue[] {\n const valid = value === undefined || (Array.isArray(value) && value.every((key) => typeof key === 'string'));\n return valid ? [] : [error('invalid-type', path, 'must be an array of field keys')];\n}\n\nconst field: Check = (value, path) => [\n ...text(value, 'key', path),\n ...text(value, 'type', path),\n ...conditions(value, path),\n ...list(value.options, `${path}/options`, 'an option object', option),\n ...validation(value.validation, `${path}/validation`),\n ...dependencies(value.optionsDependsOn, `${path}/optionsDependsOn`),\n];\n\nconst route: Check = (value, path) => [\n ...(value.to === null || typeof value.to === 'string' ? [] : [error('missing-property', `${path}/to`, '\"to\" must be a step id or null')]),\n ...conditions(value, path),\n];\n\nconst step: Check = (value, path) => [\n ...text(value, 'id', path),\n ...list(value.fields, `${path}/fields`, 'a field object', field, true),\n ...conditions(value, path),\n ...list(value.routes, `${path}/routes`, 'a route object', route),\n ...['next', 'back', 'skip'].flatMap((name) => action(value[name], `${path}/${name}`)),\n];\n\nexport function shapeIssues(input: unknown): DefinitionIssue[] {\n if (!isEntry(input)) return [error('invalid-type', '', 'the form definition must be an object')];\n return [\n ...list(input.fields, '/fields', 'a field object', field),\n ...list(input.steps, '/steps', 'a step object', step),\n ...action(input.submit, '/submit'),\n ...action(input.cancel, '/cancel'),\n ];\n}\n\nexport function metaIssues(input: Entry): DefinitionIssue[] {\n return [\n ...text(input, 'id', ''),\n ...(typeof input.title === 'string' ? [] : [warning('missing-property', '/title', '\"title\" must be a string', 'Add a title for host UI and editors')]),\n ...(isEntry(input.submit) ? [] : [error('missing-property', '/submit', 'the submit action is missing', 'Add \"submit\": { \"label\": \"Submit\" }')]),\n ];\n}\n","import type { FormStep, StepRoute } from '../types';\n\nconst conditional = (source: Pick<StepRoute, 'show' | 'showAny'>) => !!(source.show?.length || source.showAny?.length);\n\nfunction successors(steps: FormStep[], indexes: Map<string, number>, from: number): number[] {\n const next: number[] = [];\n for (const route of steps[from].routes ?? []) {\n const target = route.to === null ? null : indexes.get(route.to);\n if (target === null && !conditional(route)) return next;\n if (target === null || target === undefined || target <= from) continue;\n next.push(target);\n if (!conditional(route) && !conditional(steps[target])) return next;\n }\n return from + 1 < steps.length ? [...next, from + 1] : next;\n}\n\nexport function reachableSteps(steps: FormStep[]): Set<number>[] {\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n return steps.map((_, start) => {\n const seen = new Set<number>();\n const queue = successors(steps, indexes, start);\n while (queue.length) {\n const index = queue.pop()!;\n if (seen.has(index)) continue;\n seen.add(index);\n queue.push(...successors(steps, indexes, index));\n if (conditional(steps[index]) && index + 1 < steps.length) queue.push(index + 1);\n }\n return seen;\n });\n}\n","import type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, oneOf } from './issues';\nimport { reachableSteps } from './paths';\n\nconst RESERVED = new Set([...Object.getOwnPropertyNames(Object.prototype), 'prototype']);\n\nfunction stepIssues({ definition }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const steps = definition.steps ?? [];\n const seen = new Map<string, number>();\n steps.forEach((step, index) => {\n const first = seen.get(step.id);\n if (first === undefined) seen.set(step.id, index);\n else issues.push(error('duplicate-step-id', `/steps/${index}/id`, `step id \"${step.id}\" is already used by /steps/${first}`, 'Give each step a unique id'));\n });\n steps.forEach((step, index) => (step.routes ?? []).forEach((route, position) => {\n if (route.to === null) return;\n const target = seen.get(route.to);\n if (target !== undefined && target > index) return;\n const later = steps.slice(index + 1).map((candidate) => candidate.id);\n const problem = target === undefined ? `\"${route.to}\" is not a step id` : `\"${route.to}\" is not a later step`;\n const hint = later.length ? `${oneOf(later)}, or null to end the form here` : 'Use null to end the form here';\n issues.push(error('route-target', `/steps/${index}/routes/${position}/to`, problem, hint));\n }));\n return issues;\n}\n\nfunction keyIssues({ definition, entries }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const reachable = reachableSteps(definition.steps ?? []);\n const exclusive = (a: FieldEntry, b: FieldEntry) => a.step !== b.step && !reachable[a.step]?.has(b.step);\n entries.forEach((entry, index) => {\n const { field, path } = entry;\n const clash = entries.slice(0, index).find((other) => other.field.key === field.key && !exclusive(other, entry));\n if (RESERVED.has(field.key)) {\n issues.push(error('reserved-key', `${path}/key`, `\"${field.key}\" is a built-in object property name`, 'Rename the field key'));\n } else if (clash) {\n issues.push(error('duplicate-key', `${path}/key`, `key \"${field.key}\" is already used by ${clash.path} on the same path`, 'Rename one of the fields, or move them to route branches that never meet'));\n }\n });\n return issues;\n}\n\nexport function structureIssues(context: CheckContext): DefinitionIssue[] {\n const { definition } = context;\n const both = !!definition.fields?.length && !!definition.steps?.length;\n return [\n ...(both ? [error('fields-and-steps', '', 'the definition has both \"fields\" and \"steps\"', 'Move the top-level fields into a step, or remove \"steps\"')] : []),\n ...stepIssues(context),\n ...keyIssues(context),\n ];\n}\n","import type { FormDefinition } from '../types';\nimport { conditionIssues } from './conditions';\nimport { createContext } from './context';\nimport { fieldIssues } from './fields';\nimport { graphIssues } from './graph';\nimport { FormDefinitionError, isError, type DefinitionIssue } from './issues';\nimport { metaIssues, shapeIssues } from './shape';\nimport { structureIssues } from './structure';\n\nexport interface CheckDefinitionOptions {\n validators?: Record<string, unknown>;\n}\n\nfunction ordered(issues: DefinitionIssue[]): DefinitionIssue[] {\n return [...issues.filter(isError), ...issues.filter((issue) => !isError(issue))];\n}\n\nexport function checkDefinition(input: unknown, options: CheckDefinitionOptions = {}): DefinitionIssue[] {\n const shape = shapeIssues(input);\n if (shape.length) return shape;\n const context = createContext(input as FormDefinition, options.validators);\n return ordered([\n ...metaIssues(input as Record<string, unknown>),\n ...structureIssues(context),\n ...conditionIssues(context),\n ...fieldIssues(context),\n ...graphIssues(context),\n ]);\n}\n\nexport function parseDefinition(input: unknown, options?: CheckDefinitionOptions): FormDefinition {\n const errors = checkDefinition(input, options).filter(isError);\n if (errors.length) throw new FormDefinitionError(errors);\n return input as FormDefinition;\n}\n","import type { FormDefinition, FormField } from '../types';\n\nexport function conditionFields(source: Pick<FormField, 'show' | 'showAny'>): string[] {\n return [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field);\n}\n\nexport function getAllFields(definition: FormDefinition): FormField[] {\n return definition.steps?.length ? definition.steps.flatMap((step) => step.fields) : definition.fields ?? [];\n}\n\nexport function createValues(\n fields: FormField[],\n initialValues?: Record<string, unknown>,\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n for (const field of fields) {\n if (field.defaultValue !== undefined) values[field.key] = field.defaultValue;\n }\n return Object.assign(values, initialValues);\n}\n\nexport function getChangedKeys(\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n): Set<string> {\n const keys = new Set([...Object.keys(previous), ...Object.keys(next)]);\n return new Set([...keys].filter((key) => !Object.is(previous[key], next[key])));\n}\n","export class FormLifecycleError extends Error {\n readonly committed = true;\n readonly cause: unknown;\n\n constructor(readonly phase: 'afterStepChange' | 'afterSubmit', cause: unknown) {\n super(`The action completed, but ${phase} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\n this.name = 'FormLifecycleError';\n this.cause = cause;\n }\n}\n\nexport async function afterCommit(phase: 'afterStepChange' | 'afterSubmit', callback: () => void | Promise<void>): Promise<void> {\n try { await callback(); }\n catch (error) { throw new FormLifecycleError(phase, error); }\n}\n","import type { EngineInternals } from './runtime-internals';\n\nfunction activePath(engine: EngineInternals): string {\n return engine.visibleSteps.map((step) => step.id).join('\\n');\n}\n\nexport function watchCheckedInputs(engine: EngineInternals, checked: Record<string, unknown>): () => boolean {\n const path = activePath(engine);\n return () => activePath(engine) !== path || Object.keys(checked).some(\n (key) => checked[key] !== undefined && !Object.is(engine.values[key], checked[key]),\n );\n}\n","export const TYPE_MESSAGES = {\n email: 'Enter a valid email',\n number: 'Enter a number',\n boolean: 'Must be true or false',\n option: 'Select one of the available options',\n options: 'Must be a list of available options',\n string: 'Must be text',\n date: 'Enter a valid date',\n datetime: 'Enter a valid date and time',\n file: 'Must be a file reference',\n value: 'Invalid value',\n};\n\nexport type ValidationRule = 'required' | 'minLength' | 'maxLength' | 'min' | 'max' | 'pattern' | 'matchField';\n\nexport function getDefaultMessage(rule: ValidationRule, params?: Record<string, unknown>): string {\n switch (rule) {\n case 'required':\n return 'This field is required';\n case 'minLength':\n return `Must be at least ${params?.min} ${params?.unit ?? 'characters'}`;\n case 'maxLength':\n return `Must be at most ${params?.max} ${params?.unit ?? 'characters'}`;\n case 'min':\n return `Must be at least ${params?.min}`;\n case 'max':\n return `Must be at most ${params?.max}`;\n case 'pattern':\n return 'Invalid format';\n case 'matchField':\n return 'Fields must match';\n default:\n return 'Invalid value';\n }\n}\n","import type { FormField, ShowCondition } from '../types';\nimport { evaluateCondition } from './evaluate-condition';\n\nexport function isVisible(\n field: Pick<FormField, 'show' | 'showAny'>,\n values: Record<string, unknown>,\n): boolean {\n const matches = (condition: ShowCondition) => evaluateCondition(condition, values);\n return (field.show ?? []).every(matches) && (!field.showAny?.length || field.showAny.some(matches));\n}\n","import type { FormField } from '../types';\nimport { getDefaultMessage, TYPE_MESSAGES } from './default-messages';\n\nexport const BOOLEAN_TYPES = new Set(['checkbox', 'switch']);\nconst CLIENT_TYPES = new Set(['text', 'email', 'phone', 'number', 'password', 'select', 'autocomplete', 'multiselect', 'checkbox', 'radio', 'switch', 'date', 'datetime', 'textarea']);\n\nexport const MAX_STRING_LENGTH = 10000;\nconst MAX_EMAIL_LENGTH = 254;\nconst MAX_ITEMS = 1000;\nconst EMAIL = /^[^\\s@]+@[^\\s@.]+(?:\\.[^\\s@.]+)+$/;\nconst DECIMAL = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/;\nconst DATE = '\\\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\\\d|3[01])';\nconst DATE_ONLY = new RegExp(`^${DATE}$`);\nconst DATE_TIME = new RegExp(`^${DATE}T(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d{1,3})?)?(?:Z|[+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)?$`);\nconst TEXT_TYPES = new Set(['text', 'phone', 'password', 'textarea', 'autocomplete']);\nconst FORMATS = new Map<string, [RegExp, string, number]>([\n ['email', [EMAIL, TYPE_MESSAGES.email, MAX_EMAIL_LENGTH]],\n ['date', [DATE_ONLY, TYPE_MESSAGES.date, MAX_STRING_LENGTH]],\n ['datetime', [DATE_TIME, TYPE_MESSAGES.datetime, MAX_STRING_LENGTH]],\n]);\n\nexport function normalizeValue(field: FormField, value: unknown): unknown {\n if (field.type !== 'number' || typeof value !== 'string' || !DECIMAL.test(value)) return value;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : value;\n}\n\nfunction isOption(field: FormField, value: unknown): boolean {\n return !field.options || field.options.some((option) => option.value === value);\n}\n\nfunction lengthError(field: FormField, value: string): string | null {\n const max = Math.min(MAX_STRING_LENGTH, field.validation?.maxLength ?? MAX_STRING_LENGTH);\n if (value.length <= max) return null;\n return field.validation?.maxLengthMessage ?? getDefaultMessage('maxLength', { max });\n}\n\nfunction multiselectError(field: FormField, value: unknown): string | null {\n if (!Array.isArray(value)) return TYPE_MESSAGES.options;\n if (value.length > (field.options?.length ?? MAX_ITEMS)) return TYPE_MESSAGES.option;\n const valid = value.every((item) => typeof item === 'string' && item.length <= MAX_STRING_LENGTH && isOption(field, item));\n return valid ? null : TYPE_MESSAGES.option;\n}\n\nfunction stringError(field: FormField, value: unknown, message: string): string | null {\n return typeof value === 'string' ? lengthError(field, value) : message;\n}\n\nfunction formatError(field: FormField, value: unknown, [format, message, max]: [RegExp, string, number]): string | null {\n if (typeof value !== 'string') return message;\n return lengthError(field, value) ?? (value.length <= max && format.test(value) ? null : message);\n}\n\nfunction primitiveError(field: FormField, value: unknown): string | null {\n if (typeof value === 'boolean' || (typeof value === 'number' && Number.isFinite(value))) return null;\n return stringError(field, value, TYPE_MESSAGES.value);\n}\n\nfunction isBlank(field: FormField, value: unknown): boolean {\n return value == null || value === '' || (field.type === 'multiselect' && Array.isArray(value) && !value.length);\n}\n\nexport function typeError(field: FormField, value: unknown): string | null {\n if (isBlank(field, value)) return null;\n if (BOOLEAN_TYPES.has(field.type)) return typeof value === 'boolean' ? null : TYPE_MESSAGES.boolean;\n if (field.type === 'number') return typeof value === 'number' && Number.isFinite(value) ? null : TYPE_MESSAGES.number;\n if (field.type === 'multiselect') return multiselectError(field, value);\n if (field.type === 'file') return stringError(field, value, TYPE_MESSAGES.file);\n const format = FORMATS.get(field.type);\n if (format) return formatError(field, value, format);\n if (field.type === 'select' || field.type === 'radio') return stringError(field, value, TYPE_MESSAGES.option) ?? (isOption(field, value) ? null : TYPE_MESSAGES.option);\n return TEXT_TYPES.has(field.type) ? stringError(field, value, TYPE_MESSAGES.string) : primitiveError(field, value);\n}\n\nexport function clientTypeError(field: FormField, value: unknown): string | null {\n if (!CLIENT_TYPES.has(field.type)) return null;\n return typeError(field.optionsFrom ? { ...field, options: undefined } : field, value);\n}\n","import type { FieldValidation, FormField } from '../types';\nimport { isBlank } from '../visibility';\nimport { getDefaultMessage } from './default-messages';\nimport { BOOLEAN_TYPES, clientTypeError } from './type-checks';\n\nexport type ValidatorFn = (\n value: unknown,\n allValues: Record<string, unknown>,\n) => string | null;\n\n\nfunction isEmpty(value: unknown, field: FormField): boolean {\n return isBlank(value) || (value === false && BOOLEAN_TYPES.has(field.type));\n}\n\nfunction boundError(\n size: number,\n rule: 'Length' | '',\n rules: FieldValidation,\n unit?: string,\n): string | undefined {\n const min = rules[`min${rule}`];\n const max = rules[`max${rule}`];\n if (min !== undefined && size < min) return rules[`min${rule}Message`] ?? getDefaultMessage(`min${rule}`, { min, unit });\n if (max !== undefined && size > max) return rules[`max${rule}Message`] ?? getDefaultMessage(`max${rule}`, { max, unit });\n return undefined;\n}\n\nfunction patternError(value: unknown, rules: FieldValidation): string | undefined {\n if (rules.pattern === undefined) return undefined;\n try {\n return new RegExp(rules.pattern).test(String(value)) ? undefined : rules.patternMessage ?? getDefaultMessage('pattern');\n } catch {\n return undefined;\n }\n}\n\nexport function validateFieldValue(\n field: FormField,\n value: unknown,\n allValues: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): string | null {\n const rules = field.validation ?? {};\n const matchMessage = rules.matchFieldMessage ?? getDefaultMessage('matchField');\n if (isEmpty(value, field)) {\n if (rules.required) return typeof rules.required === 'string' ? rules.required : getDefaultMessage('required');\n return rules.matchField !== undefined && !isBlank(allValues[rules.matchField]) ? matchMessage : null;\n }\n const typeIssue = clientTypeError(field, value);\n if (typeIssue) return typeIssue;\n const sizeError = typeof value === 'string' || Array.isArray(value)\n ? boundError(value.length, 'Length', rules, Array.isArray(value) ? 'items' : undefined)\n : typeof value === 'number' ? boundError(value, '', rules) : undefined;\n const matchError = rules.matchField !== undefined && value !== allValues[rules.matchField] ? matchMessage : undefined;\n return (sizeError\n ?? patternError(value, rules)\n ?? matchError\n ?? (rules.validator ? validators?.[rules.validator]?.(value, allValues) : undefined)) || null;\n}\n","import type { FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport { type ValidatorFn, validateFieldValue } from './validate-field';\n\nexport function validateStep(\n step: FormStep,\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n return validateFields(step.fields, values, validators);\n}\n\nexport function validateFields(\n fields: FormField[],\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n const errors: Record<string, string> = {};\n\n for (const field of fields) {\n if (!isVisible(field, values)) continue;\n\n const error = validateFieldValue(field, values[field.key], values, validators);\n if (error) {\n errors[field.key] = error;\n }\n }\n\n return errors;\n}\n","import { validateFieldValue, validateFields, validateStep } from '../validation';\nimport { createValues, getChangedKeys } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\n\nexport function applyValidationErrors(engine: EngineInternals, errors: Record<string, string>, navigate = false): void {\n const previousErrors = engine.errors;\n engine.state.errors = {};\n engine.state.topLevelErrors = [];\n for (const [key, message] of Object.entries(errors)) {\n if (engine.visibility.isFieldVisible(key, engine.values)) engine.errors[key] = message;\n else engine.topLevelErrors.push(message);\n }\n const structureChanged = navigate && moveToFirstError(engine, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors), structureChanged });\n}\n\nfunction moveToFirstError(engine: EngineInternals, errors: Record<string, string>): boolean {\n const firstErrorKey = Object.keys(errors).find((key) => engine.errors[key] !== undefined);\n const targetIndex = firstErrorKey && engine.isMultiStep\n ? engine.visibility.findStepIndex(firstErrorKey, engine.values, engine.currentStepIndex)\n : null;\n if (targetIndex === null || targetIndex === engine.currentStepIndex) return false;\n engine.state.currentStepIndex = targetIndex;\n return true;\n}\n\nexport function clearResolvedMatchErrors(engine: EngineInternals, key: string): string[] {\n const cleared: string[] = [];\n for (const field of engine.visibility.allFields) {\n if (field.validation?.matchField !== key || engine.errors[field.key] === undefined) continue;\n if (validateFieldValue(field, engine.values[field.key], getValidationValues(engine), engine.validators)) continue;\n delete engine.errors[field.key];\n cleared.push(field.key);\n }\n return cleared;\n}\n\nexport function pruneOffPathErrors(engine: EngineInternals): string[] {\n const pathFields = new Set(engine.visibleSteps.flatMap((step) => step.fields.map((field) => field.key)));\n const pruned = Object.keys(engine.errors).filter((key) => !pathFields.has(key));\n for (const key of pruned) delete engine.errors[key];\n return pruned;\n}\n\nexport function getValidationValues(engine: EngineInternals): Record<string, unknown> {\n return getSubmitValues(engine);\n}\n\nfunction withoutSkipped(engine: EngineInternals, values: Record<string, unknown>): Record<string, unknown> {\n for (const key of [...engine.skipped.values()].flat()) delete values[key];\n return values;\n}\n\nexport function validateForm(engine: EngineInternals, navigate = false): Record<string, string> {\n const previousErrors = engine.errors;\n const errors: Record<string, string> = {};\n if (engine.isMultiStep) {\n for (const step of engine.visibleSteps) {\n if (engine.skipped.has(step.id)) continue;\n Object.assign(errors, validateStep(step, getValidationValues(engine), engine.validators));\n }\n } else {\n Object.assign(\n errors,\n validateFields(engine.definition.fields ?? [], getValidationValues(engine), engine.validators),\n );\n }\n engine.state.errors = errors;\n const structureChanged = navigate && moveToFirstError(engine, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, errors), structureChanged });\n return errors;\n}\n\nexport function validateOne(engine: EngineInternals, key: string): string | null {\n const field = engine.visibility.activeField(key, engine.values);\n if (!field) return null;\n const previousError = engine.errors[key];\n const error = validateFieldValue(field, engine.values[key], getValidationValues(engine), engine.validators);\n if (error) engine.errors[key] = error;\n else delete engine.errors[key];\n const fieldKeys = Object.is(previousError, engine.errors[key]) ? [] : [key];\n engine.notify({ fieldKeys });\n return error;\n}\n\nexport function getSubmitValues(engine: EngineInternals): Record<string, unknown> {\n return withoutSkipped(engine, { ...engine.visibility.conditionValues(engine.values) });\n}\n\nexport function resetEngine(engine: EngineInternals, values?: Record<string, unknown>): void {\n const previousValues = engine.values;\n const previousErrors = engine.errors;\n const loadingFields = Object.keys(engine.fieldLoading);\n engine.validationEpoch++;\n engine.operationEpoch++;\n engine.state.submitting = false;\n engine.state.values = createValues(engine.visibility.allFields, values);\n engine.state.errors = {};\n engine.state.topLevelErrors = [];\n engine.state.fieldLoading = {};\n engine.state.stepValidating = false;\n engine.state.currentStepIndex = 0;\n engine.skipped.clear();\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n const changedValues = getChangedKeys(previousValues, engine.values);\n const changedFields = new Set([\n ...changedValues,\n ...getChangedKeys(previousErrors, engine.errors),\n ...loadingFields,\n ]);\n engine.notify({\n fieldKeys: changedFields,\n structureChanged: true,\n valuesChanged: changedValues.size > 0,\n });\n}\n","import type { FormDefinition, FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\n\nexport function activeSteps(definition: FormDefinition, values: Record<string, unknown>): FormStep[] {\n const steps = definition.steps ?? [];\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n const result: FormStep[] = [];\n const available: Record<string, unknown> = {};\n for (let index = 0; index < steps.length;) {\n const step = steps[index];\n if (!isVisible(step, available)) { index++; continue; }\n result.push(step);\n Object.assign(available, stepValues(step, values, available));\n const route = step.routes?.find((route) => (\n isVisible(route, available) && (route.to === null || ((indexes.get(route.to) ?? -1) > index\n && isVisible(steps[indexes.get(route.to)!], available)))\n ));\n if (route?.to === null) break;\n index = route ? indexes.get(route.to)! : index + 1;\n }\n return result;\n}\n\nexport function reconcileStepIndex(previous: FormStep[], next: FormStep[], index: number): number {\n const previousStep = previous[index] ?? previous[previous.length - 1];\n const preserved = next.findIndex((step) => step.id === previousStep?.id);\n if (preserved !== -1) return preserved;\n const nextIds = new Map(next.map((step, index) => [step.id, index]));\n for (let before = Math.min(index - 1, previous.length - 1); before >= 0; before--) {\n const predecessor = nextIds.get(previous[before].id);\n if (predecessor !== undefined) return predecessor;\n }\n return 0;\n}\n\nfunction stepValues(step: { fields: FormField[] }, values: Record<string, unknown>, previous: Record<string, unknown>) {\n const candidates = { ...previous };\n for (const field of step.fields) candidates[field.key] = values[field.key];\n const result: Record<string, unknown> = {};\n for (const field of step.fields) {\n if (isVisible(field, candidates) && values[field.key] !== undefined) result[field.key] = values[field.key];\n }\n return result;\n}\n\nexport class ActivePath {\n private source: Record<string, unknown> | null = null;\n private activeStepList: FormStep[] = [];\n private activeValueMap: Record<string, unknown> = {};\n\n constructor(private definition: FormDefinition) {}\n\n invalidate(): void { this.source = null; }\n\n steps(values: Record<string, unknown>): FormStep[] {\n this.refresh(values);\n return this.activeStepList;\n }\n\n values(values: Record<string, unknown>): Record<string, unknown> {\n this.refresh(values);\n return this.activeValueMap;\n }\n\n private refresh(values: Record<string, unknown>): void {\n if (this.source === values) return;\n this.source = values;\n this.activeStepList = activeSteps(this.definition, values);\n const result: Record<string, unknown> = {};\n const groups = this.definition.steps?.length ? this.activeStepList : [{ fields: this.definition.fields ?? [] }];\n for (const step of groups) Object.assign(result, stepValues(step, values, result));\n this.activeValueMap = result;\n }\n}\n","import type { FormStep } from '../types';\nimport { createValues } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\nimport { activeSteps } from './step-routes';\nimport { pruneOffPathErrors } from './validation-state';\n\nfunction resetValues(engine: EngineInternals): Record<string, unknown> {\n const fields = engine.currentStep?.fields ?? [];\n const values = { ...engine.values };\n for (const { key } of fields) delete values[key];\n return Object.assign(values, createValues(fields));\n}\n\nexport function skipTarget(engine: EngineInternals): FormStep | undefined {\n return activeSteps(engine.definition, resetValues(engine))[engine.currentStepIndex + 1];\n}\n\nexport function skipCurrentStep(engine: EngineInternals): string[] {\n const step = engine.currentStep!;\n const fieldKeys = step.fields.map(({ key }) => key);\n engine.state.values = resetValues(engine);\n for (const key of fieldKeys) delete engine.errors[key];\n engine.skipped.set(step.id, fieldKeys);\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n engine.visibility.markChanged(true, true);\n const pruned = pruneOffPathErrors(engine);\n engine.notify({ fieldKeys: [...fieldKeys, ...pruned], structureChanged: true, valuesChanged: true });\n return fieldKeys;\n}\n\nexport function includeCurrentStep(engine: EngineInternals): void {\n const step = engine.currentStep;\n if (step) engine.skipped.delete(step.id);\n}\n\nexport function skipStepAt(engine: EngineInternals, index: number): string[] {\n engine.state.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n return skipCurrentStep(engine);\n}\n","import { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport type { SubmitFn } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\nimport { getSubmitValues, validateForm } from './validation-state';\nimport { includeCurrentStep } from './step-skip';\n\nexport async function submitForm(engine: EngineInternals, submit: SubmitFn, keepSkipped = false): Promise<boolean> {\n if (engine.submitting || engine.stepValidating) return false;\n if (!keepSkipped) includeCurrentStep(engine);\n const lifecycle = { ...engine.lifecycle };\n let dispatched = false;\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n let values = getSubmitValues(engine);\n const inputsChanged = watchCheckedInputs(engine, values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch || inputsChanged();\n engine.state.submitting = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (Object.keys(validateForm(engine, true)).length > 0 || stale()) return false;\n if (lifecycle.onBeforeSubmit) {\n const allowed = await lifecycle.onBeforeSubmit(values);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (lifecycle.onBeforeSubmit) {\n if (Object.keys(validateForm(engine, true)).length > 0 || stale()) return false;\n values = getSubmitValues(engine);\n }\n dispatched = true;\n const skippedSteps = [...engine.skipped.keys()];\n await submit(values, [...skippedSteps]);\n if (operation !== engine.operationEpoch) return true;\n await afterCommit('afterSubmit', () => lifecycle.onAfterSubmit?.(values, skippedSteps));\n return true;\n } catch (error) {\n if (!dispatched && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.state.submitting = false;\n engine.notify();\n }\n }\n}\n","import { getChangedKeys } from './engine-utils';\nimport { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport { validateStep } from '../validation';\nimport { applyValidationErrors, getValidationValues } from './validation-state';\nimport { includeCurrentStep, skipCurrentStep, skipTarget } from './step-skip';\nimport { submitForm } from './submission';\nimport type { StepChangeContext, SubmitFn } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\n\nfunction hasStepErrors(engine: EngineInternals): boolean {\n const step = engine.currentStep;\n if (!step) return true;\n const errors = validateStep(step, getValidationValues(engine), engine.validators);\n if (Object.keys(errors).length === 0) return false;\n const previousErrors = { ...engine.errors };\n Object.assign(engine.errors, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors) });\n return true;\n}\n\nfunction moveTo(engine: EngineInternals, index: number): void {\n engine.validationEpoch++;\n engine.state.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n}\n\nexport async function skipStep(engine: EngineInternals, submit?: SubmitFn): Promise<boolean> {\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting || !engine.currentStep?.skip) return false;\n if (skipTarget(engine)) return changeStep(engine, 'next', 'skip');\n const step = engine.currentStep;\n if (!submit || !step) return false;\n const values = engine.values;\n const errors = { ...engine.errors };\n let committed = false;\n const fieldKeys = skipCurrentStep(engine);\n const skippedValues = engine.values;\n const edited = watchCheckedInputs(engine, { ...skippedValues });\n try {\n return await submitForm(engine, async (submitted, skipped) => {\n await submit(submitted, skipped);\n committed = true;\n }, true);\n } finally {\n if (!committed && engine.values === skippedValues && !edited()) {\n engine.state.values = values;\n engine.state.errors = { ...errors, ...engine.errors };\n engine.skipped.delete(step.id);\n engine.notify({ fieldKeys, structureChanged: true, valuesChanged: true });\n }\n }\n}\n\nexport async function changeStep(engine: EngineInternals, direction: 'next' | 'back', reason: StepChangeContext['reason'] = direction): Promise<boolean> {\n const skipping = reason === 'skip';\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting) return false;\n if (!skipping && (direction === 'next' ? engine.isLastStep : engine.isFirstStep)) return false;\n const step = engine.currentStep!;\n const validating = direction === 'next' && !skipping;\n if (validating) includeCurrentStep(engine);\n if (validating && hasStepErrors(engine)) return false;\n const lifecycle = { ...engine.lifecycle };\n const validate = engine.onStepValidate;\n let committed = false;\n const fromIndex = engine.currentStepIndex;\n const toIndex = fromIndex + (direction === 'next' ? 1 : -1);\n const target = skipping ? skipTarget(engine) : engine.visibleSteps[toIndex];\n if (!target) return false;\n const context: StepChangeContext = { fromStepId: step.id, toStepId: target.id, reason, values: { ...getValidationValues(engine) } };\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n const inputsChanged = watchCheckedInputs(engine, context.values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch\n || engine.currentStep?.id !== step.id || inputsChanged();\n engine.state.stepValidating = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (validating && validate) {\n const result = await validate!(step.id, context.values);\n if (stale()) return false;\n if (result && Object.keys(result).length > 0) {\n applyValidationErrors(engine, result);\n return false;\n }\n }\n if (lifecycle.onBeforeStepChange) {\n const allowed = await lifecycle.onBeforeStepChange(context);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (validating && hasStepErrors(engine)) return false;\n committed = true;\n if (skipping) skipCurrentStep(engine);\n moveTo(engine, toIndex);\n await afterCommit('afterStepChange', () => lifecycle.onAfterStepChange?.(context));\n return true;\n } catch (error) {\n if (!committed && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.state.stepValidating = false;\n engine.notify();\n }\n }\n}\n\nexport function goToStepWithField(engine: EngineInternals, fieldKey: string): void {\n if (!engine.isMultiStep) return;\n const targetIndex = engine.visibility.findStepIndex(\n fieldKey,\n engine.values,\n engine.currentStepIndex,\n );\n if (targetIndex === engine.currentStepIndex) engine.notify();\n else if (targetIndex !== null) moveTo(engine, targetIndex);\n}\n","export interface NotifyOptions {\n fieldKeys?: Iterable<string>;\n structureChanged?: boolean;\n}\n\nexport class FormSubscriptions {\n private version = 0;\n private listeners = new Set<() => void>();\n private fieldVersions = new Map<string, number>();\n private fieldListeners = new Map<string, Set<() => void>>();\n private structureVersion = 0;\n private structureListeners = new Set<() => void>();\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n getSnapshot(): number {\n return this.version;\n }\n\n subscribeField(key: string, listener: () => void): () => void {\n const listeners = this.fieldListeners.get(key) ?? new Set();\n listeners.add(listener);\n this.fieldListeners.set(key, listeners);\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) this.fieldListeners.delete(key);\n };\n }\n\n getFieldSnapshot(key: string): number {\n return this.fieldVersions.get(key) ?? 0;\n }\n\n subscribeStructure(listener: () => void): () => void {\n this.structureListeners.add(listener);\n return () => this.structureListeners.delete(listener);\n }\n\n getStructureSnapshot(): number {\n return this.structureVersion;\n }\n\n notify({ fieldKeys = [], structureChanged = false }: NotifyOptions = {}): void {\n for (const key of new Set(fieldKeys)) this.notifyField(key);\n if (structureChanged) this.notifyStructure();\n\n this.version++;\n for (const listener of this.listeners) listener();\n }\n\n private notifyField(key: string): void {\n this.fieldVersions.set(key, (this.fieldVersions.get(key) ?? 0) + 1);\n for (const listener of this.fieldListeners.get(key) ?? []) listener();\n }\n\n private notifyStructure(): void {\n this.structureVersion++;\n for (const listener of this.structureListeners) listener();\n }\n}\n","import type { DefinitionIssue } from '../definition-validation';\n\nfunction isProduction(): boolean {\n try {\n return process.env.NODE_ENV === 'production';\n } catch {\n return false;\n }\n}\n\nexport function warnInDevelopment(issue: DefinitionIssue): void {\n if (!isProduction()) console.warn(`[formhaus] ${issue.message}`);\n}\n","import type { FormField, FormStep } from '../types';\nimport { conditionFields } from './engine-utils';\n\nexport function indexConditions<T extends FormField | FormStep>(dependent: T, index: Map<string, Set<T>>): void {\n for (const field of conditionFields(dependent)) {\n const dependents = index.get(field) ?? new Set<T>();\n dependents.add(dependent);\n index.set(field, dependents);\n }\n}\n","import { conditionFields, getAllFields } from './engine-utils';\nimport { indexConditions } from './visibility-index';\nimport { ActivePath } from './step-routes';\nimport type { ValidatorFn } from '../validation';\nimport { validateStep } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\n\ninterface VisibilityCache {\n visibleSteps: FormStep[];\n currentStep: FormStep | null;\n visibleFields: FormField[];\n canGoNext: boolean;\n}\n\nexport class VisibilityState {\n readonly allFields: FormField[];\n private readonly fieldsByKey = new Map<string, FormField[]>();\n private routeFields = new Set<string>();\n private readonly path: ActivePath;\n private fieldDependents = new Map<string, Set<FormField>>();\n private stepDependents = new Map<string, Set<FormStep>>();\n private stepOfField = new Map<FormField, FormStep>();\n private visibilityDirty = true;\n private canGoNextDirty = true;\n private cache: VisibilityCache = {\n visibleSteps: [],\n currentStep: null,\n visibleFields: [],\n canGoNext: false,\n };\n\n constructor(private definition: FormDefinition) {\n this.allFields = getAllFields(definition);\n for (const field of this.allFields) this.fieldsByKey.set(field.key, [...(this.fieldsByKey.get(field.key) ?? []), field]);\n this.path = new ActivePath(definition);\n for (const step of definition.steps ?? []) {\n for (const field of step.fields) this.stepOfField.set(field, step);\n }\n this.buildIndexes();\n }\n\n markChanged(structureChanged: boolean, valuesChanged: boolean): void {\n if (structureChanged || valuesChanged) this.path.invalidate();\n if (structureChanged) {\n this.visibilityDirty = true;\n this.canGoNextDirty = true;\n } else if (valuesChanged) {\n this.canGoNextDirty = true;\n }\n }\n\n state(values: Record<string, unknown>, stepIndex: number): VisibilityCache {\n this.recomputeVisibility(values, stepIndex);\n return this.cache;\n }\n\n getCanGoNext(\n values: Record<string, unknown>,\n stepIndex: number,\n validators: Record<string, ValidatorFn>,\n ): boolean {\n this.recomputeVisibility(values, stepIndex);\n if (!this.canGoNextDirty) return this.cache.canGoNext;\n this.canGoNextDirty = false;\n const step = this.cache.currentStep;\n const errors = step ? validateStep(step, this.conditionValues(values), validators) : {};\n this.cache.canGoNext = this.isMultiStep && Object.keys(errors).length === 0;\n return this.cache.canGoNext;\n }\n\n findStepIndex(fieldKey: string, values: Record<string, unknown>, stepIndex: number): number | null {\n const steps = this.state(values, stepIndex).visibleSteps;\n const target = steps.findIndex((step) => step.fields.some((field) => field.key === fieldKey));\n return target === -1 ? null : target;\n }\n\n affectsStructure(key: string, clearedFields: Set<string>): boolean {\n return this.routeFields.has(key) || this.fieldDependents.has(key) || this.stepDependents.has(key) || clearedFields.size > 0;\n }\n\n cascadeHiddenFields(\n values: Record<string, unknown>,\n errors: Record<string, string>,\n ): Set<string> {\n return this.reconcileHidden(values, errors);\n }\n\n reconcileHidden(values: Record<string, unknown>, errors: Record<string, string>): Set<string> {\n this.path.invalidate();\n const seed = new Set([...this.fieldDependents.keys(), ...this.stepDependents.keys()]);\n return this.drainQueue(seed, values, errors);\n }\n private drainQueue(\n seed: Set<string>,\n values: Record<string, unknown>,\n errors: Record<string, string>,\n ): Set<string> {\n const queue = [...seed];\n const queued = new Set(queue);\n const cleared = new Set<string>();\n const clear = (key: string) => {\n delete values[key];\n delete errors[key];\n this.path.invalidate();\n cleared.add(key);\n if (queued.has(key)) return;\n queued.add(key);\n queue.push(key);\n };\n\n for (let index = 0; index < queue.length; index++) {\n const key = queue[index];\n queued.delete(key);\n this.clearHiddenFields(this.fieldDependents.get(key), values, errors, clear);\n this.clearHiddenSteps(this.stepDependents.get(key), values, errors, clear);\n }\n return cleared;\n }\n\n activeField(key: string, values: Record<string, unknown>): FormField | undefined {\n return this.fieldsByKey.get(key)?.find((field) => this.onPath(field, values) && isVisible(field, this.conditionValues(values)));\n }\n\n isFieldVisible(key: string, values: Record<string, unknown>): boolean {\n return this.activeField(key, values) !== undefined;\n }\n\n conditionValues(values: Record<string, unknown>): Record<string, unknown> { return this.path.values(values); }\n private onPath(field: FormField, values: Record<string, unknown>): boolean {\n const step = this.stepOfField.get(field);\n return !step || this.path.steps(values).includes(step);\n }\n private get isMultiStep(): boolean { return (this.definition.steps ?? []).length > 0; }\n private buildIndexes(): void {\n for (const field of this.allFields) {\n indexConditions(field, this.fieldDependents);\n }\n for (const step of this.definition.steps ?? []) {\n indexConditions(step, this.stepDependents);\n for (const route of step.routes ?? []) {\n for (const field of conditionFields(route)) this.routeFields.add(field);\n }\n }\n }\n private recomputeVisibility(values: Record<string, unknown>, stepIndex: number): void {\n if (!this.visibilityDirty) return;\n this.visibilityDirty = false;\n if (!this.isMultiStep) {\n this.cache.visibleSteps = [];\n this.cache.currentStep = null;\n this.cache.visibleFields = (this.definition.fields ?? []).filter((field) => isVisible(field, this.conditionValues(values)));\n return;\n }\n this.cache.visibleSteps = this.path.steps(values);\n const steps = this.cache.visibleSteps;\n this.cache.currentStep = steps[stepIndex] ?? steps[steps.length - 1] ?? null;\n const current = this.cache.currentStep;\n this.cache.visibleFields = current\n ? current.fields.filter((field) => isVisible(field, this.conditionValues(values)))\n : [];\n }\n private clearHiddenFields(\n fields: Iterable<FormField> | undefined,\n values: Record<string, unknown>,\n errors: Record<string, string>,\n clear: (key: string) => void,\n ): void {\n for (const field of fields ?? []) {\n if (!this.onPath(field, values)) continue;\n if (isVisible(field, this.conditionValues(values)) || (values[field.key] === undefined && errors[field.key] === undefined)) continue;\n clear(field.key);\n }\n }\n private clearHiddenSteps(\n steps: Iterable<FormStep> | undefined,\n values: Record<string, unknown>,\n errors: Record<string, string>,\n clear: (key: string) => void,\n ): void {\n for (const step of steps ?? []) {\n if (isVisible(step, this.conditionValues(values))) continue;\n for (const field of step.fields) {\n if (values[field.key] === undefined && errors[field.key] === undefined) continue;\n clear(field.key);\n }\n }\n }\n}\n","import { checkDefinition, FormDefinitionError } from '../definition-validation';\nimport { isError } from '../definition-validation/issues';\nimport type { ValidatorFn } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport type { FormEngineOptions, StepValidateFn, SubmitFn } from './engine-options';\nimport { createValues } from './engine-utils';\nimport { changeStep, goToStepWithField, skipStep } from './navigation';\nimport type { EngineInternals, EngineState, RuntimeNotifyOptions } from './runtime-internals';\nimport { FormSubscriptions, type NotifyOptions } from './subscriptions';\nimport {\n applyValidationErrors,\n getSubmitValues,\n resetEngine,\n validateForm,\n validateOne,\n clearResolvedMatchErrors,\n pruneOffPathErrors,\n} from './validation-state';\nimport { submitForm } from './submission';\nimport { reconcileStepIndex } from './step-routes';\nimport { warnInDevelopment } from './warnings';\nimport { VisibilityState } from './visibility-state';\n\nexport class FormEngine<TValues extends object = Record<string, unknown>> {\n private readonly state: EngineState;\n private readonly skipped = new Map<string, string[]>();\n private validationEpoch = 0;\n private operationEpoch = 0;\n private readonly lifecycle: FormEngineOptions;\n\n private readonly validators: Record<string, ValidatorFn>;\n private get onStepValidate(): StepValidateFn | undefined { return this.lifecycle.onStepValidate; }\n private readonly visibility: VisibilityState;\n private readonly subscriptions = new FormSubscriptions();\n\n constructor(\n readonly definition: FormDefinition,\n initialValues?: Partial<NoInfer<TValues>>,\n options?: FormEngineOptions,\n ) {\n this.lifecycle = options ?? {};\n this.validators = options?.validators ?? {};\n const issues = checkDefinition(definition, { validators: this.validators });\n const errors = issues.filter(isError);\n if (errors.length) throw new FormDefinitionError(errors);\n const warn = this.lifecycle.onWarning ?? warnInDevelopment;\n for (const issue of issues) warn(issue);\n this.visibility = new VisibilityState(definition);\n const values = createValues(this.visibility.allFields, initialValues as Record<string, unknown> | undefined);\n this.state = { values, errors: {}, topLevelErrors: [], currentStepIndex: 0, fieldLoading: {}, stepValidating: false, submitting: false };\n this.visibility.reconcileHidden(values, this.state.errors);\n }\n\n get values(): Readonly<Partial<TValues>> { return this.state.values as Partial<TValues>; }\n get errors(): Readonly<Record<string, string>> { return this.state.errors; }\n get topLevelErrors(): readonly string[] { return this.state.topLevelErrors; }\n get currentStepIndex(): number { return this.state.currentStepIndex; }\n get fieldLoading(): Readonly<Record<string, boolean>> { return this.state.fieldLoading; }\n get stepValidating(): boolean { return this.state.stepValidating; }\n get submitting(): boolean { return this.state.submitting; }\n\n get isMultiStep(): boolean {\n return (this.definition.steps ?? []).length > 0;\n }\n\n get visibleSteps(): FormStep[] {\n return this.visibility.state(this.state.values, this.currentStepIndex).visibleSteps;\n }\n\n get currentStep(): FormStep | null {\n return this.visibility.state(this.state.values, this.currentStepIndex).currentStep;\n }\n\n get visibleFields(): FormField[] {\n return this.visibility.state(this.state.values, this.currentStepIndex).visibleFields;\n }\n\n get isFirstStep(): boolean {\n return this.currentStepIndex === 0;\n }\n\n get isLastStep(): boolean {\n return this.currentStepIndex >= this.visibleSteps.length - 1;\n }\n\n get canGoNext(): boolean {\n return this.visibility.getCanGoNext(this.state.values, this.currentStepIndex, this.validators);\n }\n\n get progress(): { current: number; total: number } {\n const total = this.visibleSteps.length;\n return { current: Math.min(this.currentStepIndex + 1, total), total };\n }\n\n subscribe(listener: () => void): () => void {\n return this.subscriptions.subscribe(listener);\n }\n\n getSnapshot(): number {\n return this.subscriptions.getSnapshot();\n }\n\n subscribeField(key: string, listener: () => void): () => void {\n return this.subscriptions.subscribeField(key, listener);\n }\n\n getFieldSnapshot(key: string): number {\n return this.subscriptions.getFieldSnapshot(key);\n }\n\n subscribeStructure(listener: () => void): () => void {\n return this.subscriptions.subscribeStructure(listener);\n }\n\n getStructureSnapshot(): number {\n return this.subscriptions.getStructureSnapshot();\n }\n\n setValue(key: string, value: unknown): void {\n const { values, errors } = this.state;\n const previousSteps = this.isMultiStep ? this.visibleSteps : null;\n const valueChanged = !Object.is(values[key], value);\n const hadError = errors[key] !== undefined;\n values[key] = value;\n delete errors[key];\n for (const [stepId, keys] of this.skipped) if (valueChanged && keys.includes(key)) this.skipped.delete(stepId);\n const clearedFields = this.visibility.cascadeHiddenFields(values, errors);\n const revalidated = clearResolvedMatchErrors(this.internals, key);\n const changedFields = new Set([...clearedFields, ...revalidated]);\n if (valueChanged || hadError) changedFields.add(key);\n const valuesChanged = valueChanged || clearedFields.size > 0;\n const structureChanged = valuesChanged && this.visibility.affectsStructure(key, clearedFields);\n if (previousSteps && structureChanged) {\n this.visibility.markChanged(true, true);\n this.state.currentStepIndex = reconcileStepIndex(previousSteps, this.visibleSteps, this.currentStepIndex);\n for (const pruned of pruneOffPathErrors(this.internals)) changedFields.add(pruned);\n }\n this.notify({ fieldKeys: changedFields, structureChanged, valuesChanged });\n }\n\n setErrors(errors: Record<string, string>): void {\n applyValidationErrors(this.internals, errors, true);\n }\n\n setFieldLoading(key: string, loading: boolean): void {\n const previous = this.state.fieldLoading[key] === true;\n if (loading) this.state.fieldLoading[key] = true;\n else delete this.state.fieldLoading[key];\n this.notify({ fieldKeys: previous === loading ? [] : [key] });\n }\n\n cancelPendingActions(): void {\n this.validationEpoch++;\n this.operationEpoch++;\n this.state.stepValidating = false;\n this.state.submitting = false;\n this.notify();\n }\n\n next(): Promise<boolean> { return changeStep(this.internals, 'next'); }\n back(): Promise<boolean> { return changeStep(this.internals, 'back'); }\n skip(submit?: SubmitFn): Promise<boolean> { return skipStep(this.internals, submit); }\n submit(handler: SubmitFn): Promise<boolean> { return submitForm(this.internals, handler); }\n isStepSkipped(stepId: string): boolean { return this.skipped.has(stepId); }\n validate(): Record<string, string> { return validateForm(this.internals); }\n validateField(key: string): string | null { return validateOne(this.internals, key); }\n getSubmitValues(): Partial<TValues> { return getSubmitValues(this.internals) as Partial<TValues>; }\n goToStepWithField(key: string): void { goToStepWithField(this.internals, key); }\n reset(values?: Record<string, unknown>): void { resetEngine(this.internals, values); }\n\n private get internals(): EngineInternals {\n return this as unknown as EngineInternals;\n }\n\n private notify(options: RuntimeNotifyOptions = {}): void {\n this.visibility.markChanged(!!options.structureChanged, !!options.valuesChanged);\n this.subscriptions.notify(options);\n }\n}\n","import type { FormDefinition, FormField } from '../types';\nimport type { ValidatorFn } from '../validation';\nimport { parseDefinition } from '../definition-validation';\nimport { getAllFields } from '../engine/engine-utils';\nimport type { EngineInternals } from '../engine/runtime-internals';\nimport { FormEngine } from '../engine/runtime';\nimport { skipStepAt } from '../engine/step-skip';\nimport { normalizeValue, typeError } from '../validation/type-checks';\n\nexport interface SubmissionOptions {\n skippedSteps?: string[];\n validators?: Record<string, ValidatorFn>;\n}\n\nconst BODY_MESSAGE = 'Pass the values object as the second argument, not the request body with \"values\" and \"skippedSteps\".';\n\nexport interface SubmissionResult {\n values: Record<string, unknown>;\n errors: Record<string, string>;\n}\n\nconst allow: ValidatorFn = () => null;\n\nconst hasOwn = (source: object, key: string) => Object.prototype.hasOwnProperty.call(source, key);\n\nfunction knownValues(fields: FormField[], input: unknown): Record<string, unknown> {\n const source = input !== null && typeof input === 'object' && !Array.isArray(input) ? input as Record<string, unknown> : {};\n const values: Record<string, unknown> = {};\n for (const field of fields) {\n if (hasOwn(source, field.key)) values[field.key] = normalizeValue(field, source[field.key]);\n }\n return values;\n}\n\nfunction typeErrors(fields: FormField[], values: Record<string, unknown>): Map<string, string> {\n const errors = new Map<string, string>();\n for (const field of fields) {\n const error = hasOwn(values, field.key) ? typeError(field, values[field.key]) : null;\n if (error) errors.set(field.key, error);\n }\n return errors;\n}\n\nfunction withoutRules(definition: FormDefinition, invalid: Map<string, string>): FormDefinition {\n const strip = (fields: FormField[]) => fields.map((field) => (invalid.has(field.key) ? { ...field, validation: undefined } : field));\n const steps = definition.steps?.map((step) => ({ ...step, fields: strip(step.fields) }));\n return { ...definition, ...(definition.fields && { fields: strip(definition.fields) }), ...(steps && { steps }) };\n}\n\nfunction ignoredValidators(fields: FormField[], given: Record<string, ValidatorFn> = {}): Record<string, ValidatorFn> {\n const validators: Record<string, ValidatorFn> = {};\n for (const { validation } of fields) if (validation?.validator) validators[validation.validator] = allow;\n return { ...validators, ...given };\n}\n\nfunction isBody(fields: FormField[], input: unknown): boolean {\n if (input === null || typeof input !== 'object' || !hasOwn(input, 'values')) return false;\n return !fields.some((field) => field.key === 'values' || field.key === 'skippedSteps');\n}\n\nfunction applySkips(engine: FormEngine, skippedSteps: unknown): void {\n if (!Array.isArray(skippedSteps)) return;\n const requested = new Set(skippedSteps);\n for (let index = 0; index < engine.visibleSteps.length; index++) {\n const step = engine.visibleSteps[index];\n if (step.skip && requested.has(step.id)) skipStepAt(engine as unknown as EngineInternals, index);\n }\n}\n\nexport function validateSubmission(\n definition: FormDefinition,\n values: unknown,\n options: SubmissionOptions = {},\n): SubmissionResult {\n parseDefinition(definition);\n const fields = getAllFields(definition);\n const initialValues = knownValues(fields, values);\n const invalid = typeErrors(fields, initialValues);\n const engineOptions = { validators: ignoredValidators(fields, options.validators), onWarning: () => {} };\n const engine = new FormEngine(withoutRules(definition, invalid), initialValues, engineOptions);\n applySkips(engine, options.skippedSteps);\n const errors = engine.validate();\n const submitted = engine.getSubmitValues();\n for (const [key, error] of invalid) if (hasOwn(submitted, key)) errors[key] = error;\n if (isBody(fields, values)) errors.values = BODY_MESSAGE;\n return { values: submitted, errors };\n}\n"]}
|