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