@formhaus/core 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/dist/cloud.d.ts +73 -0
- package/dist/cloud.js +3 -0
- package/dist/cloud.js.map +1 -0
- package/dist/definition-H3WUR596.d.ts +86 -0
- package/dist/index.d.ts +4 -84
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +18 -0
- package/dist/server.iife.js +5 -0
- package/dist/server.iife.js.map +1 -0
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -0
- package/fixtures/submissions/choices.json +217 -0
- package/fixtures/submissions/multi-step.json +150 -0
- package/fixtures/submissions/routes.json +138 -0
- package/fixtures/submissions/rules.json +131 -0
- package/fixtures/submissions/show-conditions.json +162 -0
- package/fixtures/submissions/single-step.json +289 -0
- package/fixtures/submissions/skip-routes.json +200 -0
- package/fixtures/submissions/skip.json +163 -0
- package/fixtures/submissions/special-types.json +159 -0
- package/fixtures/submissions/text.json +103 -0
- package/package.json +15 -3
- package/schema/form-definition.schema.json +32 -2
- package/style.css +164 -165
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/visibility/evaluate-condition.ts","../src/visibility/is-visible.ts","../src/visibility/is-step-visible.ts","../src/engine/engine-utils.ts","../src/engine/step-routes.ts","../src/definition-validation/definition-analysis.ts","../src/definition-validation/validate-definition.ts","../src/engine/lifecycle-error.ts","../src/engine/pending-inputs.ts","../src/validation/default-messages.ts","../src/validation/validate-field.ts","../src/validation/validate-step.ts","../src/engine/validation-state.ts","../src/engine/step-skip.ts","../src/engine/submission.ts","../src/engine/navigation.ts","../src/engine/subscriptions.ts","../src/engine/visibility-index.ts","../src/engine/visibility-state.ts","../src/engine/runtime.ts","../src/engine/external-errors.ts"],"names":["isBlank","value","evaluateCondition","condition","values","isVisible","field","matches","isStepVisible","hasFieldsAndSteps","definition","hasRoutes","step","conditionFields","source","getAllFields","createValues","fields","initialValues","getChangedKeys","previous","next","keys","key","definitionErrors","steps","warnings","stepIndexes","fieldIndexes","index","route","target","routeFallthroughWarnings","targets","to","candidate","sibling","exits","activeSteps","indexes","result","available","stepValues","reconcileStepIndex","previousStep","preserved","nextIds","before","predecessor","candidates","ActivePath","analyzeDefinition","graph","fieldKeys","depend","owner","id","dependencies","dependency","pattern","earlier","detectCycles","visiting","cycles","start","stack","frame","neighbor","nodes","node","validateDefinition","cycle","FormLifecycleError","phase","cause","afterCommit","callback","error","activePath","engine","watchCheckedInputs","checked","path","getDefaultMessage","rule","params","BOOLEAN_TYPES","isEmpty","boundError","size","rules","unit","min","max","patternError","validateField","allValues","validators","sizeError","matchError","validateStep","validateFields","errors","applyValidationErrors","navigate","previousErrors","message","firstErrorKey","targetIndex","structureChanged","clearResolvedMatchErrors","cleared","getValidationValues","pruneOffPathErrors","pathFields","pruned","getSubmitValues","withoutSkipped","validateForm","validateOne","previousError","visibleKeys","resetEngine","previousValues","loadingFields","changedValues","changedFields","resetValues","skipTarget","skipCurrentStep","includeCurrentStep","submitAsync","submit","keepSkipped","lifecycle","dispatched","epoch","operation","inputsChanged","stale","allowed","hasStepErrors","moveTo","advance","nextStep","skipStep","skipStepAsync","changeStep","committed","skippedValues","edited","submitted","direction","reason","skipping","validating","validate","toIndex","context","prevStep","goToStepWithField","fieldKey","FormSubscriptions","listener","listeners","indexConditions","dependent","dependents","VisibilityState","valuesChanged","stepIndex","clearedFields","changedKey","seed","queue","queued","clear","current","FormEngine","options","validation","name","warning","total","previousSteps","valueChanged","hadError","stepId","revalidated","loading","sameErrors","holdsErrors","shouldApplyExternalErrors"],"mappings":"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","file":"index.js","sourcesContent":["import type { ShowCondition } from '../types';\n\nexport function isBlank(value: unknown): boolean {\n return value == null || value === '' || (Array.isArray(value) && !value.length);\n}\n\nexport function evaluateCondition(\n condition: ShowCondition,\n values: Record<string, unknown>,\n): boolean {\n const value = values[condition.field];\n\n if (condition.eq !== undefined) {\n return value === condition.eq;\n }\n\n if (condition.neq !== undefined) {\n return value !== condition.neq;\n }\n\n if (condition.in !== undefined) {\n return condition.in.includes(value as string | number);\n }\n\n if (condition.notIn !== undefined) {\n return !condition.notIn.includes(value as string | number);\n }\n\n if (condition.notEmpty === true) {\n return !isBlank(value);\n }\n\n return true;\n}\n","import type { FormField, ShowCondition } from '../types';\nimport { evaluateCondition } from './evaluate-condition';\n\nexport function isVisible(\n field: Pick<FormField, 'show' | 'showAny'>,\n values: Record<string, unknown>,\n): boolean {\n const matches = (condition: ShowCondition) => evaluateCondition(condition, values);\n return (field.show ?? []).every(matches) && (!field.showAny?.length || field.showAny.some(matches));\n}\n","import type { FormStep } from '../types';\nimport { isVisible } from './is-visible';\n\nexport const isStepVisible: (step: FormStep, values: Record<string, unknown>) => boolean = isVisible;\n","import type { FormDefinition, FormField } from '../types';\n\nexport function hasFieldsAndSteps(definition: FormDefinition): boolean {\n return !!definition.fields?.length && !!definition.steps?.length;\n}\n\nexport function hasRoutes(definition: FormDefinition): boolean {\n return !!definition.steps?.some((step) => step.routes?.length);\n}\n\nexport function conditionFields(source: Pick<FormField, 'show' | 'showAny'>): string[] {\n return [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field);\n}\n\nexport function getAllFields(definition: FormDefinition): FormField[] {\n return definition.steps?.length ? definition.steps.flatMap((step) => step.fields) : definition.fields ?? [];\n}\n\nexport function createValues(\n fields: FormField[],\n initialValues?: Record<string, unknown>,\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n for (const field of fields) {\n if (field.defaultValue !== undefined) values[field.key] = field.defaultValue;\n }\n return Object.assign(values, initialValues);\n}\n\nexport function getChangedKeys(\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n): Set<string> {\n const keys = new Set([...Object.keys(previous), ...Object.keys(next)]);\n return new Set([...keys].filter((key) => !Object.is(previous[key], next[key])));\n}\n","import type { FormDefinition, FormStep } from '../types';\nimport { isStepVisible, isVisible } from '../visibility';\nimport { conditionFields, hasFieldsAndSteps, hasRoutes } from './engine-utils';\n\nexport function definitionErrors(definition: FormDefinition): string[] {\n const steps = definition.steps ?? [];\n const warnings = hasFieldsAndSteps(definition) ? ['FormEngine rejects a definition with both \"fields\" and \"steps\".'] : [];\n const stepIndexes = new Map<string, number>();\n const fieldIndexes = new Map<string, number>();\n steps.forEach((step, index) => {\n if (stepIndexes.has(step.id)) warnings.push(`Duplicate step id \"${step.id}\".`);\n stepIndexes.set(step.id, index);\n for (const field of step.fields) fieldIndexes.set(field.key, index);\n });\n if (!hasRoutes(definition)) return warnings;\n steps.forEach((step, index) => {\n for (const route of step.routes ?? []) {\n const target = route.to === null ? null : stepIndexes.get(route.to);\n if (target === undefined || (target !== null && target <= index)) {\n warnings.push(`Invalid route from \"${step.id}\" to \"${route.to}\": targets must be later steps or null.`);\n }\n for (const field of conditionFields(route)) {\n if (!((fieldIndexes.get(field) ?? Infinity) <= index)) {\n warnings.push(`Invalid route on \"${step.id}\": condition field \"${field}\" must belong to this or an earlier step.`);\n }\n }\n }\n });\n return warnings;\n}\n\nexport function routeFallthroughWarnings(definition: FormDefinition): string[] {\n const steps = definition.steps ?? [];\n const warnings: string[] = [];\n for (const step of steps) {\n const targets = new Set((step.routes ?? []).map((route) => route.to).filter((to) => to !== null));\n for (const target of targets) {\n const index = steps.findIndex((candidate) => candidate.id === target);\n const sibling = steps[index + 1];\n const exits = steps[index]?.routes?.some((route) => !route.show?.length && !route.showAny?.length);\n if (sibling && targets.has(sibling.id) && !exits) {\n warnings.push(`Route branch \"${target}\" from \"${step.id}\" continues into sibling branch \"${sibling.id}\". Add an unconditional route where it should continue.`);\n }\n }\n }\n return warnings;\n}\n\nexport function activeSteps(definition: FormDefinition, values: Record<string, unknown>): FormStep[] {\n const steps = definition.steps ?? [];\n if (!hasRoutes(definition)) return steps.filter((step) => isStepVisible(step, values));\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n const result: FormStep[] = [];\n const available: Record<string, unknown> = {};\n for (let index = 0; index < steps.length;) {\n const step = steps[index];\n if (!isStepVisible(step, available)) { index++; continue; }\n result.push(step);\n Object.assign(available, stepValues(step, values, available));\n const route = step.routes?.find((route) => (\n isVisible(route, available) && (route.to === null || ((indexes.get(route.to) ?? -1) > index\n && isStepVisible(steps[indexes.get(route.to)!], available)))\n ));\n if (route?.to === null) break;\n index = route ? indexes.get(route.to)! : index + 1;\n }\n return result;\n}\n\nexport function reconcileStepIndex(previous: FormStep[], next: FormStep[], index: number): number {\n const previousStep = previous[index] ?? previous[previous.length - 1];\n const preserved = next.findIndex((step) => step.id === previousStep?.id);\n if (preserved !== -1) return preserved;\n const nextIds = new Map(next.map((step, index) => [step.id, index]));\n for (let before = Math.min(index - 1, previous.length - 1); before >= 0; before--) {\n const predecessor = nextIds.get(previous[before].id);\n if (predecessor !== undefined) return predecessor;\n }\n return 0;\n}\n\nfunction stepValues(step: FormStep, values: Record<string, unknown>, previous: Record<string, unknown>) {\n const candidates = { ...previous };\n for (const field of step.fields) candidates[field.key] = values[field.key];\n const result: Record<string, unknown> = {};\n for (const field of step.fields) {\n if (isVisible(field, candidates) && values[field.key] !== undefined) result[field.key] = values[field.key];\n }\n return result;\n}\n\nexport class ActivePath {\n readonly enabled: boolean;\n private source: Record<string, unknown> | null = null;\n private activeStepList: FormStep[] = [];\n private activeValueMap: Record<string, unknown> = {};\n\n constructor(private definition: FormDefinition) {\n this.enabled = hasRoutes(definition);\n }\n\n invalidate(): void { this.source = null; }\n\n steps(values: Record<string, unknown>): FormStep[] {\n this.refresh(values);\n return this.activeStepList;\n }\n\n values(values: Record<string, unknown>): Record<string, unknown> {\n this.refresh(values);\n return this.activeValueMap;\n }\n\n private refresh(values: Record<string, unknown>): void {\n if (this.source === values) return;\n this.source = values;\n this.activeStepList = activeSteps(this.definition, values);\n const result: Record<string, unknown> = {};\n for (const step of this.activeStepList) Object.assign(result, stepValues(step, values, result));\n this.activeValueMap = result;\n }\n}\n","import { conditionFields, getAllFields, hasRoutes } from '../engine/engine-utils';\nimport type { FormDefinition, FormField } from '../types';\n\nexport interface DefinitionAnalysis {\n graph: Map<string, string[]>;\n warnings: string[];\n}\n\nexport function analyzeDefinition(definition: FormDefinition): DefinitionAnalysis {\n const warnings: string[] = [];\n const graph = new Map<string, string[]>();\n const fields = getAllFields(definition);\n const fieldKeys = new Set<string>();\n for (const { key } of fields) {\n if (fieldKeys.has(key)) warnings.push(`Duplicate field key \"${key}\" — fields will share state and overwrite each other`);\n fieldKeys.add(key);\n }\n const depend = (owner: string, id: string, source: Pick<FormField, 'show' | 'showAny'>, keys: string[]) => {\n const dependencies = conditionFields(source);\n for (const dependency of dependencies) {\n if (!fieldKeys.has(dependency)) warnings.push(`${owner} \"${id}\" has show condition referencing non-existent field \"${dependency}\"`);\n }\n if (dependencies.length) for (const key of keys) graph.set(key, [...(graph.get(key) ?? []), ...dependencies]);\n };\n for (const field of fields) {\n depend('Field', field.key, field, [field.key]);\n const pattern = field.validation?.pattern;\n if (pattern === undefined) continue;\n try {\n new RegExp(pattern);\n } catch {\n warnings.push(`Field \"${field.key}\" has invalid regex pattern: \"${pattern}\"`);\n }\n }\n const earlier = new Set<string>();\n for (const step of definition.steps ?? []) {\n depend('Step', step.id, step, step.fields.map((field) => field.key));\n for (const field of conditionFields(step)) {\n if (hasRoutes(definition) && fieldKeys.has(field) && !earlier.has(field)) {\n warnings.push(`Step \"${step.id}\" condition field \"${field}\" must belong to an earlier step.`);\n }\n }\n for (const { key } of step.fields) earlier.add(key);\n if (step.skip && (step.next === false || !definition.steps![1])) {\n warnings.push(`Step \"${step.id}\" has \"skip\" but no Next button or later step.`);\n }\n }\n return { graph, warnings };\n}\n","import { definitionErrors, routeFallthroughWarnings } from '../engine/step-routes';\nimport type { FormDefinition } from '../types';\nimport { analyzeDefinition } from './definition-analysis';\n\nfunction detectCycles(graph: Map<string, string[]>): string[][] {\n const visiting = new Map<string, boolean>();\n const cycles: string[][] = [];\n for (const start of graph.keys()) {\n if (visiting.has(start)) continue;\n visiting.set(start, true);\n const stack: [string, number][] = [[start, 0]];\n while (stack.length > 0) {\n const frame = stack[stack.length - 1];\n const neighbor = graph.get(frame[0])?.[frame[1]++];\n if (neighbor === undefined) {\n visiting.set(frame[0], false);\n stack.pop();\n } else if (visiting.get(neighbor)) {\n const nodes = stack.map(([node]) => node);\n cycles.push([...nodes.slice(nodes.indexOf(neighbor)), neighbor]);\n } else if (!visiting.has(neighbor)) {\n visiting.set(neighbor, true);\n stack.push([neighbor, 0]);\n }\n }\n }\n return cycles;\n}\n\nexport function validateDefinition(definition: FormDefinition): string[] {\n const { graph, warnings } = analyzeDefinition(definition);\n for (const cycle of detectCycles(graph)) {\n warnings.push(`Circular show condition detected: ${cycle.join(' -> ')}`);\n }\n return [...definitionErrors(definition), ...warnings, ...routeFallthroughWarnings(definition)];\n}\n","export class FormLifecycleError extends Error {\n readonly committed = true;\n readonly cause: unknown;\n\n constructor(readonly phase: 'afterStepChange' | 'afterSubmit', cause: unknown) {\n super(`The action completed, but ${phase} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\n this.name = 'FormLifecycleError';\n this.cause = cause;\n }\n}\n\nexport async function afterCommit(phase: 'afterStepChange' | 'afterSubmit', callback: () => void | Promise<void>): Promise<void> {\n try { await callback(); }\n catch (error) { throw new FormLifecycleError(phase, error); }\n}\n","import type { EngineInternals } from './runtime-internals';\n\nfunction activePath(engine: EngineInternals): string {\n return engine.visibleSteps.map((step) => step.id).join('\\n');\n}\n\nexport function watchCheckedInputs(engine: EngineInternals, checked: Record<string, unknown>): () => boolean {\n const path = activePath(engine);\n return () => activePath(engine) !== path || Object.keys(checked).some(\n (key) => checked[key] !== undefined && !Object.is(engine.values[key], checked[key]),\n );\n}\n","export function getDefaultMessage(rule: string, params?: Record<string, unknown>): string {\n switch (rule) {\n case 'required':\n return 'This field is required';\n case 'minLength':\n return `Must be at least ${params?.min} ${params?.unit ?? 'characters'}`;\n case 'maxLength':\n return `Must be at most ${params?.max} ${params?.unit ?? 'characters'}`;\n case 'min':\n return `Must be at least ${params?.min}`;\n case 'max':\n return `Must be at most ${params?.max}`;\n case 'pattern':\n return 'Invalid format';\n case 'matchField':\n return 'Fields must match';\n default:\n return 'Invalid value';\n }\n}\n","import type { FieldValidation, FormField } from '../types';\nimport { isBlank } from '../visibility';\nimport { getDefaultMessage } from './default-messages';\n\nexport type ValidatorFn = (\n value: unknown,\n allValues: Record<string, unknown>,\n) => string | null;\n\nconst BOOLEAN_TYPES = new Set(['checkbox', 'switch']);\n\nfunction isEmpty(value: unknown, field: FormField): boolean {\n return isBlank(value) || (value === false && BOOLEAN_TYPES.has(field.type));\n}\n\nfunction boundError(\n size: number,\n rule: 'Length' | '',\n rules: FieldValidation,\n unit?: string,\n): string | undefined {\n const min = rules[`min${rule}`];\n const max = rules[`max${rule}`];\n if (min !== undefined && size < min) return rules[`min${rule}Message`] ?? getDefaultMessage(`min${rule}`, { min, unit });\n if (max !== undefined && size > max) return rules[`max${rule}Message`] ?? getDefaultMessage(`max${rule}`, { max, unit });\n return undefined;\n}\n\nfunction patternError(value: unknown, rules: FieldValidation): string | undefined {\n if (rules.pattern === undefined) return undefined;\n try {\n return new RegExp(rules.pattern).test(String(value)) ? undefined : rules.patternMessage ?? getDefaultMessage('pattern');\n } catch {\n return undefined;\n }\n}\n\nexport function validateField(\n field: FormField,\n value: unknown,\n allValues: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): string | null {\n const rules = field.validation;\n if (!rules) return null;\n if (isEmpty(value, field)) {\n if (!rules.required) return null;\n return typeof rules.required === 'string' ? rules.required : getDefaultMessage('required');\n }\n const sizeError = typeof value === 'string' || Array.isArray(value)\n ? boundError(value.length, 'Length', rules, Array.isArray(value) ? 'items' : undefined)\n : typeof value === 'number' ? boundError(value, '', rules) : undefined;\n const matchError = rules.matchField !== undefined && value !== allValues[rules.matchField]\n ? rules.matchFieldMessage ?? getDefaultMessage('matchField')\n : undefined;\n return (sizeError\n ?? patternError(value, rules)\n ?? matchError\n ?? (rules.validator ? validators?.[rules.validator]?.(value, allValues) : undefined)) || null;\n}\n","import type { FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport { type ValidatorFn, validateField } from './validate-field';\n\nexport function validateStep(\n step: FormStep,\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n return validateFields(step.fields, values, validators);\n}\n\nexport function validateFields(\n fields: FormField[],\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n const errors: Record<string, string> = {};\n\n for (const field of fields) {\n if (!isVisible(field, values)) continue;\n\n const error = validateField(field, values[field.key], values, validators);\n if (error) {\n errors[field.key] = error;\n }\n }\n\n return errors;\n}\n","import { validateField, validateFields, validateStep } from '../validation';\nimport { createValues, getChangedKeys, hasRoutes } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\n\nexport function applyValidationErrors(engine: EngineInternals, errors: Record<string, string>, navigate = false): void {\n const previousErrors = engine.errors;\n engine.errors = {};\n engine.topLevelErrors = [];\n for (const [key, message] of Object.entries(errors)) {\n if (engine.visibility.isFieldVisible(key, engine.values)) engine.errors[key] = message;\n else engine.topLevelErrors.push(message);\n }\n const firstErrorKey = Object.keys(errors).find((key) => engine.errors[key] !== undefined);\n const targetIndex = navigate && firstErrorKey && engine.isMultiStep\n ? engine.visibility.findStepIndex(firstErrorKey, engine.values, engine.currentStepIndex)\n : null;\n const structureChanged = targetIndex !== null && targetIndex !== engine.currentStepIndex;\n if (targetIndex !== null) engine.currentStepIndex = targetIndex;\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors), structureChanged });\n}\n\nexport function clearResolvedMatchErrors(engine: EngineInternals, key: string): string[] {\n const cleared: string[] = [];\n for (const field of engine.visibility.allFields) {\n if (field.validation?.matchField !== key || engine.errors[field.key] === undefined) continue;\n if (validateField(field, engine.values[field.key], getValidationValues(engine), engine.validators)) continue;\n delete engine.errors[field.key];\n cleared.push(field.key);\n }\n return cleared;\n}\n\nexport function pruneOffPathErrors(engine: EngineInternals): string[] {\n const pathFields = new Set(engine.visibleSteps.flatMap((step) => step.fields.map((field) => field.key)));\n const pruned = Object.keys(engine.errors).filter((key) => !pathFields.has(key));\n for (const key of pruned) delete engine.errors[key];\n return pruned;\n}\n\nexport function getValidationValues(engine: EngineInternals): Record<string, unknown> {\n return hasRoutes(engine.definition) ? getSubmitValues(engine) : withoutSkipped(engine, { ...engine.values });\n}\n\nfunction withoutSkipped(engine: EngineInternals, values: Record<string, unknown>): Record<string, unknown> {\n for (const key of [...engine.skipped.values()].flat()) delete values[key];\n return values;\n}\n\nexport function validateForm(engine: EngineInternals): Record<string, string> {\n const previousErrors = engine.errors;\n const errors: Record<string, string> = {};\n if (engine.isMultiStep) {\n for (const step of engine.visibleSteps) {\n if (engine.skipped.has(step.id)) continue;\n Object.assign(errors, validateStep(step, getValidationValues(engine), engine.validators));\n }\n } else {\n Object.assign(\n errors,\n validateFields(engine.definition.fields ?? [], engine.values, engine.validators),\n );\n }\n engine.errors = errors;\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, errors) });\n return errors;\n}\n\nexport function validateOne(engine: EngineInternals, key: string): string | null {\n const field = engine.visibility.fieldByKey.get(key);\n if (!field || !engine.visibility.isFieldVisible(key, engine.values)) return null;\n const previousError = engine.errors[key];\n const error = validateField(field, engine.values[key], getValidationValues(engine), engine.validators);\n if (error) engine.errors[key] = error;\n else delete engine.errors[key];\n const fieldKeys = Object.is(previousError, engine.errors[key]) ? [] : [key];\n engine.notify({ fieldKeys });\n return error;\n}\n\nexport function getSubmitValues(engine: EngineInternals): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n const visibleKeys = engine.visibility.getVisibleFieldKeys(\n engine.values,\n engine.currentStepIndex,\n );\n for (const key of visibleKeys) {\n if (engine.values[key] !== undefined) result[key] = engine.values[key];\n }\n return withoutSkipped(engine, result);\n}\n\nexport function resetEngine(engine: EngineInternals, values?: Record<string, unknown>): void {\n const previousValues = engine.values;\n const previousErrors = engine.errors;\n const loadingFields = Object.keys(engine.fieldLoading);\n engine.validationEpoch++;\n engine.operationEpoch++;\n engine.submitting = false;\n engine.values = createValues(engine.visibility.allFields, values);\n engine.errors = {};\n engine.topLevelErrors = [];\n engine.fieldLoading = {};\n engine.stepValidating = false;\n engine.currentStepIndex = 0;\n engine.skipped.clear();\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n const changedValues = getChangedKeys(previousValues, engine.values);\n const changedFields = new Set([\n ...changedValues,\n ...getChangedKeys(previousErrors, engine.errors),\n ...loadingFields,\n ]);\n engine.notify({\n fieldKeys: changedFields,\n structureChanged: true,\n valuesChanged: changedValues.size > 0,\n });\n}\n","import type { FormStep } from '../types';\nimport { createValues } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\nimport { activeSteps } from './step-routes';\n\nfunction resetValues(engine: EngineInternals): Record<string, unknown> {\n const fields = engine.currentStep?.fields ?? [];\n const values = { ...engine.values };\n for (const { key } of fields) delete values[key];\n return Object.assign(values, createValues(fields));\n}\n\nexport function skipTarget(engine: EngineInternals): FormStep | undefined {\n return activeSteps(engine.definition, resetValues(engine))[engine.currentStepIndex + 1];\n}\n\nexport function skipCurrentStep(engine: EngineInternals): string[] {\n const step = engine.currentStep!;\n const fieldKeys = step.fields.map(({ key }) => key);\n engine.values = resetValues(engine);\n for (const key of fieldKeys) delete engine.errors[key];\n engine.skipped.set(step.id, fieldKeys);\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n engine.notify({ fieldKeys, structureChanged: true, valuesChanged: true });\n return fieldKeys;\n}\n\nexport function includeCurrentStep(engine: EngineInternals): void {\n const step = engine.currentStep;\n if (step) engine.skipped.delete(step.id);\n}\n","import { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport type { SubmitFn } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\nimport { getSubmitValues, validateForm } from './validation-state';\nimport { includeCurrentStep } from './step-skip';\n\nexport async function submitAsync(engine: EngineInternals, submit: SubmitFn, keepSkipped = false): Promise<boolean> {\n if (engine.submitting || engine.stepValidating) return false;\n if (!keepSkipped) includeCurrentStep(engine);\n const lifecycle = { ...engine.lifecycle };\n let dispatched = false;\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n let values = getSubmitValues(engine);\n const inputsChanged = watchCheckedInputs(engine, values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch || inputsChanged();\n engine.submitting = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (Object.keys(validateForm(engine)).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)).length > 0 || stale()) return false;\n values = getSubmitValues(engine);\n }\n dispatched = true;\n await submit(values);\n if (operation !== engine.operationEpoch) return true;\n await afterCommit('afterSubmit', () => lifecycle.onAfterSubmit?.(values));\n return true;\n } catch (error) {\n if (!dispatched && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.submitting = false;\n engine.notify();\n }\n }\n}\n","import { getChangedKeys } from './engine-utils';\nimport { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport { validateStep } from '../validation';\nimport { applyValidationErrors, getValidationValues } from './validation-state';\nimport { includeCurrentStep, skipCurrentStep, skipTarget } from './step-skip';\nimport { submitAsync } from './submission';\nimport type { StepChangeContext, SubmitFn } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\n\nfunction hasStepErrors(engine: EngineInternals): boolean {\n const step = engine.currentStep;\n if (!step) return true;\n const errors = validateStep(step, getValidationValues(engine), engine.validators);\n if (Object.keys(errors).length === 0) return false;\n const previousErrors = { ...engine.errors };\n Object.assign(engine.errors, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors) });\n return true;\n}\n\nfunction moveTo(engine: EngineInternals, index: number): void {\n engine.validationEpoch++;\n engine.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n}\n\nfunction advance(engine: EngineInternals): boolean {\n if (engine.isLastStep) return false;\n moveTo(engine, engine.currentStepIndex + 1);\n return true;\n}\n\nexport function nextStep(engine: EngineInternals): boolean {\n if (!engine.isMultiStep) return false;\n includeCurrentStep(engine);\n return !hasStepErrors(engine) && advance(engine);\n}\n\nexport function skipStep(engine: EngineInternals): boolean {\n if (!engine.isMultiStep || !skipTarget(engine)) return false;\n skipCurrentStep(engine);\n return advance(engine);\n}\n\nexport async function skipStepAsync(engine: EngineInternals, submit?: SubmitFn): Promise<boolean> {\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting) return false;\n if (skipTarget(engine)) return changeStep(engine, 'next', 'skip');\n const step = engine.currentStep;\n if (!submit || !step) return false;\n const values = engine.values;\n const errors = { ...engine.errors };\n let committed = false;\n const fieldKeys = skipCurrentStep(engine);\n const skippedValues = engine.values;\n const edited = watchCheckedInputs(engine, { ...skippedValues });\n try {\n return await submitAsync(engine, async (submitted) => {\n await submit(submitted);\n committed = true;\n }, true);\n } finally {\n if (!committed && engine.values === skippedValues && !edited()) {\n engine.values = values;\n engine.errors = { ...errors, ...engine.errors };\n engine.skipped.delete(step.id);\n engine.notify({ fieldKeys, structureChanged: true, valuesChanged: true });\n }\n }\n}\n\nexport async function changeStep(engine: EngineInternals, direction: 'next' | 'back', reason: StepChangeContext['reason'] = direction): Promise<boolean> {\n const skipping = reason === 'skip';\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting) return false;\n if (!skipping && (direction === 'next' ? engine.isLastStep : engine.isFirstStep)) return false;\n const step = engine.currentStep!;\n const validating = direction === 'next' && !skipping;\n if (validating) includeCurrentStep(engine);\n if (validating && hasStepErrors(engine)) return false;\n const lifecycle = { ...engine.lifecycle };\n const validate = engine.onStepValidate;\n let committed = false;\n const fromIndex = engine.currentStepIndex;\n const toIndex = fromIndex + (direction === 'next' ? 1 : -1);\n const target = skipping ? skipTarget(engine) : engine.visibleSteps[toIndex];\n if (!target) return false;\n const context = { fromStepId: step.id, toStepId: target.id, direction, reason, values: { ...getValidationValues(engine) } };\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n const inputsChanged = watchCheckedInputs(engine, context.values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch\n || engine.currentStep?.id !== step.id || inputsChanged();\n engine.stepValidating = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (validating && validate) {\n const result = await validate!(step.id, context.values);\n if (stale()) return false;\n if (result && Object.keys(result).length > 0) {\n applyValidationErrors(engine, result);\n return false;\n }\n }\n if (lifecycle.onBeforeStepChange) {\n const allowed = await lifecycle.onBeforeStepChange(context);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (validating && hasStepErrors(engine)) return false;\n committed = true;\n if (skipping) skipCurrentStep(engine);\n moveTo(engine, toIndex);\n await afterCommit('afterStepChange', () => lifecycle.onAfterStepChange?.(context));\n return true;\n } catch (error) {\n if (!committed && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.stepValidating = false;\n engine.notify();\n }\n }\n}\n\nexport function prevStep(engine: EngineInternals): void {\n if (engine.isMultiStep && !engine.isFirstStep) moveTo(engine, engine.currentStepIndex - 1);\n}\n\nexport function goToStepWithField(engine: EngineInternals, fieldKey: string): void {\n if (!engine.isMultiStep) return;\n const targetIndex = engine.visibility.findStepIndex(\n fieldKey,\n engine.values,\n engine.currentStepIndex,\n );\n if (targetIndex === engine.currentStepIndex) engine.notify();\n else if (targetIndex !== null) moveTo(engine, targetIndex);\n}\n","export interface NotifyOptions {\n fieldKeys?: Iterable<string>;\n structureChanged?: boolean;\n}\n\nexport class FormSubscriptions {\n private version = 0;\n private listeners = new Set<() => void>();\n private fieldVersions = new Map<string, number>();\n private fieldListeners = new Map<string, Set<() => void>>();\n private structureVersion = 0;\n private structureListeners = new Set<() => void>();\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n getSnapshot(): number {\n return this.version;\n }\n\n subscribeField(key: string, listener: () => void): () => void {\n const listeners = this.fieldListeners.get(key) ?? new Set();\n listeners.add(listener);\n this.fieldListeners.set(key, listeners);\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) this.fieldListeners.delete(key);\n };\n }\n\n getFieldSnapshot(key: string): number {\n return this.fieldVersions.get(key) ?? 0;\n }\n\n subscribeStructure(listener: () => void): () => void {\n this.structureListeners.add(listener);\n return () => this.structureListeners.delete(listener);\n }\n\n getStructureSnapshot(): number {\n return this.structureVersion;\n }\n\n notify({ fieldKeys = [], structureChanged = false }: NotifyOptions = {}): void {\n for (const key of new Set(fieldKeys)) this.notifyField(key);\n if (structureChanged) this.notifyStructure();\n\n this.version++;\n for (const listener of this.listeners) listener();\n }\n\n private notifyField(key: string): void {\n this.fieldVersions.set(key, (this.fieldVersions.get(key) ?? 0) + 1);\n for (const listener of this.fieldListeners.get(key) ?? []) listener();\n }\n\n private notifyStructure(): void {\n this.structureVersion++;\n for (const listener of this.structureListeners) listener();\n }\n}\n","import type { FormField, FormStep } from '../types';\nimport { conditionFields } from './engine-utils';\n\nexport function indexConditions<T extends FormField | FormStep>(dependent: T, index: Map<string, Set<T>>): void {\n for (const field of conditionFields(dependent)) {\n const dependents = index.get(field) ?? new Set<T>();\n dependents.add(dependent);\n index.set(field, dependents);\n }\n}\n","import { conditionFields, getAllFields } from './engine-utils';\nimport { indexConditions } from './visibility-index';\nimport { ActivePath } from './step-routes';\nimport type { ValidatorFn } from '../validation';\nimport { validateStep } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport { isStepVisible, isVisible } from '../visibility';\n\ninterface VisibilityCache {\n visibleSteps: FormStep[];\n currentStep: FormStep | null;\n visibleFields: FormField[];\n canGoNext: boolean;\n}\n\nexport class VisibilityState {\n readonly allFields: FormField[];\n readonly fieldByKey: Map<string, FormField>;\n private routeFields = new Set<string>();\n private readonly path: ActivePath;\n private fieldDependents = new Map<string, Set<FormField>>();\n private stepDependents = new Map<string, Set<FormStep>>();\n private stepByFieldKey = new Map<string, FormStep>();\n private visibilityDirty = true;\n private canGoNextDirty = true;\n private cache: VisibilityCache = {\n visibleSteps: [],\n currentStep: null,\n visibleFields: [],\n canGoNext: false,\n };\n\n constructor(private definition: FormDefinition) {\n this.allFields = getAllFields(definition);\n this.fieldByKey = new Map(this.allFields.map((field) => [field.key, field]));\n this.path = new ActivePath(definition);\n for (const step of definition.steps ?? []) {\n for (const field of step.fields) this.stepByFieldKey.set(field.key, step);\n }\n this.buildIndexes();\n }\n\n markChanged(structureChanged: boolean, valuesChanged: boolean): void {\n if (structureChanged || valuesChanged) this.path.invalidate();\n if (structureChanged) {\n this.visibilityDirty = true;\n this.canGoNextDirty = true;\n } else if (valuesChanged) {\n this.canGoNextDirty = true;\n }\n }\n\n state(values: Record<string, unknown>, stepIndex: number): VisibilityCache {\n this.recomputeVisibility(values, stepIndex);\n return this.cache;\n }\n\n getCanGoNext(\n values: Record<string, unknown>,\n stepIndex: number,\n validators: Record<string, ValidatorFn>,\n ): boolean {\n this.recomputeVisibility(values, stepIndex);\n if (!this.canGoNextDirty) return this.cache.canGoNext;\n this.canGoNextDirty = false;\n const step = this.cache.currentStep;\n const errors = step ? validateStep(step, this.conditionValues(values), validators) : {};\n this.cache.canGoNext = this.isMultiStep && Object.keys(errors).length === 0;\n return this.cache.canGoNext;\n }\n\n findStepIndex(fieldKey: string, values: Record<string, unknown>, stepIndex: number): number | null {\n const steps = this.state(values, stepIndex).visibleSteps;\n const target = steps.findIndex((step) => step.fields.some((field) => field.key === fieldKey));\n return target === -1 ? null : target;\n }\n\n affectsStructure(key: string, clearedFields: Set<string>): boolean {\n return this.routeFields.has(key) || this.fieldDependents.has(key) || this.stepDependents.has(key) || clearedFields.size > 0;\n }\n\n cascadeHiddenFields(\n changedKey: string,\n values: Record<string, unknown>,\n errors: Record<string, string>,\n ): Set<string> {\n this.path.invalidate();\n if (this.hasRoutes) return this.reconcileHidden(values, errors);\n return this.drainQueue(new Set([changedKey]), values, errors);\n }\n\n reconcileHidden(values: Record<string, unknown>, errors: Record<string, string>): Set<string> {\n this.path.invalidate();\n const seed = new Set([...this.fieldDependents.keys(), ...this.stepDependents.keys()]);\n return this.drainQueue(seed, values, errors);\n }\n private drainQueue(\n seed: Set<string>,\n values: Record<string, unknown>,\n errors: Record<string, string>,\n ): Set<string> {\n const queue = [...seed];\n const queued = new Set(queue);\n const cleared = new Set<string>();\n const clear = (key: string) => {\n delete values[key];\n delete errors[key];\n this.path.invalidate();\n cleared.add(key);\n if (queued.has(key)) return;\n queued.add(key);\n queue.push(key);\n };\n\n for (let index = 0; index < queue.length; index++) {\n const key = queue[index];\n queued.delete(key);\n this.clearHiddenFields(this.fieldDependents.get(key), values, clear);\n this.clearHiddenSteps(this.stepDependents.get(key), values, clear);\n }\n return cleared;\n }\n\n isFieldVisible(key: string, values: Record<string, unknown>): boolean {\n const field = this.fieldByKey.get(key);\n if (!field || !isVisible(field, this.conditionValues(values))) return false;\n const step = this.stepByFieldKey.get(key);\n return !step || this.path.steps(values).includes(step);\n }\n\n getVisibleFieldKeys(values: Record<string, unknown>, stepIndex: number): Set<string> {\n if (this.hasRoutes) return new Set(Object.keys(this.path.values(values)));\n const keys = new Set<string>();\n const fields = this.isMultiStep\n ? this.state(values, stepIndex).visibleSteps.flatMap((step) => step.fields)\n : this.definition.fields ?? [];\n for (const field of fields) {\n if (isVisible(field, this.conditionValues(values))) keys.add(field.key);\n }\n return keys;\n }\n private conditionValues(values: Record<string, unknown>) { return this.hasRoutes ? this.path.values(values) : values; }\n private get hasRoutes(): boolean { return this.path.enabled; }\n private get isMultiStep(): boolean { return (this.definition.steps ?? []).length > 0; }\n private buildIndexes(): void {\n for (const field of this.allFields) {\n indexConditions(field, this.fieldDependents);\n }\n for (const step of this.definition.steps ?? []) {\n indexConditions(step, this.stepDependents);\n for (const route of step.routes ?? []) {\n for (const field of conditionFields(route)) this.routeFields.add(field);\n }\n }\n }\n private recomputeVisibility(values: Record<string, unknown>, stepIndex: number): void {\n if (!this.visibilityDirty) return;\n this.visibilityDirty = false;\n if (!this.isMultiStep) {\n this.cache.visibleSteps = [];\n this.cache.currentStep = null;\n this.cache.visibleFields = (this.definition.fields ?? []).filter((field) => isVisible(field, this.conditionValues(values)));\n return;\n }\n this.cache.visibleSteps = this.path.steps(values);\n const steps = this.cache.visibleSteps;\n this.cache.currentStep = steps[stepIndex] ?? steps[steps.length - 1] ?? null;\n const current = this.cache.currentStep;\n this.cache.visibleFields = current\n ? current.fields.filter((field) => isVisible(field, this.conditionValues(values)))\n : [];\n }\n private clearHiddenFields(\n fields: Iterable<FormField> | undefined,\n values: Record<string, unknown>,\n clear: (key: string) => void,\n ): void {\n for (const field of fields ?? []) {\n const step = this.stepByFieldKey.get(field.key);\n if (this.hasRoutes && step && !this.path.steps(values).includes(step)) continue;\n if (isVisible(field, this.conditionValues(values)) || values[field.key] === undefined) continue;\n clear(field.key);\n }\n }\n private clearHiddenSteps(\n steps: Iterable<FormStep> | undefined,\n values: Record<string, unknown>,\n clear: (key: string) => void,\n ): void {\n for (const step of steps ?? []) {\n if (isStepVisible(step, this.conditionValues(values))) continue;\n for (const field of step.fields) {\n if (values[field.key] === undefined) continue;\n clear(field.key);\n }\n }\n }\n}\n","import { validateDefinition } from '../definition-validation';\nimport type { ValidatorFn } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport type { FormEngineOptions, StepValidateFn, SubmitFn } from './engine-options';\nimport { createValues } from './engine-utils';\nimport { changeStep, goToStepWithField, nextStep, prevStep, skipStep, skipStepAsync } from './navigation';\nimport type { EngineInternals, RuntimeNotifyOptions } from './runtime-internals';\nimport { FormSubscriptions, type NotifyOptions } from './subscriptions';\nimport {\n applyValidationErrors,\n getSubmitValues,\n resetEngine,\n validateForm,\n validateOne,\n clearResolvedMatchErrors,\n pruneOffPathErrors,\n} from './validation-state';\nimport { submitAsync } from './submission';\nimport { definitionErrors, reconcileStepIndex } from './step-routes';\nimport { VisibilityState } from './visibility-state';\n\nexport class FormEngine {\n values: Record<string, unknown>;\n errors: Record<string, string> = {};\n topLevelErrors: string[] = [];\n currentStepIndex = 0;\n fieldLoading: Record<string, boolean> = {};\n stepValidating = false;\n submitting = false;\n private readonly skipped = new Map<string, string[]>();\n private validationEpoch = 0;\n private operationEpoch = 0;\n private readonly lifecycle: FormEngineOptions;\n\n private readonly validators: Record<string, ValidatorFn>;\n private get onStepValidate(): StepValidateFn | undefined { return this.lifecycle.onStepValidate; }\n private readonly visibility: VisibilityState;\n private readonly subscriptions = new FormSubscriptions();\n\n constructor(\n readonly definition: FormDefinition,\n initialValues?: Record<string, unknown>,\n options?: FormEngineOptions,\n ) {\n const errors = definitionErrors(definition);\n if (errors.length) throw new Error(errors.join('\\n'));\n this.lifecycle = options ?? {};\n this.validators = options?.validators ?? {};\n this.visibility = new VisibilityState(definition);\n const warnings = validateDefinition(definition);\n for (const { key, validation } of this.visibility.allFields) {\n const name = validation?.validator;\n if (name && !this.validators[name]) warnings.push(`Field \"${key}\" references unknown validator \"${name}\".`);\n }\n for (const warning of warnings) console.warn(`[FormEngine] ${warning}`);\n this.values = createValues(this.visibility.allFields, initialValues);\n this.visibility.reconcileHidden(this.values, this.errors);\n }\n\n get isMultiStep(): boolean {\n return (this.definition.steps ?? []).length > 0;\n }\n\n get visibleSteps(): FormStep[] {\n return this.visibility.state(this.values, this.currentStepIndex).visibleSteps;\n }\n\n get currentStep(): FormStep | null {\n return this.visibility.state(this.values, this.currentStepIndex).currentStep;\n }\n\n get visibleFields(): FormField[] {\n return this.visibility.state(this.values, this.currentStepIndex).visibleFields;\n }\n\n get isFirstStep(): boolean {\n return this.currentStepIndex === 0;\n }\n\n get isLastStep(): boolean {\n return this.currentStepIndex >= this.visibleSteps.length - 1;\n }\n\n get canGoNext(): boolean {\n return this.visibility.getCanGoNext(this.values, this.currentStepIndex, this.validators);\n }\n\n get progress(): { current: number; total: number } {\n const total = this.visibleSteps.length;\n return { current: Math.min(this.currentStepIndex + 1, total), total };\n }\n\n subscribe(listener: () => void): () => void {\n return this.subscriptions.subscribe(listener);\n }\n\n getSnapshot(): number {\n return this.subscriptions.getSnapshot();\n }\n\n subscribeField(key: string, listener: () => void): () => void {\n return this.subscriptions.subscribeField(key, listener);\n }\n\n getFieldSnapshot(key: string): number {\n return this.subscriptions.getFieldSnapshot(key);\n }\n\n subscribeStructure(listener: () => void): () => void {\n return this.subscriptions.subscribeStructure(listener);\n }\n\n getStructureSnapshot(): number {\n return this.subscriptions.getStructureSnapshot();\n }\n\n setValue(key: string, value: unknown): void {\n const previousSteps = this.isMultiStep ? this.visibleSteps : null;\n const valueChanged = !Object.is(this.values[key], value);\n const hadError = this.errors[key] !== undefined;\n this.values[key] = value;\n delete this.errors[key];\n for (const [stepId, keys] of this.skipped) if (valueChanged && keys.includes(key)) this.skipped.delete(stepId);\n const clearedFields = this.visibility.cascadeHiddenFields(key, this.values, this.errors);\n const revalidated = clearResolvedMatchErrors(this.internals, key);\n const changedFields = new Set([...clearedFields, ...revalidated]);\n if (valueChanged || hadError) changedFields.add(key);\n const valuesChanged = valueChanged || clearedFields.size > 0;\n const structureChanged = valuesChanged && this.visibility.affectsStructure(key, clearedFields);\n if (previousSteps && structureChanged) {\n this.visibility.markChanged(true, true);\n this.currentStepIndex = reconcileStepIndex(previousSteps, this.visibleSteps, this.currentStepIndex);\n for (const pruned of pruneOffPathErrors(this.internals)) changedFields.add(pruned);\n }\n this.notify({ fieldKeys: changedFields, structureChanged, valuesChanged });\n }\n\n setErrors(errors: Record<string, string>): void {\n applyValidationErrors(this.internals, errors, true);\n }\n\n setFieldLoading(key: string, loading: boolean): void {\n const previous = this.fieldLoading[key] === true;\n if (loading) this.fieldLoading[key] = true;\n else delete this.fieldLoading[key];\n this.notify({ fieldKeys: previous === loading ? [] : [key] });\n }\n\n cancelPendingActions(): void {\n this.validationEpoch++;\n this.operationEpoch++;\n this.stepValidating = false;\n this.submitting = false;\n this.notify();\n }\n\n nextStep(): boolean { return nextStep(this.internals); }\n nextStepAsync(reason: 'next' | 'autoAdvance' = 'next'): Promise<boolean> { return changeStep(this.internals, 'next', reason); }\n prevStepAsync(): Promise<boolean> { return changeStep(this.internals, 'back'); }\n skipStep(): boolean { return skipStep(this.internals); }\n skipStepAsync(submit?: SubmitFn): Promise<boolean> { return skipStepAsync(this.internals, submit); }\n isStepSkipped(stepId: string): boolean { return this.skipped.has(stepId); }\n submitAsync(submit: SubmitFn): Promise<boolean> { return submitAsync(this.internals, submit); }\n prevStep(): void { prevStep(this.internals); }\n validate(): Record<string, string> { return validateForm(this.internals); }\n validateField(key: string): string | null { return validateOne(this.internals, key); }\n getSubmitValues(): Record<string, unknown> { return getSubmitValues(this.internals); }\n goToStepWithField(key: string): void { goToStepWithField(this.internals, key); }\n reset(values?: Record<string, unknown>): void { resetEngine(this.internals, values); }\n\n private 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 { FormEngine } from './runtime';\n\nfunction sameErrors(previous: Record<string, string>, next: Record<string, string>): boolean {\n const keys = Object.keys(next);\n return keys.length === Object.keys(previous).length && keys.every((key) => previous[key] === next[key]);\n}\n\nfunction holdsErrors(engine: FormEngine, errors: Record<string, string>): boolean {\n return Object.entries(errors).every(([key, message]) => (\n engine.errors[key] === message || engine.topLevelErrors.includes(message)\n ));\n}\n\nexport function shouldApplyExternalErrors(\n engine: FormEngine,\n previous: Record<string, string> | undefined,\n next: Record<string, string>,\n): boolean {\n return !previous || !sameErrors(previous, next) || !holdsErrors(engine, next);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/visibility/evaluate-condition.ts","../src/visibility/is-visible.ts","../src/visibility/is-step-visible.ts","../src/engine/engine-utils.ts","../src/engine/step-routes.ts","../src/definition-validation/definition-analysis.ts","../src/definition-validation/validate-definition.ts","../src/engine/lifecycle-error.ts","../src/engine/pending-inputs.ts","../src/validation/default-messages.ts","../src/validation/validate-field.ts","../src/validation/validate-step.ts","../src/engine/validation-state.ts","../src/engine/step-skip.ts","../src/engine/submission.ts","../src/engine/navigation.ts","../src/engine/subscriptions.ts","../src/engine/visibility-index.ts","../src/engine/visibility-state.ts","../src/engine/runtime.ts","../src/engine/external-errors.ts"],"names":["isBlank","value","evaluateCondition","condition","values","isVisible","field","matches","isStepVisible","hasFieldsAndSteps","definition","hasRoutes","step","conditionFields","source","getAllFields","createValues","fields","initialValues","getChangedKeys","previous","next","keys","key","definitionErrors","steps","warnings","stepIndexes","fieldIndexes","index","route","target","routeFallthroughWarnings","targets","to","candidate","sibling","exits","activeSteps","indexes","result","available","stepValues","reconcileStepIndex","previousStep","preserved","nextIds","before","predecessor","candidates","ActivePath","analyzeDefinition","graph","fieldKeys","depend","owner","id","dependencies","dependency","pattern","earlier","detectCycles","visiting","cycles","start","stack","frame","neighbor","nodes","node","validateDefinition","cycle","FormLifecycleError","phase","cause","afterCommit","callback","error","activePath","engine","watchCheckedInputs","checked","path","getDefaultMessage","rule","params","BOOLEAN_TYPES","isEmpty","boundError","size","rules","unit","min","max","patternError","validateField","allValues","validators","sizeError","matchError","validateStep","validateFields","errors","applyValidationErrors","navigate","previousErrors","message","firstErrorKey","targetIndex","structureChanged","clearResolvedMatchErrors","cleared","getValidationValues","pruneOffPathErrors","pathFields","pruned","getSubmitValues","withoutSkipped","validateForm","validateOne","previousError","visibleKeys","resetEngine","previousValues","loadingFields","changedValues","changedFields","resetValues","skipTarget","skipCurrentStep","includeCurrentStep","submitAsync","submit","keepSkipped","lifecycle","dispatched","epoch","operation","inputsChanged","stale","allowed","hasStepErrors","moveTo","advance","nextStep","skipStep","skipStepAsync","changeStep","committed","skippedValues","edited","submitted","skipped","direction","reason","skipping","validating","validate","toIndex","context","prevStep","goToStepWithField","fieldKey","FormSubscriptions","listener","listeners","indexConditions","dependent","dependents","VisibilityState","valuesChanged","stepIndex","clearedFields","changedKey","seed","queue","queued","clear","current","FormEngine","options","validation","name","warning","total","previousSteps","valueChanged","hadError","stepId","revalidated","loading","sameErrors","holdsErrors","shouldApplyExternalErrors"],"mappings":"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","file":"index.js","sourcesContent":["import type { ShowCondition } from '../types';\n\nexport function isBlank(value: unknown): boolean {\n return value == null || value === '' || (Array.isArray(value) && !value.length);\n}\n\nexport function evaluateCondition(\n condition: ShowCondition,\n values: Record<string, unknown>,\n): boolean {\n const value = values[condition.field];\n\n if (condition.eq !== undefined) {\n return value === condition.eq;\n }\n\n if (condition.neq !== undefined) {\n return value !== condition.neq;\n }\n\n if (condition.in !== undefined) {\n return condition.in.includes(value as string | number);\n }\n\n if (condition.notIn !== undefined) {\n return !condition.notIn.includes(value as string | number);\n }\n\n if (condition.notEmpty === true) {\n return !isBlank(value);\n }\n\n return true;\n}\n","import type { FormField, ShowCondition } from '../types';\nimport { evaluateCondition } from './evaluate-condition';\n\nexport function isVisible(\n field: Pick<FormField, 'show' | 'showAny'>,\n values: Record<string, unknown>,\n): boolean {\n const matches = (condition: ShowCondition) => evaluateCondition(condition, values);\n return (field.show ?? []).every(matches) && (!field.showAny?.length || field.showAny.some(matches));\n}\n","import type { FormStep } from '../types';\nimport { isVisible } from './is-visible';\n\nexport const isStepVisible: (step: FormStep, values: Record<string, unknown>) => boolean = isVisible;\n","import type { FormDefinition, FormField } from '../types';\n\nexport function hasFieldsAndSteps(definition: FormDefinition): boolean {\n return !!definition.fields?.length && !!definition.steps?.length;\n}\n\nexport function hasRoutes(definition: FormDefinition): boolean {\n return !!definition.steps?.some((step) => step.routes?.length);\n}\n\nexport function conditionFields(source: Pick<FormField, 'show' | 'showAny'>): string[] {\n return [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field);\n}\n\nexport function getAllFields(definition: FormDefinition): FormField[] {\n return definition.steps?.length ? definition.steps.flatMap((step) => step.fields) : definition.fields ?? [];\n}\n\nexport function createValues(\n fields: FormField[],\n initialValues?: Record<string, unknown>,\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n for (const field of fields) {\n if (field.defaultValue !== undefined) values[field.key] = field.defaultValue;\n }\n return Object.assign(values, initialValues);\n}\n\nexport function getChangedKeys(\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n): Set<string> {\n const keys = new Set([...Object.keys(previous), ...Object.keys(next)]);\n return new Set([...keys].filter((key) => !Object.is(previous[key], next[key])));\n}\n","import type { FormDefinition, FormStep } from '../types';\nimport { isStepVisible, isVisible } from '../visibility';\nimport { conditionFields, getAllFields, hasFieldsAndSteps, hasRoutes } from './engine-utils';\n\nexport function definitionErrors(definition: FormDefinition): string[] {\n const steps = definition.steps ?? [];\n const warnings = hasFieldsAndSteps(definition) ? ['FormEngine rejects a definition with both \"fields\" and \"steps\".'] : [];\n const stepIndexes = new Map<string, number>();\n const fieldIndexes = new Map<string, number>();\n steps.forEach((step, index) => {\n if (stepIndexes.has(step.id)) warnings.push(`Duplicate step id \"${step.id}\".`);\n stepIndexes.set(step.id, index);\n for (const field of step.fields) fieldIndexes.set(field.key, index);\n });\n for (const { key } of getAllFields(definition)) {\n if (key in Object.prototype || key === 'prototype') warnings.push(`Reserved field key \"${key}\".`);\n }\n if (!hasRoutes(definition)) return warnings;\n steps.forEach((step, index) => {\n for (const route of step.routes ?? []) {\n const target = route.to === null ? null : stepIndexes.get(route.to);\n if (target === undefined || (target !== null && target <= index)) {\n warnings.push(`Invalid route from \"${step.id}\" to \"${route.to}\": targets must be later steps or null.`);\n }\n for (const field of conditionFields(route)) {\n if (!((fieldIndexes.get(field) ?? Infinity) <= index)) {\n warnings.push(`Invalid route on \"${step.id}\": condition field \"${field}\" must belong to this or an earlier step.`);\n }\n }\n }\n });\n return warnings;\n}\n\nexport function routeFallthroughWarnings(definition: FormDefinition): string[] {\n const steps = definition.steps ?? [];\n const warnings: string[] = [];\n for (const step of steps) {\n const targets = new Set((step.routes ?? []).map((route) => route.to).filter((to) => to !== null));\n for (const target of targets) {\n const index = steps.findIndex((candidate) => candidate.id === target);\n const sibling = steps[index + 1];\n const exits = steps[index]?.routes?.some((route) => !route.show?.length && !route.showAny?.length);\n if (sibling && targets.has(sibling.id) && !exits) {\n warnings.push(`Route branch \"${target}\" from \"${step.id}\" continues into sibling branch \"${sibling.id}\". Add an unconditional route where it should continue.`);\n }\n }\n }\n return warnings;\n}\n\nexport function activeSteps(definition: FormDefinition, values: Record<string, unknown>): FormStep[] {\n const steps = definition.steps ?? [];\n if (!hasRoutes(definition)) return steps.filter((step) => isStepVisible(step, values));\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n const result: FormStep[] = [];\n const available: Record<string, unknown> = {};\n for (let index = 0; index < steps.length;) {\n const step = steps[index];\n if (!isStepVisible(step, available)) { index++; continue; }\n result.push(step);\n Object.assign(available, stepValues(step, values, available));\n const route = step.routes?.find((route) => (\n isVisible(route, available) && (route.to === null || ((indexes.get(route.to) ?? -1) > index\n && isStepVisible(steps[indexes.get(route.to)!], available)))\n ));\n if (route?.to === null) break;\n index = route ? indexes.get(route.to)! : index + 1;\n }\n return result;\n}\n\nexport function reconcileStepIndex(previous: FormStep[], next: FormStep[], index: number): number {\n const previousStep = previous[index] ?? previous[previous.length - 1];\n const preserved = next.findIndex((step) => step.id === previousStep?.id);\n if (preserved !== -1) return preserved;\n const nextIds = new Map(next.map((step, index) => [step.id, index]));\n for (let before = Math.min(index - 1, previous.length - 1); before >= 0; before--) {\n const predecessor = nextIds.get(previous[before].id);\n if (predecessor !== undefined) return predecessor;\n }\n return 0;\n}\n\nfunction stepValues(step: FormStep, values: Record<string, unknown>, previous: Record<string, unknown>) {\n const candidates = { ...previous };\n for (const field of step.fields) candidates[field.key] = values[field.key];\n const result: Record<string, unknown> = {};\n for (const field of step.fields) {\n if (isVisible(field, candidates) && values[field.key] !== undefined) result[field.key] = values[field.key];\n }\n return result;\n}\n\nexport class ActivePath {\n readonly enabled: boolean;\n private source: Record<string, unknown> | null = null;\n private activeStepList: FormStep[] = [];\n private activeValueMap: Record<string, unknown> = {};\n\n constructor(private definition: FormDefinition) {\n this.enabled = hasRoutes(definition);\n }\n\n invalidate(): void { this.source = null; }\n\n steps(values: Record<string, unknown>): FormStep[] {\n this.refresh(values);\n return this.activeStepList;\n }\n\n values(values: Record<string, unknown>): Record<string, unknown> {\n this.refresh(values);\n return this.activeValueMap;\n }\n\n private refresh(values: Record<string, unknown>): void {\n if (this.source === values) return;\n this.source = values;\n this.activeStepList = activeSteps(this.definition, values);\n const result: Record<string, unknown> = {};\n for (const step of this.activeStepList) Object.assign(result, stepValues(step, values, result));\n this.activeValueMap = result;\n }\n}\n","import { conditionFields, getAllFields, hasRoutes } from '../engine/engine-utils';\nimport type { FormDefinition, FormField } from '../types';\n\nexport interface DefinitionAnalysis {\n graph: Map<string, string[]>;\n warnings: string[];\n}\n\nexport function analyzeDefinition(definition: FormDefinition): DefinitionAnalysis {\n const warnings: string[] = [];\n const graph = new Map<string, string[]>();\n const fields = getAllFields(definition);\n const fieldKeys = new Set<string>();\n for (const { key } of fields) {\n if (fieldKeys.has(key)) warnings.push(`Duplicate field key \"${key}\" — fields will share state and overwrite each other`);\n fieldKeys.add(key);\n }\n const depend = (owner: string, id: string, source: Pick<FormField, 'show' | 'showAny'>, keys: string[]) => {\n const dependencies = conditionFields(source);\n for (const dependency of dependencies) {\n if (!fieldKeys.has(dependency)) warnings.push(`${owner} \"${id}\" has show condition referencing non-existent field \"${dependency}\"`);\n }\n if (dependencies.length) for (const key of keys) graph.set(key, [...(graph.get(key) ?? []), ...dependencies]);\n };\n for (const field of fields) {\n depend('Field', field.key, field, [field.key]);\n const pattern = field.validation?.pattern;\n if (pattern === undefined) continue;\n try {\n new RegExp(pattern);\n } catch {\n warnings.push(`Field \"${field.key}\" has invalid regex pattern: \"${pattern}\"`);\n }\n }\n const earlier = new Set<string>();\n for (const step of definition.steps ?? []) {\n depend('Step', step.id, step, step.fields.map((field) => field.key));\n for (const field of conditionFields(step)) {\n if (hasRoutes(definition) && fieldKeys.has(field) && !earlier.has(field)) {\n warnings.push(`Step \"${step.id}\" condition field \"${field}\" must belong to an earlier step.`);\n }\n }\n for (const { key } of step.fields) earlier.add(key);\n if (step.skip && (step.next === false || !definition.steps![1])) {\n warnings.push(`Step \"${step.id}\" has \"skip\" but no Next button or later step.`);\n }\n }\n return { graph, warnings };\n}\n","import { definitionErrors, routeFallthroughWarnings } from '../engine/step-routes';\nimport type { FormDefinition } from '../types';\nimport { analyzeDefinition } from './definition-analysis';\n\nfunction detectCycles(graph: Map<string, string[]>): string[][] {\n const visiting = new Map<string, boolean>();\n const cycles: string[][] = [];\n for (const start of graph.keys()) {\n if (visiting.has(start)) continue;\n visiting.set(start, true);\n const stack: [string, number][] = [[start, 0]];\n while (stack.length > 0) {\n const frame = stack[stack.length - 1];\n const neighbor = graph.get(frame[0])?.[frame[1]++];\n if (neighbor === undefined) {\n visiting.set(frame[0], false);\n stack.pop();\n } else if (visiting.get(neighbor)) {\n const nodes = stack.map(([node]) => node);\n cycles.push([...nodes.slice(nodes.indexOf(neighbor)), neighbor]);\n } else if (!visiting.has(neighbor)) {\n visiting.set(neighbor, true);\n stack.push([neighbor, 0]);\n }\n }\n }\n return cycles;\n}\n\nexport function validateDefinition(definition: FormDefinition): string[] {\n const { graph, warnings } = analyzeDefinition(definition);\n for (const cycle of detectCycles(graph)) {\n warnings.push(`Circular show condition detected: ${cycle.join(' -> ')}`);\n }\n return [...definitionErrors(definition), ...warnings, ...routeFallthroughWarnings(definition)];\n}\n","export class FormLifecycleError extends Error {\n readonly committed = true;\n readonly cause: unknown;\n\n constructor(readonly phase: 'afterStepChange' | 'afterSubmit', cause: unknown) {\n super(`The action completed, but ${phase} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\n this.name = 'FormLifecycleError';\n this.cause = cause;\n }\n}\n\nexport async function afterCommit(phase: 'afterStepChange' | 'afterSubmit', callback: () => void | Promise<void>): Promise<void> {\n try { await callback(); }\n catch (error) { throw new FormLifecycleError(phase, error); }\n}\n","import type { EngineInternals } from './runtime-internals';\n\nfunction activePath(engine: EngineInternals): string {\n return engine.visibleSteps.map((step) => step.id).join('\\n');\n}\n\nexport function watchCheckedInputs(engine: EngineInternals, checked: Record<string, unknown>): () => boolean {\n const path = activePath(engine);\n return () => activePath(engine) !== path || Object.keys(checked).some(\n (key) => checked[key] !== undefined && !Object.is(engine.values[key], checked[key]),\n );\n}\n","export const TYPE_MESSAGES = {\n email: 'Enter a valid email',\n number: 'Enter a number',\n boolean: 'Must be true or false',\n option: 'Select one of the available options',\n options: 'Must be a list of available options',\n string: 'Must be text',\n date: 'Enter a valid date',\n datetime: 'Enter a valid date and time',\n file: 'Must be a file reference',\n value: 'Invalid value',\n};\n\nexport function getDefaultMessage(rule: string, params?: Record<string, unknown>): string {\n switch (rule) {\n case 'required':\n return 'This field is required';\n case 'minLength':\n return `Must be at least ${params?.min} ${params?.unit ?? 'characters'}`;\n case 'maxLength':\n return `Must be at most ${params?.max} ${params?.unit ?? 'characters'}`;\n case 'min':\n return `Must be at least ${params?.min}`;\n case 'max':\n return `Must be at most ${params?.max}`;\n case 'pattern':\n return 'Invalid format';\n case 'matchField':\n return 'Fields must match';\n default:\n return 'Invalid value';\n }\n}\n","import type { FieldValidation, FormField } from '../types';\nimport { isBlank } from '../visibility';\nimport { getDefaultMessage } from './default-messages';\n\nexport type ValidatorFn = (\n value: unknown,\n allValues: Record<string, unknown>,\n) => string | null;\n\nexport const BOOLEAN_TYPES = new Set(['checkbox', 'switch']);\n\nfunction isEmpty(value: unknown, field: FormField): boolean {\n return isBlank(value) || (value === false && BOOLEAN_TYPES.has(field.type));\n}\n\nfunction boundError(\n size: number,\n rule: 'Length' | '',\n rules: FieldValidation,\n unit?: string,\n): string | undefined {\n const min = rules[`min${rule}`];\n const max = rules[`max${rule}`];\n if (min !== undefined && size < min) return rules[`min${rule}Message`] ?? getDefaultMessage(`min${rule}`, { min, unit });\n if (max !== undefined && size > max) return rules[`max${rule}Message`] ?? getDefaultMessage(`max${rule}`, { max, unit });\n return undefined;\n}\n\nfunction patternError(value: unknown, rules: FieldValidation): string | undefined {\n if (rules.pattern === undefined) return undefined;\n try {\n return new RegExp(rules.pattern).test(String(value)) ? undefined : rules.patternMessage ?? getDefaultMessage('pattern');\n } catch {\n return undefined;\n }\n}\n\nexport function validateField(\n field: FormField,\n value: unknown,\n allValues: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): string | null {\n const rules = field.validation;\n if (!rules) return null;\n if (isEmpty(value, field)) {\n if (!rules.required) return null;\n return typeof rules.required === 'string' ? rules.required : getDefaultMessage('required');\n }\n const sizeError = typeof value === 'string' || Array.isArray(value)\n ? boundError(value.length, 'Length', rules, Array.isArray(value) ? 'items' : undefined)\n : typeof value === 'number' ? boundError(value, '', rules) : undefined;\n const matchError = rules.matchField !== undefined && value !== allValues[rules.matchField]\n ? rules.matchFieldMessage ?? getDefaultMessage('matchField')\n : undefined;\n return (sizeError\n ?? patternError(value, rules)\n ?? matchError\n ?? (rules.validator ? validators?.[rules.validator]?.(value, allValues) : undefined)) || null;\n}\n","import type { FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport { type ValidatorFn, validateField } from './validate-field';\n\nexport function validateStep(\n step: FormStep,\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n return validateFields(step.fields, values, validators);\n}\n\nexport function validateFields(\n fields: FormField[],\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n const errors: Record<string, string> = {};\n\n for (const field of fields) {\n if (!isVisible(field, values)) continue;\n\n const error = validateField(field, values[field.key], values, validators);\n if (error) {\n errors[field.key] = error;\n }\n }\n\n return errors;\n}\n","import { validateField, validateFields, validateStep } from '../validation';\nimport { createValues, getChangedKeys, hasRoutes } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\n\nexport function applyValidationErrors(engine: EngineInternals, errors: Record<string, string>, navigate = false): void {\n const previousErrors = engine.errors;\n engine.errors = {};\n engine.topLevelErrors = [];\n for (const [key, message] of Object.entries(errors)) {\n if (engine.visibility.isFieldVisible(key, engine.values)) engine.errors[key] = message;\n else engine.topLevelErrors.push(message);\n }\n const firstErrorKey = Object.keys(errors).find((key) => engine.errors[key] !== undefined);\n const targetIndex = navigate && firstErrorKey && engine.isMultiStep\n ? engine.visibility.findStepIndex(firstErrorKey, engine.values, engine.currentStepIndex)\n : null;\n const structureChanged = targetIndex !== null && targetIndex !== engine.currentStepIndex;\n if (targetIndex !== null) engine.currentStepIndex = targetIndex;\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors), structureChanged });\n}\n\nexport function clearResolvedMatchErrors(engine: EngineInternals, key: string): string[] {\n const cleared: string[] = [];\n for (const field of engine.visibility.allFields) {\n if (field.validation?.matchField !== key || engine.errors[field.key] === undefined) continue;\n if (validateField(field, engine.values[field.key], getValidationValues(engine), engine.validators)) continue;\n delete engine.errors[field.key];\n cleared.push(field.key);\n }\n return cleared;\n}\n\nexport function pruneOffPathErrors(engine: EngineInternals): string[] {\n const pathFields = new Set(engine.visibleSteps.flatMap((step) => step.fields.map((field) => field.key)));\n const pruned = Object.keys(engine.errors).filter((key) => !pathFields.has(key));\n for (const key of pruned) delete engine.errors[key];\n return pruned;\n}\n\nexport function getValidationValues(engine: EngineInternals): Record<string, unknown> {\n return hasRoutes(engine.definition) ? getSubmitValues(engine) : withoutSkipped(engine, { ...engine.values });\n}\n\nfunction withoutSkipped(engine: EngineInternals, values: Record<string, unknown>): Record<string, unknown> {\n for (const key of [...engine.skipped.values()].flat()) delete values[key];\n return values;\n}\n\nexport function validateForm(engine: EngineInternals): Record<string, string> {\n const previousErrors = engine.errors;\n const errors: Record<string, string> = {};\n if (engine.isMultiStep) {\n for (const step of engine.visibleSteps) {\n if (engine.skipped.has(step.id)) continue;\n Object.assign(errors, validateStep(step, getValidationValues(engine), engine.validators));\n }\n } else {\n Object.assign(\n errors,\n validateFields(engine.definition.fields ?? [], engine.values, engine.validators),\n );\n }\n engine.errors = errors;\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, errors) });\n return errors;\n}\n\nexport function validateOne(engine: EngineInternals, key: string): string | null {\n const field = engine.visibility.fieldByKey.get(key);\n if (!field || !engine.visibility.isFieldVisible(key, engine.values)) return null;\n const previousError = engine.errors[key];\n const error = validateField(field, engine.values[key], getValidationValues(engine), engine.validators);\n if (error) engine.errors[key] = error;\n else delete engine.errors[key];\n const fieldKeys = Object.is(previousError, engine.errors[key]) ? [] : [key];\n engine.notify({ fieldKeys });\n return error;\n}\n\nexport function getSubmitValues(engine: EngineInternals): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n const visibleKeys = engine.visibility.getVisibleFieldKeys(\n engine.values,\n engine.currentStepIndex,\n );\n for (const key of visibleKeys) {\n if (engine.values[key] !== undefined) result[key] = engine.values[key];\n }\n return withoutSkipped(engine, result);\n}\n\nexport function resetEngine(engine: EngineInternals, values?: Record<string, unknown>): void {\n const previousValues = engine.values;\n const previousErrors = engine.errors;\n const loadingFields = Object.keys(engine.fieldLoading);\n engine.validationEpoch++;\n engine.operationEpoch++;\n engine.submitting = false;\n engine.values = createValues(engine.visibility.allFields, values);\n engine.errors = {};\n engine.topLevelErrors = [];\n engine.fieldLoading = {};\n engine.stepValidating = false;\n engine.currentStepIndex = 0;\n engine.skipped.clear();\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n const changedValues = getChangedKeys(previousValues, engine.values);\n const changedFields = new Set([\n ...changedValues,\n ...getChangedKeys(previousErrors, engine.errors),\n ...loadingFields,\n ]);\n engine.notify({\n fieldKeys: changedFields,\n structureChanged: true,\n valuesChanged: changedValues.size > 0,\n });\n}\n","import type { FormStep } from '../types';\nimport { createValues } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\nimport { activeSteps } from './step-routes';\n\nfunction resetValues(engine: EngineInternals): Record<string, unknown> {\n const fields = engine.currentStep?.fields ?? [];\n const values = { ...engine.values };\n for (const { key } of fields) delete values[key];\n return Object.assign(values, createValues(fields));\n}\n\nexport function skipTarget(engine: EngineInternals): FormStep | undefined {\n return activeSteps(engine.definition, resetValues(engine))[engine.currentStepIndex + 1];\n}\n\nexport function skipCurrentStep(engine: EngineInternals): string[] {\n const step = engine.currentStep!;\n const fieldKeys = step.fields.map(({ key }) => key);\n engine.values = resetValues(engine);\n for (const key of fieldKeys) delete engine.errors[key];\n engine.skipped.set(step.id, fieldKeys);\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n engine.notify({ fieldKeys, structureChanged: true, valuesChanged: true });\n return fieldKeys;\n}\n\nexport function includeCurrentStep(engine: EngineInternals): void {\n const step = engine.currentStep;\n if (step) engine.skipped.delete(step.id);\n}\n\nexport function skipStepAt(engine: EngineInternals, index: number): string[] {\n engine.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n return skipCurrentStep(engine);\n}\n","import { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport type { SubmitFn } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\nimport { getSubmitValues, validateForm } from './validation-state';\nimport { includeCurrentStep } from './step-skip';\n\nexport async function submitAsync(engine: EngineInternals, submit: SubmitFn, keepSkipped = false): Promise<boolean> {\n if (engine.submitting || engine.stepValidating) return false;\n if (!keepSkipped) includeCurrentStep(engine);\n const lifecycle = { ...engine.lifecycle };\n let dispatched = false;\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n let values = getSubmitValues(engine);\n const inputsChanged = watchCheckedInputs(engine, values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch || inputsChanged();\n engine.submitting = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (Object.keys(validateForm(engine)).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)).length > 0 || stale()) return false;\n values = getSubmitValues(engine);\n }\n dispatched = true;\n await submit(values, [...engine.skipped.keys()]);\n if (operation !== engine.operationEpoch) return true;\n await afterCommit('afterSubmit', () => lifecycle.onAfterSubmit?.(values));\n return true;\n } catch (error) {\n if (!dispatched && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.submitting = false;\n engine.notify();\n }\n }\n}\n","import { getChangedKeys } from './engine-utils';\nimport { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport { validateStep } from '../validation';\nimport { applyValidationErrors, getValidationValues } from './validation-state';\nimport { includeCurrentStep, skipCurrentStep, skipTarget } from './step-skip';\nimport { submitAsync } from './submission';\nimport type { StepChangeContext, SubmitFn } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\n\nfunction hasStepErrors(engine: EngineInternals): boolean {\n const step = engine.currentStep;\n if (!step) return true;\n const errors = validateStep(step, getValidationValues(engine), engine.validators);\n if (Object.keys(errors).length === 0) return false;\n const previousErrors = { ...engine.errors };\n Object.assign(engine.errors, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors) });\n return true;\n}\n\nfunction moveTo(engine: EngineInternals, index: number): void {\n engine.validationEpoch++;\n engine.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n}\n\nfunction advance(engine: EngineInternals): boolean {\n if (engine.isLastStep) return false;\n moveTo(engine, engine.currentStepIndex + 1);\n return true;\n}\n\nexport function nextStep(engine: EngineInternals): boolean {\n if (!engine.isMultiStep) return false;\n includeCurrentStep(engine);\n return !hasStepErrors(engine) && advance(engine);\n}\n\nexport function skipStep(engine: EngineInternals): boolean {\n if (!engine.isMultiStep || !skipTarget(engine)) return false;\n skipCurrentStep(engine);\n return advance(engine);\n}\n\nexport async function skipStepAsync(engine: EngineInternals, submit?: SubmitFn): Promise<boolean> {\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting) return false;\n if (skipTarget(engine)) return changeStep(engine, 'next', 'skip');\n const step = engine.currentStep;\n if (!submit || !step) return false;\n const values = engine.values;\n const errors = { ...engine.errors };\n let committed = false;\n const fieldKeys = skipCurrentStep(engine);\n const skippedValues = engine.values;\n const edited = watchCheckedInputs(engine, { ...skippedValues });\n try {\n return await submitAsync(engine, async (submitted, skipped) => {\n await submit(submitted, skipped);\n committed = true;\n }, true);\n } finally {\n if (!committed && engine.values === skippedValues && !edited()) {\n engine.values = values;\n engine.errors = { ...errors, ...engine.errors };\n engine.skipped.delete(step.id);\n engine.notify({ fieldKeys, structureChanged: true, valuesChanged: true });\n }\n }\n}\n\nexport async function changeStep(engine: EngineInternals, direction: 'next' | 'back', reason: StepChangeContext['reason'] = direction): Promise<boolean> {\n const skipping = reason === 'skip';\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting) return false;\n if (!skipping && (direction === 'next' ? engine.isLastStep : engine.isFirstStep)) return false;\n const step = engine.currentStep!;\n const validating = direction === 'next' && !skipping;\n if (validating) includeCurrentStep(engine);\n if (validating && hasStepErrors(engine)) return false;\n const lifecycle = { ...engine.lifecycle };\n const validate = engine.onStepValidate;\n let committed = false;\n const fromIndex = engine.currentStepIndex;\n const toIndex = fromIndex + (direction === 'next' ? 1 : -1);\n const target = skipping ? skipTarget(engine) : engine.visibleSteps[toIndex];\n if (!target) return false;\n const context = { fromStepId: step.id, toStepId: target.id, direction, reason, values: { ...getValidationValues(engine) } };\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n const inputsChanged = watchCheckedInputs(engine, context.values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch\n || engine.currentStep?.id !== step.id || inputsChanged();\n engine.stepValidating = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (validating && validate) {\n const result = await validate!(step.id, context.values);\n if (stale()) return false;\n if (result && Object.keys(result).length > 0) {\n applyValidationErrors(engine, result);\n return false;\n }\n }\n if (lifecycle.onBeforeStepChange) {\n const allowed = await lifecycle.onBeforeStepChange(context);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (validating && hasStepErrors(engine)) return false;\n committed = true;\n if (skipping) skipCurrentStep(engine);\n moveTo(engine, toIndex);\n await afterCommit('afterStepChange', () => lifecycle.onAfterStepChange?.(context));\n return true;\n } catch (error) {\n if (!committed && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.stepValidating = false;\n engine.notify();\n }\n }\n}\n\nexport function prevStep(engine: EngineInternals): void {\n if (engine.isMultiStep && !engine.isFirstStep) moveTo(engine, engine.currentStepIndex - 1);\n}\n\nexport function goToStepWithField(engine: EngineInternals, fieldKey: string): void {\n if (!engine.isMultiStep) return;\n const targetIndex = engine.visibility.findStepIndex(\n fieldKey,\n engine.values,\n engine.currentStepIndex,\n );\n if (targetIndex === engine.currentStepIndex) engine.notify();\n else if (targetIndex !== null) moveTo(engine, targetIndex);\n}\n","export interface NotifyOptions {\n fieldKeys?: Iterable<string>;\n structureChanged?: boolean;\n}\n\nexport class FormSubscriptions {\n private version = 0;\n private listeners = new Set<() => void>();\n private fieldVersions = new Map<string, number>();\n private fieldListeners = new Map<string, Set<() => void>>();\n private structureVersion = 0;\n private structureListeners = new Set<() => void>();\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n getSnapshot(): number {\n return this.version;\n }\n\n subscribeField(key: string, listener: () => void): () => void {\n const listeners = this.fieldListeners.get(key) ?? new Set();\n listeners.add(listener);\n this.fieldListeners.set(key, listeners);\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) this.fieldListeners.delete(key);\n };\n }\n\n getFieldSnapshot(key: string): number {\n return this.fieldVersions.get(key) ?? 0;\n }\n\n subscribeStructure(listener: () => void): () => void {\n this.structureListeners.add(listener);\n return () => this.structureListeners.delete(listener);\n }\n\n getStructureSnapshot(): number {\n return this.structureVersion;\n }\n\n notify({ fieldKeys = [], structureChanged = false }: NotifyOptions = {}): void {\n for (const key of new Set(fieldKeys)) this.notifyField(key);\n if (structureChanged) this.notifyStructure();\n\n this.version++;\n for (const listener of this.listeners) listener();\n }\n\n private notifyField(key: string): void {\n this.fieldVersions.set(key, (this.fieldVersions.get(key) ?? 0) + 1);\n for (const listener of this.fieldListeners.get(key) ?? []) listener();\n }\n\n private notifyStructure(): void {\n this.structureVersion++;\n for (const listener of this.structureListeners) listener();\n }\n}\n","import type { FormField, FormStep } from '../types';\nimport { conditionFields } from './engine-utils';\n\nexport function indexConditions<T extends FormField | FormStep>(dependent: T, index: Map<string, Set<T>>): void {\n for (const field of conditionFields(dependent)) {\n const dependents = index.get(field) ?? new Set<T>();\n dependents.add(dependent);\n index.set(field, dependents);\n }\n}\n","import { conditionFields, getAllFields } from './engine-utils';\nimport { indexConditions } from './visibility-index';\nimport { ActivePath } from './step-routes';\nimport type { ValidatorFn } from '../validation';\nimport { validateStep } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport { isStepVisible, isVisible } from '../visibility';\n\ninterface VisibilityCache {\n visibleSteps: FormStep[];\n currentStep: FormStep | null;\n visibleFields: FormField[];\n canGoNext: boolean;\n}\n\nexport class VisibilityState {\n readonly allFields: FormField[];\n readonly fieldByKey: Map<string, FormField>;\n private routeFields = new Set<string>();\n private readonly path: ActivePath;\n private fieldDependents = new Map<string, Set<FormField>>();\n private stepDependents = new Map<string, Set<FormStep>>();\n private stepByFieldKey = new Map<string, FormStep>();\n private visibilityDirty = true;\n private canGoNextDirty = true;\n private cache: VisibilityCache = {\n visibleSteps: [],\n currentStep: null,\n visibleFields: [],\n canGoNext: false,\n };\n\n constructor(private definition: FormDefinition) {\n this.allFields = getAllFields(definition);\n this.fieldByKey = new Map(this.allFields.map((field) => [field.key, field]));\n this.path = new ActivePath(definition);\n for (const step of definition.steps ?? []) {\n for (const field of step.fields) this.stepByFieldKey.set(field.key, step);\n }\n this.buildIndexes();\n }\n\n markChanged(structureChanged: boolean, valuesChanged: boolean): void {\n if (structureChanged || valuesChanged) this.path.invalidate();\n if (structureChanged) {\n this.visibilityDirty = true;\n this.canGoNextDirty = true;\n } else if (valuesChanged) {\n this.canGoNextDirty = true;\n }\n }\n\n state(values: Record<string, unknown>, stepIndex: number): VisibilityCache {\n this.recomputeVisibility(values, stepIndex);\n return this.cache;\n }\n\n getCanGoNext(\n values: Record<string, unknown>,\n stepIndex: number,\n validators: Record<string, ValidatorFn>,\n ): boolean {\n this.recomputeVisibility(values, stepIndex);\n if (!this.canGoNextDirty) return this.cache.canGoNext;\n this.canGoNextDirty = false;\n const step = this.cache.currentStep;\n const errors = step ? validateStep(step, this.conditionValues(values), validators) : {};\n this.cache.canGoNext = this.isMultiStep && Object.keys(errors).length === 0;\n return this.cache.canGoNext;\n }\n\n findStepIndex(fieldKey: string, values: Record<string, unknown>, stepIndex: number): number | null {\n const steps = this.state(values, stepIndex).visibleSteps;\n const target = steps.findIndex((step) => step.fields.some((field) => field.key === fieldKey));\n return target === -1 ? null : target;\n }\n\n affectsStructure(key: string, clearedFields: Set<string>): boolean {\n return this.routeFields.has(key) || this.fieldDependents.has(key) || this.stepDependents.has(key) || clearedFields.size > 0;\n }\n\n cascadeHiddenFields(\n changedKey: string,\n values: Record<string, unknown>,\n errors: Record<string, string>,\n ): Set<string> {\n this.path.invalidate();\n if (this.hasRoutes) return this.reconcileHidden(values, errors);\n return this.drainQueue(new Set([changedKey]), values, errors);\n }\n\n reconcileHidden(values: Record<string, unknown>, errors: Record<string, string>): Set<string> {\n this.path.invalidate();\n const seed = new Set([...this.fieldDependents.keys(), ...this.stepDependents.keys()]);\n return this.drainQueue(seed, values, errors);\n }\n private drainQueue(\n seed: Set<string>,\n values: Record<string, unknown>,\n errors: Record<string, string>,\n ): Set<string> {\n const queue = [...seed];\n const queued = new Set(queue);\n const cleared = new Set<string>();\n const clear = (key: string) => {\n delete values[key];\n delete errors[key];\n this.path.invalidate();\n cleared.add(key);\n if (queued.has(key)) return;\n queued.add(key);\n queue.push(key);\n };\n\n for (let index = 0; index < queue.length; index++) {\n const key = queue[index];\n queued.delete(key);\n this.clearHiddenFields(this.fieldDependents.get(key), values, clear);\n this.clearHiddenSteps(this.stepDependents.get(key), values, clear);\n }\n return cleared;\n }\n\n isFieldVisible(key: string, values: Record<string, unknown>): boolean {\n const field = this.fieldByKey.get(key);\n if (!field || !isVisible(field, this.conditionValues(values))) return false;\n const step = this.stepByFieldKey.get(key);\n return !step || this.path.steps(values).includes(step);\n }\n\n getVisibleFieldKeys(values: Record<string, unknown>, stepIndex: number): Set<string> {\n if (this.hasRoutes) return new Set(Object.keys(this.path.values(values)));\n const keys = new Set<string>();\n const fields = this.isMultiStep\n ? this.state(values, stepIndex).visibleSteps.flatMap((step) => step.fields)\n : this.definition.fields ?? [];\n for (const field of fields) {\n if (isVisible(field, this.conditionValues(values))) keys.add(field.key);\n }\n return keys;\n }\n private conditionValues(values: Record<string, unknown>) { return this.hasRoutes ? this.path.values(values) : values; }\n private get hasRoutes(): boolean { return this.path.enabled; }\n private get isMultiStep(): boolean { return (this.definition.steps ?? []).length > 0; }\n private buildIndexes(): void {\n for (const field of this.allFields) {\n indexConditions(field, this.fieldDependents);\n }\n for (const step of this.definition.steps ?? []) {\n indexConditions(step, this.stepDependents);\n for (const route of step.routes ?? []) {\n for (const field of conditionFields(route)) this.routeFields.add(field);\n }\n }\n }\n private recomputeVisibility(values: Record<string, unknown>, stepIndex: number): void {\n if (!this.visibilityDirty) return;\n this.visibilityDirty = false;\n if (!this.isMultiStep) {\n this.cache.visibleSteps = [];\n this.cache.currentStep = null;\n this.cache.visibleFields = (this.definition.fields ?? []).filter((field) => isVisible(field, this.conditionValues(values)));\n return;\n }\n this.cache.visibleSteps = this.path.steps(values);\n const steps = this.cache.visibleSteps;\n this.cache.currentStep = steps[stepIndex] ?? steps[steps.length - 1] ?? null;\n const current = this.cache.currentStep;\n this.cache.visibleFields = current\n ? current.fields.filter((field) => isVisible(field, this.conditionValues(values)))\n : [];\n }\n private clearHiddenFields(\n fields: Iterable<FormField> | undefined,\n values: Record<string, unknown>,\n clear: (key: string) => void,\n ): void {\n for (const field of fields ?? []) {\n const step = this.stepByFieldKey.get(field.key);\n if (this.hasRoutes && step && !this.path.steps(values).includes(step)) continue;\n if (isVisible(field, this.conditionValues(values)) || values[field.key] === undefined) continue;\n clear(field.key);\n }\n }\n private clearHiddenSteps(\n steps: Iterable<FormStep> | undefined,\n values: Record<string, unknown>,\n clear: (key: string) => void,\n ): void {\n for (const step of steps ?? []) {\n if (isStepVisible(step, this.conditionValues(values))) continue;\n for (const field of step.fields) {\n if (values[field.key] === undefined) continue;\n clear(field.key);\n }\n }\n }\n}\n","import { validateDefinition } from '../definition-validation';\nimport type { ValidatorFn } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport type { FormEngineOptions, StepValidateFn, SubmitFn } from './engine-options';\nimport { createValues } from './engine-utils';\nimport { changeStep, goToStepWithField, nextStep, prevStep, skipStep, skipStepAsync } from './navigation';\nimport type { EngineInternals, RuntimeNotifyOptions } from './runtime-internals';\nimport { FormSubscriptions, type NotifyOptions } from './subscriptions';\nimport {\n applyValidationErrors,\n getSubmitValues,\n resetEngine,\n validateForm,\n validateOne,\n clearResolvedMatchErrors,\n pruneOffPathErrors,\n} from './validation-state';\nimport { submitAsync } from './submission';\nimport { definitionErrors, reconcileStepIndex } from './step-routes';\nimport { VisibilityState } from './visibility-state';\n\nexport class FormEngine {\n values: Record<string, unknown>;\n errors: Record<string, string> = {};\n topLevelErrors: string[] = [];\n currentStepIndex = 0;\n fieldLoading: Record<string, boolean> = {};\n stepValidating = false;\n submitting = false;\n private readonly skipped = new Map<string, string[]>();\n private validationEpoch = 0;\n private operationEpoch = 0;\n private readonly lifecycle: FormEngineOptions;\n\n private readonly validators: Record<string, ValidatorFn>;\n private get onStepValidate(): StepValidateFn | undefined { return this.lifecycle.onStepValidate; }\n private readonly visibility: VisibilityState;\n private readonly subscriptions = new FormSubscriptions();\n\n constructor(\n readonly definition: FormDefinition,\n initialValues?: Record<string, unknown>,\n options?: FormEngineOptions,\n ) {\n const errors = definitionErrors(definition);\n if (errors.length) throw new Error(errors.join('\\n'));\n this.lifecycle = options ?? {};\n this.validators = options?.validators ?? {};\n this.visibility = new VisibilityState(definition);\n const warnings = validateDefinition(definition);\n for (const { key, validation } of this.visibility.allFields) {\n const name = validation?.validator;\n if (name && !this.validators[name]) warnings.push(`Field \"${key}\" references unknown validator \"${name}\".`);\n }\n for (const warning of warnings) console.warn(`[FormEngine] ${warning}`);\n this.values = createValues(this.visibility.allFields, initialValues);\n this.visibility.reconcileHidden(this.values, this.errors);\n }\n\n get isMultiStep(): boolean {\n return (this.definition.steps ?? []).length > 0;\n }\n\n get visibleSteps(): FormStep[] {\n return this.visibility.state(this.values, this.currentStepIndex).visibleSteps;\n }\n\n get currentStep(): FormStep | null {\n return this.visibility.state(this.values, this.currentStepIndex).currentStep;\n }\n\n get visibleFields(): FormField[] {\n return this.visibility.state(this.values, this.currentStepIndex).visibleFields;\n }\n\n get isFirstStep(): boolean {\n return this.currentStepIndex === 0;\n }\n\n get isLastStep(): boolean {\n return this.currentStepIndex >= this.visibleSteps.length - 1;\n }\n\n get canGoNext(): boolean {\n return this.visibility.getCanGoNext(this.values, this.currentStepIndex, this.validators);\n }\n\n get progress(): { current: number; total: number } {\n const total = this.visibleSteps.length;\n return { current: Math.min(this.currentStepIndex + 1, total), total };\n }\n\n subscribe(listener: () => void): () => void {\n return this.subscriptions.subscribe(listener);\n }\n\n getSnapshot(): number {\n return this.subscriptions.getSnapshot();\n }\n\n subscribeField(key: string, listener: () => void): () => void {\n return this.subscriptions.subscribeField(key, listener);\n }\n\n getFieldSnapshot(key: string): number {\n return this.subscriptions.getFieldSnapshot(key);\n }\n\n subscribeStructure(listener: () => void): () => void {\n return this.subscriptions.subscribeStructure(listener);\n }\n\n getStructureSnapshot(): number {\n return this.subscriptions.getStructureSnapshot();\n }\n\n setValue(key: string, value: unknown): void {\n const previousSteps = this.isMultiStep ? this.visibleSteps : null;\n const valueChanged = !Object.is(this.values[key], value);\n const hadError = this.errors[key] !== undefined;\n this.values[key] = value;\n delete this.errors[key];\n for (const [stepId, keys] of this.skipped) if (valueChanged && keys.includes(key)) this.skipped.delete(stepId);\n const clearedFields = this.visibility.cascadeHiddenFields(key, this.values, this.errors);\n const revalidated = clearResolvedMatchErrors(this.internals, key);\n const changedFields = new Set([...clearedFields, ...revalidated]);\n if (valueChanged || hadError) changedFields.add(key);\n const valuesChanged = valueChanged || clearedFields.size > 0;\n const structureChanged = valuesChanged && this.visibility.affectsStructure(key, clearedFields);\n if (previousSteps && structureChanged) {\n this.visibility.markChanged(true, true);\n this.currentStepIndex = reconcileStepIndex(previousSteps, this.visibleSteps, this.currentStepIndex);\n for (const pruned of pruneOffPathErrors(this.internals)) changedFields.add(pruned);\n }\n this.notify({ fieldKeys: changedFields, structureChanged, valuesChanged });\n }\n\n setErrors(errors: Record<string, string>): void {\n applyValidationErrors(this.internals, errors, true);\n }\n\n setFieldLoading(key: string, loading: boolean): void {\n const previous = this.fieldLoading[key] === true;\n if (loading) this.fieldLoading[key] = true;\n else delete this.fieldLoading[key];\n this.notify({ fieldKeys: previous === loading ? [] : [key] });\n }\n\n cancelPendingActions(): void {\n this.validationEpoch++;\n this.operationEpoch++;\n this.stepValidating = false;\n this.submitting = false;\n this.notify();\n }\n\n nextStep(): boolean { return nextStep(this.internals); }\n nextStepAsync(reason: 'next' | 'autoAdvance' = 'next'): Promise<boolean> { return changeStep(this.internals, 'next', reason); }\n prevStepAsync(): Promise<boolean> { return changeStep(this.internals, 'back'); }\n skipStep(): boolean { return skipStep(this.internals); }\n skipStepAsync(submit?: SubmitFn): Promise<boolean> { return skipStepAsync(this.internals, submit); }\n isStepSkipped(stepId: string): boolean { return this.skipped.has(stepId); }\n submitAsync(submit: SubmitFn): Promise<boolean> { return submitAsync(this.internals, submit); }\n prevStep(): void { prevStep(this.internals); }\n validate(): Record<string, string> { return validateForm(this.internals); }\n validateField(key: string): string | null { return validateOne(this.internals, key); }\n getSubmitValues(): Record<string, unknown> { return getSubmitValues(this.internals); }\n goToStepWithField(key: string): void { goToStepWithField(this.internals, key); }\n reset(values?: Record<string, unknown>): void { resetEngine(this.internals, values); }\n\n private 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 { FormEngine } from './runtime';\n\nfunction sameErrors(previous: Record<string, string>, next: Record<string, string>): boolean {\n const keys = Object.keys(next);\n return keys.length === Object.keys(previous).length && keys.every((key) => previous[key] === next[key]);\n}\n\nfunction holdsErrors(engine: FormEngine, errors: Record<string, string>): boolean {\n return Object.entries(errors).every(([key, message]) => (\n engine.errors[key] === message || engine.topLevelErrors.includes(message)\n ));\n}\n\nexport function shouldApplyExternalErrors(\n engine: FormEngine,\n previous: Record<string, string> | undefined,\n next: Record<string, string>,\n): boolean {\n return !previous || !sameErrors(previous, next) || !holdsErrors(engine, next);\n}\n"]}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { b as FormDefinition } from './definition-H3WUR596.js';
|
|
2
|
+
|
|
3
|
+
interface DefinitionCheck {
|
|
4
|
+
errors: string[];
|
|
5
|
+
warnings: string[];
|
|
6
|
+
}
|
|
7
|
+
declare function checkDefinition(definition: FormDefinition): DefinitionCheck;
|
|
8
|
+
|
|
9
|
+
interface SubmissionOptions {
|
|
10
|
+
skippedSteps?: string[];
|
|
11
|
+
}
|
|
12
|
+
interface SubmissionResult {
|
|
13
|
+
values: Record<string, unknown>;
|
|
14
|
+
errors: Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
declare function validateSubmission(definition: FormDefinition, input: unknown, options?: SubmissionOptions): SubmissionResult;
|
|
17
|
+
|
|
18
|
+
export { type DefinitionCheck, type SubmissionOptions, type SubmissionResult, checkDefinition, validateSubmission };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
var Formhaus=(function(exports){'use strict';typeof console==="undefined"&&(globalThis.console={log:function(){},warn:function(){},error:function(){}});
|
|
2
|
+
var Ot=Object.defineProperty,Lt=Object.defineProperties;var $t=Object.getOwnPropertyDescriptors;var ot=Object.getOwnPropertySymbols;var jt=Object.prototype.hasOwnProperty,Nt=Object.prototype.propertyIsEnumerable;var lt=(t,e,r)=>e in t?Ot(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r,p=(t,e)=>{for(var r in e||(e={}))jt.call(e,r)&<(t,r,e[r]);if(ot)for(var r of ot(e))Nt.call(e,r)&<(t,r,e[r]);return t},J=(t,e)=>Lt(t,$t(e));function K(t){return t==null||t===""||Array.isArray(t)&&!t.length}function U(t,e){let r=e[t.field];return t.eq!==void 0?r===t.eq:t.neq!==void 0?r!==t.neq:t.in!==void 0?t.in.includes(r):t.notIn!==void 0?!t.notIn.includes(r):t.notEmpty===true?!K(r):true}function h(t,e){var i,n;let r=s=>U(s,e);return ((i=t.show)!=null?i:[]).every(r)&&(!((n=t.showAny)!=null&&n.length)||t.showAny.some(r))}var x=h;function at(t){var e,r;return !!((e=t.fields)!=null&&e.length)&&!!((r=t.steps)!=null&&r.length)}function F(t){var e;return !!((e=t.steps)!=null&&e.some(r=>{var i;return (i=r.routes)==null?void 0:i.length}))}function S(t){var e,r;return [...(e=t.show)!=null?e:[],...(r=t.showAny)!=null?r:[]].map(i=>i.field)}function w(t){var e,r;return (e=t.steps)!=null&&e.length?t.steps.flatMap(i=>i.fields):(r=t.fields)!=null?r:[]}function I(t,e){let r={};for(let i of t)i.defaultValue!==void 0&&(r[i.key]=i.defaultValue);return Object.assign(r,e)}function E(t,e){let r=new Set([...Object.keys(t),...Object.keys(e)]);return new Set([...r].filter(i=>!Object.is(t[i],e[i])))}function V(t){var s;let e=(s=t.steps)!=null?s:[],r=at(t)?['FormEngine rejects a definition with both "fields" and "steps".']:[],i=new Map,n=new Map;e.forEach((o,l)=>{i.has(o.id)&&r.push(`Duplicate step id "${o.id}".`),i.set(o.id,l);for(let a of o.fields)n.set(a.key,l);});for(let{key:o}of w(t))(o in Object.prototype||o==="prototype")&&r.push(`Reserved field key "${o}".`);return F(t)&&e.forEach((o,l)=>{var a,u;for(let d of (a=o.routes)!=null?a:[]){let c=d.to===null?null:i.get(d.to);(c===void 0||c!==null&&c<=l)&&r.push(`Invalid route from "${o.id}" to "${d.to}": targets must be later steps or null.`);for(let f of S(d))((u=n.get(f))!=null?u:1/0)<=l||r.push(`Invalid route on "${o.id}": condition field "${f}" must belong to this or an earlier step.`);}}),r}function ut(t){var i,n,s,o;let e=(i=t.steps)!=null?i:[],r=[];for(let l of e){let a=new Set(((n=l.routes)!=null?n:[]).map(u=>u.to).filter(u=>u!==null));for(let u of a){let d=e.findIndex(y=>y.id===u),c=e[d+1],f=(o=(s=e[d])==null?void 0:s.routes)==null?void 0:o.some(y=>{var v,b;return !((v=y.show)!=null&&v.length)&&!((b=y.showAny)!=null&&b.length)});c&&a.has(c.id)&&!f&&r.push(`Route branch "${u}" from "${l.id}" continues into sibling branch "${c.id}". Add an unconditional route where it should continue.`);}}return r}function tt(t,e){var o,l;let r=(o=t.steps)!=null?o:[];if(!F(t))return r.filter(a=>x(a,e));let i=new Map(r.map((a,u)=>[a.id,u])),n=[],s={};for(let a=0;a<r.length;){let u=r[a];if(!x(u,s)){a++;continue}n.push(u),Object.assign(s,ct(u,e,s));let d=(l=u.routes)==null?void 0:l.find(c=>{var f;return h(c,s)&&(c.to===null||((f=i.get(c.to))!=null?f:-1)>a&&x(r[i.get(c.to)],s))});if((d==null?void 0:d.to)===null)break;a=d?i.get(d.to):a+1;}return n}function dt(t,e,r){var o;let i=(o=t[r])!=null?o:t[t.length-1],n=e.findIndex(l=>l.id===(i==null?void 0:i.id));if(n!==-1)return n;let s=new Map(e.map((l,a)=>[l.id,a]));for(let l=Math.min(r-1,t.length-1);l>=0;l--){let a=s.get(t[l].id);if(a!==void 0)return a}return 0}function ct(t,e,r){let i=p({},r);for(let s of t.fields)i[s.key]=e[s.key];let n={};for(let s of t.fields)h(s,i)&&e[s.key]!==void 0&&(n[s.key]=e[s.key]);return n}var P=class{constructor(e){this.definition=e;this.source=null;this.activeStepList=[];this.activeValueMap={};this.enabled=F(e);}invalidate(){this.source=null;}steps(e){return this.refresh(e),this.activeStepList}values(e){return this.refresh(e),this.activeValueMap}refresh(e){if(this.source===e)return;this.source=e,this.activeStepList=tt(this.definition,e);let r={};for(let i of this.activeStepList)Object.assign(r,ct(i,e,r));this.activeValueMap=r;}};function pt(t){var l,a;let e=[],r=new Map,i=w(t),n=new Set;for(let{key:u}of i)n.has(u)&&e.push(`Duplicate field key "${u}" \u2014 fields will share state and overwrite each other`),n.add(u);let s=(u,d,c,f)=>{var v;let y=S(c);for(let b of y)n.has(b)||e.push(`${u} "${d}" has show condition referencing non-existent field "${b}"`);if(y.length)for(let b of f)r.set(b,[...(v=r.get(b))!=null?v:[],...y]);};for(let u of i){s("Field",u.key,u,[u.key]);let d=(l=u.validation)==null?void 0:l.pattern;if(d!==void 0)try{new RegExp(d);}catch(c){e.push(`Field "${u.key}" has invalid regex pattern: "${d}"`);}}let o=new Set;for(let u of (a=t.steps)!=null?a:[]){s("Step",u.id,u,u.fields.map(d=>d.key));for(let d of S(u))F(t)&&n.has(d)&&!o.has(d)&&e.push(`Step "${u.id}" condition field "${d}" must belong to an earlier step.`);for(let{key:d}of u.fields)o.add(d);u.skip&&(u.next===false||!t.steps[1])&&e.push(`Step "${u.id}" has "skip" but no Next button or later step.`);}return {graph:r,warnings:e}}function Tt(t){var i;let e=new Map,r=[];for(let n of t.keys()){if(e.has(n))continue;e.set(n,true);let s=[[n,0]];for(;s.length>0;){let o=s[s.length-1],l=(i=t.get(o[0]))==null?void 0:i[o[1]++];if(l===void 0)e.set(o[0],false),s.pop();else if(e.get(l)){let a=s.map(([u])=>u);r.push([...a.slice(a.indexOf(l)),l]);}else e.has(l)||(e.set(l,true),s.push([l,0]));}}return r}function O(t){let{graph:e,warnings:r}=pt(t);for(let i of Tt(e))r.push(`Circular show condition detected: ${i.join(" -> ")}`);return [...V(t),...r,...ut(t)]}function Kt(t){let e=V(t),r=new Set(e);return {errors:e,warnings:O(t).filter(i=>!r.has(i))}}var et=class extends Error{constructor(r,i){super(`The action completed, but ${r} failed: ${i instanceof Error?i.message:String(i)}`);this.phase=r;this.committed=true;this.name="FormLifecycleError",this.cause=i;}};async function B(t,e){try{await e();}catch(r){throw new et(t,r)}}function ft(t){return t.visibleSteps.map(e=>e.id).join(`
|
|
3
|
+
`)}function L(t,e){let r=ft(t);return ()=>ft(t)!==r||Object.keys(e).some(i=>e[i]!==void 0&&!Object.is(t.values[i],e[i]))}var m={email:"Enter a valid email",number:"Enter a number",boolean:"Must be true or false",option:"Select one of the available options",options:"Must be a list of available options",string:"Must be text",date:"Enter a valid date",datetime:"Enter a valid date and time",file:"Must be a file reference",value:"Invalid value"};function k(t,e){var r,i;switch(t){case "required":return "This field is required";case "minLength":return `Must be at least ${e==null?void 0:e.min} ${(r=e==null?void 0:e.unit)!=null?r:"characters"}`;case "maxLength":return `Must be at most ${e==null?void 0:e.max} ${(i=e==null?void 0:e.unit)!=null?i:"characters"}`;case "min":return `Must be at least ${e==null?void 0:e.min}`;case "max":return `Must be at most ${e==null?void 0:e.max}`;case "pattern":return "Invalid format";case "matchField":return "Fields must match";default:return "Invalid value"}}var rt=new Set(["checkbox","switch"]);function Pt(t,e){return K(t)||t===false&&rt.has(e.type)}function ht(t,e,r,i){var o,l;let n=r[`min${e}`],s=r[`max${e}`];if(n!==void 0&&t<n)return (o=r[`min${e}Message`])!=null?o:k(`min${e}`,{min:n,unit:i});if(s!==void 0&&t>s)return (l=r[`max${e}Message`])!=null?l:k(`max${e}`,{max:s,unit:i})}function Bt(t,e){var r;if(e.pattern!==void 0)try{return new RegExp(e.pattern).test(String(t))?void 0:(r=e.patternMessage)!=null?r:k("pattern")}catch(i){return}}function M(t,e,r,i){var l,a,u,d;let n=t.validation;if(!n)return null;if(Pt(e,t))return n.required?typeof n.required=="string"?n.required:k("required"):null;let s=typeof e=="string"||Array.isArray(e)?ht(e.length,"Length",n,Array.isArray(e)?"items":void 0):typeof e=="number"?ht(e,"",n):void 0,o=n.matchField!==void 0&&e!==r[n.matchField]?(l=n.matchFieldMessage)!=null?l:k("matchField"):void 0;return ((d=(a=s!=null?s:Bt(e,n))!=null?a:o)!=null?d:n.validator?(u=i==null?void 0:i[n.validator])==null?void 0:u.call(i,e,r):void 0)||null}function R(t,e,r){return G(t.fields,e,r)}function G(t,e,r){let i={};for(let n of t){if(!h(n,e))continue;let s=M(n,e[n.key],e,r);s&&(i[n.key]=s);}return i}function q(t,e,r=false){let i=t.errors;t.errors={},t.topLevelErrors=[];for(let[l,a]of Object.entries(e))t.visibility.isFieldVisible(l,t.values)?t.errors[l]=a:t.topLevelErrors.push(a);let n=Object.keys(e).find(l=>t.errors[l]!==void 0),s=r&&n&&t.isMultiStep?t.visibility.findStepIndex(n,t.values,t.currentStepIndex):null,o=s!==null&&s!==t.currentStepIndex;s!==null&&(t.currentStepIndex=s),t.notify({fieldKeys:E(i,t.errors),structureChanged:o});}function mt(t,e){var i;let r=[];for(let n of t.visibility.allFields)((i=n.validation)==null?void 0:i.matchField)!==e||t.errors[n.key]===void 0||M(n,t.values[n.key],D(t),t.validators)||(delete t.errors[n.key],r.push(n.key));return r}function gt(t){let e=new Set(t.visibleSteps.flatMap(i=>i.fields.map(n=>n.key))),r=Object.keys(t.errors).filter(i=>!e.has(i));for(let i of r)delete t.errors[i];return r}function D(t){return F(t.definition)?C(t):yt(t,p({},t.values))}function yt(t,e){for(let r of [...t.skipped.values()].flat())delete e[r];return e}function $(t){var i;let e=t.errors,r={};if(t.isMultiStep)for(let n of t.visibleSteps)t.skipped.has(n.id)||Object.assign(r,R(n,D(t),t.validators));else Object.assign(r,G((i=t.definition.fields)!=null?i:[],t.values,t.validators));return t.errors=r,t.notify({fieldKeys:E(e,r)}),r}function bt(t,e){let r=t.visibility.fieldByKey.get(e);if(!r||!t.visibility.isFieldVisible(e,t.values))return null;let i=t.errors[e],n=M(r,t.values[e],D(t),t.validators);n?t.errors[e]=n:delete t.errors[e];let s=Object.is(i,t.errors[e])?[]:[e];return t.notify({fieldKeys:s}),n}function C(t){let e={},r=t.visibility.getVisibleFieldKeys(t.values,t.currentStepIndex);for(let i of r)t.values[i]!==void 0&&(e[i]=t.values[i]);return yt(t,e)}function St(t,e){let r=t.values,i=t.errors,n=Object.keys(t.fieldLoading);t.validationEpoch++,t.operationEpoch++,t.submitting=false,t.values=I(t.visibility.allFields,e),t.errors={},t.topLevelErrors=[],t.fieldLoading={},t.stepValidating=false,t.currentStepIndex=0,t.skipped.clear(),t.visibility.reconcileHidden(t.values,t.errors);let s=E(r,t.values),o=new Set([...s,...E(i,t.errors),...n]);t.notify({fieldKeys:o,structureChanged:true,valuesChanged:s.size>0});}function vt(t){var i,n;let e=(n=(i=t.currentStep)==null?void 0:i.fields)!=null?n:[],r=p({},t.values);for(let{key:s}of e)delete r[s];return Object.assign(r,I(e))}function H(t){return tt(t.definition,vt(t))[t.currentStepIndex+1]}function j(t){let e=t.currentStep,r=e.fields.map(({key:i})=>i);t.values=vt(t);for(let i of r)delete t.errors[i];return t.skipped.set(e.id,r),t.visibility.reconcileHidden(t.values,t.errors),t.notify({fieldKeys:r,structureChanged:true,valuesChanged:true}),r}function N(t){let e=t.currentStep;e&&t.skipped.delete(e.id);}function Ft(t,e){return t.currentStepIndex=e,t.notify({structureChanged:true}),j(t)}async function _(t,e,r=false){if(t.submitting||t.stepValidating)return false;r||N(t);let i=p({},t.lifecycle),n=false,s=t.validationEpoch,o=++t.operationEpoch,l=C(t),a=L(t,l),u=()=>s!==t.validationEpoch||o!==t.operationEpoch||a();t.submitting=true,t.notify();try{if(u()||Object.keys($(t)).length>0||u())return !1;if(i.onBeforeSubmit){let d=await i.onBeforeSubmit(l);if(u()||d===!1)return !1}if(u())return !1;if(i.onBeforeSubmit){if(Object.keys($(t)).length>0||u())return !1;l=C(t);}return n=!0,await e(l,[...t.skipped.keys()]),o!==t.operationEpoch||await B("afterSubmit",()=>{var d;return (d=i.onAfterSubmit)==null?void 0:d.call(i,l)}),!0}catch(d){if(!n&&u())return false;throw d}finally{o===t.operationEpoch&&(t.submitting=false,t.notify());}}function it(t){let e=t.currentStep;if(!e)return true;let r=R(e,D(t),t.validators);if(Object.keys(r).length===0)return false;let i=p({},t.errors);return Object.assign(t.errors,r),t.notify({fieldKeys:E(i,t.errors)}),true}function z(t,e){t.validationEpoch++,t.currentStepIndex=e,t.notify({structureChanged:true});}function wt(t){return t.isLastStep?false:(z(t,t.currentStepIndex+1),true)}function kt(t){return t.isMultiStep?(N(t),!it(t)&&wt(t)):false}function xt(t){return !t.isMultiStep||!H(t)?false:(j(t),wt(t))}async function Et(t,e){if(!t.isMultiStep||t.stepValidating||t.submitting)return false;if(H(t))return Y(t,"next","skip");let r=t.currentStep;if(!e||!r)return false;let i=t.values,n=p({},t.errors),s=false,o=j(t),l=t.values,a=L(t,p({},l));try{return await _(t,async(u,d)=>{await e(u,d),s=!0;},!0)}finally{!s&&t.values===l&&!a()&&(t.values=i,t.errors=p(p({},n),t.errors),t.skipped.delete(r.id),t.notify({fieldKeys:o,structureChanged:true,valuesChanged:true}));}}async function Y(t,e,r=e){let i=r==="skip";if(!t.isMultiStep||t.stepValidating||t.submitting||!i&&(e==="next"?t.isLastStep:t.isFirstStep))return false;let n=t.currentStep,s=e==="next"&&!i;if(s&&N(t),s&&it(t))return false;let o=p({},t.lifecycle),l=t.onStepValidate,a=false,d=t.currentStepIndex+(e==="next"?1:-1),c=i?H(t):t.visibleSteps[d];if(!c)return false;let f={fromStepId:n.id,toStepId:c.id,direction:e,reason:r,values:p({},D(t))},y=t.validationEpoch,v=++t.operationEpoch,b=L(t,f.values),A=()=>{var g;return y!==t.validationEpoch||v!==t.operationEpoch||((g=t.currentStep)==null?void 0:g.id)!==n.id||b()};t.stepValidating=true,t.notify();try{if(A())return !1;if(s&&l){let g=await l(n.id,f.values);if(A())return !1;if(g&&Object.keys(g).length>0)return q(t,g),!1}if(o.onBeforeStepChange){let g=await o.onBeforeStepChange(f);if(A()||g===!1)return !1}return A()||s&&it(t)?!1:(a=!0,i&&j(t),z(t,d),await B("afterStepChange",()=>{var g;return (g=o.onAfterStepChange)==null?void 0:g.call(o,f)}),!0)}catch(g){if(!a&&A())return false;throw g}finally{v===t.operationEpoch&&(t.stepValidating=false,t.notify());}}function Rt(t){t.isMultiStep&&!t.isFirstStep&&z(t,t.currentStepIndex-1);}function It(t,e){if(!t.isMultiStep)return;let r=t.visibility.findStepIndex(e,t.values,t.currentStepIndex);r===t.currentStepIndex?t.notify():r!==null&&z(t,r);}var W=class{constructor(){this.version=0;this.listeners=new Set;this.fieldVersions=new Map;this.fieldListeners=new Map;this.structureVersion=0;this.structureListeners=new Set;}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}getSnapshot(){return this.version}subscribeField(e,r){var n;let i=(n=this.fieldListeners.get(e))!=null?n:new Set;return i.add(r),this.fieldListeners.set(e,i),()=>{i.delete(r),i.size===0&&this.fieldListeners.delete(e);}}getFieldSnapshot(e){var r;return (r=this.fieldVersions.get(e))!=null?r:0}subscribeStructure(e){return this.structureListeners.add(e),()=>this.structureListeners.delete(e)}getStructureSnapshot(){return this.structureVersion}notify({fieldKeys:e=[],structureChanged:r=false}={}){for(let i of new Set(e))this.notifyField(i);r&&this.notifyStructure(),this.version++;for(let i of this.listeners)i();}notifyField(e){var r,i;this.fieldVersions.set(e,((r=this.fieldVersions.get(e))!=null?r:0)+1);for(let n of (i=this.fieldListeners.get(e))!=null?i:[])n();}notifyStructure(){this.structureVersion++;for(let e of this.structureListeners)e();}};function nt(t,e){var r;for(let i of S(t)){let n=(r=e.get(i))!=null?r:new Set;n.add(t),e.set(i,n);}}var X=class{constructor(e){this.definition=e;this.routeFields=new Set;this.fieldDependents=new Map;this.stepDependents=new Map;this.stepByFieldKey=new Map;this.visibilityDirty=true;this.canGoNextDirty=true;this.cache={visibleSteps:[],currentStep:null,visibleFields:[],canGoNext:false};var r;this.allFields=w(e),this.fieldByKey=new Map(this.allFields.map(i=>[i.key,i])),this.path=new P(e);for(let i of (r=e.steps)!=null?r:[])for(let n of i.fields)this.stepByFieldKey.set(n.key,i);this.buildIndexes();}markChanged(e,r){(e||r)&&this.path.invalidate(),e?(this.visibilityDirty=true,this.canGoNextDirty=true):r&&(this.canGoNextDirty=true);}state(e,r){return this.recomputeVisibility(e,r),this.cache}getCanGoNext(e,r,i){if(this.recomputeVisibility(e,r),!this.canGoNextDirty)return this.cache.canGoNext;this.canGoNextDirty=false;let n=this.cache.currentStep,s=n?R(n,this.conditionValues(e),i):{};return this.cache.canGoNext=this.isMultiStep&&Object.keys(s).length===0,this.cache.canGoNext}findStepIndex(e,r,i){let s=this.state(r,i).visibleSteps.findIndex(o=>o.fields.some(l=>l.key===e));return s===-1?null:s}affectsStructure(e,r){return this.routeFields.has(e)||this.fieldDependents.has(e)||this.stepDependents.has(e)||r.size>0}cascadeHiddenFields(e,r,i){return this.path.invalidate(),this.hasRoutes?this.reconcileHidden(r,i):this.drainQueue(new Set([e]),r,i)}reconcileHidden(e,r){this.path.invalidate();let i=new Set([...this.fieldDependents.keys(),...this.stepDependents.keys()]);return this.drainQueue(i,e,r)}drainQueue(e,r,i){let n=[...e],s=new Set(n),o=new Set,l=a=>{delete r[a],delete i[a],this.path.invalidate(),o.add(a),!s.has(a)&&(s.add(a),n.push(a));};for(let a=0;a<n.length;a++){let u=n[a];s.delete(u),this.clearHiddenFields(this.fieldDependents.get(u),r,l),this.clearHiddenSteps(this.stepDependents.get(u),r,l);}return o}isFieldVisible(e,r){let i=this.fieldByKey.get(e);if(!i||!h(i,this.conditionValues(r)))return false;let n=this.stepByFieldKey.get(e);return !n||this.path.steps(r).includes(n)}getVisibleFieldKeys(e,r){var s;if(this.hasRoutes)return new Set(Object.keys(this.path.values(e)));let i=new Set,n=this.isMultiStep?this.state(e,r).visibleSteps.flatMap(o=>o.fields):(s=this.definition.fields)!=null?s:[];for(let o of n)h(o,this.conditionValues(e))&&i.add(o.key);return i}conditionValues(e){return this.hasRoutes?this.path.values(e):e}get hasRoutes(){return this.path.enabled}get isMultiStep(){var e;return ((e=this.definition.steps)!=null?e:[]).length>0}buildIndexes(){var e,r;for(let i of this.allFields)nt(i,this.fieldDependents);for(let i of (e=this.definition.steps)!=null?e:[]){nt(i,this.stepDependents);for(let n of (r=i.routes)!=null?r:[])for(let s of S(n))this.routeFields.add(s);}}recomputeVisibility(e,r){var s,o,l;if(!this.visibilityDirty)return;if(this.visibilityDirty=false,!this.isMultiStep){this.cache.visibleSteps=[],this.cache.currentStep=null,this.cache.visibleFields=((s=this.definition.fields)!=null?s:[]).filter(a=>h(a,this.conditionValues(e)));return}this.cache.visibleSteps=this.path.steps(e);let i=this.cache.visibleSteps;this.cache.currentStep=(l=(o=i[r])!=null?o:i[i.length-1])!=null?l:null;let n=this.cache.currentStep;this.cache.visibleFields=n?n.fields.filter(a=>h(a,this.conditionValues(e))):[];}clearHiddenFields(e,r,i){for(let n of e!=null?e:[]){let s=this.stepByFieldKey.get(n.key);this.hasRoutes&&s&&!this.path.steps(r).includes(s)||h(n,this.conditionValues(r))||r[n.key]===void 0||i(n.key);}}clearHiddenSteps(e,r,i){for(let n of e!=null?e:[])if(!x(n,this.conditionValues(r)))for(let s of n.fields)r[s.key]!==void 0&&i(s.key);}};var Q=class{constructor(e,r,i){this.definition=e;this.errors={};this.topLevelErrors=[];this.currentStepIndex=0;this.fieldLoading={};this.stepValidating=false;this.submitting=false;this.skipped=new Map;this.validationEpoch=0;this.operationEpoch=0;this.subscriptions=new W;var o;let n=V(e);if(n.length)throw new Error(n.join(`
|
|
4
|
+
`));this.lifecycle=i!=null?i:{},this.validators=(o=i==null?void 0:i.validators)!=null?o:{},this.visibility=new X(e);let s=O(e);for(let{key:l,validation:a}of this.visibility.allFields){let u=a==null?void 0:a.validator;u&&!this.validators[u]&&s.push(`Field "${l}" references unknown validator "${u}".`);}for(let l of s)console.warn(`[FormEngine] ${l}`);this.values=I(this.visibility.allFields,r),this.visibility.reconcileHidden(this.values,this.errors);}get onStepValidate(){return this.lifecycle.onStepValidate}get isMultiStep(){var e;return ((e=this.definition.steps)!=null?e:[]).length>0}get visibleSteps(){return this.visibility.state(this.values,this.currentStepIndex).visibleSteps}get currentStep(){return this.visibility.state(this.values,this.currentStepIndex).currentStep}get visibleFields(){return this.visibility.state(this.values,this.currentStepIndex).visibleFields}get isFirstStep(){return this.currentStepIndex===0}get isLastStep(){return this.currentStepIndex>=this.visibleSteps.length-1}get canGoNext(){return this.visibility.getCanGoNext(this.values,this.currentStepIndex,this.validators)}get progress(){let e=this.visibleSteps.length;return {current:Math.min(this.currentStepIndex+1,e),total:e}}subscribe(e){return this.subscriptions.subscribe(e)}getSnapshot(){return this.subscriptions.getSnapshot()}subscribeField(e,r){return this.subscriptions.subscribeField(e,r)}getFieldSnapshot(e){return this.subscriptions.getFieldSnapshot(e)}subscribeStructure(e){return this.subscriptions.subscribeStructure(e)}getStructureSnapshot(){return this.subscriptions.getStructureSnapshot()}setValue(e,r){let i=this.isMultiStep?this.visibleSteps:null,n=!Object.is(this.values[e],r),s=this.errors[e]!==void 0;this.values[e]=r,delete this.errors[e];for(let[c,f]of this.skipped)n&&f.includes(e)&&this.skipped.delete(c);let o=this.visibility.cascadeHiddenFields(e,this.values,this.errors),l=mt(this.internals,e),a=new Set([...o,...l]);(n||s)&&a.add(e);let u=n||o.size>0,d=u&&this.visibility.affectsStructure(e,o);if(i&&d){this.visibility.markChanged(true,true),this.currentStepIndex=dt(i,this.visibleSteps,this.currentStepIndex);for(let c of gt(this.internals))a.add(c);}this.notify({fieldKeys:a,structureChanged:d,valuesChanged:u});}setErrors(e){q(this.internals,e,true);}setFieldLoading(e,r){let i=this.fieldLoading[e]===true;r?this.fieldLoading[e]=true:delete this.fieldLoading[e],this.notify({fieldKeys:i===r?[]:[e]});}cancelPendingActions(){this.validationEpoch++,this.operationEpoch++,this.stepValidating=false,this.submitting=false,this.notify();}nextStep(){return kt(this.internals)}nextStepAsync(e="next"){return Y(this.internals,"next",e)}prevStepAsync(){return Y(this.internals,"back")}skipStep(){return xt(this.internals)}skipStepAsync(e){return Et(this.internals,e)}isStepSkipped(e){return this.skipped.has(e)}submitAsync(e){return _(this.internals,e)}prevStep(){Rt(this.internals);}validate(){return $(this.internals)}validateField(e){return bt(this.internals,e)}getSubmitValues(){return C(this.internals)}goToStepWithField(e){It(this.internals,e);}reset(e){St(this.internals,e);}get internals(){return this}notify(e={}){this.visibility.markChanged(!!e.structureChanged,!!e.valuesChanged),this.subscriptions.notify(e);}};var T=1e4,Gt=254,qt=1e3,Ht=/^[^\s@]+@[^\s@.]+(?:\.[^\s@.]+)+$/,_t=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/,Vt="\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])",zt=new RegExp(`^${Vt}$`),Yt=new RegExp(`^${Vt}T(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d{1,3})?)?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)?$`),Wt=new Set(["text","phone","password","textarea","autocomplete"]),Xt=new Map([["email",[Ht,m.email,Gt]],["date",[zt,m.date,T]],["datetime",[Yt,m.datetime,T]]]);function Mt(t,e){if(t.type!=="number"||typeof e!="string"||!_t.test(e))return e;let r=Number(e);return Number.isFinite(r)?r:e}function Dt(t,e){return !t.options||t.options.some(r=>r.value===e)}function Ct(t,e){var i,n,s,o;let r=Math.min(T,(n=(i=t.validation)==null?void 0:i.maxLength)!=null?n:T);return e.length<=r?null:(o=(s=t.validation)==null?void 0:s.maxLengthMessage)!=null?o:k("maxLength",{max:r})}function Qt(t,e){var i,n;return Array.isArray(e)?e.length>((n=(i=t.options)==null?void 0:i.length)!=null?n:qt)?m.option:e.every(s=>typeof s=="string"&&s.length<=T&&Dt(t,s))?null:m.option:m.options}function Z(t,e,r){return typeof e=="string"?Ct(t,e):r}function Zt(t,e,[r,i,n]){var s;return typeof e!="string"?i:(s=Ct(t,e))!=null?s:e.length<=n&&r.test(e)?null:i}function Jt(t,e){return typeof e=="boolean"||typeof e=="number"&&Number.isFinite(e)?null:Z(t,e,m.value)}function Ut(t,e){return e==null||e===""||t.type==="multiselect"&&Array.isArray(e)&&!e.length}function At(t,e){var i;if(Ut(t,e))return null;if(rt.has(t.type))return typeof e=="boolean"?null:m.boolean;if(t.type==="number")return typeof e=="number"&&Number.isFinite(e)?null:m.number;if(t.type==="multiselect")return Qt(t,e);if(t.type==="file")return Z(t,e,m.file);let r=Xt.get(t.type);return r?Zt(t,e,r):t.type==="select"||t.type==="radio"?(i=Z(t,e,m.option))!=null?i:Dt(t,e)?null:m.option:Wt.has(t.type)?Z(t,e,m.string):Jt(t,e)}var te=()=>null,st=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);function ee(t,e){let r=e!==null&&typeof e=="object"&&!Array.isArray(e)?e:{},i={};for(let n of t)st(r,n.key)&&(i[n.key]=Mt(n,r[n.key]));return i}function re(t,e){let r=new Map;for(let i of t){let n=st(e,i.key)?At(i,e[i.key]):null;n&&r.set(i.key,n);}return r}function ie(t,e){var n;let r=s=>s.map(o=>e.has(o.key)?J(p({},o),{validation:void 0}):o),i=(n=t.steps)==null?void 0:n.map(s=>J(p({},s),{fields:r(s.fields)}));return p(p(p({},t),t.fields&&{fields:r(t.fields)}),i&&{steps:i})}function ne(t){let e={};for(let{validation:r}of t)r!=null&&r.validator&&(e[r.validator]=te);return e}function se(t,e){if(!Array.isArray(e))return;let r=new Set(e);for(let i=0;i<t.visibleSteps.length;i++){let n=t.visibleSteps[i];n.skip&&r.has(n.id)&&Ft(t,i);}}function oe(t,e,r={}){let i=w(t),n=ee(i,e),s=re(i,n),o=new Q(ie(t,s),n,{validators:ne(i)});se(o,r.skippedSteps);let l=o.validate(),a=o.getSubmitValues();for(let[u,d]of s)st(a,u)&&(l[u]=d);return {values:a,errors:l}}exports.checkDefinition=Kt;exports.validateSubmission=oe;return exports;})({});//# sourceMappingURL=server.iife.js.map
|
|
5
|
+
//# sourceMappingURL=server.iife.js.map
|