@formhaus/core 0.11.1 → 0.11.2

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.
@@ -1 +1 @@
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/validation/default-messages.ts","../src/validation/type-checks.ts","../src/definition-validation/warnings.ts","../src/definition-validation/check-definition.ts","../src/engine/engine-utils.ts","../src/engine/lifecycle-error.ts","../src/engine/pending-inputs.ts","../src/visibility/is-visible.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","i","next","j","closest","candidates","lower","candidate","suggest","match","OPERATORS","operatorIssues","keys","unknown","count","referenceIssues","context","owner","step","target","sameStep","allowed","conditionErrors","entry","conditionIssues","collect","source","_a","name","collectAction","action","createContext","definition","validators","_b","steps","entries","field","position","conditions","route","rangeIssue","rules","min","max","low","high","patternIssue","pattern","e","ruleIssues","fieldIssues","dependencyGraph","graph","link","owners","dependencies","known","fieldsOf","findCycles","visiting","cycles","start","stack","frame","neighbor","nodes","node","cycleIssues","cycle","graphIssues","isEntry","KINDS","item","typed","kind","valid","list","check","required","text","option","RULES","validation","shapeIssues","input","metaIssues","conditional","successors","indexes","from","reachableSteps","seen","queue","RESERVED","stepIssues","first","later","keyIssues","reachable","exclusive","clash","other","structureIssues","TYPE_MESSAGES","getDefaultMessage","rule","params","BOOLEAN_TYPES","BUILT_IN_TYPES","MAX_STRING_LENGTH","MAX_EMAIL_LENGTH","MAX_ITEMS","EMAIL","DECIMAL","DATE","DATE_ONLY","DATE_TIME","TEXT_TYPES","FORMATS","normalizeValue","parsed","isOption","lengthError","_c","_d","multiselectError","stringError","message","formatError","format","primitiveError","typeError","clientTypeError","__spreadProps","LIST_OPERATORS","COMPARISONS","STRING_TYPES","expectedType","valueIssue","operator","mismatch","result","operands","expected","wrong","options","missing","conditionWarnings","optionIssues","defaults","ruleWarnings","numeric","ranges","sized","fieldWarnings","routeWarnings","targets","to","sibling","exits","definitionWarnings","warnings","shape","definitionErrors","checkDefinition","parseDefinition","errors","conditionFields","getAllFields","createValues","fields","initialValues","getChangedKeys","previous","FormLifecycleError","phase","cause","afterCommit","callback","activePath","engine","watchCheckedInputs","checked","isVisible","matches","isEmpty","boundError","size","unit","patternError","validateFieldValue","allValues","_e","matchMessage","typeIssue","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","createActivePath","active","refresh","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","listen","listeners","listener","createSubscriptions","version","structureVersion","structureListeners","fieldVersions","fieldListeners","set","developmentIssues","assertDefinition","warn","indexConditions","dependent","dependents","createVisibility","allFields","fieldsByKey","routeFields","fieldDependents","stepDependents","stepOfField","visibilityDirty","canGoNextDirty","cache","isMultiStep","visible","onPath","state","stepIndex","current","valuesChanged","clearedFields","queued","held","clear","FormEngine","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 { CONDITION_OPERATORS } from '../visibility/evaluate-condition';\nimport type { ShowCondition } from '../types';\nimport type { CheckContext, ConditionEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, pointer } from './issues';\n\nexport const OPERATORS: readonly string[] = CONDITION_OPERATORS;\n\nfunction operatorIssues({ suggest }: CheckContext, 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 referenceIssues(context: CheckContext, { condition, path, owner, step, key }: ConditionEntry): DefinitionIssue[] {\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`, context.suggest(condition.field, candidates))];\n }\n if (step < 0 || owner === 'action') return [];\n const sameStep = owner === 'step' ? 'this or a later step' : 'a later step';\n if (target.step < step || (owner !== 'step' && target.step === step)) return [];\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 conditionErrors(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (typeof condition.field !== 'string') return [error('missing-property', `${path}/field`, 'the condition has no \"field\"', 'Add the key of the field to test')];\n return [...operatorIssues(context, condition, path), ...referenceIssues(context, entry)];\n}\n\nexport function conditionIssues(context: CheckContext): DefinitionIssue[] {\n return context.conditions.flatMap((entry) => conditionErrors(context, entry));\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 suggest: (value: string, candidates: string[]) => string | undefined;\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>, suggest: CheckContext['suggest'] = () => undefined): 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 suggest,\n };\n}\n","import type { FieldValidation } from '../types';\nimport type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\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 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, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation;\n if (!rules) return [];\n const match = rules.matchField;\n return [\n ...rangeIssue(rules, path, 'minLength', 'maxLength'),\n ...rangeIssue(rules, path, 'min', 'max'),\n ...patternIssue(rules.pattern, path),\n ...(match === undefined || context.keys.has(match) ? [] : [error('unknown-field', `${path}/validation/matchField`, `\"${match}\" is not a field key`, context.suggest(match, context.keyList))]),\n ];\n}\n\nexport function fieldIssues(context: CheckContext): DefinitionIssue[] {\n return context.entries.flatMap((entry) => ruleIssues(context, entry));\n}\n","import type { CheckContext } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } 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\nexport function graphIssues(context: CheckContext): DefinitionIssue[] {\n return cycleIssues(context);\n}\n","import type { DefinitionIssue } from './issues';\nimport { error, pointer } 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 ...(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","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 } from '../types';\nimport { getDefaultMessage, TYPE_MESSAGES } from './default-messages';\n\nexport const BOOLEAN_TYPES = ['checkbox', 'switch'];\nexport const BUILT_IN_TYPES = ['text', 'email', 'phone', 'number', 'password', 'select', 'autocomplete', 'multiselect', 'checkbox', 'radio', 'switch', 'file', '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.includes(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 (field.type === 'file' || !BUILT_IN_TYPES.includes(field.type)) return null;\n return typeError(field.optionsFrom ? { ...field, options: undefined } : field, value);\n}\n","import type { FormField } from '../types';\nimport { BOOLEAN_TYPES, BUILT_IN_TYPES } from '../validation/type-checks';\nimport { conditionErrors, OPERATORS } from './conditions';\nimport type { CheckContext, ConditionEntry, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { closest, oneOf, suggest, warning } from './issues';\n\nconst LIST_OPERATORS = ['in', 'notIn'];\nconst COMPARISONS = ['gt', 'gte', 'lt', 'lte'];\nconst STRING_TYPES = ['text', 'email', 'phone', 'password', 'textarea', 'date', 'datetime', 'select', 'radio', 'autocomplete'];\n\nfunction expectedType(field: FormField): string | undefined {\n if (field.type === 'number') return 'number';\n if (BOOLEAN_TYPES.includes(field.type)) return 'boolean';\n return STRING_TYPES.includes(field.type) ? 'string' : undefined;\n}\n\nfunction valueIssue(target: FormField, operator: string, operand: unknown, path: string): DefinitionIssue[] {\n const mismatch = (problem: string, hint: string) => [warning('condition-value-mismatch', path, problem, hint)];\n if (operator === 'notEmpty') return [];\n if (COMPARISONS.includes(operator)) {\n if (target.type !== 'multiselect' && !BOOLEAN_TYPES.includes(target.type)) return [];\n return mismatch(`\"${target.key}\" is a ${target.type} field, so \"${operator}\" never matches it`, 'Compare a number, text, radio or select field');\n }\n if (target.type === 'multiselect') {\n const result = operator === 'neq' || operator === 'notIn' ? 'always' : 'never';\n return mismatch(`\"${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.includes(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) return mismatch(`${JSON.stringify(wrong)} is a ${typeof wrong}, but \"${target.key}\" holds a ${expected}`, `Use a ${expected} value`);\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 return options && missing !== undefined ? mismatch(`${JSON.stringify(missing)} is not an option of \"${target.key}\"`, oneOf(options)) : [];\n}\n\nfunction conditionWarnings(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (conditionErrors(context, entry).length) return [];\n const operator = OPERATORS.find((key) => key in condition)!;\n return valueIssue(context.keys.get(condition.field)!.field, operator, condition[operator as keyof typeof condition], `${path}/${operator}`);\n}\n\nfunction optionIssues({ field, path }: FieldEntry): DefinitionIssue[] {\n if (!['select', 'radio', 'multiselect'].includes(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 ruleWarnings(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation ?? {};\n const rule = (name: string, problem: string, hint: string) => warning('rule-not-applicable', `${path}/validation/${name}`, problem, hint);\n const known = BUILT_IN_TYPES.includes(field.type);\n const numeric = field.type === 'number';\n const ranges = known && !numeric ? (['min', 'max'] as const).filter((name) => rules[name] !== undefined) : [];\n const sized = known && ['number', 'checkbox', 'switch'].includes(field.type) ? (['minLength', 'maxLength'] as const).filter((name) => rules[name] !== undefined) : [];\n const issues = [\n ...ranges.map((name) => rule(name, `\"${name}\" applies to number fields only`, `Use ${name}Length to limit text length`)),\n ...sized.map((name) => rule(name, `\"${name}\" does not apply to ${field.type} fields`, numeric ? 'Use min and max for numbers' : `Remove ${name}`)),\n ];\n const { validators } = context;\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 fieldWarnings(context: CheckContext, entry: FieldEntry): DefinitionIssue[] {\n const { field, path } = entry;\n const match = BUILT_IN_TYPES.includes(field.type) ? undefined : closest(field.type, BUILT_IN_TYPES);\n return [\n ...(match === undefined ? [] : [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 ...optionIssues(entry),\n ...ruleWarnings(context, entry),\n ...(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}\n\nfunction routeWarnings({ definition }: CheckContext): DefinitionIssue[] {\n const steps = definition.steps ?? [];\n return steps.flatMap((step, index) => {\n const issues: DefinitionIssue[] = [];\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 return issues;\n });\n}\n\nexport function definitionWarnings(context: CheckContext): DefinitionIssue[] {\n return [\n ...(typeof context.definition.title === 'string' ? [] : [warning('missing-property', '/title', '\"title\" must be a string', 'Add a title for host UI and editors')]),\n ...context.conditions.flatMap((entry) => conditionWarnings(context, entry)),\n ...context.entries.flatMap((entry) => fieldWarnings(context, entry)),\n ...routeWarnings(context),\n ];\n}\n","import type { FormDefinition } from '../types';\nimport { conditionIssues } from './conditions';\nimport { createContext, type CheckContext } from './context';\nimport { fieldIssues } from './fields';\nimport { graphIssues } from './graph';\nimport { FormDefinitionError, suggest, type DefinitionIssue } from './issues';\nimport { metaIssues, shapeIssues } from './shape';\nimport { structureIssues } from './structure';\nimport { definitionWarnings } from './warnings';\n\nexport interface CheckDefinitionOptions {\n validators?: Record<string, unknown>;\n}\n\ninterface Checks {\n validators?: Record<string, unknown>;\n suggest?: CheckContext['suggest'];\n warnings?: (context: CheckContext) => DefinitionIssue[];\n}\n\nfunction issues(input: unknown, { validators, suggest, warnings }: Checks = {}): DefinitionIssue[] {\n const shape = shapeIssues(input);\n if (shape.length) return shape;\n const context = createContext(input as FormDefinition, validators, suggest);\n return [\n ...metaIssues(input as Record<string, unknown>),\n ...structureIssues(context),\n ...conditionIssues(context),\n ...fieldIssues(context),\n ...graphIssues(context),\n ...(warnings ? warnings(context) : []),\n ];\n}\n\nexport function definitionErrors(input: unknown): DefinitionIssue[] {\n return issues(input);\n}\n\nexport function checkDefinition(input: unknown, options: CheckDefinitionOptions = {}): DefinitionIssue[] {\n return issues(input, { validators: options.validators, suggest, warnings: definitionWarnings });\n}\n\nexport function parseDefinition(input: unknown, options?: CheckDefinitionOptions): FormDefinition {\n const errors = issues(input, { suggest });\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","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 { 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.includes(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.activeField(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 function createActivePath(definition: FormDefinition) {\n let source: Record<string, unknown> | null = null;\n let steps: FormStep[] = [];\n let active: Record<string, unknown> = {};\n const refresh = (values: Record<string, unknown>) => {\n if (source === values) return;\n source = values;\n steps = activeSteps(definition, values);\n const result: Record<string, unknown> = {};\n const groups = definition.steps?.length ? steps : [{ fields: definition.fields ?? [] }];\n for (const step of groups) Object.assign(result, stepValues(step, values, result));\n active = result;\n };\n return {\n invalidate(): void { source = null; },\n steps(values: Record<string, unknown>): FormStep[] { refresh(values); return steps; },\n values(values: Record<string, unknown>): Record<string, unknown> { refresh(values); return active; },\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\ntype Listener = () => void;\n\nfunction listen(listeners: Set<Listener>, listener: Listener): () => void {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\n\nexport function createSubscriptions() {\n let version = 0;\n let structureVersion = 0;\n const listeners = new Set<Listener>();\n const structureListeners = new Set<Listener>();\n const fieldVersions = new Map<string, number>();\n const fieldListeners = new Map<string, Set<Listener>>();\n\n return {\n subscribe: (listener: Listener) => listen(listeners, listener),\n getSnapshot: () => version,\n subscribeStructure: (listener: Listener) => listen(structureListeners, listener),\n getStructureSnapshot: () => structureVersion,\n getFieldSnapshot: (key: string) => fieldVersions.get(key) ?? 0,\n\n subscribeField(key: string, listener: Listener): () => void {\n const set = fieldListeners.get(key) ?? new Set();\n set.add(listener);\n fieldListeners.set(key, set);\n return () => {\n set.delete(listener);\n if (set.size === 0) fieldListeners.delete(key);\n };\n },\n\n notify({ fieldKeys = [], structureChanged = false }: NotifyOptions = {}): void {\n for (const key of new Set(fieldKeys)) {\n fieldVersions.set(key, (fieldVersions.get(key) ?? 0) + 1);\n for (const listener of fieldListeners.get(key) ?? []) listener();\n }\n if (structureChanged) {\n structureVersion++;\n for (const listener of structureListeners) listener();\n }\n version++;\n for (const listener of listeners) listener();\n },\n };\n}\n","import { checkDefinition, FormDefinitionError, type DefinitionIssue } from '../definition-validation';\nimport { definitionErrors } from '../definition-validation/check-definition';\nimport { isError } from '../definition-validation/issues';\nimport type { FormDefinition } from '../types';\nimport type { FormEngineOptions } from './engine-options';\n\nfunction developmentIssues(definition: FormDefinition, validators: Record<string, unknown>): DefinitionIssue[] | undefined {\n try {\n if (process.env.NODE_ENV !== 'production') return checkDefinition(definition, { validators });\n } catch (error) {\n if (!(error instanceof ReferenceError)) throw error;\n }\n return undefined;\n}\n\nexport function assertDefinition(definition: FormDefinition, options: FormEngineOptions, validators: Record<string, unknown>): void {\n const issues = developmentIssues(definition, validators) ?? definitionErrors(definition);\n const errors = issues.filter(isError);\n if (errors.length) throw new FormDefinitionError(errors);\n const warn = options.onWarning ?? ((issue: DefinitionIssue) => console.warn(`[formhaus] ${issue.message}`));\n for (const issue of issues) warn(issue);\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 { createActivePath } 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\ntype Values = Record<string, unknown>;\n\nexport type VisibilityState = ReturnType<typeof createVisibility>;\n\nexport function createVisibility(definition: FormDefinition) {\n const allFields = getAllFields(definition);\n const fieldsByKey = new Map<string, FormField[]>();\n const routeFields = new Set<string>();\n const path = createActivePath(definition);\n const fieldDependents = new Map<string, Set<FormField>>();\n const stepDependents = new Map<string, Set<FormStep>>();\n const stepOfField = new Map<FormField, FormStep>();\n let visibilityDirty = true;\n let canGoNextDirty = true;\n const cache: VisibilityCache = { visibleSteps: [], currentStep: null, visibleFields: [], canGoNext: false };\n\n for (const field of allFields) {\n fieldsByKey.set(field.key, [...(fieldsByKey.get(field.key) ?? []), field]);\n indexConditions(field, fieldDependents);\n }\n for (const step of definition.steps ?? []) {\n for (const field of step.fields) stepOfField.set(field, step);\n indexConditions(step, stepDependents);\n for (const route of step.routes ?? []) for (const key of conditionFields(route)) routeFields.add(key);\n }\n\n const isMultiStep = () => (definition.steps ?? []).length > 0;\n const visible = (source: FormField | FormStep, values: Values) => isVisible(source, path.values(values));\n const onPath = (field: FormField, values: Values) => {\n const step = stepOfField.get(field);\n return !step || path.steps(values).includes(step);\n };\n\n function state(values: Values, stepIndex: number): VisibilityCache {\n if (!visibilityDirty) return cache;\n visibilityDirty = false;\n if (!isMultiStep()) {\n cache.visibleSteps = [];\n cache.currentStep = null;\n cache.visibleFields = (definition.fields ?? []).filter((field) => visible(field, values));\n return cache;\n }\n const steps = cache.visibleSteps = path.steps(values);\n const current = cache.currentStep = steps[stepIndex] ?? steps[steps.length - 1] ?? null;\n cache.visibleFields = current ? current.fields.filter((field) => visible(field, values)) : [];\n return cache;\n }\n\n return {\n allFields,\n conditionValues: path.values,\n state,\n\n markChanged(structureChanged: boolean, valuesChanged: boolean): void {\n if (structureChanged || valuesChanged) path.invalidate();\n if (structureChanged) visibilityDirty = true;\n if (structureChanged || valuesChanged) canGoNextDirty = true;\n },\n\n getCanGoNext(values: Values, stepIndex: number, validators: Record<string, ValidatorFn>): boolean {\n const step = state(values, stepIndex).currentStep;\n if (!canGoNextDirty) return cache.canGoNext;\n canGoNextDirty = false;\n const errors = step ? validateStep(step, path.values(values), validators) : {};\n return cache.canGoNext = isMultiStep() && Object.keys(errors).length === 0;\n },\n\n findStepIndex(fieldKey: string, values: Values, stepIndex: number): number | null {\n const target = state(values, stepIndex).visibleSteps.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 routeFields.has(key) || fieldDependents.has(key) || stepDependents.has(key) || clearedFields.size > 0;\n },\n\n activeField(key: string, values: Values): FormField | undefined {\n return fieldsByKey.get(key)?.find((field) => onPath(field, values) && visible(field, values));\n },\n\n reconcileHidden(values: Values, errors: Record<string, string>): Set<string> {\n path.invalidate();\n const queue = [...new Set([...fieldDependents.keys(), ...stepDependents.keys()])];\n const queued = new Set(queue);\n const cleared = new Set<string>();\n const held = (key: string) => values[key] !== undefined || errors[key] !== undefined;\n const clear = (key: string) => {\n delete values[key];\n delete errors[key];\n path.invalidate();\n cleared.add(key);\n if (queued.has(key)) return;\n queued.add(key);\n queue.push(key);\n };\n for (let index = 0; index < queue.length; index++) {\n const key = queue[index];\n queued.delete(key);\n for (const field of fieldDependents.get(key) ?? []) {\n if (onPath(field, values) && !visible(field, values) && held(field.key)) clear(field.key);\n }\n for (const step of stepDependents.get(key) ?? []) {\n if (!visible(step, values)) for (const field of step.fields) if (held(field.key)) clear(field.key);\n }\n }\n return cleared;\n },\n };\n}\n","import 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 { createSubscriptions, 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 { assertDefinition } from './warnings';\nimport { createVisibility, type 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 = createSubscriptions();\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 assertDefinition(definition, this.lifecycle, this.validators);\n this.visibility = createVisibility(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.view.visibleSteps;\n }\n\n get currentStep(): FormStep | null {\n return this.view.currentStep;\n }\n\n get visibleFields(): FormField[] {\n return this.view.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.reconcileHidden(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 view() {\n return this.visibility.state(this.state.values, this.currentStepIndex);\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 { 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"]}
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/format.ts","../src/definition-validation/shape.ts","../src/definition-validation/paths.ts","../src/definition-validation/structure.ts","../src/validation/default-messages.ts","../src/validation/type-checks.ts","../src/definition-validation/warnings.ts","../src/definition-validation/check-definition.ts","../src/engine/engine-utils.ts","../src/engine/lifecycle-error.ts","../src/engine/pending-inputs.ts","../src/visibility/is-visible.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","i","next","j","closest","candidates","lower","candidate","suggest","match","OPERATORS","operatorIssues","keys","unknown","count","referenceIssues","context","owner","step","target","sameStep","allowed","conditionErrors","entry","conditionIssues","collect","source","_a","name","collectAction","action","createContext","definition","validators","_b","steps","entries","field","position","conditions","route","rangeIssue","rules","min","max","low","high","patternIssue","pattern","e","ruleIssues","fieldIssues","dependencyGraph","graph","link","owners","dependencies","known","fieldsOf","findCycles","visiting","cycles","start","stack","frame","neighbor","nodes","node","cycleIssues","cycle","graphIssues","FORMAT_VERSION","formatIssues","version","valid","isEntry","KINDS","item","typed","kind","list","check","required","text","option","RULES","validation","shapeIssues","input","format","metaIssues","conditional","successors","indexes","from","reachableSteps","seen","queue","RESERVED","stepIssues","first","later","keyIssues","reachable","exclusive","clash","other","structureIssues","TYPE_MESSAGES","getDefaultMessage","rule","params","BOOLEAN_TYPES","BUILT_IN_TYPES","MAX_STRING_LENGTH","MAX_EMAIL_LENGTH","MAX_ITEMS","EMAIL","DECIMAL","DATE","DATE_ONLY","DATE_TIME","TEXT_TYPES","FORMATS","isCalendarDate","year","month","day","UNTRIMMED_TYPES","trimValue","normalizeValue","parsed","staticOptions","isOption","options","lengthError","_c","_d","multiselectError","stringError","message","formatError","primitiveError","typeError","clientTypeError","LIST_OPERATORS","COMPARISONS","STRING_TYPES","expectedType","valueIssue","operator","mismatch","result","operands","expected","wrong","missing","conditionWarnings","optionIssues","defaults","ruleWarnings","numeric","ranges","sized","fieldWarnings","routeWarnings","targets","to","sibling","exits","definitionWarnings","warnings","shape","definitionErrors","checkDefinition","parseDefinition","errors","conditionFields","getAllFields","createValues","fields","initialValues","getChangedKeys","previous","FormLifecycleError","phase","cause","afterCommit","callback","activePath","engine","watchCheckedInputs","checked","isVisible","matches","isEmpty","boundError","size","unit","patternError","validateFieldValue","allValues","_e","matchMessage","typeIssue","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","createActivePath","active","refresh","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","listen","listeners","listener","createSubscriptions","structureVersion","structureListeners","fieldVersions","fieldListeners","set","developmentIssues","assertDefinition","warn","indexConditions","dependent","dependents","createVisibility","allFields","fieldsByKey","routeFields","fieldDependents","stepDependents","stepOfField","visibilityDirty","canGoNextDirty","cache","isMultiStep","visible","onPath","state","stepIndex","current","valuesChanged","clearedFields","queued","held","clear","FormEngine","total","previousSteps","valueChanged","hadError","stepId","revalidated","loading","handler","BODY_MESSAGE","allow","hasOwn","activeValues","visibility","round","settled","typeErrors","withoutRules","invalid","strip","__spreadProps","ignoredValidators","given","isBody","applySkips","requested","validateSubmission","resolved","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 | 'unsupported-format-version';\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 { CONDITION_OPERATORS } from '../visibility/evaluate-condition';\nimport type { ShowCondition } from '../types';\nimport type { CheckContext, ConditionEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, pointer } from './issues';\n\nexport const OPERATORS: readonly string[] = CONDITION_OPERATORS;\n\nfunction operatorIssues({ suggest }: CheckContext, 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 referenceIssues(context: CheckContext, { condition, path, owner, step, key }: ConditionEntry): DefinitionIssue[] {\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`, context.suggest(condition.field, candidates))];\n }\n if (step < 0 || owner === 'action') return [];\n const sameStep = owner === 'step' ? 'this or a later step' : 'a later step';\n if (target.step < step || (owner !== 'step' && target.step === step)) return [];\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 conditionErrors(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (typeof condition.field !== 'string') return [error('missing-property', `${path}/field`, 'the condition has no \"field\"', 'Add the key of the field to test')];\n return [...operatorIssues(context, condition, path), ...referenceIssues(context, entry)];\n}\n\nexport function conditionIssues(context: CheckContext): DefinitionIssue[] {\n return context.conditions.flatMap((entry) => conditionErrors(context, entry));\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 suggest: (value: string, candidates: string[]) => string | undefined;\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>, suggest: CheckContext['suggest'] = () => undefined): 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 suggest,\n };\n}\n","import type { FieldValidation } from '../types';\nimport type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\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 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, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation;\n if (!rules) return [];\n const match = rules.matchField;\n return [\n ...rangeIssue(rules, path, 'minLength', 'maxLength'),\n ...rangeIssue(rules, path, 'min', 'max'),\n ...patternIssue(rules.pattern, path),\n ...(match === undefined || context.keys.has(match) ? [] : [error('unknown-field', `${path}/validation/matchField`, `\"${match}\" is not a field key`, context.suggest(match, context.keyList))]),\n ];\n}\n\nexport function fieldIssues(context: CheckContext): DefinitionIssue[] {\n return context.entries.flatMap((entry) => ruleIssues(context, entry));\n}\n","import type { CheckContext } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } 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\nexport function graphIssues(context: CheckContext): DefinitionIssue[] {\n return cycleIssues(context);\n}\n","import type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nexport const FORMAT_VERSION = '1.0';\n\nexport function formatIssues({ formatVersion: version }: Record<string, unknown>): DefinitionIssue[] {\n if (version === undefined) return [];\n const valid = typeof version === 'string' && /^[1-9]\\d*(\\.\\d+)?$/.test(version);\n if (valid && parseInt(version) <= parseInt(FORMAT_VERSION)) return [];\n return [valid\n ? error('unsupported-format-version', '/formatVersion', `format ${version} is not supported`, 'Upgrade @formhaus/core')\n : error('invalid-type', '/formatVersion', 'must be a version string', `Use \"${FORMAT_VERSION}\"`)];\n}\n","import type { DefinitionIssue } from './issues';\nimport { formatIssues } from './format';\nimport { error, pointer } 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 if (!isEntry(value)) return [];\n return [...typed(value, { label: 'string' }, path), ...list(value.disabled, `${path}/disabled`, 'a condition object', condition)];\n}\n\nconst option: Check = (value, path) => [...text(value, 'value', path), ...typed(value, { label: 'string' }, 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 ...typed(value, { label: 'string', placeholder: 'string', helperText: 'string' }, 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 ...typed(value, { title: 'string', description: 'string' }, 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 const format = formatIssues(input);\n if (format.length) return format;\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 ...(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","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 } from '../types';\nimport { getDefaultMessage, TYPE_MESSAGES } from './default-messages';\n\nexport const BOOLEAN_TYPES = ['checkbox', 'switch'];\nexport const BUILT_IN_TYPES = ['text', 'email', 'phone', 'number', 'password', 'select', 'autocomplete', 'multiselect', 'checkbox', 'radio', 'switch', 'file', '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\nfunction isCalendarDate(value: string): boolean {\n const [year, month, day] = value.split(/\\D/).map(Number);\n return day <= new Date(new Date(0).setUTCFullYear(year, month, 0)).getUTCDate();\n}\n\nconst UNTRIMMED_TYPES = new Set(['password', 'number', 'select', 'radio', 'file']);\n\nexport function trimValue(field: FormField, value: unknown): unknown {\n return typeof value === 'string' && !UNTRIMMED_TYPES.has(field.type) ? value.trim() : value;\n}\n\nexport function normalizeValue(field: FormField, input: unknown): unknown {\n const value = trimValue(field, input);\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\nconst staticOptions = (field: FormField) => (field.optionsFrom ? undefined : field.options);\n\nfunction isOption(field: FormField, value: unknown): boolean {\n const options = staticOptions(field);\n return !options || 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 > (staticOptions(field)?.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) && (format === EMAIL || isCalendarDate(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.includes(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 (field.type === 'file' || !BUILT_IN_TYPES.includes(field.type)) return null;\n return typeError(field, value);\n}\n","import type { FormField } from '../types';\nimport { BOOLEAN_TYPES, BUILT_IN_TYPES } from '../validation/type-checks';\nimport { conditionErrors, OPERATORS } from './conditions';\nimport type { CheckContext, ConditionEntry, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { closest, oneOf, suggest, warning } from './issues';\n\nconst LIST_OPERATORS = ['in', 'notIn'];\nconst COMPARISONS = ['gt', 'gte', 'lt', 'lte'];\nconst STRING_TYPES = ['text', 'email', 'phone', 'password', 'textarea', 'date', 'datetime', 'select', 'radio', 'autocomplete'];\n\nfunction expectedType(field: FormField): string | undefined {\n if (field.type === 'number') return 'number';\n if (BOOLEAN_TYPES.includes(field.type)) return 'boolean';\n return STRING_TYPES.includes(field.type) ? 'string' : undefined;\n}\n\nfunction valueIssue(target: FormField, operator: string, operand: unknown, path: string): DefinitionIssue[] {\n const mismatch = (problem: string, hint: string) => [warning('condition-value-mismatch', path, problem, hint)];\n if (operator === 'notEmpty') return [];\n if (COMPARISONS.includes(operator)) {\n if (target.type !== 'multiselect' && !BOOLEAN_TYPES.includes(target.type)) return [];\n return mismatch(`\"${target.key}\" is a ${target.type} field, so \"${operator}\" never matches it`, 'Compare a number, text, radio or select field');\n }\n if (target.type === 'multiselect') {\n const result = operator === 'neq' || operator === 'notIn' ? 'always' : 'never';\n return mismatch(`\"${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.includes(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) return mismatch(`${JSON.stringify(wrong)} is a ${typeof wrong}, but \"${target.key}\" holds a ${expected}`, `Use a ${expected} value`);\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 return options && missing !== undefined ? mismatch(`${JSON.stringify(missing)} is not an option of \"${target.key}\"`, oneOf(options)) : [];\n}\n\nfunction conditionWarnings(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (conditionErrors(context, entry).length) return [];\n const operator = OPERATORS.find((key) => key in condition)!;\n return valueIssue(context.keys.get(condition.field)!.field, operator, condition[operator as keyof typeof condition], `${path}/${operator}`);\n}\n\nfunction optionIssues({ field, path }: FieldEntry): DefinitionIssue[] {\n if (!['select', 'radio', 'multiselect'].includes(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 ruleWarnings(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation ?? {};\n const rule = (name: string, problem: string, hint: string) => warning('rule-not-applicable', `${path}/validation/${name}`, problem, hint);\n const known = BUILT_IN_TYPES.includes(field.type);\n const numeric = field.type === 'number';\n const ranges = known && !numeric ? (['min', 'max'] as const).filter((name) => rules[name] !== undefined) : [];\n const sized = known && ['number', 'checkbox', 'switch'].includes(field.type) ? (['minLength', 'maxLength'] as const).filter((name) => rules[name] !== undefined) : [];\n const issues = [\n ...ranges.map((name) => rule(name, `\"${name}\" applies to number fields only`, `Use ${name}Length to limit text length`)),\n ...sized.map((name) => rule(name, `\"${name}\" does not apply to ${field.type} fields`, numeric ? 'Use min and max for numbers' : `Remove ${name}`)),\n ];\n const { validators } = context;\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 fieldWarnings(context: CheckContext, entry: FieldEntry): DefinitionIssue[] {\n const { field, path } = entry;\n const match = BUILT_IN_TYPES.includes(field.type) ? undefined : closest(field.type, BUILT_IN_TYPES);\n return [\n ...(match === undefined ? [] : [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 ...optionIssues(entry),\n ...ruleWarnings(context, entry),\n ...(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}\n\nfunction routeWarnings({ definition }: CheckContext): DefinitionIssue[] {\n const steps = definition.steps ?? [];\n return steps.flatMap((step, index) => {\n const issues: DefinitionIssue[] = [];\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 return issues;\n });\n}\n\nexport function definitionWarnings(context: CheckContext): DefinitionIssue[] {\n return [\n ...(typeof context.definition.title === 'string' ? [] : [warning('missing-property', '/title', '\"title\" must be a string', 'Add a title for host UI and editors')]),\n ...context.conditions.flatMap((entry) => conditionWarnings(context, entry)),\n ...context.entries.flatMap((entry) => fieldWarnings(context, entry)),\n ...routeWarnings(context),\n ];\n}\n","import type { FormDefinition } from '../types';\nimport { conditionIssues } from './conditions';\nimport { createContext, type CheckContext } from './context';\nimport { fieldIssues } from './fields';\nimport { graphIssues } from './graph';\nimport { FormDefinitionError, suggest, type DefinitionIssue } from './issues';\nimport { metaIssues, shapeIssues } from './shape';\nimport { structureIssues } from './structure';\nimport { definitionWarnings } from './warnings';\n\nexport interface CheckDefinitionOptions {\n validators?: Record<string, unknown>;\n}\n\ninterface Checks {\n validators?: Record<string, unknown>;\n suggest?: CheckContext['suggest'];\n warnings?: (context: CheckContext) => DefinitionIssue[];\n}\n\nfunction issues(input: unknown, { validators, suggest, warnings }: Checks = {}): DefinitionIssue[] {\n const shape = shapeIssues(input);\n if (shape.length) return shape;\n const context = createContext(input as FormDefinition, validators, suggest);\n return [\n ...metaIssues(input as Record<string, unknown>),\n ...structureIssues(context),\n ...conditionIssues(context),\n ...fieldIssues(context),\n ...graphIssues(context),\n ...(warnings ? warnings(context) : []),\n ];\n}\n\nexport function definitionErrors(input: unknown): DefinitionIssue[] {\n return issues(input);\n}\n\nexport function checkDefinition(input: unknown, options: CheckDefinitionOptions = {}): DefinitionIssue[] {\n return issues(input, { validators: options.validators, suggest, warnings: definitionWarnings });\n}\n\nexport function parseDefinition(input: unknown, options?: CheckDefinitionOptions): FormDefinition {\n const errors = issues(input, { suggest });\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 const source = initialValues ?? {};\n for (const key of Object.keys(source)) {\n if (key !== '__proto__') values[key] = source[key];\n }\n return values;\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 const seen = Object.keys(checked).filter((key) => checked[key] !== undefined).map((key) => [key, engine.values[key]] as const);\n return () => activePath(engine) !== path || seen.some(([key, value]) => !Object.is(engine.values[key], value));\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 { FieldValidation, FormField } from '../types';\nimport { isBlank } from '../visibility';\nimport { getDefaultMessage } from './default-messages';\nimport { BOOLEAN_TYPES, clientTypeError, trimValue } 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.includes(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 input: unknown,\n allValues: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): string | null {\n const value = trimValue(field, input);\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 { trimValue } from '../validation/type-checks';\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.activeField(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 const values = { ...engine.visibility.conditionValues(engine.values) };\n for (const key of Object.keys(values)) {\n const field = engine.visibility.activeField(key, engine.values);\n if (field) values[key] = trimValue(field, values[key]);\n }\n return withoutSkipped(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 function createActivePath(definition: FormDefinition) {\n let source: Record<string, unknown> | null = null;\n let steps: FormStep[] = [];\n let active: Record<string, unknown> = {};\n const refresh = (values: Record<string, unknown>) => {\n if (source === values) return;\n source = values;\n steps = activeSteps(definition, values);\n const result: Record<string, unknown> = {};\n const groups = definition.steps?.length ? steps : [{ fields: definition.fields ?? [] }];\n for (const step of groups) Object.assign(result, stepValues(step, values, result));\n active = result;\n };\n return {\n invalidate(): void { source = null; },\n steps(values: Record<string, unknown>): FormStep[] { refresh(values); return steps; },\n values(values: Record<string, unknown>): Record<string, unknown> { refresh(values); return active; },\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\ntype Listener = () => void;\n\nfunction listen(listeners: Set<Listener>, listener: Listener): () => void {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\n\nexport function createSubscriptions() {\n let version = 0;\n let structureVersion = 0;\n const listeners = new Set<Listener>();\n const structureListeners = new Set<Listener>();\n const fieldVersions = new Map<string, number>();\n const fieldListeners = new Map<string, Set<Listener>>();\n\n return {\n subscribe: (listener: Listener) => listen(listeners, listener),\n getSnapshot: () => version,\n subscribeStructure: (listener: Listener) => listen(structureListeners, listener),\n getStructureSnapshot: () => structureVersion,\n getFieldSnapshot: (key: string) => fieldVersions.get(key) ?? 0,\n\n subscribeField(key: string, listener: Listener): () => void {\n const set = fieldListeners.get(key) ?? new Set();\n set.add(listener);\n fieldListeners.set(key, set);\n return () => {\n set.delete(listener);\n if (set.size === 0) fieldListeners.delete(key);\n };\n },\n\n notify({ fieldKeys = [], structureChanged = false }: NotifyOptions = {}): void {\n for (const key of new Set(fieldKeys)) {\n fieldVersions.set(key, (fieldVersions.get(key) ?? 0) + 1);\n for (const listener of fieldListeners.get(key) ?? []) listener();\n }\n if (structureChanged) {\n structureVersion++;\n for (const listener of structureListeners) listener();\n }\n version++;\n for (const listener of listeners) listener();\n },\n };\n}\n","import { checkDefinition, FormDefinitionError, type DefinitionIssue } from '../definition-validation';\nimport { definitionErrors } from '../definition-validation/check-definition';\nimport { isError } from '../definition-validation/issues';\nimport type { FormDefinition } from '../types';\nimport type { FormEngineOptions } from './engine-options';\n\nfunction developmentIssues(definition: FormDefinition, validators: Record<string, unknown>): DefinitionIssue[] | undefined {\n try {\n if (process.env.NODE_ENV !== 'production') return checkDefinition(definition, { validators });\n } catch (error) {\n if (!(error instanceof ReferenceError)) throw error;\n }\n return undefined;\n}\n\nexport function assertDefinition(definition: FormDefinition, options: FormEngineOptions, validators: Record<string, unknown>): void {\n const issues = developmentIssues(definition, validators) ?? definitionErrors(definition);\n const errors = issues.filter(isError);\n if (errors.length) throw new FormDefinitionError(errors);\n const warn = options.onWarning ?? ((issue: DefinitionIssue) => console.warn(`[formhaus] ${issue.message}`));\n for (const issue of issues) warn(issue);\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 { createActivePath } 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\ntype Values = Record<string, unknown>;\n\nexport type VisibilityState = ReturnType<typeof createVisibility>;\n\nexport function createVisibility(definition: FormDefinition) {\n const allFields = getAllFields(definition);\n const fieldsByKey = new Map<string, FormField[]>();\n const routeFields = new Set<string>();\n const path = createActivePath(definition);\n const fieldDependents = new Map<string, Set<FormField>>();\n const stepDependents = new Map<string, Set<FormStep>>();\n const stepOfField = new Map<FormField, FormStep>();\n let visibilityDirty = true;\n let canGoNextDirty = true;\n const cache: VisibilityCache = { visibleSteps: [], currentStep: null, visibleFields: [], canGoNext: false };\n\n for (const field of allFields) {\n fieldsByKey.set(field.key, [...(fieldsByKey.get(field.key) ?? []), field]);\n indexConditions(field, fieldDependents);\n }\n for (const step of definition.steps ?? []) {\n for (const field of step.fields) stepOfField.set(field, step);\n indexConditions(step, stepDependents);\n for (const route of step.routes ?? []) for (const key of conditionFields(route)) routeFields.add(key);\n }\n\n const isMultiStep = () => (definition.steps ?? []).length > 0;\n const visible = (source: FormField | FormStep, values: Values) => isVisible(source, path.values(values));\n const onPath = (field: FormField, values: Values) => {\n const step = stepOfField.get(field);\n return !step || path.steps(values).includes(step);\n };\n\n function state(values: Values, stepIndex: number): VisibilityCache {\n if (!visibilityDirty) return cache;\n visibilityDirty = false;\n if (!isMultiStep()) {\n cache.visibleSteps = [];\n cache.currentStep = null;\n cache.visibleFields = (definition.fields ?? []).filter((field) => visible(field, values));\n return cache;\n }\n const steps = cache.visibleSteps = path.steps(values);\n const current = cache.currentStep = steps[stepIndex] ?? steps[steps.length - 1] ?? null;\n cache.visibleFields = current ? current.fields.filter((field) => visible(field, values)) : [];\n return cache;\n }\n\n return {\n allFields,\n conditionValues: path.values,\n state,\n\n markChanged(structureChanged: boolean, valuesChanged: boolean): void {\n if (structureChanged || valuesChanged) path.invalidate();\n if (structureChanged) visibilityDirty = true;\n if (structureChanged || valuesChanged) canGoNextDirty = true;\n },\n\n getCanGoNext(values: Values, stepIndex: number, validators: Record<string, ValidatorFn>): boolean {\n const step = state(values, stepIndex).currentStep;\n if (!canGoNextDirty) return cache.canGoNext;\n canGoNextDirty = false;\n const errors = step ? validateStep(step, path.values(values), validators) : {};\n return cache.canGoNext = isMultiStep() && Object.keys(errors).length === 0;\n },\n\n findStepIndex(fieldKey: string, values: Values, stepIndex: number): number | null {\n const target = state(values, stepIndex).visibleSteps.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 routeFields.has(key) || fieldDependents.has(key) || stepDependents.has(key) || clearedFields.size > 0;\n },\n\n activeField(key: string, values: Values): FormField | undefined {\n return fieldsByKey.get(key)?.find((field) => onPath(field, values) && visible(field, values));\n },\n\n reconcileHidden(values: Values, errors: Record<string, string>): Set<string> {\n path.invalidate();\n const queue = [...new Set([...fieldDependents.keys(), ...stepDependents.keys()])];\n const queued = new Set(queue);\n const cleared = new Set<string>();\n const held = (key: string) => values[key] !== undefined || errors[key] !== undefined;\n const clear = (key: string) => {\n delete values[key];\n delete errors[key];\n path.invalidate();\n cleared.add(key);\n if (queued.has(key)) return;\n queued.add(key);\n queue.push(key);\n };\n for (let index = 0; index < queue.length; index++) {\n const key = queue[index];\n queued.delete(key);\n for (const field of fieldDependents.get(key) ?? []) {\n if (onPath(field, values) && !visible(field, values) && held(field.key)) clear(field.key);\n }\n for (const step of stepDependents.get(key) ?? []) {\n if (!visible(step, values)) for (const field of step.fields) if (held(field.key)) clear(field.key);\n }\n }\n return cleared;\n },\n };\n}\n","import 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 { createSubscriptions, 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 { assertDefinition } from './warnings';\nimport { createVisibility, type 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 = createSubscriptions();\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 assertDefinition(definition, this.lifecycle, this.validators);\n this.visibility = createVisibility(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.view.visibleSteps;\n }\n\n get currentStep(): FormStep | null {\n return this.view.currentStep;\n }\n\n get visibleFields(): FormField[] {\n return this.view.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.reconcileHidden(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 view() {\n return this.visibility.state(this.state.values, this.currentStepIndex);\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 { 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 { createVisibility } from '../engine/visibility-state';\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\ninterface ActiveValues {\n values: Record<string, unknown>;\n active: Map<string, FormField>;\n}\n\nfunction activeValues(definition: FormDefinition, fields: FormField[], input: unknown): ActiveValues {\n const source = input !== null && typeof input === 'object' && !Array.isArray(input) ? input as Record<string, unknown> : {};\n const visibility = createVisibility(definition);\n const keys = [...new Set(fields.map(({ key }) => key))].filter((key) => hasOwn(source, key));\n let result: ActiveValues = { values: {}, active: new Map() };\n for (let round = 0; round <= fields.length; round++) {\n const values: Record<string, unknown> = {};\n for (const key of keys) values[key] = normalizeValue(result.active.get(key) ?? fields.find((field) => field.key === key)!, source[key]);\n const active = new Map<string, FormField>();\n for (const key of keys) {\n const field = visibility.activeField(key, values);\n if (field) active.set(key, field);\n }\n const settled = keys.every((key) => active.get(key) === result.active.get(key));\n result = { values, active };\n if (settled) break;\n }\n return result;\n}\n\nfunction typeErrors({ values, active }: ActiveValues): Map<string, string> {\n const errors = new Map<string, string>();\n for (const [key, field] of active) {\n const error = typeError(field, values[key]);\n if (error) errors.set(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 resolved = activeValues(definition, fields, values);\n const invalid = typeErrors(resolved);\n const engineOptions = { validators: ignoredValidators(fields, options.validators), onWarning: () => {} };\n const engine = new FormEngine(withoutRules(definition, invalid), resolved.values, 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"]}