@formhaus/core 0.13.0 → 0.13.1
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/chunk-35SAVPYL.js +2 -0
- package/dist/chunk-35SAVPYL.js.map +1 -0
- package/dist/chunk-76YV4J3Q.js +3 -0
- package/dist/chunk-76YV4J3Q.js.map +1 -0
- package/dist/chunk-PBTYUSZR.js +2 -0
- package/dist/chunk-PBTYUSZR.js.map +1 -0
- package/dist/{chunk-FQ3GLJTI.js → chunk-RN5GQHKN.js} +3 -3
- package/dist/{chunk-FQ3GLJTI.js.map → chunk-RN5GQHKN.js.map} +1 -1
- package/dist/{chunk-UFYD5LVW.js → chunk-YTUVSJUF.js} +3 -3
- package/dist/{chunk-UFYD5LVW.js.map → chunk-YTUVSJUF.js.map} +1 -1
- package/dist/cloud.js +1 -1
- package/dist/i18n.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal.d.ts +18 -3
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/{runtime-BzYG6cit.d.ts → runtime-BN2PuKD7.d.ts} +1 -0
- 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/fixtures/submissions/choices.json +3 -8
- package/fixtures/submissions/single-step.json +3 -4
- package/package.json +1 -1
- package/dist/chunk-4IHQINIH.js +0 -3
- package/dist/chunk-4IHQINIH.js.map +0 -1
- package/dist/chunk-5KV7BDCS.js +0 -2
- package/dist/chunk-5KV7BDCS.js.map +0 -1
- package/dist/chunk-Y33LPJXU.js +0 -2
- package/dist/chunk-Y33LPJXU.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/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","DEFAULT_MESSAGES","formatText","template","params","resolveText","defaults","sources","messageResolver","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","fail","_c","_d","multiselectError","stringError","formatError","primitiveError","typeError","resolve","clientTypeError","LIST_OPERATORS","COMPARISONS","STRING_TYPES","expectedType","valueIssue","operator","mismatch","result","operands","expected","wrong","missing","conditionWarnings","optionIssues","ruleWarnings","rule","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","message","patternError","sizeError","unit","validateFieldValue","allValues","messages","_e","matchMessage","typeIssue","validateStep","validateFields","applyValidationErrors","server","formErrors","state","previousErrors","bound","general","structureChanged","moveToFirstError","targetIndex","clearError","kept","dropServerErrors","clearResolvedMatchErrors","cleared","getValidationValues","pruneOffPathErrors","pathFields","pruned","getSubmitValues","withoutSkipped","validateForm","navigate","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","isRejection","applyRejection","sent","submitForm","submit","keepSkipped","lifecycle","dispatched","epoch","operation","inputsChanged","stale","skippedSteps","serverErrors","rejected","hasStepErrors","moveTo","skipStep","changeStep","outcome","skippedValues","edited","submitted","skipped","direction","reason","skipping","validating","validate","committed","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","stepIndex","current","valuesChanged","clearedFields","queued","held","clear","FormEngine","total","previousSteps","valueChanged","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 | 'i18n-unbound-slot'\n | 'unknown-i18n-slot'\n | 'unknown-message-key'\n | 'unknown-label-key'\n | 'i18n-unsafe-identifier';\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' | 'requirement' | '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 requirement: [(value) => ['boolean', 'string'].includes(typeof value), 'true, false or a message string'],\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 required: 'requirement', minLength: 'number', maxLength: 'number', min: 'number', max: 'number', pattern: 'string', matchField: 'string', validator: 'string',\n minLengthMessage: 'string', maxLengthMessage: 'string', minMessage: 'string', maxMessage: 'string', patternMessage: 'string', matchFieldMessage: '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","import type { FormField, MessageCatalog, MessageKey } from '../types';\n\nexport type { MessageCatalog, MessageKey };\nexport type MessageParams = Record<string, unknown>;\nexport type MessageFn = (key: MessageKey, params: MessageParams, field: FormField) => string | undefined;\nexport type MessageSource = MessageCatalog | MessageFn;\nexport type ResolveMessage = (key: MessageKey, params: MessageParams, field: FormField) => string;\n\nexport const DEFAULT_MESSAGES: Readonly<Record<MessageKey, string>> = Object.freeze({\n required: 'This field is required',\n minLength: 'Must be at least {min} characters',\n maxLength: 'Must be at most {max} characters',\n minItems: 'Must be at least {min} items',\n maxItems: 'Must be at most {max} items',\n min: 'Must be at least {min}',\n max: 'Must be at most {max}',\n pattern: 'Invalid format',\n matchField: 'Fields must match',\n email: 'Enter a valid email',\n number: 'Enter a number',\n date: 'Enter a valid date',\n datetime: 'Enter a valid date and time',\n option: 'Select one of the available options',\n options: 'Must be a list of available options',\n boolean: 'Must be true or false',\n string: 'Must be text',\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 formatText(template: string, params: Record<string, unknown>): string {\n return template.replace(/\\{(\\w+)\\}/g, (match, name: string) => (Object.prototype.hasOwnProperty.call(params, name) ? String(params[name]) : match));\n}\n\ntype TextSource<K extends string> = Partial<Record<K, string>> | ((key: K, params: MessageParams, ...context: never[]) => string | undefined);\n\nexport function resolveText<K extends string>(defaults: Record<K, string>, key: K, params: MessageParams, sources: (TextSource<K> | undefined)[], ...context: unknown[]): string {\n for (const source of sources) {\n const text = typeof source === 'function' ? (source as (...args: unknown[]) => unknown)(key, params, ...context) : source?.[key];\n if (text && typeof text === 'string') return typeof source === 'function' ? text : formatText(text, params);\n }\n return formatText(defaults[key], params);\n}\n\nexport function messageResolver(...sources: (MessageSource | undefined)[]): ResolveMessage {\n return (key, params, field) => resolveText(DEFAULT_MESSAGES, key, params, sources, field);\n}\n\nexport function getDefaultMessage(rule: ValidationRule | MessageKey, params: Record<string, unknown> = {}): string {\n const template = Object.prototype.hasOwnProperty.call(DEFAULT_MESSAGES, rule) ? DEFAULT_MESSAGES[rule] : DEFAULT_MESSAGES.value;\n const custom = params.unit !== undefined && (rule === 'minLength' || rule === 'maxLength');\n return formatText(custom ? template.replace('characters', '{unit}') : template, params);\n}\n","import type { FormField } from '../types';\nimport { type MessageKey, messageResolver, type ResolveMessage } 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, MessageKey, number]>([\n ['email', [EMAIL, 'email', MAX_EMAIL_LENGTH]],\n ['date', [DATE_ONLY, 'date', MAX_STRING_LENGTH]],\n ['datetime', [DATE_TIME, 'datetime', MAX_STRING_LENGTH]],\n]);\n\ntype Fail = (key: MessageKey, params?: Record<string, unknown>) => string;\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, fail: Fail): 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 ?? fail('maxLength', { max });\n}\n\nfunction multiselectError(field: FormField, value: unknown, fail: Fail): string | null {\n if (!Array.isArray(value)) return fail('options');\n if (value.length > (staticOptions(field)?.length ?? MAX_ITEMS)) return fail('option');\n const valid = value.every((item) => typeof item === 'string' && item.length <= MAX_STRING_LENGTH && isOption(field, item));\n return valid ? null : fail('option');\n}\n\nfunction stringError(field: FormField, value: unknown, key: MessageKey, fail: Fail): string | null {\n return typeof value === 'string' ? lengthError(field, value, fail) : fail(key);\n}\n\nfunction formatError(field: FormField, value: unknown, [format, key, max]: [RegExp, MessageKey, number], fail: Fail): string | null {\n if (typeof value !== 'string') return fail(key);\n return lengthError(field, value, fail) ?? (value.length <= max && format.test(value) && (format === EMAIL || isCalendarDate(value)) ? null : fail(key));\n}\n\nfunction primitiveError(field: FormField, value: unknown, fail: Fail): string | null {\n if (typeof value === 'boolean' || (typeof value === 'number' && Number.isFinite(value))) return null;\n return stringError(field, value, 'value', fail);\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, resolve: ResolveMessage = messageResolver()): string | null {\n if (isBlank(field, value)) return null;\n const fail: Fail = (key, params = {}) => resolve(key, params, field);\n if (BOOLEAN_TYPES.includes(field.type)) return typeof value === 'boolean' ? null : fail('boolean');\n if (field.type === 'number') return typeof value === 'number' && Number.isFinite(value) ? null : fail('number');\n if (field.type === 'multiselect') return multiselectError(field, value, fail);\n if (field.type === 'file') return stringError(field, value, 'file', fail);\n const format = FORMATS.get(field.type);\n if (format) return formatError(field, value, format, fail);\n if (field.type === 'select' || field.type === 'radio') return stringError(field, value, 'option', fail) ?? (isOption(field, value) ? null : fail('option'));\n return TEXT_TYPES.has(field.type) ? stringError(field, value, 'string', fail) : primitiveError(field, value, fail);\n}\n\nexport function typeMessageKeys(field: FormField): MessageKey[] {\n if (BOOLEAN_TYPES.includes(field.type)) return ['boolean'];\n if (field.type === 'number') return ['number'];\n if (field.type === 'multiselect') return ['options', 'option'];\n const format = FORMATS.get(field.type)?.[1];\n if (format) return [format, 'maxLength'];\n if (field.type === 'file') return ['file', 'maxLength'];\n if (field.type === 'select' || field.type === 'radio') return ['option', 'maxLength'];\n return [TEXT_TYPES.has(field.type) ? 'string' : 'value', 'maxLength'];\n}\n\nexport function clientTypeError(field: FormField, value: unknown, resolve?: ResolveMessage): string | null {\n if (field.type === 'file' || !BUILT_IN_TYPES.includes(field.type)) return null;\n return typeError(field, value, resolve);\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 { messageResolver, type MessageSource, type ResolveMessage } 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 message: (key: 'min' | 'max', params: Record<string, number>) => 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`] ?? message('min', { min });\n if (max !== undefined && size > max) return rules[`max${rule}Message`] ?? message('max', { max });\n return undefined;\n}\n\nfunction patternError(value: unknown, rules: FieldValidation, message: () => string): string | undefined {\n if (rules.pattern === undefined) return undefined;\n try {\n return new RegExp(rules.pattern).test(String(value)) ? undefined : rules.patternMessage ?? message();\n } catch {\n return undefined;\n }\n}\n\nfunction sizeError(value: unknown, rules: FieldValidation, field: FormField, resolve: ResolveMessage): string | undefined {\n if (typeof value === 'number') return boundError(value, '', rules, (key, params) => resolve(key, params, field));\n if (typeof value !== 'string' && !Array.isArray(value)) return undefined;\n const unit = Array.isArray(value) ? 'Items' : 'Length';\n return boundError(value.length, 'Length', rules, (key, params) => resolve(`${key}${unit}`, params, field));\n}\n\nexport function validateFieldValue(\n field: FormField,\n input: unknown,\n allValues: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n messages?: MessageSource,\n): string | null {\n const value = trimValue(field, input);\n const rules = field.validation ?? {};\n const resolve = messageResolver(messages);\n const matchMessage = () => rules.matchFieldMessage ?? resolve('matchField', {}, field);\n if (isEmpty(value, field)) {\n if (rules.required) return typeof rules.required === 'string' ? rules.required : resolve('required', {}, field);\n return rules.matchField !== undefined && !isBlank(allValues[rules.matchField]) ? matchMessage() : null;\n }\n const typeIssue = clientTypeError(field, value, resolve);\n if (typeIssue) return typeIssue;\n return (sizeError(value, rules, field, resolve)\n ?? patternError(value, rules, () => resolve('pattern', {}, field))\n ?? (rules.matchField !== undefined && value !== allValues[rules.matchField] ? matchMessage() : undefined)\n ?? (rules.validator ? validators?.[rules.validator]?.(value, allValues) : undefined)) || null;\n}\n","import type { FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport type { MessageSource } from './default-messages';\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 messages?: MessageSource,\n): Record<string, string> {\n return validateFields(step.fields, values, validators, messages);\n}\n\nexport function validateFields(\n fields: FormField[],\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n messages?: MessageSource,\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, messages);\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>, server = false, formErrors: string[] = []): void {\n const { state } = engine;\n const previousErrors = engine.errors;\n const bound: Record<string, string> = {};\n const general = [...formErrors];\n for (const [key, message] of Object.entries(errors)) {\n if (engine.visibility.activeField(key, engine.values)) bound[key] = message;\n else general.push(message);\n }\n if (server) {\n state.serverErrors = bound;\n state.serverFormErrors = general;\n }\n state.errors = { ...state.serverErrors, ...bound };\n state.topLevelErrors = server ? general : [...state.serverFormErrors, ...general];\n const structureChanged = server && moveToFirstError(engine, bound);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors), structureChanged });\n}\n\nfunction moveToFirstError(engine: EngineInternals, errors: Record<string, string>): boolean {\n const targetIndex = engine.visibleSteps.findIndex((step) => step.fields.some((field) => errors[field.key] !== undefined));\n if (targetIndex < 0 || targetIndex === engine.currentStepIndex) return false;\n engine.state.currentStepIndex = targetIndex;\n return true;\n}\n\nexport function clearError(engine: EngineInternals, key: string, server = false): void {\n if (server) delete engine.state.serverErrors[key];\n const kept = engine.state.serverErrors[key];\n if (kept === undefined) delete engine.errors[key];\n else engine.errors[key] = kept;\n}\n\nexport function dropServerErrors(engine: EngineInternals, keys: Iterable<string>): void {\n for (const key of keys) delete engine.state.serverErrors[key];\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, engine.messages)) continue;\n clearError(engine, 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 dropServerErrors(engine, pruned);\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, engine.messages));\n }\n } else {\n Object.assign(\n errors,\n validateFields(engine.definition.fields ?? [], getValidationValues(engine), engine.validators, engine.messages),\n );\n }\n engine.state.errors = { ...engine.state.serverErrors, ...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, engine.messages);\n if (error) engine.errors[key] = error;\n else clearError(engine, key, true);\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.serverErrors = {};\n engine.state.serverFormErrors = [];\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';\nimport { trimValue } from '../validation/type-checks';\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] = trimValue(field, 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] = trimValue(field, 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 { dropServerErrors, 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 dropServerErrors(engine, fieldKeys);\n engine.skipped.set(step.id, fieldKeys);\n dropServerErrors(engine, 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 { SubmitHandler, SubmitResult } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\nimport { applyValidationErrors, getSubmitValues, validateForm } from './validation-state';\nimport { includeCurrentStep } from './step-skip';\n\ntype Rejection = Extract<SubmitResult, { ok: false }>;\n\nexport function isRejection(result: unknown): result is Rejection {\n return !!result && Object.getPrototypeOf(result) === Object.prototype && (result as SubmitResult).ok === false;\n}\n\nfunction applyRejection(engine: EngineInternals, result: Rejection, sent: Record<string, unknown>): void {\n const errors: Record<string, string> = {};\n const source = typeof result.errors === 'object' && result.errors ? result.errors : {};\n for (const [key, value] of Object.entries(source)) {\n const message: unknown = Array.isArray(value) ? value.join(' ') : value;\n if (typeof message === 'string' && Object.is(engine.values[key], sent[key])) errors[key] = message;\n }\n const formErrors = Array.isArray(result.formErrors) ? result.formErrors.filter((message) => typeof message === 'string') : [];\n applyValidationErrors(engine, errors, true, formErrors);\n}\n\nexport async function submitForm(engine: EngineInternals, submit: SubmitHandler, 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 const sent = { ...engine.values };\n const serverErrors = engine.state.serverErrors;\n const result = await submit(values, [...skippedSteps]);\n const rejected = isRejection(result);\n if (operation !== engine.operationEpoch) return !rejected;\n if (rejected) {\n applyRejection(engine, result, sent);\n return false;\n }\n if (engine.state.serverErrors === serverErrors) applyValidationErrors(engine, {}, 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 { isRejection, submitForm } from './submission';\nimport type { StepChangeContext, SubmitHandler } 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, engine.messages);\n if (Object.keys(errors).length === 0) return false;\n const previousErrors = engine.errors;\n engine.state.errors = { ...previousErrors, ...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?: SubmitHandler): 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 const serverErrors = { ...engine.state.serverErrors };\n let outcome: boolean | undefined;\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 const operation = engine.operationEpoch;\n const result = await submit(submitted, skipped);\n const rejected = isRejection(result);\n if (!rejected || operation === engine.operationEpoch) outcome = rejected;\n return result;\n }, true);\n } finally {\n if (outcome !== false && engine.values === skippedValues && !edited()) {\n engine.state.values = values;\n if (outcome === undefined) engine.state.serverErrors = serverErrors;\n engine.state.errors = { ...(outcome ? {} : 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 { messageResolver, type ResolveMessage } from '../validation/default-messages';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport type { FormEngineOptions, StepValidateFn, SubmitHandler } 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 clearError,\n clearResolvedMatchErrors,\n dropServerErrors,\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 readonly messages: ResolveMessage;\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.messages = messageResolver(options?.messages, definition.messages);\n this.visibility = createVisibility(definition);\n const values = createValues(this.visibility.allFields, initialValues as Record<string, unknown> | undefined);\n this.state = { values, errors: {}, topLevelErrors: [], serverErrors: {}, serverFormErrors: [], 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 stepErrors(): Record<string, string[]> {\n const result: Record<string, string[]> = {};\n for (const step of this.visibleSteps) {\n const keys = step.fields.map((field) => field.key).filter((key) => this.errors[key] !== undefined);\n if (keys.length > 0) result[step.id] = keys;\n }\n return result;\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 previousError = errors[key];\n values[key] = value;\n clearError(this.internals, key, valueChanged);\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 dropServerErrors(this.internals, clearedFields);\n const revalidated = clearResolvedMatchErrors(this.internals, key);\n const changedFields = new Set([...clearedFields, ...revalidated]);\n if (valueChanged || previousError !== errors[key]) 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?: SubmitHandler): Promise<boolean> { return skipStep(this.internals, submit); }\n submit(handler: SubmitHandler): 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 { MessageSource, ValidatorFn } from '../validation';\nimport { messageResolver, type ResolveMessage } from '../validation/default-messages';\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 messages?: MessageSource;\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, resolve: ResolveMessage): Map<string, string> {\n const errors = new Map<string, string>();\n for (const [key, field] of active) {\n const error = typeError(field, values[key], resolve);\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 messages = messageResolver(options.messages, definition.messages);\n const invalid = typeErrors(resolved, messages);\n const engineOptions = { validators: ignoredValidators(fields, options.validators), messages, 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"]}
|
|
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","DEFAULT_MESSAGES","formatText","template","params","resolveText","defaults","sources","messageResolver","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","fail","_c","_d","multiselectError","stringError","formatError","primitiveError","typeError","resolve","clientTypeError","LIST_OPERATORS","COMPARISONS","STRING_TYPES","expectedType","valueIssue","operator","mismatch","result","operands","expected","wrong","missing","conditionWarnings","optionIssues","ruleWarnings","rule","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","watchValues","isVisible","matches","isEmpty","boundError","size","message","patternError","sizeError","unit","validateFieldValue","allValues","messages","_e","matchMessage","typeIssue","validateStep","validateFields","applyValidationErrors","server","formErrors","state","previousErrors","bound","general","structureChanged","moveToFirstError","targetIndex","clearError","kept","dropServerErrors","clearResolvedMatchErrors","cleared","getValidationValues","pruneOffPathErrors","pathFields","pruned","getSubmitValues","withoutSkipped","validateForm","navigate","validateOne","previousError","fieldKeys","resetEngine","previousValues","loadingFields","changedValues","changedFields","activeSteps","walkPath","available","addStepValues","reconcileStepIndex","previousStep","preserved","nextIds","before","predecessor","saved","had","createActivePath","active","refresh","resetValues","skipTarget","skipCurrentStep","includeCurrentStep","skipStepAt","isRejection","applyRejection","sent","submitForm","submit","keepSkipped","lifecycle","dispatched","epoch","operation","inputsChanged","stale","skippedSteps","serverErrors","rejected","hasStepErrors","moveTo","skipStep","changeStep","outcome","skippedValues","edited","submitting","submitted","skipped","current","direction","reason","skipping","validating","validate","committed","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","stepIndex","valuesChanged","clearedFields","queued","held","clear","FormEngine","total","previousSteps","valueChanged","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 | 'i18n-unbound-slot'\n | 'unknown-i18n-slot'\n | 'unknown-message-key'\n | 'unknown-label-key'\n | 'i18n-unsafe-identifier';\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' | 'requirement' | '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 requirement: [(value) => ['boolean', 'string'].includes(typeof value), 'true, false or a message string'],\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 required: 'requirement', minLength: 'number', maxLength: 'number', min: 'number', max: 'number', pattern: 'string', matchField: 'string', validator: 'string',\n minLengthMessage: 'string', maxLengthMessage: 'string', minMessage: 'string', maxMessage: 'string', patternMessage: 'string', matchFieldMessage: '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","import type { FormField, MessageCatalog, MessageKey } from '../types';\n\nexport type { MessageCatalog, MessageKey };\nexport type MessageParams = Record<string, unknown>;\nexport type MessageFn = (key: MessageKey, params: MessageParams, field: FormField) => string | undefined;\nexport type MessageSource = MessageCatalog | MessageFn;\nexport type ResolveMessage = (key: MessageKey, params: MessageParams, field: FormField) => string;\n\nexport const DEFAULT_MESSAGES: Readonly<Record<MessageKey, string>> = Object.freeze({\n required: 'This field is required',\n minLength: 'Must be at least {min} characters',\n maxLength: 'Must be at most {max} characters',\n minItems: 'Must be at least {min} items',\n maxItems: 'Must be at most {max} items',\n min: 'Must be at least {min}',\n max: 'Must be at most {max}',\n pattern: 'Invalid format',\n matchField: 'Fields must match',\n email: 'Enter a valid email',\n number: 'Enter a number',\n date: 'Enter a valid date',\n datetime: 'Enter a valid date and time',\n option: 'Select one of the available options',\n options: 'Must be a list of available options',\n boolean: 'Must be true or false',\n string: 'Must be text',\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 formatText(template: string, params: Record<string, unknown>): string {\n return template.replace(/\\{(\\w+)\\}/g, (match, name: string) => (Object.prototype.hasOwnProperty.call(params, name) ? String(params[name]) : match));\n}\n\ntype TextSource<K extends string> = Partial<Record<K, string>> | ((key: K, params: MessageParams, ...context: never[]) => string | undefined);\n\nexport function resolveText<K extends string>(defaults: Record<K, string>, key: K, params: MessageParams, sources: (TextSource<K> | undefined)[], ...context: unknown[]): string {\n for (const source of sources) {\n const text = typeof source === 'function' ? (source as (...args: unknown[]) => unknown)(key, params, ...context) : source?.[key];\n if (text && typeof text === 'string') return typeof source === 'function' ? text : formatText(text, params);\n }\n return formatText(defaults[key], params);\n}\n\nexport function messageResolver(...sources: (MessageSource | undefined)[]): ResolveMessage {\n return (key, params, field) => resolveText(DEFAULT_MESSAGES, key, params, sources, field);\n}\n\nexport function getDefaultMessage(rule: ValidationRule | MessageKey, params: Record<string, unknown> = {}): string {\n const template = Object.prototype.hasOwnProperty.call(DEFAULT_MESSAGES, rule) ? DEFAULT_MESSAGES[rule] : DEFAULT_MESSAGES.value;\n const custom = params.unit !== undefined && (rule === 'minLength' || rule === 'maxLength');\n return formatText(custom ? template.replace('characters', '{unit}') : template, params);\n}\n","import type { FormField } from '../types';\nimport { type MessageKey, messageResolver, type ResolveMessage } 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, MessageKey, number]>([\n ['email', [EMAIL, 'email', MAX_EMAIL_LENGTH]],\n ['date', [DATE_ONLY, 'date', MAX_STRING_LENGTH]],\n ['datetime', [DATE_TIME, 'datetime', MAX_STRING_LENGTH]],\n]);\n\ntype Fail = (key: MessageKey, params?: Record<string, unknown>) => string;\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 if (Array.isArray(input) && input.length === 0 && field.type !== 'multiselect' && BUILT_IN_TYPES.includes(field.type)) return undefined;\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, fail: Fail): 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 ?? fail('maxLength', { max });\n}\n\nfunction multiselectError(field: FormField, value: unknown, fail: Fail): string | null {\n if (!Array.isArray(value)) return fail('options');\n if (value.length > (staticOptions(field)?.length ?? MAX_ITEMS)) return fail('option');\n const valid = value.every((item) => typeof item === 'string' && item.length <= MAX_STRING_LENGTH && isOption(field, item));\n return valid ? null : fail('option');\n}\n\nfunction stringError(field: FormField, value: unknown, key: MessageKey, fail: Fail): string | null {\n return typeof value === 'string' ? lengthError(field, value, fail) : fail(key);\n}\n\nfunction formatError(field: FormField, value: unknown, [format, key, max]: [RegExp, MessageKey, number], fail: Fail): string | null {\n if (typeof value !== 'string') return fail(key);\n return lengthError(field, value, fail) ?? (value.length <= max && format.test(value) && (format === EMAIL || isCalendarDate(value)) ? null : fail(key));\n}\n\nfunction primitiveError(field: FormField, value: unknown, fail: Fail): string | null {\n if (typeof value === 'boolean' || (typeof value === 'number' && Number.isFinite(value))) return null;\n return stringError(field, value, 'value', fail);\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, resolve: ResolveMessage = messageResolver()): string | null {\n if (isBlank(field, value)) return null;\n const fail: Fail = (key, params = {}) => resolve(key, params, field);\n if (BOOLEAN_TYPES.includes(field.type)) return typeof value === 'boolean' ? null : fail('boolean');\n if (field.type === 'number') return typeof value === 'number' && Number.isFinite(value) ? null : fail('number');\n if (field.type === 'multiselect') return multiselectError(field, value, fail);\n if (field.type === 'file') return stringError(field, value, 'file', fail);\n const format = FORMATS.get(field.type);\n if (format) return formatError(field, value, format, fail);\n if (field.type === 'select' || field.type === 'radio') return stringError(field, value, 'option', fail) ?? (isOption(field, value) ? null : fail('option'));\n return TEXT_TYPES.has(field.type) ? stringError(field, value, 'string', fail) : primitiveError(field, value, fail);\n}\n\nexport function typeMessageKeys(field: FormField): MessageKey[] {\n if (BOOLEAN_TYPES.includes(field.type)) return ['boolean'];\n if (field.type === 'number') return ['number'];\n if (field.type === 'multiselect') return ['options', 'option'];\n const format = FORMATS.get(field.type)?.[1];\n if (format) return [format, 'maxLength'];\n if (field.type === 'file') return ['file', 'maxLength'];\n if (field.type === 'select' || field.type === 'radio') return ['option', 'maxLength'];\n return [TEXT_TYPES.has(field.type) ? 'string' : 'value', 'maxLength'];\n}\n\nexport function clientTypeError(field: FormField, value: unknown, resolve?: ResolveMessage): string | null {\n if (field.type === 'file' || !BUILT_IN_TYPES.includes(field.type)) return null;\n return typeError(field, value, resolve);\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 { getChangedKeys } from './engine-utils';\nimport 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\nexport function watchValues(engine: EngineInternals, values: Record<string, unknown>): () => Set<string> {\n const seen = { ...values };\n return () => getChangedKeys(seen, engine.values);\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 { messageResolver, type MessageSource, type ResolveMessage } 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 message: (key: 'min' | 'max', params: Record<string, number>) => 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`] ?? message('min', { min });\n if (max !== undefined && size > max) return rules[`max${rule}Message`] ?? message('max', { max });\n return undefined;\n}\n\nfunction patternError(value: unknown, rules: FieldValidation, message: () => string): string | undefined {\n if (rules.pattern === undefined) return undefined;\n try {\n return new RegExp(rules.pattern).test(String(value)) ? undefined : rules.patternMessage ?? message();\n } catch {\n return undefined;\n }\n}\n\nfunction sizeError(value: unknown, rules: FieldValidation, field: FormField, resolve: ResolveMessage): string | undefined {\n if (typeof value === 'number') return boundError(value, '', rules, (key, params) => resolve(key, params, field));\n if (typeof value !== 'string' && !Array.isArray(value)) return undefined;\n const unit = Array.isArray(value) ? 'Items' : 'Length';\n return boundError(value.length, 'Length', rules, (key, params) => resolve(`${key}${unit}`, params, field));\n}\n\nexport function validateFieldValue(\n field: FormField,\n input: unknown,\n allValues: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n messages?: MessageSource,\n): string | null {\n const value = trimValue(field, input);\n const rules = field.validation ?? {};\n const resolve = messageResolver(messages);\n const matchMessage = () => rules.matchFieldMessage ?? resolve('matchField', {}, field);\n if (isEmpty(value, field)) {\n if (rules.required) return typeof rules.required === 'string' ? rules.required : resolve('required', {}, field);\n return rules.matchField !== undefined && !isBlank(allValues[rules.matchField]) ? matchMessage() : null;\n }\n const typeIssue = clientTypeError(field, value, resolve);\n if (typeIssue) return typeIssue;\n return (sizeError(value, rules, field, resolve)\n ?? patternError(value, rules, () => resolve('pattern', {}, field))\n ?? (rules.matchField !== undefined && value !== allValues[rules.matchField] ? matchMessage() : undefined)\n ?? (rules.validator ? validators?.[rules.validator]?.(value, allValues) : undefined)) || null;\n}\n","import type { FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport type { MessageSource } from './default-messages';\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 messages?: MessageSource,\n): Record<string, string> {\n return validateFields(step.fields, values, validators, messages);\n}\n\nexport function validateFields(\n fields: FormField[],\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n messages?: MessageSource,\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, messages);\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>, server = false, formErrors: string[] = []): void {\n const { state } = engine;\n const previousErrors = engine.errors;\n const bound: Record<string, string> = {};\n const general = [...formErrors];\n for (const [key, message] of Object.entries(errors)) {\n if (engine.visibility.activeField(key, engine.values)) bound[key] = message;\n else general.push(message);\n }\n if (server) {\n state.serverErrors = bound;\n state.serverFormErrors = general;\n }\n state.errors = { ...state.serverErrors, ...bound };\n state.topLevelErrors = server ? general : [...state.serverFormErrors, ...general];\n const structureChanged = server && moveToFirstError(engine, bound);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors), structureChanged });\n}\n\nfunction moveToFirstError(engine: EngineInternals, errors: Record<string, string>): boolean {\n const targetIndex = engine.visibleSteps.findIndex((step) => step.fields.some((field) => errors[field.key] !== undefined));\n if (targetIndex < 0 || targetIndex === engine.currentStepIndex) return false;\n engine.state.currentStepIndex = targetIndex;\n return true;\n}\n\nexport function clearError(engine: EngineInternals, key: string, server = false): void {\n if (server) delete engine.state.serverErrors[key];\n const kept = engine.state.serverErrors[key];\n if (kept === undefined) delete engine.errors[key];\n else engine.errors[key] = kept;\n}\n\nexport function dropServerErrors(engine: EngineInternals, keys: Iterable<string>): void {\n for (const key of keys) delete engine.state.serverErrors[key];\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, engine.messages)) continue;\n clearError(engine, 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 dropServerErrors(engine, pruned);\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, engine.messages));\n }\n } else {\n Object.assign(\n errors,\n validateFields(engine.definition.fields ?? [], getValidationValues(engine), engine.validators, engine.messages),\n );\n }\n engine.state.errors = { ...engine.state.serverErrors, ...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, engine.messages);\n if (error) engine.errors[key] = error;\n else clearError(engine, key, true);\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.serverErrors = {};\n engine.state.serverFormErrors = [];\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';\nimport { trimValue } from '../validation/type-checks';\n\nexport function activeSteps(definition: FormDefinition, values: Record<string, unknown>): FormStep[] {\n return walkPath(definition, values).steps;\n}\n\nfunction walkPath(definition: FormDefinition, values: Record<string, unknown>) {\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 if (!steps.length) addStepValues({ fields: definition.fields ?? [] }, values, available);\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 addStepValues(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 { steps: result, values: available };\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 addStepValues(step: { fields: FormField[] }, values: Record<string, unknown>, target: Record<string, unknown>): void {\n const saved = step.fields.map(({ key }) => [key, Object.prototype.hasOwnProperty.call(target, key), target[key]] as const);\n for (const field of step.fields) target[field.key] = trimValue(field, values[field.key]);\n const shown = step.fields.filter((field) => isVisible(field, target) && values[field.key] !== undefined);\n for (const [key, had, value] of saved) {\n if (had) target[key] = value;\n else delete target[key];\n }\n for (const field of shown) target[field.key] = trimValue(field, values[field.key]);\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, values: active } = walkPath(definition, values));\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 { dropServerErrors, 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 dropServerErrors(engine, fieldKeys);\n engine.skipped.set(step.id, fieldKeys);\n dropServerErrors(engine, 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 { SubmitHandler, SubmitResult } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\nimport { applyValidationErrors, getSubmitValues, validateForm } from './validation-state';\nimport { includeCurrentStep } from './step-skip';\n\ntype Rejection = Extract<SubmitResult, { ok: false }>;\n\nexport function isRejection(result: unknown): result is Rejection {\n return !!result && Object.getPrototypeOf(result) === Object.prototype && (result as SubmitResult).ok === false;\n}\n\nfunction applyRejection(engine: EngineInternals, result: Rejection, sent: Record<string, unknown>): void {\n const errors: Record<string, string> = {};\n const source = typeof result.errors === 'object' && result.errors ? result.errors : {};\n for (const [key, value] of Object.entries(source)) {\n const message: unknown = Array.isArray(value) ? value.join(' ') : value;\n if (typeof message === 'string' && Object.is(engine.values[key], sent[key])) errors[key] = message;\n }\n const formErrors = Array.isArray(result.formErrors) ? result.formErrors.filter((message) => typeof message === 'string') : [];\n applyValidationErrors(engine, errors, true, formErrors);\n}\n\nexport async function submitForm(engine: EngineInternals, submit: SubmitHandler, 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.latestOperation = ++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 const sent = { ...engine.values };\n const serverErrors = engine.state.serverErrors;\n const result = await submit(values, [...skippedSteps]);\n const rejected = isRejection(result);\n if (operation !== engine.operationEpoch) return !rejected;\n if (rejected) {\n applyRejection(engine, result, sent);\n return false;\n }\n if (engine.state.serverErrors === serverErrors) applyValidationErrors(engine, {}, 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, watchValues } from './pending-inputs';\nimport { validateStep } from '../validation';\nimport { applyValidationErrors, dropServerErrors, getValidationValues, pruneOffPathErrors } from './validation-state';\nimport { includeCurrentStep, skipCurrentStep, skipTarget } from './step-skip';\nimport { reconcileStepIndex } from './step-routes';\nimport { isRejection, submitForm } from './submission';\nimport type { StepChangeContext, SubmitHandler } 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, engine.messages);\n if (Object.keys(errors).length === 0) return false;\n const previousErrors = engine.errors;\n engine.state.errors = { ...previousErrors, ...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?: SubmitHandler): 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 const serverErrors = { ...engine.state.serverErrors };\n let outcome: boolean | undefined;\n skipCurrentStep(engine);\n const skippedValues = engine.values;\n const edited = watchValues(engine, skippedValues);\n const submitting = submitForm(engine, async (submitted, skipped) => {\n const result = await submit(submitted, skipped);\n const rejected = isRejection(result);\n if (!rejected || operation === engine.operationEpoch) outcome = rejected;\n return result;\n }, true);\n const operation = engine.latestOperation;\n try {\n return await submitting;\n } finally {\n if (outcome !== false && operation === engine.latestOperation && engine.values === skippedValues) {\n const steps = engine.visibleSteps;\n const kept = edited();\n const current = engine.values;\n engine.state.values = { ...values };\n for (const key of kept) {\n delete engine.values[key];\n delete errors[key];\n delete serverErrors[key];\n if (key in current) engine.values[key] = current[key];\n }\n if (outcome === undefined) engine.state.serverErrors = serverErrors;\n engine.state.errors = { ...(outcome ? {} : errors), ...engine.errors };\n engine.skipped.delete(step.id);\n dropServerErrors(engine, engine.visibility.reconcileHidden(engine.values, engine.errors));\n engine.visibility.markChanged(true, true);\n engine.state.currentStepIndex = reconcileStepIndex(steps, engine.visibleSteps, engine.currentStepIndex);\n pruneOffPathErrors(engine);\n engine.notify({ fieldKeys: Object.keys({ ...values, ...current, ...errors }), 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.latestOperation = ++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) 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 { messageResolver, type ResolveMessage } from '../validation/default-messages';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport type { FormEngineOptions, StepValidateFn, SubmitHandler } 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 clearError,\n clearResolvedMatchErrors,\n dropServerErrors,\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 latestOperation = 0;\n private readonly lifecycle: FormEngineOptions;\n\n private readonly validators: Record<string, ValidatorFn>;\n private readonly messages: ResolveMessage;\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.messages = messageResolver(options?.messages, definition.messages);\n this.visibility = createVisibility(definition);\n const values = createValues(this.visibility.allFields, initialValues as Record<string, unknown> | undefined);\n this.state = { values, errors: {}, topLevelErrors: [], serverErrors: {}, serverFormErrors: [], 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 stepErrors(): Record<string, string[]> {\n const result: Record<string, string[]> = Object.create(null);\n for (const step of this.visibleSteps) {\n const keys = step.fields.map((field) => field.key).filter((key) => this.errors[key] !== undefined);\n if (keys.length > 0) result[step.id] = keys;\n }\n return result;\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 previousError = errors[key];\n values[key] = value;\n clearError(this.internals, key, valueChanged);\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 dropServerErrors(this.internals, clearedFields);\n const revalidated = clearResolvedMatchErrors(this.internals, key);\n const changedFields = new Set([...clearedFields, ...revalidated]);\n if (valueChanged || previousError !== errors[key]) 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?: SubmitHandler): Promise<boolean> { return skipStep(this.internals, submit); }\n submit(handler: SubmitHandler): 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 { MessageSource, ValidatorFn } from '../validation';\nimport { messageResolver, type ResolveMessage } from '../validation/default-messages';\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 messages?: MessageSource;\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) {\n const value = normalizeValue(result.active.get(key) ?? fields.find((field) => field.key === key)!, source[key]);\n if (value !== undefined) values[key] = value;\n }\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, resolve: ResolveMessage): Map<string, string> {\n const errors = new Map<string, string>();\n for (const [key, field] of active) {\n const error = typeError(field, values[key], resolve);\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 messages = messageResolver(options.messages, definition.messages);\n const invalid = typeErrors(resolved, messages);\n const engineOptions = { validators: ignoredValidators(fields, options.validators), messages, 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"]}
|