@formhaus/core 0.13.0 → 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/definition-validation/issues.ts","../src/definition-validation/format.ts","../src/definition-validation/conditions.ts","../src/definition-validation/context.ts","../src/definition-validation/fields.ts","../src/definition-validation/graph.ts","../src/definition-validation/shape.ts","../src/definition-validation/paths.ts","../src/definition-validation/structure.ts","../src/definition-validation/warnings.ts","../src/definition-validation/check-definition.ts"],"names":["FormDefinitionError","issues","issue","create","severity","code","path","problem","hint","error","warning","pointer","key","isError","oneOf","values","shown","value","distance","a","b","row","_","index","next","j","closest","candidates","lower","candidate","suggest","match","FORMAT_VERSION","formatIssues","version","valid","OPERATORS","CONDITION_OPERATORS","operatorIssues","condition","keys","unknown","count","referenceIssues","context","owner","step","target","sameStep","allowed","conditionErrors","entry","conditionIssues","collect","source","name","collectAction","action","createContext","definition","validators","steps","entries","field","position","conditions","route","rangeIssue","rules","min","max","low","high","patternIssue","pattern","ruleIssues","fieldIssues","dependencyGraph","graph","link","owners","dependencies","known","fieldsOf","findCycles","visiting","cycles","start","stack","frame","neighbor","nodes","node","cycleIssues","cycle","graphIssues","isEntry","KINDS","item","typed","kind","list","check","required","text","option","RULES","validation","shapeIssues","input","format","metaIssues","conditional","successors","indexes","from","reachableSteps","seen","queue","RESERVED","stepIssues","first","later","keyIssues","reachable","exclusive","clash","other","structureIssues","LIST_OPERATORS","COMPARISONS","STRING_TYPES","expectedType","BOOLEAN_TYPES","valueIssue","operator","operand","mismatch","result","operands","expected","wrong","options","missing","conditionWarnings","optionIssues","defaults","ruleWarnings","rule","BUILT_IN_TYPES","numeric","ranges","sized","fieldWarnings","routeWarnings","targets","to","sibling","exits","definitionWarnings","warnings","shape","definitionErrors","checkDefinition","parseDefinition","errors"],"mappings":"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","file":"chunk-FQ3GLJTI.js","sourcesContent":["export type DefinitionIssueCode =\n | 'invalid-type'\n | 'missing-property'\n | 'fields-and-steps'\n | 'duplicate-step-id'\n | 'duplicate-key'\n | 'reserved-key'\n | 'route-target'\n | 'unknown-field'\n | 'forward-reference'\n | 'condition-operator-count'\n | 'unknown-operator'\n | 'condition-value-mismatch'\n | 'condition-cycle'\n | 'invalid-pattern'\n | 'invalid-range'\n | 'rule-not-applicable'\n | 'missing-options'\n | 'default-not-in-options'\n | 'unknown-field-type'\n | 'unknown-validator'\n | 'skip-unreachable'\n | 'route-fallthrough'\n | 'unsupported-format-version'\n | 'i18n-unbound-slot'\n | 'unknown-i18n-slot'\n | 'unknown-message-key'\n | 'unknown-label-key'\n | 'i18n-unsafe-identifier';\n\nexport interface DefinitionIssue {\n code: DefinitionIssueCode;\n severity: 'error' | 'warning';\n path: string;\n message: string;\n hint?: string;\n}\n\nexport class FormDefinitionError extends Error {\n readonly issues: DefinitionIssue[];\n\n constructor(issues: DefinitionIssue[]) {\n super(`Invalid form definition:\\n${issues.map((issue) => issue.message).join('\\n')}`);\n this.name = 'FormDefinitionError';\n this.issues = issues;\n }\n}\n\nfunction create(severity: DefinitionIssue['severity']) {\n return (code: DefinitionIssueCode, path: string, problem: string, hint?: string): DefinitionIssue => ({\n code,\n severity,\n path,\n message: `${path || '/'}: ${problem}.${hint ? ` ${hint}.` : ''}`,\n ...(hint && { hint: `${hint}.` }),\n });\n}\n\nexport const error = create('error');\nexport const warning = create('warning');\n\nexport function pointer(key: string): string {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\nexport function isError(issue: DefinitionIssue): boolean {\n return issue.severity === 'error';\n}\n\nexport function oneOf(values: string[]): string {\n if (values.length === 1) return `Use ${JSON.stringify(values[0])}`;\n const shown = values.slice(0, 10).map((value) => JSON.stringify(value)).join(', ');\n return values.length > 10 ? `Use one of: ${shown}, ...` : `Use one of: ${shown}`;\n}\n\nfunction distance(a: string, b: string): number {\n let row = Array.from({ length: b.length + 1 }, (_, index) => index);\n for (let i = 1; i <= a.length; i++) {\n const next = [i];\n for (let j = 1; j <= b.length; j++) {\n next[j] = Math.min(row[j] + 1, next[j - 1] + 1, row[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));\n }\n row = next;\n }\n return row[b.length];\n}\n\nexport function closest(value: string, candidates: string[]): string | undefined {\n const lower = value.toLowerCase();\n return candidates.find((candidate) => candidate !== value && distance(lower, candidate.toLowerCase()) <= (candidate.length > 4 ? 2 : 1));\n}\n\nexport function suggest(value: string, candidates: string[]): string | undefined {\n const match = closest(value, candidates);\n if (match !== undefined) return `Use ${JSON.stringify(match)}`;\n return candidates.length ? oneOf(candidates) : undefined;\n}\n","import type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nexport const FORMAT_VERSION = '1.0';\n\nexport function formatIssues({ formatVersion: version }: Record<string, unknown>): DefinitionIssue[] {\n if (version === undefined) return [];\n const valid = typeof version === 'string' && /^[1-9]\\d*(\\.\\d+)?$/.test(version);\n if (valid && parseInt(version) <= parseInt(FORMAT_VERSION)) return [];\n return [valid\n ? error('unsupported-format-version', '/formatVersion', `format ${version} is not supported`, 'Upgrade @formhaus/core')\n : error('invalid-type', '/formatVersion', 'must be a version string', `Use \"${FORMAT_VERSION}\"`)];\n}\n","import { CONDITION_OPERATORS } from '../visibility/evaluate-condition';\nimport type { ShowCondition } from '../types';\nimport type { CheckContext, ConditionEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, pointer } from './issues';\n\nexport const OPERATORS: readonly string[] = CONDITION_OPERATORS;\n\nfunction operatorIssues({ suggest }: CheckContext, condition: ShowCondition, path: string): DefinitionIssue[] {\n const keys = Object.keys(condition).filter((key) => key !== 'field');\n const unknown = keys.filter((key) => !OPERATORS.includes(key));\n const issues = unknown.map((key) => error('unknown-operator', `${path}/${pointer(key)}`, `\"${key}\" is not a condition operator`, suggest(key, [...OPERATORS])));\n const count = keys.length - unknown.length;\n if (count !== 1 && !(count === 0 && unknown.length)) {\n const problem = count ? `the condition has ${count} operators` : 'the condition has no operator';\n issues.push(error('condition-operator-count', path, problem, `Use exactly one of: ${OPERATORS.join(', ')}`));\n }\n return issues;\n}\n\nfunction referenceIssues(context: CheckContext, { condition, path, owner, step, key }: ConditionEntry): DefinitionIssue[] {\n const target = context.keys.get(condition.field);\n if (!target) {\n const candidates = context.keyList.filter((candidate) => candidate !== key);\n return [error('unknown-field', `${path}/field`, `\"${condition.field}\" is not a field key`, context.suggest(condition.field, candidates))];\n }\n if (step < 0 || owner === 'action') return [];\n const sameStep = owner === 'step' ? 'this or a later step' : 'a later step';\n if (target.step < step || (owner !== 'step' && target.step === step)) return [];\n const allowed = owner === 'step' ? 'earlier steps' : 'this or an earlier step';\n return [error('forward-reference', `${path}/field`, `\"${condition.field}\" belongs to ${sameStep}`, `${owner === 'route' ? 'Route' : owner === 'step' ? 'Step' : 'Field'} conditions can use fields of ${allowed}`)];\n}\n\nexport function conditionErrors(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (typeof condition.field !== 'string') return [error('missing-property', `${path}/field`, 'the condition has no \"field\"', 'Add the key of the field to test')];\n return [...operatorIssues(context, condition, path), ...referenceIssues(context, entry)];\n}\n\nexport function conditionIssues(context: CheckContext): DefinitionIssue[] {\n return context.conditions.flatMap((entry) => conditionErrors(context, entry));\n}\n","import type { FormAction, FormDefinition, FormField, ShowCondition } from '../types';\n\nexport interface FieldEntry {\n field: FormField;\n path: string;\n step: number;\n}\n\nexport interface ConditionEntry {\n condition: ShowCondition;\n path: string;\n owner: 'field' | 'step' | 'route' | 'action';\n step: number;\n key?: string;\n}\n\nexport interface CheckContext {\n definition: FormDefinition;\n entries: FieldEntry[];\n keys: Map<string, FieldEntry>;\n keyList: string[];\n conditions: ConditionEntry[];\n validators?: Record<string, unknown>;\n suggest: (value: string, candidates: string[]) => string | undefined;\n}\n\ntype Owner = { show?: ShowCondition[]; showAny?: ShowCondition[] };\n\nfunction collect(target: ConditionEntry[], source: Owner, path: string, owner: ConditionEntry['owner'], step: number, key?: string): void {\n for (const name of ['show', 'showAny'] as const) {\n (source[name] ?? []).forEach((condition, index) => target.push({ condition, path: `${path}/${name}/${index}`, owner, step, key }));\n }\n}\n\nfunction collectAction(target: ConditionEntry[], action: FormAction | false | undefined, path: string, step: number): void {\n (action ? action.disabled ?? [] : []).forEach((condition, index) => (\n target.push({ condition, path: `${path}/disabled/${index}`, owner: 'action', step })\n ));\n}\n\nexport function createContext(definition: FormDefinition, validators?: Record<string, unknown>, suggest: CheckContext['suggest'] = () => undefined): CheckContext {\n const steps = definition.steps ?? [];\n const entries: FieldEntry[] = steps.length\n ? steps.flatMap((step, index) => step.fields.map((field, position) => ({ field, path: `/steps/${index}/fields/${position}`, step: index })))\n : (definition.fields ?? []).map((field, position) => ({ field, path: `/fields/${position}`, step: -1 }));\n const keys = new Map<string, FieldEntry>();\n for (const entry of entries) if (!keys.has(entry.field.key)) keys.set(entry.field.key, entry);\n const conditions: ConditionEntry[] = [];\n for (const entry of entries) collect(conditions, entry.field, entry.path, 'field', entry.step, entry.field.key);\n steps.forEach((step, index) => {\n collect(conditions, step, `/steps/${index}`, 'step', index);\n (step.routes ?? []).forEach((route, position) => collect(conditions, route, `/steps/${index}/routes/${position}`, 'route', index));\n for (const name of ['next', 'back', 'skip'] as const) collectAction(conditions, step[name], `/steps/${index}/${name}`, index);\n });\n collectAction(conditions, definition.submit, '/submit', -1);\n collectAction(conditions, definition.cancel, '/cancel', -1);\n return {\n definition,\n entries,\n keys,\n keyList: [...keys.keys()],\n conditions,\n validators,\n suggest,\n };\n}\n","import type { FieldValidation } from '../types';\nimport type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nfunction rangeIssue(rules: FieldValidation, path: string, min: 'min' | 'minLength', max: 'max' | 'maxLength'): DefinitionIssue[] {\n const low = rules[min];\n const high = rules[max];\n if (low === undefined || high === undefined || low <= high) return [];\n return [error('invalid-range', `${path}/validation/${min}`, `${min} (${low}) is greater than ${max} (${high})`, `Lower ${min} or raise ${max}`)];\n}\n\nfunction patternIssue(pattern: string | undefined, path: string): DefinitionIssue[] {\n if (pattern === undefined) return [];\n try {\n new RegExp(pattern);\n return [];\n } catch {\n return [error('invalid-pattern', `${path}/validation/pattern`, `${JSON.stringify(pattern)} is not a valid regular expression`, 'Fix the pattern or escape special characters with a backslash')];\n }\n}\n\nfunction ruleIssues(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation;\n if (!rules) return [];\n const match = rules.matchField;\n return [\n ...rangeIssue(rules, path, 'minLength', 'maxLength'),\n ...rangeIssue(rules, path, 'min', 'max'),\n ...patternIssue(rules.pattern, path),\n ...(match === undefined || context.keys.has(match) ? [] : [error('unknown-field', `${path}/validation/matchField`, `\"${match}\" is not a field key`, context.suggest(match, context.keyList))]),\n ];\n}\n\nexport function fieldIssues(context: CheckContext): DefinitionIssue[] {\n return context.entries.flatMap((entry) => ruleIssues(context, entry));\n}\n","import type { CheckContext } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nfunction dependencyGraph({ definition, entries, keys }: CheckContext): Map<string, string[]> {\n const graph = new Map<string, string[]>();\n const link = (owners: string[], dependencies: string[]) => {\n const known = dependencies.filter((key) => keys.has(key));\n if (known.length) for (const owner of owners) graph.set(owner, [...(graph.get(owner) ?? []), ...known]);\n };\n const fieldsOf = (source: { show?: { field: string }[]; showAny?: { field: string }[] }) => (\n [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field)\n );\n for (const { field } of entries) link([field.key], fieldsOf(field));\n for (const step of definition.steps ?? []) link(step.fields.map((field) => field.key), fieldsOf(step));\n return graph;\n}\n\nfunction findCycles(graph: Map<string, string[]>): string[][] {\n const visiting = new Map<string, boolean>();\n const cycles: string[][] = [];\n for (const start of graph.keys()) {\n if (visiting.has(start)) continue;\n visiting.set(start, true);\n const stack: [string, number][] = [[start, 0]];\n while (stack.length > 0) {\n const frame = stack[stack.length - 1];\n const neighbor = graph.get(frame[0])?.[frame[1]++];\n if (neighbor === undefined) {\n visiting.set(frame[0], false);\n stack.pop();\n } else if (visiting.get(neighbor)) {\n const nodes = stack.map(([node]) => node);\n cycles.push([...nodes.slice(nodes.indexOf(neighbor)), neighbor]);\n } else if (!visiting.has(neighbor)) {\n visiting.set(neighbor, true);\n stack.push([neighbor, 0]);\n }\n }\n }\n return cycles;\n}\n\nfunction cycleIssues(context: CheckContext): DefinitionIssue[] {\n return findCycles(dependencyGraph(context)).map((cycle) => (\n error('condition-cycle', context.keys.get(cycle[0])!.path, `show conditions form a cycle: ${cycle.join(' -> ')}`, 'Remove one of the conditions in the cycle')\n ));\n}\n\nexport function graphIssues(context: CheckContext): DefinitionIssue[] {\n return cycleIssues(context);\n}\n","import type { DefinitionIssue } from './issues';\nimport { formatIssues } from './format';\nimport { error, pointer } from './issues';\n\ntype Entry = Record<string, unknown>;\ntype Check = (value: Entry, path: string) => DefinitionIssue[];\ntype Kind = 'string' | 'number' | 'boolean' | 'requirement' | 'scalar' | 'list';\n\nexport const isEntry = (value: unknown): value is Entry =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst KINDS: Record<Kind, [(value: unknown) => boolean, string]> = {\n string: [(value) => typeof value === 'string', 'a string'],\n number: [(value) => typeof value === 'number' && Number.isFinite(value), 'a number'],\n boolean: [(value) => typeof value === 'boolean', 'true or false'],\n requirement: [(value) => ['boolean', 'string'].includes(typeof value), 'true, false or a message string'],\n scalar: [(value) => ['string', 'number', 'boolean'].includes(typeof value), 'a string, number or boolean'],\n list: [(value) => Array.isArray(value) && value.every((item) => ['string', 'number'].includes(typeof item)), 'an array of strings or numbers'],\n};\n\nfunction typed(value: Entry, rules: Record<string, Kind>, path: string): DefinitionIssue[] {\n return Object.entries(rules).flatMap(([key, kind]) => {\n const [valid, name] = KINDS[kind];\n return value[key] === undefined || valid(value[key]) ? [] : [error('invalid-type', `${path}/${pointer(key)}`, `\"${key}\" must be ${name}`)];\n });\n}\n\nfunction list(value: unknown, path: string, name: string, check: Check, required = false): DefinitionIssue[] {\n if (value == null && !required) return [];\n if (!Array.isArray(value)) return [error('invalid-type', path, 'must be an array', required ? 'Use [] when there is nothing to list' : undefined)];\n return value.flatMap((item, index) => (\n isEntry(item) ? check(item, `${path}/${index}`) : [error('invalid-type', `${path}/${index}`, `must be ${name}`)]\n ));\n}\n\nfunction text(value: Entry, key: string, path: string): DefinitionIssue[] {\n return typeof value[key] === 'string' ? [] : [error('missing-property', `${path}/${key}`, `\"${key}\" must be a string`)];\n}\n\nconst condition: Check = (value, path) => typed(value, { field: 'string', eq: 'scalar', neq: 'scalar', in: 'list', notIn: 'list', notEmpty: 'boolean', gt: 'number', gte: 'number', lt: 'number', lte: 'number' }, path);\n\nfunction conditions(value: Entry, path: string): DefinitionIssue[] {\n return [\n ...list(value.show, `${path}/show`, 'a condition object', condition),\n ...list(value.showAny, `${path}/showAny`, 'a condition object', condition),\n ];\n}\n\nfunction action(value: unknown, path: string): DefinitionIssue[] {\n if (!isEntry(value)) return [];\n return [...typed(value, { label: 'string' }, path), ...list(value.disabled, `${path}/disabled`, 'a condition object', condition)];\n}\n\nconst option: Check = (value, path) => [...text(value, 'value', path), ...typed(value, { label: 'string' }, path)];\n\nconst RULES: Record<string, Kind> = {\n required: 'requirement', minLength: 'number', maxLength: 'number', min: 'number', max: 'number', pattern: 'string', matchField: 'string', validator: 'string',\n minLengthMessage: 'string', maxLengthMessage: 'string', minMessage: 'string', maxMessage: 'string', patternMessage: 'string', matchFieldMessage: 'string',\n};\n\nfunction validation(value: unknown, path: string): DefinitionIssue[] {\n if (value === undefined) return [];\n return isEntry(value) ? typed(value, RULES, path) : [error('invalid-type', path, 'must be an object of validation rules')];\n}\n\nfunction dependencies(value: unknown, path: string): DefinitionIssue[] {\n const valid = value === undefined || (Array.isArray(value) && value.every((key) => typeof key === 'string'));\n return valid ? [] : [error('invalid-type', path, 'must be an array of field keys')];\n}\n\nconst field: Check = (value, path) => [\n ...text(value, 'key', path),\n ...text(value, 'type', path),\n ...typed(value, { label: 'string', placeholder: 'string', helperText: 'string' }, path),\n ...conditions(value, path),\n ...list(value.options, `${path}/options`, 'an option object', option),\n ...validation(value.validation, `${path}/validation`),\n ...dependencies(value.optionsDependsOn, `${path}/optionsDependsOn`),\n];\n\nconst route: Check = (value, path) => [\n ...(value.to === null || typeof value.to === 'string' ? [] : [error('missing-property', `${path}/to`, '\"to\" must be a step id or null')]),\n ...conditions(value, path),\n];\n\nconst step: Check = (value, path) => [\n ...text(value, 'id', path),\n ...typed(value, { title: 'string', description: 'string' }, path),\n ...list(value.fields, `${path}/fields`, 'a field object', field, true),\n ...conditions(value, path),\n ...list(value.routes, `${path}/routes`, 'a route object', route),\n ...['next', 'back', 'skip'].flatMap((name) => action(value[name], `${path}/${name}`)),\n];\n\nexport function shapeIssues(input: unknown): DefinitionIssue[] {\n if (!isEntry(input)) return [error('invalid-type', '', 'the form definition must be an object')];\n const format = formatIssues(input);\n if (format.length) return format;\n return [\n ...list(input.fields, '/fields', 'a field object', field),\n ...list(input.steps, '/steps', 'a step object', step),\n ...action(input.submit, '/submit'),\n ...action(input.cancel, '/cancel'),\n ];\n}\n\nexport function metaIssues(input: Entry): DefinitionIssue[] {\n return [\n ...text(input, 'id', ''),\n ...(isEntry(input.submit) ? [] : [error('missing-property', '/submit', 'the submit action is missing', 'Add \"submit\": { \"label\": \"Submit\" }')]),\n ];\n}\n","import type { FormStep, StepRoute } from '../types';\n\nconst conditional = (source: Pick<StepRoute, 'show' | 'showAny'>) => !!(source.show?.length || source.showAny?.length);\n\nfunction successors(steps: FormStep[], indexes: Map<string, number>, from: number): number[] {\n const next: number[] = [];\n for (const route of steps[from].routes ?? []) {\n const target = route.to === null ? null : indexes.get(route.to);\n if (target === null && !conditional(route)) return next;\n if (target === null || target === undefined || target <= from) continue;\n next.push(target);\n if (!conditional(route) && !conditional(steps[target])) return next;\n }\n return from + 1 < steps.length ? [...next, from + 1] : next;\n}\n\nexport function reachableSteps(steps: FormStep[]): Set<number>[] {\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n return steps.map((_, start) => {\n const seen = new Set<number>();\n const queue = successors(steps, indexes, start);\n while (queue.length) {\n const index = queue.pop()!;\n if (seen.has(index)) continue;\n seen.add(index);\n queue.push(...successors(steps, indexes, index));\n if (conditional(steps[index]) && index + 1 < steps.length) queue.push(index + 1);\n }\n return seen;\n });\n}\n","import type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, oneOf } from './issues';\nimport { reachableSteps } from './paths';\n\nconst RESERVED = new Set([...Object.getOwnPropertyNames(Object.prototype), 'prototype']);\n\nfunction stepIssues({ definition }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const steps = definition.steps ?? [];\n const seen = new Map<string, number>();\n steps.forEach((step, index) => {\n const first = seen.get(step.id);\n if (first === undefined) seen.set(step.id, index);\n else issues.push(error('duplicate-step-id', `/steps/${index}/id`, `step id \"${step.id}\" is already used by /steps/${first}`, 'Give each step a unique id'));\n });\n steps.forEach((step, index) => (step.routes ?? []).forEach((route, position) => {\n if (route.to === null) return;\n const target = seen.get(route.to);\n if (target !== undefined && target > index) return;\n const later = steps.slice(index + 1).map((candidate) => candidate.id);\n const problem = target === undefined ? `\"${route.to}\" is not a step id` : `\"${route.to}\" is not a later step`;\n const hint = later.length ? `${oneOf(later)}, or null to end the form here` : 'Use null to end the form here';\n issues.push(error('route-target', `/steps/${index}/routes/${position}/to`, problem, hint));\n }));\n return issues;\n}\n\nfunction keyIssues({ definition, entries }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const reachable = reachableSteps(definition.steps ?? []);\n const exclusive = (a: FieldEntry, b: FieldEntry) => a.step !== b.step && !reachable[a.step]?.has(b.step);\n entries.forEach((entry, index) => {\n const { field, path } = entry;\n const clash = entries.slice(0, index).find((other) => other.field.key === field.key && !exclusive(other, entry));\n if (RESERVED.has(field.key)) {\n issues.push(error('reserved-key', `${path}/key`, `\"${field.key}\" is a built-in object property name`, 'Rename the field key'));\n } else if (clash) {\n issues.push(error('duplicate-key', `${path}/key`, `key \"${field.key}\" is already used by ${clash.path} on the same path`, 'Rename one of the fields, or move them to route branches that never meet'));\n }\n });\n return issues;\n}\n\nexport function structureIssues(context: CheckContext): DefinitionIssue[] {\n const { definition } = context;\n const both = !!definition.fields?.length && !!definition.steps?.length;\n return [\n ...(both ? [error('fields-and-steps', '', 'the definition has both \"fields\" and \"steps\"', 'Move the top-level fields into a step, or remove \"steps\"')] : []),\n ...stepIssues(context),\n ...keyIssues(context),\n ];\n}\n","import type { FormField } from '../types';\nimport { BOOLEAN_TYPES, BUILT_IN_TYPES } from '../validation/type-checks';\nimport { conditionErrors, OPERATORS } from './conditions';\nimport type { CheckContext, ConditionEntry, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { closest, oneOf, suggest, warning } from './issues';\n\nconst LIST_OPERATORS = ['in', 'notIn'];\nconst COMPARISONS = ['gt', 'gte', 'lt', 'lte'];\nconst STRING_TYPES = ['text', 'email', 'phone', 'password', 'textarea', 'date', 'datetime', 'select', 'radio', 'autocomplete'];\n\nfunction expectedType(field: FormField): string | undefined {\n if (field.type === 'number') return 'number';\n if (BOOLEAN_TYPES.includes(field.type)) return 'boolean';\n return STRING_TYPES.includes(field.type) ? 'string' : undefined;\n}\n\nfunction valueIssue(target: FormField, operator: string, operand: unknown, path: string): DefinitionIssue[] {\n const mismatch = (problem: string, hint: string) => [warning('condition-value-mismatch', path, problem, hint)];\n if (operator === 'notEmpty') return [];\n if (COMPARISONS.includes(operator)) {\n if (target.type !== 'multiselect' && !BOOLEAN_TYPES.includes(target.type)) return [];\n return mismatch(`\"${target.key}\" is a ${target.type} field, so \"${operator}\" never matches it`, 'Compare a number, text, radio or select field');\n }\n if (target.type === 'multiselect') {\n const result = operator === 'neq' || operator === 'notIn' ? 'always' : 'never';\n return mismatch(`\"${target.key}\" holds a list of values, so \"${operator}\" ${result} matches it`, 'Use notEmpty, or a select or radio field');\n }\n const operands = LIST_OPERATORS.includes(operator) && Array.isArray(operand) ? operand : [operand];\n const expected = expectedType(target);\n const wrong = expected && operands.find((item) => typeof item !== expected);\n if (expected && wrong !== undefined) return mismatch(`${JSON.stringify(wrong)} is a ${typeof wrong}, but \"${target.key}\" holds a ${expected}`, `Use a ${expected} value`);\n const options = expected === 'string' && !target.optionsFrom && target.options?.length ? target.options.map((option) => option.value) : null;\n const missing = options && operands.find((item) => !options.includes(item as string));\n return options && missing !== undefined ? mismatch(`${JSON.stringify(missing)} is not an option of \"${target.key}\"`, oneOf(options)) : [];\n}\n\nfunction conditionWarnings(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (conditionErrors(context, entry).length) return [];\n const operator = OPERATORS.find((key) => key in condition)!;\n return valueIssue(context.keys.get(condition.field)!.field, operator, condition[operator as keyof typeof condition], `${path}/${operator}`);\n}\n\nfunction optionIssues({ field, path }: FieldEntry): DefinitionIssue[] {\n if (!['select', 'radio', 'multiselect'].includes(field.type)) return [];\n if (!Array.isArray(field.options)) {\n return field.optionsFrom ? [] : [warning('missing-options', `${path}/options`, `the ${field.type} field \"${field.key}\" has no options`, 'Add \"options\" or \"optionsFrom\"')];\n }\n const values = field.options.map((option) => option.value);\n const defaults = field.type === 'multiselect' && Array.isArray(field.defaultValue) ? field.defaultValue : [field.defaultValue];\n const missing = field.defaultValue === undefined || !values.length || field.optionsFrom ? undefined : defaults.find((value) => !values.includes(value as string));\n if (missing === undefined) return [];\n return [warning('default-not-in-options', `${path}/defaultValue`, `${JSON.stringify(missing)} is not an option of \"${field.key}\"`, oneOf(values))];\n}\n\nfunction ruleWarnings(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation ?? {};\n const rule = (name: string, problem: string, hint: string) => warning('rule-not-applicable', `${path}/validation/${name}`, problem, hint);\n const known = BUILT_IN_TYPES.includes(field.type);\n const numeric = field.type === 'number';\n const ranges = known && !numeric ? (['min', 'max'] as const).filter((name) => rules[name] !== undefined) : [];\n const sized = known && ['number', 'checkbox', 'switch'].includes(field.type) ? (['minLength', 'maxLength'] as const).filter((name) => rules[name] !== undefined) : [];\n const issues = [\n ...ranges.map((name) => rule(name, `\"${name}\" applies to number fields only`, `Use ${name}Length to limit text length`)),\n ...sized.map((name) => rule(name, `\"${name}\" does not apply to ${field.type} fields`, numeric ? 'Use min and max for numbers' : `Remove ${name}`)),\n ];\n const { validators } = context;\n if (rules.validator !== undefined && validators && !Object.prototype.hasOwnProperty.call(validators, rules.validator)) {\n issues.push(warning('unknown-validator', `${path}/validation/validator`, `the validator \"${rules.validator}\" is not registered`, 'Pass it in the \"validators\" option'));\n }\n return issues;\n}\n\nfunction fieldWarnings(context: CheckContext, entry: FieldEntry): DefinitionIssue[] {\n const { field, path } = entry;\n const match = BUILT_IN_TYPES.includes(field.type) ? undefined : closest(field.type, BUILT_IN_TYPES);\n return [\n ...(match === undefined ? [] : [warning('unknown-field-type', `${path}/type`, `\"${field.type}\" is not a built-in field type`, `Use \"${match}\", or register a component for \"${field.type}\"`)]),\n ...optionIssues(entry),\n ...ruleWarnings(context, entry),\n ...(field.optionsDependsOn ?? []).flatMap((key, index) => (\n context.keys.has(key) ? [] : [warning('unknown-field', `${path}/optionsDependsOn/${index}`, `\"${key}\" is not a field key`, suggest(key, context.keyList))]\n )),\n ];\n}\n\nfunction routeWarnings({ definition }: CheckContext): DefinitionIssue[] {\n const steps = definition.steps ?? [];\n return steps.flatMap((step, index) => {\n const issues: DefinitionIssue[] = [];\n const targets = new Set((step.routes ?? []).map((route) => route.to).filter((to) => to !== null));\n for (const target of targets) {\n const position = steps.findIndex((candidate) => candidate.id === target);\n const sibling = steps[position + 1];\n const exits = steps[position]?.routes?.some((route) => !route.show?.length && !route.showAny?.length);\n if (!sibling || !targets.has(sibling.id) || exits) continue;\n issues.push(warning('route-fallthrough', `/steps/${position}`, `branch \"${target}\" from \"${step.id}\" continues into the sibling branch \"${sibling.id}\"`, `Add an unconditional route on \"${target}\" to the step where the branches meet`));\n }\n if (step.skip && (step.next === false || !steps[1])) {\n issues.push(warning('skip-unreachable', `/steps/${index}/skip`, `step \"${step.id}\" has \"skip\" but no Continue button or later step`, 'Remove \"skip\", or remove \"next\": false'));\n }\n return issues;\n });\n}\n\nexport function definitionWarnings(context: CheckContext): DefinitionIssue[] {\n return [\n ...(typeof context.definition.title === 'string' ? [] : [warning('missing-property', '/title', '\"title\" must be a string', 'Add a title for host UI and editors')]),\n ...context.conditions.flatMap((entry) => conditionWarnings(context, entry)),\n ...context.entries.flatMap((entry) => fieldWarnings(context, entry)),\n ...routeWarnings(context),\n ];\n}\n","import type { FormDefinition } from '../types';\nimport { conditionIssues } from './conditions';\nimport { createContext, type CheckContext } from './context';\nimport { fieldIssues } from './fields';\nimport { graphIssues } from './graph';\nimport { FormDefinitionError, suggest, type DefinitionIssue } from './issues';\nimport { metaIssues, shapeIssues } from './shape';\nimport { structureIssues } from './structure';\nimport { definitionWarnings } from './warnings';\n\nexport interface CheckDefinitionOptions {\n validators?: Record<string, unknown>;\n}\n\ninterface Checks {\n validators?: Record<string, unknown>;\n suggest?: CheckContext['suggest'];\n warnings?: (context: CheckContext) => DefinitionIssue[];\n}\n\nfunction issues(input: unknown, { validators, suggest, warnings }: Checks = {}): DefinitionIssue[] {\n const shape = shapeIssues(input);\n if (shape.length) return shape;\n const context = createContext(input as FormDefinition, validators, suggest);\n return [\n ...metaIssues(input as Record<string, unknown>),\n ...structureIssues(context),\n ...conditionIssues(context),\n ...fieldIssues(context),\n ...graphIssues(context),\n ...(warnings ? warnings(context) : []),\n ];\n}\n\nexport function definitionErrors(input: unknown): DefinitionIssue[] {\n return issues(input);\n}\n\nexport function checkDefinition(input: unknown, options: CheckDefinitionOptions = {}): DefinitionIssue[] {\n return issues(input, { validators: options.validators, suggest, warnings: definitionWarnings });\n}\n\nexport function parseDefinition(input: unknown, options?: CheckDefinitionOptions): FormDefinition {\n const errors = issues(input, { suggest });\n if (errors.length) throw new FormDefinitionError(errors);\n return input as FormDefinition;\n}\n"]}
1
+ {"version":3,"sources":["../src/definition-validation/issues.ts","../src/definition-validation/format.ts","../src/definition-validation/conditions.ts","../src/definition-validation/context.ts","../src/definition-validation/fields.ts","../src/definition-validation/graph.ts","../src/definition-validation/shape.ts","../src/definition-validation/paths.ts","../src/definition-validation/structure.ts","../src/definition-validation/warnings.ts","../src/definition-validation/check-definition.ts"],"names":["FormDefinitionError","issues","issue","create","severity","code","path","problem","hint","error","warning","pointer","key","isError","oneOf","values","shown","value","distance","a","b","row","_","index","next","j","closest","candidates","lower","candidate","suggest","match","FORMAT_VERSION","formatIssues","version","valid","OPERATORS","CONDITION_OPERATORS","operatorIssues","condition","keys","unknown","count","referenceIssues","context","owner","step","target","sameStep","allowed","conditionErrors","entry","conditionIssues","collect","source","name","collectAction","action","createContext","definition","validators","steps","entries","field","position","conditions","route","rangeIssue","rules","min","max","low","high","patternIssue","pattern","ruleIssues","fieldIssues","dependencyGraph","graph","link","owners","dependencies","known","fieldsOf","findCycles","visiting","cycles","start","stack","frame","neighbor","nodes","node","cycleIssues","cycle","graphIssues","isEntry","KINDS","item","typed","kind","list","check","required","text","option","RULES","validation","shapeIssues","input","format","metaIssues","conditional","successors","indexes","from","reachableSteps","seen","queue","RESERVED","stepIssues","first","later","keyIssues","reachable","exclusive","clash","other","structureIssues","LIST_OPERATORS","COMPARISONS","STRING_TYPES","expectedType","BOOLEAN_TYPES","valueIssue","operator","operand","mismatch","result","operands","expected","wrong","options","missing","conditionWarnings","optionIssues","defaults","ruleWarnings","rule","BUILT_IN_TYPES","numeric","ranges","sized","fieldWarnings","routeWarnings","targets","to","sibling","exits","definitionWarnings","warnings","shape","definitionErrors","checkDefinition","parseDefinition","errors"],"mappings":"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","file":"chunk-RN5GQHKN.js","sourcesContent":["export type DefinitionIssueCode =\n | 'invalid-type'\n | 'missing-property'\n | 'fields-and-steps'\n | 'duplicate-step-id'\n | 'duplicate-key'\n | 'reserved-key'\n | 'route-target'\n | 'unknown-field'\n | 'forward-reference'\n | 'condition-operator-count'\n | 'unknown-operator'\n | 'condition-value-mismatch'\n | 'condition-cycle'\n | 'invalid-pattern'\n | 'invalid-range'\n | 'rule-not-applicable'\n | 'missing-options'\n | 'default-not-in-options'\n | 'unknown-field-type'\n | 'unknown-validator'\n | 'skip-unreachable'\n | 'route-fallthrough'\n | 'unsupported-format-version'\n | 'i18n-unbound-slot'\n | 'unknown-i18n-slot'\n | 'unknown-message-key'\n | 'unknown-label-key'\n | 'i18n-unsafe-identifier';\n\nexport interface DefinitionIssue {\n code: DefinitionIssueCode;\n severity: 'error' | 'warning';\n path: string;\n message: string;\n hint?: string;\n}\n\nexport class FormDefinitionError extends Error {\n readonly issues: DefinitionIssue[];\n\n constructor(issues: DefinitionIssue[]) {\n super(`Invalid form definition:\\n${issues.map((issue) => issue.message).join('\\n')}`);\n this.name = 'FormDefinitionError';\n this.issues = issues;\n }\n}\n\nfunction create(severity: DefinitionIssue['severity']) {\n return (code: DefinitionIssueCode, path: string, problem: string, hint?: string): DefinitionIssue => ({\n code,\n severity,\n path,\n message: `${path || '/'}: ${problem}.${hint ? ` ${hint}.` : ''}`,\n ...(hint && { hint: `${hint}.` }),\n });\n}\n\nexport const error = create('error');\nexport const warning = create('warning');\n\nexport function pointer(key: string): string {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\nexport function isError(issue: DefinitionIssue): boolean {\n return issue.severity === 'error';\n}\n\nexport function oneOf(values: string[]): string {\n if (values.length === 1) return `Use ${JSON.stringify(values[0])}`;\n const shown = values.slice(0, 10).map((value) => JSON.stringify(value)).join(', ');\n return values.length > 10 ? `Use one of: ${shown}, ...` : `Use one of: ${shown}`;\n}\n\nfunction distance(a: string, b: string): number {\n let row = Array.from({ length: b.length + 1 }, (_, index) => index);\n for (let i = 1; i <= a.length; i++) {\n const next = [i];\n for (let j = 1; j <= b.length; j++) {\n next[j] = Math.min(row[j] + 1, next[j - 1] + 1, row[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));\n }\n row = next;\n }\n return row[b.length];\n}\n\nexport function closest(value: string, candidates: string[]): string | undefined {\n const lower = value.toLowerCase();\n return candidates.find((candidate) => candidate !== value && distance(lower, candidate.toLowerCase()) <= (candidate.length > 4 ? 2 : 1));\n}\n\nexport function suggest(value: string, candidates: string[]): string | undefined {\n const match = closest(value, candidates);\n if (match !== undefined) return `Use ${JSON.stringify(match)}`;\n return candidates.length ? oneOf(candidates) : undefined;\n}\n","import type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nexport const FORMAT_VERSION = '1.0';\n\nexport function formatIssues({ formatVersion: version }: Record<string, unknown>): DefinitionIssue[] {\n if (version === undefined) return [];\n const valid = typeof version === 'string' && /^[1-9]\\d*(\\.\\d+)?$/.test(version);\n if (valid && parseInt(version) <= parseInt(FORMAT_VERSION)) return [];\n return [valid\n ? error('unsupported-format-version', '/formatVersion', `format ${version} is not supported`, 'Upgrade @formhaus/core')\n : error('invalid-type', '/formatVersion', 'must be a version string', `Use \"${FORMAT_VERSION}\"`)];\n}\n","import { CONDITION_OPERATORS } from '../visibility/evaluate-condition';\nimport type { ShowCondition } from '../types';\nimport type { CheckContext, ConditionEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, pointer } from './issues';\n\nexport const OPERATORS: readonly string[] = CONDITION_OPERATORS;\n\nfunction operatorIssues({ suggest }: CheckContext, condition: ShowCondition, path: string): DefinitionIssue[] {\n const keys = Object.keys(condition).filter((key) => key !== 'field');\n const unknown = keys.filter((key) => !OPERATORS.includes(key));\n const issues = unknown.map((key) => error('unknown-operator', `${path}/${pointer(key)}`, `\"${key}\" is not a condition operator`, suggest(key, [...OPERATORS])));\n const count = keys.length - unknown.length;\n if (count !== 1 && !(count === 0 && unknown.length)) {\n const problem = count ? `the condition has ${count} operators` : 'the condition has no operator';\n issues.push(error('condition-operator-count', path, problem, `Use exactly one of: ${OPERATORS.join(', ')}`));\n }\n return issues;\n}\n\nfunction referenceIssues(context: CheckContext, { condition, path, owner, step, key }: ConditionEntry): DefinitionIssue[] {\n const target = context.keys.get(condition.field);\n if (!target) {\n const candidates = context.keyList.filter((candidate) => candidate !== key);\n return [error('unknown-field', `${path}/field`, `\"${condition.field}\" is not a field key`, context.suggest(condition.field, candidates))];\n }\n if (step < 0 || owner === 'action') return [];\n const sameStep = owner === 'step' ? 'this or a later step' : 'a later step';\n if (target.step < step || (owner !== 'step' && target.step === step)) return [];\n const allowed = owner === 'step' ? 'earlier steps' : 'this or an earlier step';\n return [error('forward-reference', `${path}/field`, `\"${condition.field}\" belongs to ${sameStep}`, `${owner === 'route' ? 'Route' : owner === 'step' ? 'Step' : 'Field'} conditions can use fields of ${allowed}`)];\n}\n\nexport function conditionErrors(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (typeof condition.field !== 'string') return [error('missing-property', `${path}/field`, 'the condition has no \"field\"', 'Add the key of the field to test')];\n return [...operatorIssues(context, condition, path), ...referenceIssues(context, entry)];\n}\n\nexport function conditionIssues(context: CheckContext): DefinitionIssue[] {\n return context.conditions.flatMap((entry) => conditionErrors(context, entry));\n}\n","import type { FormAction, FormDefinition, FormField, ShowCondition } from '../types';\n\nexport interface FieldEntry {\n field: FormField;\n path: string;\n step: number;\n}\n\nexport interface ConditionEntry {\n condition: ShowCondition;\n path: string;\n owner: 'field' | 'step' | 'route' | 'action';\n step: number;\n key?: string;\n}\n\nexport interface CheckContext {\n definition: FormDefinition;\n entries: FieldEntry[];\n keys: Map<string, FieldEntry>;\n keyList: string[];\n conditions: ConditionEntry[];\n validators?: Record<string, unknown>;\n suggest: (value: string, candidates: string[]) => string | undefined;\n}\n\ntype Owner = { show?: ShowCondition[]; showAny?: ShowCondition[] };\n\nfunction collect(target: ConditionEntry[], source: Owner, path: string, owner: ConditionEntry['owner'], step: number, key?: string): void {\n for (const name of ['show', 'showAny'] as const) {\n (source[name] ?? []).forEach((condition, index) => target.push({ condition, path: `${path}/${name}/${index}`, owner, step, key }));\n }\n}\n\nfunction collectAction(target: ConditionEntry[], action: FormAction | false | undefined, path: string, step: number): void {\n (action ? action.disabled ?? [] : []).forEach((condition, index) => (\n target.push({ condition, path: `${path}/disabled/${index}`, owner: 'action', step })\n ));\n}\n\nexport function createContext(definition: FormDefinition, validators?: Record<string, unknown>, suggest: CheckContext['suggest'] = () => undefined): CheckContext {\n const steps = definition.steps ?? [];\n const entries: FieldEntry[] = steps.length\n ? steps.flatMap((step, index) => step.fields.map((field, position) => ({ field, path: `/steps/${index}/fields/${position}`, step: index })))\n : (definition.fields ?? []).map((field, position) => ({ field, path: `/fields/${position}`, step: -1 }));\n const keys = new Map<string, FieldEntry>();\n for (const entry of entries) if (!keys.has(entry.field.key)) keys.set(entry.field.key, entry);\n const conditions: ConditionEntry[] = [];\n for (const entry of entries) collect(conditions, entry.field, entry.path, 'field', entry.step, entry.field.key);\n steps.forEach((step, index) => {\n collect(conditions, step, `/steps/${index}`, 'step', index);\n (step.routes ?? []).forEach((route, position) => collect(conditions, route, `/steps/${index}/routes/${position}`, 'route', index));\n for (const name of ['next', 'back', 'skip'] as const) collectAction(conditions, step[name], `/steps/${index}/${name}`, index);\n });\n collectAction(conditions, definition.submit, '/submit', -1);\n collectAction(conditions, definition.cancel, '/cancel', -1);\n return {\n definition,\n entries,\n keys,\n keyList: [...keys.keys()],\n conditions,\n validators,\n suggest,\n };\n}\n","import type { FieldValidation } from '../types';\nimport type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nfunction rangeIssue(rules: FieldValidation, path: string, min: 'min' | 'minLength', max: 'max' | 'maxLength'): DefinitionIssue[] {\n const low = rules[min];\n const high = rules[max];\n if (low === undefined || high === undefined || low <= high) return [];\n return [error('invalid-range', `${path}/validation/${min}`, `${min} (${low}) is greater than ${max} (${high})`, `Lower ${min} or raise ${max}`)];\n}\n\nfunction patternIssue(pattern: string | undefined, path: string): DefinitionIssue[] {\n if (pattern === undefined) return [];\n try {\n new RegExp(pattern);\n return [];\n } catch {\n return [error('invalid-pattern', `${path}/validation/pattern`, `${JSON.stringify(pattern)} is not a valid regular expression`, 'Fix the pattern or escape special characters with a backslash')];\n }\n}\n\nfunction ruleIssues(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation;\n if (!rules) return [];\n const match = rules.matchField;\n return [\n ...rangeIssue(rules, path, 'minLength', 'maxLength'),\n ...rangeIssue(rules, path, 'min', 'max'),\n ...patternIssue(rules.pattern, path),\n ...(match === undefined || context.keys.has(match) ? [] : [error('unknown-field', `${path}/validation/matchField`, `\"${match}\" is not a field key`, context.suggest(match, context.keyList))]),\n ];\n}\n\nexport function fieldIssues(context: CheckContext): DefinitionIssue[] {\n return context.entries.flatMap((entry) => ruleIssues(context, entry));\n}\n","import type { CheckContext } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nfunction dependencyGraph({ definition, entries, keys }: CheckContext): Map<string, string[]> {\n const graph = new Map<string, string[]>();\n const link = (owners: string[], dependencies: string[]) => {\n const known = dependencies.filter((key) => keys.has(key));\n if (known.length) for (const owner of owners) graph.set(owner, [...(graph.get(owner) ?? []), ...known]);\n };\n const fieldsOf = (source: { show?: { field: string }[]; showAny?: { field: string }[] }) => (\n [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field)\n );\n for (const { field } of entries) link([field.key], fieldsOf(field));\n for (const step of definition.steps ?? []) link(step.fields.map((field) => field.key), fieldsOf(step));\n return graph;\n}\n\nfunction findCycles(graph: Map<string, string[]>): string[][] {\n const visiting = new Map<string, boolean>();\n const cycles: string[][] = [];\n for (const start of graph.keys()) {\n if (visiting.has(start)) continue;\n visiting.set(start, true);\n const stack: [string, number][] = [[start, 0]];\n while (stack.length > 0) {\n const frame = stack[stack.length - 1];\n const neighbor = graph.get(frame[0])?.[frame[1]++];\n if (neighbor === undefined) {\n visiting.set(frame[0], false);\n stack.pop();\n } else if (visiting.get(neighbor)) {\n const nodes = stack.map(([node]) => node);\n cycles.push([...nodes.slice(nodes.indexOf(neighbor)), neighbor]);\n } else if (!visiting.has(neighbor)) {\n visiting.set(neighbor, true);\n stack.push([neighbor, 0]);\n }\n }\n }\n return cycles;\n}\n\nfunction cycleIssues(context: CheckContext): DefinitionIssue[] {\n return findCycles(dependencyGraph(context)).map((cycle) => (\n error('condition-cycle', context.keys.get(cycle[0])!.path, `show conditions form a cycle: ${cycle.join(' -> ')}`, 'Remove one of the conditions in the cycle')\n ));\n}\n\nexport function graphIssues(context: CheckContext): DefinitionIssue[] {\n return cycleIssues(context);\n}\n","import type { DefinitionIssue } from './issues';\nimport { formatIssues } from './format';\nimport { error, pointer } from './issues';\n\ntype Entry = Record<string, unknown>;\ntype Check = (value: Entry, path: string) => DefinitionIssue[];\ntype Kind = 'string' | 'number' | 'boolean' | 'requirement' | 'scalar' | 'list';\n\nexport const isEntry = (value: unknown): value is Entry =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst KINDS: Record<Kind, [(value: unknown) => boolean, string]> = {\n string: [(value) => typeof value === 'string', 'a string'],\n number: [(value) => typeof value === 'number' && Number.isFinite(value), 'a number'],\n boolean: [(value) => typeof value === 'boolean', 'true or false'],\n requirement: [(value) => ['boolean', 'string'].includes(typeof value), 'true, false or a message string'],\n scalar: [(value) => ['string', 'number', 'boolean'].includes(typeof value), 'a string, number or boolean'],\n list: [(value) => Array.isArray(value) && value.every((item) => ['string', 'number'].includes(typeof item)), 'an array of strings or numbers'],\n};\n\nfunction typed(value: Entry, rules: Record<string, Kind>, path: string): DefinitionIssue[] {\n return Object.entries(rules).flatMap(([key, kind]) => {\n const [valid, name] = KINDS[kind];\n return value[key] === undefined || valid(value[key]) ? [] : [error('invalid-type', `${path}/${pointer(key)}`, `\"${key}\" must be ${name}`)];\n });\n}\n\nfunction list(value: unknown, path: string, name: string, check: Check, required = false): DefinitionIssue[] {\n if (value == null && !required) return [];\n if (!Array.isArray(value)) return [error('invalid-type', path, 'must be an array', required ? 'Use [] when there is nothing to list' : undefined)];\n return value.flatMap((item, index) => (\n isEntry(item) ? check(item, `${path}/${index}`) : [error('invalid-type', `${path}/${index}`, `must be ${name}`)]\n ));\n}\n\nfunction text(value: Entry, key: string, path: string): DefinitionIssue[] {\n return typeof value[key] === 'string' ? [] : [error('missing-property', `${path}/${key}`, `\"${key}\" must be a string`)];\n}\n\nconst condition: Check = (value, path) => typed(value, { field: 'string', eq: 'scalar', neq: 'scalar', in: 'list', notIn: 'list', notEmpty: 'boolean', gt: 'number', gte: 'number', lt: 'number', lte: 'number' }, path);\n\nfunction conditions(value: Entry, path: string): DefinitionIssue[] {\n return [\n ...list(value.show, `${path}/show`, 'a condition object', condition),\n ...list(value.showAny, `${path}/showAny`, 'a condition object', condition),\n ];\n}\n\nfunction action(value: unknown, path: string): DefinitionIssue[] {\n if (!isEntry(value)) return [];\n return [...typed(value, { label: 'string' }, path), ...list(value.disabled, `${path}/disabled`, 'a condition object', condition)];\n}\n\nconst option: Check = (value, path) => [...text(value, 'value', path), ...typed(value, { label: 'string' }, path)];\n\nconst RULES: Record<string, Kind> = {\n required: 'requirement', minLength: 'number', maxLength: 'number', min: 'number', max: 'number', pattern: 'string', matchField: 'string', validator: 'string',\n minLengthMessage: 'string', maxLengthMessage: 'string', minMessage: 'string', maxMessage: 'string', patternMessage: 'string', matchFieldMessage: 'string',\n};\n\nfunction validation(value: unknown, path: string): DefinitionIssue[] {\n if (value === undefined) return [];\n return isEntry(value) ? typed(value, RULES, path) : [error('invalid-type', path, 'must be an object of validation rules')];\n}\n\nfunction dependencies(value: unknown, path: string): DefinitionIssue[] {\n const valid = value === undefined || (Array.isArray(value) && value.every((key) => typeof key === 'string'));\n return valid ? [] : [error('invalid-type', path, 'must be an array of field keys')];\n}\n\nconst field: Check = (value, path) => [\n ...text(value, 'key', path),\n ...text(value, 'type', path),\n ...typed(value, { label: 'string', placeholder: 'string', helperText: 'string' }, path),\n ...conditions(value, path),\n ...list(value.options, `${path}/options`, 'an option object', option),\n ...validation(value.validation, `${path}/validation`),\n ...dependencies(value.optionsDependsOn, `${path}/optionsDependsOn`),\n];\n\nconst route: Check = (value, path) => [\n ...(value.to === null || typeof value.to === 'string' ? [] : [error('missing-property', `${path}/to`, '\"to\" must be a step id or null')]),\n ...conditions(value, path),\n];\n\nconst step: Check = (value, path) => [\n ...text(value, 'id', path),\n ...typed(value, { title: 'string', description: 'string' }, path),\n ...list(value.fields, `${path}/fields`, 'a field object', field, true),\n ...conditions(value, path),\n ...list(value.routes, `${path}/routes`, 'a route object', route),\n ...['next', 'back', 'skip'].flatMap((name) => action(value[name], `${path}/${name}`)),\n];\n\nexport function shapeIssues(input: unknown): DefinitionIssue[] {\n if (!isEntry(input)) return [error('invalid-type', '', 'the form definition must be an object')];\n const format = formatIssues(input);\n if (format.length) return format;\n return [\n ...list(input.fields, '/fields', 'a field object', field),\n ...list(input.steps, '/steps', 'a step object', step),\n ...action(input.submit, '/submit'),\n ...action(input.cancel, '/cancel'),\n ];\n}\n\nexport function metaIssues(input: Entry): DefinitionIssue[] {\n return [\n ...text(input, 'id', ''),\n ...(isEntry(input.submit) ? [] : [error('missing-property', '/submit', 'the submit action is missing', 'Add \"submit\": { \"label\": \"Submit\" }')]),\n ];\n}\n","import type { FormStep, StepRoute } from '../types';\n\nconst conditional = (source: Pick<StepRoute, 'show' | 'showAny'>) => !!(source.show?.length || source.showAny?.length);\n\nfunction successors(steps: FormStep[], indexes: Map<string, number>, from: number): number[] {\n const next: number[] = [];\n for (const route of steps[from].routes ?? []) {\n const target = route.to === null ? null : indexes.get(route.to);\n if (target === null && !conditional(route)) return next;\n if (target === null || target === undefined || target <= from) continue;\n next.push(target);\n if (!conditional(route) && !conditional(steps[target])) return next;\n }\n return from + 1 < steps.length ? [...next, from + 1] : next;\n}\n\nexport function reachableSteps(steps: FormStep[]): Set<number>[] {\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n return steps.map((_, start) => {\n const seen = new Set<number>();\n const queue = successors(steps, indexes, start);\n while (queue.length) {\n const index = queue.pop()!;\n if (seen.has(index)) continue;\n seen.add(index);\n queue.push(...successors(steps, indexes, index));\n if (conditional(steps[index]) && index + 1 < steps.length) queue.push(index + 1);\n }\n return seen;\n });\n}\n","import type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, oneOf } from './issues';\nimport { reachableSteps } from './paths';\n\nconst RESERVED = new Set([...Object.getOwnPropertyNames(Object.prototype), 'prototype']);\n\nfunction stepIssues({ definition }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const steps = definition.steps ?? [];\n const seen = new Map<string, number>();\n steps.forEach((step, index) => {\n const first = seen.get(step.id);\n if (first === undefined) seen.set(step.id, index);\n else issues.push(error('duplicate-step-id', `/steps/${index}/id`, `step id \"${step.id}\" is already used by /steps/${first}`, 'Give each step a unique id'));\n });\n steps.forEach((step, index) => (step.routes ?? []).forEach((route, position) => {\n if (route.to === null) return;\n const target = seen.get(route.to);\n if (target !== undefined && target > index) return;\n const later = steps.slice(index + 1).map((candidate) => candidate.id);\n const problem = target === undefined ? `\"${route.to}\" is not a step id` : `\"${route.to}\" is not a later step`;\n const hint = later.length ? `${oneOf(later)}, or null to end the form here` : 'Use null to end the form here';\n issues.push(error('route-target', `/steps/${index}/routes/${position}/to`, problem, hint));\n }));\n return issues;\n}\n\nfunction keyIssues({ definition, entries }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const reachable = reachableSteps(definition.steps ?? []);\n const exclusive = (a: FieldEntry, b: FieldEntry) => a.step !== b.step && !reachable[a.step]?.has(b.step);\n entries.forEach((entry, index) => {\n const { field, path } = entry;\n const clash = entries.slice(0, index).find((other) => other.field.key === field.key && !exclusive(other, entry));\n if (RESERVED.has(field.key)) {\n issues.push(error('reserved-key', `${path}/key`, `\"${field.key}\" is a built-in object property name`, 'Rename the field key'));\n } else if (clash) {\n issues.push(error('duplicate-key', `${path}/key`, `key \"${field.key}\" is already used by ${clash.path} on the same path`, 'Rename one of the fields, or move them to route branches that never meet'));\n }\n });\n return issues;\n}\n\nexport function structureIssues(context: CheckContext): DefinitionIssue[] {\n const { definition } = context;\n const both = !!definition.fields?.length && !!definition.steps?.length;\n return [\n ...(both ? [error('fields-and-steps', '', 'the definition has both \"fields\" and \"steps\"', 'Move the top-level fields into a step, or remove \"steps\"')] : []),\n ...stepIssues(context),\n ...keyIssues(context),\n ];\n}\n","import type { FormField } from '../types';\nimport { BOOLEAN_TYPES, BUILT_IN_TYPES } from '../validation/type-checks';\nimport { conditionErrors, OPERATORS } from './conditions';\nimport type { CheckContext, ConditionEntry, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { closest, oneOf, suggest, warning } from './issues';\n\nconst LIST_OPERATORS = ['in', 'notIn'];\nconst COMPARISONS = ['gt', 'gte', 'lt', 'lte'];\nconst STRING_TYPES = ['text', 'email', 'phone', 'password', 'textarea', 'date', 'datetime', 'select', 'radio', 'autocomplete'];\n\nfunction expectedType(field: FormField): string | undefined {\n if (field.type === 'number') return 'number';\n if (BOOLEAN_TYPES.includes(field.type)) return 'boolean';\n return STRING_TYPES.includes(field.type) ? 'string' : undefined;\n}\n\nfunction valueIssue(target: FormField, operator: string, operand: unknown, path: string): DefinitionIssue[] {\n const mismatch = (problem: string, hint: string) => [warning('condition-value-mismatch', path, problem, hint)];\n if (operator === 'notEmpty') return [];\n if (COMPARISONS.includes(operator)) {\n if (target.type !== 'multiselect' && !BOOLEAN_TYPES.includes(target.type)) return [];\n return mismatch(`\"${target.key}\" is a ${target.type} field, so \"${operator}\" never matches it`, 'Compare a number, text, radio or select field');\n }\n if (target.type === 'multiselect') {\n const result = operator === 'neq' || operator === 'notIn' ? 'always' : 'never';\n return mismatch(`\"${target.key}\" holds a list of values, so \"${operator}\" ${result} matches it`, 'Use notEmpty, or a select or radio field');\n }\n const operands = LIST_OPERATORS.includes(operator) && Array.isArray(operand) ? operand : [operand];\n const expected = expectedType(target);\n const wrong = expected && operands.find((item) => typeof item !== expected);\n if (expected && wrong !== undefined) return mismatch(`${JSON.stringify(wrong)} is a ${typeof wrong}, but \"${target.key}\" holds a ${expected}`, `Use a ${expected} value`);\n const options = expected === 'string' && !target.optionsFrom && target.options?.length ? target.options.map((option) => option.value) : null;\n const missing = options && operands.find((item) => !options.includes(item as string));\n return options && missing !== undefined ? mismatch(`${JSON.stringify(missing)} is not an option of \"${target.key}\"`, oneOf(options)) : [];\n}\n\nfunction conditionWarnings(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (conditionErrors(context, entry).length) return [];\n const operator = OPERATORS.find((key) => key in condition)!;\n return valueIssue(context.keys.get(condition.field)!.field, operator, condition[operator as keyof typeof condition], `${path}/${operator}`);\n}\n\nfunction optionIssues({ field, path }: FieldEntry): DefinitionIssue[] {\n if (!['select', 'radio', 'multiselect'].includes(field.type)) return [];\n if (!Array.isArray(field.options)) {\n return field.optionsFrom ? [] : [warning('missing-options', `${path}/options`, `the ${field.type} field \"${field.key}\" has no options`, 'Add \"options\" or \"optionsFrom\"')];\n }\n const values = field.options.map((option) => option.value);\n const defaults = field.type === 'multiselect' && Array.isArray(field.defaultValue) ? field.defaultValue : [field.defaultValue];\n const missing = field.defaultValue === undefined || !values.length || field.optionsFrom ? undefined : defaults.find((value) => !values.includes(value as string));\n if (missing === undefined) return [];\n return [warning('default-not-in-options', `${path}/defaultValue`, `${JSON.stringify(missing)} is not an option of \"${field.key}\"`, oneOf(values))];\n}\n\nfunction ruleWarnings(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation ?? {};\n const rule = (name: string, problem: string, hint: string) => warning('rule-not-applicable', `${path}/validation/${name}`, problem, hint);\n const known = BUILT_IN_TYPES.includes(field.type);\n const numeric = field.type === 'number';\n const ranges = known && !numeric ? (['min', 'max'] as const).filter((name) => rules[name] !== undefined) : [];\n const sized = known && ['number', 'checkbox', 'switch'].includes(field.type) ? (['minLength', 'maxLength'] as const).filter((name) => rules[name] !== undefined) : [];\n const issues = [\n ...ranges.map((name) => rule(name, `\"${name}\" applies to number fields only`, `Use ${name}Length to limit text length`)),\n ...sized.map((name) => rule(name, `\"${name}\" does not apply to ${field.type} fields`, numeric ? 'Use min and max for numbers' : `Remove ${name}`)),\n ];\n const { validators } = context;\n if (rules.validator !== undefined && validators && !Object.prototype.hasOwnProperty.call(validators, rules.validator)) {\n issues.push(warning('unknown-validator', `${path}/validation/validator`, `the validator \"${rules.validator}\" is not registered`, 'Pass it in the \"validators\" option'));\n }\n return issues;\n}\n\nfunction fieldWarnings(context: CheckContext, entry: FieldEntry): DefinitionIssue[] {\n const { field, path } = entry;\n const match = BUILT_IN_TYPES.includes(field.type) ? undefined : closest(field.type, BUILT_IN_TYPES);\n return [\n ...(match === undefined ? [] : [warning('unknown-field-type', `${path}/type`, `\"${field.type}\" is not a built-in field type`, `Use \"${match}\", or register a component for \"${field.type}\"`)]),\n ...optionIssues(entry),\n ...ruleWarnings(context, entry),\n ...(field.optionsDependsOn ?? []).flatMap((key, index) => (\n context.keys.has(key) ? [] : [warning('unknown-field', `${path}/optionsDependsOn/${index}`, `\"${key}\" is not a field key`, suggest(key, context.keyList))]\n )),\n ];\n}\n\nfunction routeWarnings({ definition }: CheckContext): DefinitionIssue[] {\n const steps = definition.steps ?? [];\n return steps.flatMap((step, index) => {\n const issues: DefinitionIssue[] = [];\n const targets = new Set((step.routes ?? []).map((route) => route.to).filter((to) => to !== null));\n for (const target of targets) {\n const position = steps.findIndex((candidate) => candidate.id === target);\n const sibling = steps[position + 1];\n const exits = steps[position]?.routes?.some((route) => !route.show?.length && !route.showAny?.length);\n if (!sibling || !targets.has(sibling.id) || exits) continue;\n issues.push(warning('route-fallthrough', `/steps/${position}`, `branch \"${target}\" from \"${step.id}\" continues into the sibling branch \"${sibling.id}\"`, `Add an unconditional route on \"${target}\" to the step where the branches meet`));\n }\n if (step.skip && (step.next === false || !steps[1])) {\n issues.push(warning('skip-unreachable', `/steps/${index}/skip`, `step \"${step.id}\" has \"skip\" but no Continue button or later step`, 'Remove \"skip\", or remove \"next\": false'));\n }\n return issues;\n });\n}\n\nexport function definitionWarnings(context: CheckContext): DefinitionIssue[] {\n return [\n ...(typeof context.definition.title === 'string' ? [] : [warning('missing-property', '/title', '\"title\" must be a string', 'Add a title for host UI and editors')]),\n ...context.conditions.flatMap((entry) => conditionWarnings(context, entry)),\n ...context.entries.flatMap((entry) => fieldWarnings(context, entry)),\n ...routeWarnings(context),\n ];\n}\n","import type { FormDefinition } from '../types';\nimport { conditionIssues } from './conditions';\nimport { createContext, type CheckContext } from './context';\nimport { fieldIssues } from './fields';\nimport { graphIssues } from './graph';\nimport { FormDefinitionError, suggest, type DefinitionIssue } from './issues';\nimport { metaIssues, shapeIssues } from './shape';\nimport { structureIssues } from './structure';\nimport { definitionWarnings } from './warnings';\n\nexport interface CheckDefinitionOptions {\n validators?: Record<string, unknown>;\n}\n\ninterface Checks {\n validators?: Record<string, unknown>;\n suggest?: CheckContext['suggest'];\n warnings?: (context: CheckContext) => DefinitionIssue[];\n}\n\nfunction issues(input: unknown, { validators, suggest, warnings }: Checks = {}): DefinitionIssue[] {\n const shape = shapeIssues(input);\n if (shape.length) return shape;\n const context = createContext(input as FormDefinition, validators, suggest);\n return [\n ...metaIssues(input as Record<string, unknown>),\n ...structureIssues(context),\n ...conditionIssues(context),\n ...fieldIssues(context),\n ...graphIssues(context),\n ...(warnings ? warnings(context) : []),\n ];\n}\n\nexport function definitionErrors(input: unknown): DefinitionIssue[] {\n return issues(input);\n}\n\nexport function checkDefinition(input: unknown, options: CheckDefinitionOptions = {}): DefinitionIssue[] {\n return issues(input, { validators: options.validators, suggest, warnings: definitionWarnings });\n}\n\nexport function parseDefinition(input: unknown, options?: CheckDefinitionOptions): FormDefinition {\n const errors = issues(input, { suggest });\n if (errors.length) throw new FormDefinitionError(errors);\n return input as FormDefinition;\n}\n"]}
package/dist/cloud.js CHANGED
@@ -1,2 +1,2 @@
1
- export{d as CloudError,i as createSubmitter,h as fetchDefinition,g as fetchForm,k as sessionDraftStore}from'./chunk-UFYD5LVW.js';//# sourceMappingURL=cloud.js.map
1
+ export{d as CloudError,i as createSubmitter,h as fetchDefinition,g as fetchForm,k as sessionDraftStore}from'./chunk-J5TQSLO3.js';//# sourceMappingURL=cloud.js.map
2
2
  //# sourceMappingURL=cloud.js.map
package/dist/i18n.js CHANGED
@@ -1,2 +1,2 @@
1
- import {g,k,e,a,b,d,c as c$1,f}from'./chunk-FQ3GLJTI.js';import {a as a$1,b as b$1,c}from'./chunk-PZEBYRGE.js';export{c as defaultLabels}from'./chunk-PZEBYRGE.js';import {b as b$2,a as a$2,g as g$1,r}from'./chunk-5KV7BDCS.js';export{a as defaultMessages}from'./chunk-5KV7BDCS.js';function B({definition:e,entries:t}){let n=[],r=[],l=false,f$1=(o,a,u,p,d$1)=>{for(let F of Object.keys(o??{}))u.includes(F)||n.push(c$1(p,`${a}/${d(F)}`,`"${F}" is not ${d$1}`,u.length?f(u):"Remove it"));},i=(o,a,u,p)=>{o&&(p&&r.push([`${a}/${p}`,o[p]]),o.i18n&&(l=true,f$1(o.i18n,`${a}/i18n`,[...u],"unknown-i18n-slot","a translatable text here")));},c$2=Object.keys(a$2),s=Object.keys(c);f$1(e.messages,"/messages",c$2,"unknown-message-key","a message key"),f$1(e.labels,"/labels",s,"unknown-label-key","a label key"),f$1(e.i18n?.messages,"/i18n/messages",c$2,"unknown-message-key","a message key"),f$1(e.i18n?.labels,"/i18n/labels",s,"unknown-label-key","a label key"),i(e,"",[...a$1.form,"messages","labels"],"id"),i(e.submit,"/submit",a$1.action),i(e.cancel,"/cancel",a$1.action),(e.steps??[]).forEach((o,a)=>{i(o,`/steps/${a}`,a$1.step,"id");for(let u of ["next","back","skip"])i(o[u],`/steps/${a}/${u}`,a$1.action);});for(let{field:o,path:a}of t){i(o,a,a$1.field,"key"),o.options?.forEach((p,d)=>i(p,`${a}/options/${d}`,a$1.option,"value"));let u=o.validation;u&&i(u,`${a}/validation`,a$1.validation.filter(p=>b$1(u,p)));}if(l)for(let[o,a]of r)typeof a=="string"&&/[.:]/.test(a)&&n.push(c$1("i18n-unsafe-identifier",o,`${JSON.stringify(a)} contains "." or ":"`,'Use letters, digits, "-" or "_", because translation keys and TMS imports split on these characters'));return n}var y=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),G=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function x(e,t){let n=e;for(let r of t)n=y(n)&&G(n,r)?n[r]:void 0;return typeof n=="string"&&n.trim()?n:void 0}function P(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:true,writable:true,configurable:true});}function J(e,t,n){let r=e;for(let l of t.slice(0,-1))(!G(r,l)||!y(r[l]))&&P(r,l,{}),r=r[l];P(r,t[t.length-1],n);}function $(e,t=[]){return y(e)?Object.keys(e).flatMap(n=>$(e[n],[...t,n])):[{path:t,value:e}]}var N=e=>JSON.stringify(e),O=e=>[...new Set(e.match(/\{\w+\}/g)??[])].map(t=>t.slice(1,-1)).sort();function h(e){let t=[],n=(i,c,s,o,a)=>{c&&t.push({kind:i,node:c,path:s,address:o,field:a});},r=(i,c,s,o)=>{for(let a of o)n("action",i[a],`${c}/${a}`,[...s,a]);},l=(i,c,s)=>i.forEach((o,a)=>{let u=`${c}/fields/${a}`,p=[...s,"fields",o.key];n("field",o,u,p),o.options?.forEach((d,F)=>n("option",d,`${u}/options/${F}`,[...p,"options",d.value])),n("validation",o.validation,`${u}/validation`,[...p,"validation"],o);});n("form",e,"",[]),r(e,"",[],["submit","cancel"]);let f=e.steps??[];return f.forEach((i,c)=>{let s=`/steps/${c}`,o=["steps",i.id];n("step",i,s,o),r(i,s,o,["next","back","skip"]),l(i.fields,s,o);}),f.length||l(e.fields??[],"",[]),t}function W(e,t,n){return e==="option"?t:[...t,n]}var V={form:["title","description"],step:["title","description"],field:["label","placeholder","helperText"],option:["label"],action:["label"],validation:[]};function L(e,t,n,r=[]){return e===void 0?[]:y(e)?Object.entries(e).flatMap(([l,f])=>r.includes(l)?L(f,`${t}/${l}`,n):typeof f=="string"&&f.trim()?[]:[b("invalid-type",`${t}/${d(l)}`,"must be a non-empty string")]):[b("invalid-type",t,`must be an object of ${n}`)]}function Y(e){let t=e;return [...t.lang===void 0||typeof t.lang=="string"?[]:[b("invalid-type","/lang",'"lang" must be a string')],...L(t.messages,"/messages","message templates"),...L(t.labels,"/labels","label templates"),...h(e).flatMap(({kind:n,node:r,path:l})=>{let f=r.i18n,i=y(f)?V[n].filter(c=>f[c]!==void 0&&typeof r[c]!="string"):[];return [...L(f,`${l}/i18n`,"translation keys",n==="form"?["messages","labels"]:[]),...i.map(c=>b("i18n-unbound-slot",`${l}/i18n/${c}`,`"${c}" has a translation key but no source text`,`Add "${c}" as the fallback text`))]})]}function M(e){let t=Y(e);return t.length?t:B(g(e))}var q={minLength:"min",maxLength:"max",min:"min",max:"max"};function X(e,t){return e.type==="multiselect"&&t.endsWith("Length")?t.replace("Length","Items"):t}function Z(e){let t=new Set([...Object.keys(e.messages??{}),...Object.keys(e.i18n?.messages??{})]);for(let n of g$1(e)){let r$1=n.validation??{};for(let l of a$1.validation)b$1(r$1,l)&&r$1[l]!==""&&typeof r$1[l==="required"?l:`${l}Message`]!="string"&&t.add(X(n,l));for(let l of r(n))t.add(l);}return t}function ee(e,{kind:t,node:n,address:r,field:l}){let f=n.i18n??{};return a$1[t].flatMap(i=>{if(t!=="validation"){let p=n[i];return typeof p!="string"?[]:[{kind:"text",address:W(t,r,i),key:f[i],source:p,fallback:p,params:{},template:true,apply:d=>{n[i]=d;}}]}if(!b$1(n,i)||!l)return [];let c=i==="required"?i:`${i}Message`,s=typeof n[c]=="string"?n[c]:void 0,o=q[i]?{[q[i]]:n[i]}:{},a=X(l,i),u=s??b$2(e.messages?.[a]??a$2[a],o);return [{kind:"rule",address:[...r,i],key:f[i],source:s,fallback:u,params:o,template:s!==void 0||!!f[i],apply:p=>{n[c]=p;}}]})}function H(e,t,n){let r=t==="messages"?a$2:c,l=e.i18n?.[t]??{};return Object.keys(r).map(f=>{let i=e[t]?.[f]??r[f];return {kind:t==="messages"?"message":"label",address:[t,f],key:l[f],source:i,fallback:i,params:{},template:n.has(f),apply:c=>{(e[t]??(e[t]={}))[f]=c;}}})}function S(e){let t=!!e.steps?.length,n=new Set(t?["continue","back","stepOf","errorSummary"]:["errorSummary"]);return [...h(e).flatMap(r=>ee(e,r)),...H(e,"messages",Z(e)),...H(e,"labels",n)]}function A(e,t,n){if(t!==void 0)return t;if(e!==false)return (e?[e,...n]:n).join(".")}function te(e,t){for(let n of S(e)){let r=x(t,n.address);r!==void 0&&n.apply(n.kind==="rule"?b$2(r,n.params):r);}return {definition:e,messages:e.messages??{},labels:e.labels??{}}}function ne(e,{translate:t,prefix:n=e.id}){let r=(s,o,a,u)=>{let p=A(n,s,o),d;try{d=p===void 0?void 0:t(p,a,u);}catch{return}return typeof d=="string"&&d.trim()&&d!==p?b$2(d,a):void 0},l={messages:{...e.messages},labels:{...e.labels}},f=e.i18n??{};for(let s of S(e)){if(s.kind!=="text"&&s.kind!=="rule")continue;let o=r(s.key,s.address,s.params,s.fallback);o!==void 0&&(s.source!==void 0||o!==s.fallback)&&s.apply(o);}return {definition:e,messages:(s,o)=>r(f.messages?.[s],["messages",s],o,b$2(l.messages[s]??a$2[s],o)),labels:(s,o)=>r(f.labels?.[s],["labels",s],o,b$2(l.labels[s]??c[s],o))}}function se(e$1,t){let n=M(k(e$1)).filter(e);if(n.length)throw new a(n);let r=JSON.parse(JSON.stringify(e$1));return t.lang&&(r.lang=t.lang),"overlay"in t?te(r,t.overlay):ne(r,t)}function re(e,t){let n=2166136261;for(let r of `${e??""}\0${t}`)n=Math.imul(n^r.codePointAt(0),16777619)>>>0;return n.toString(16).padStart(8,"0")}var Q=e=>S(e).filter(t=>t.template);function j(e,t){let n=A(t,e.key,e.address),r=e.source??e.fallback,l=e.kind==="rule"?Object.keys(e.params):O(r);return {address:e.address.join("."),...n!==void 0&&{key:n},text:r,params:l,hash:re(n,r)}}function oe(e,{prefix:t=e.id}={}){return Q(e).map(n=>j(n,t))}function ie(e){let t={};for(let n of Q(e))J(t,n.address,n.source??n.fallback);return t}var D=e=>e.join(".");function ae(e,t){let n=O(t);return e.kind==="rule"?n.some(r=>!Object.prototype.hasOwnProperty.call(e.params,r)):n.join()!==O(e.source??e.fallback).join()}function le(e,t,n){let r=S(e),l=new Set(r.map(s=>N(s.address))),f=y(t)?$(t):[{path:[],value:null}],i=r.filter(s=>x(t,s.address)!==void 0),c={missing:r.filter(s=>s.template&&x(t,s.address)===void 0).map(s=>D(s.address)),unknown:f.filter(({path:s,value:o})=>typeof o=="string"&&!l.has(N(s))).map(({path:s})=>D(s)),invalid:f.filter(({value:s})=>typeof s!="string").map(({path:s})=>D(s)),placeholderMismatch:i.filter(s=>ae(s,x(t,s.address))).map(s=>D(s.address)),unlabeled:h(e).filter(({kind:s,node:o,address:a})=>s==="field"&&!(typeof o.label=="string"&&o.label.trim())&&x(t,[...a,"label"])===void 0).map(({address:s})=>D([...s,"label"]))};if(n?.slots){let s=n.slots,o=a=>Object.prototype.hasOwnProperty.call(s,a);c.stale=i.filter(a=>a.template).map(a=>j(a,n.prefix??e.id)).filter(({address:a,hash:u})=>o(a)&&s[a]?.hash!==void 0&&s[a].hash!==u).map(({address:a})=>a);}return c}export{M as checkTranslations,se as localize,oe as textSlots,le as translationIssues,ie as translationTemplate};//# sourceMappingURL=i18n.js.map
1
+ import {g,k,e,a,b,d,c as c$1,f}from'./chunk-RN5GQHKN.js';import {a as a$1,b as b$1,c}from'./chunk-4UCHIIVE.js';export{c as defaultLabels}from'./chunk-4UCHIIVE.js';import {b as b$2,a as a$2,g as g$1,r}from'./chunk-35SAVPYL.js';export{a as defaultMessages}from'./chunk-35SAVPYL.js';function B({definition:e,entries:t}){let n=[],r=[],l=false,f$1=(o,a,u,p,d$1)=>{for(let F of Object.keys(o??{}))u.includes(F)||n.push(c$1(p,`${a}/${d(F)}`,`"${F}" is not ${d$1}`,u.length?f(u):"Remove it"));},i=(o,a,u,p)=>{o&&(p&&r.push([`${a}/${p}`,o[p]]),o.i18n&&(l=true,f$1(o.i18n,`${a}/i18n`,[...u],"unknown-i18n-slot","a translatable text here")));},c$2=Object.keys(a$2),s=Object.keys(c);f$1(e.messages,"/messages",c$2,"unknown-message-key","a message key"),f$1(e.labels,"/labels",s,"unknown-label-key","a label key"),f$1(e.i18n?.messages,"/i18n/messages",c$2,"unknown-message-key","a message key"),f$1(e.i18n?.labels,"/i18n/labels",s,"unknown-label-key","a label key"),i(e,"",[...a$1.form,"messages","labels"],"id"),i(e.submit,"/submit",a$1.action),i(e.cancel,"/cancel",a$1.action),(e.steps??[]).forEach((o,a)=>{i(o,`/steps/${a}`,a$1.step,"id");for(let u of ["next","back","skip"])i(o[u],`/steps/${a}/${u}`,a$1.action);});for(let{field:o,path:a}of t){i(o,a,a$1.field,"key"),o.options?.forEach((p,d)=>i(p,`${a}/options/${d}`,a$1.option,"value"));let u=o.validation;u&&i(u,`${a}/validation`,a$1.validation.filter(p=>b$1(u,p)));}if(l)for(let[o,a]of r)typeof a=="string"&&/[.:]/.test(a)&&n.push(c$1("i18n-unsafe-identifier",o,`${JSON.stringify(a)} contains "." or ":"`,'Use letters, digits, "-" or "_", because translation keys and TMS imports split on these characters'));return n}var y=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),G=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function x(e,t){let n=e;for(let r of t)n=y(n)&&G(n,r)?n[r]:void 0;return typeof n=="string"&&n.trim()?n:void 0}function P(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:true,writable:true,configurable:true});}function J(e,t,n){let r=e;for(let l of t.slice(0,-1))(!G(r,l)||!y(r[l]))&&P(r,l,{}),r=r[l];P(r,t[t.length-1],n);}function $(e,t=[]){return y(e)?Object.keys(e).flatMap(n=>$(e[n],[...t,n])):[{path:t,value:e}]}var N=e=>JSON.stringify(e),O=e=>[...new Set(e.match(/\{\w+\}/g)??[])].map(t=>t.slice(1,-1)).sort();function h(e){let t=[],n=(i,c,s,o,a)=>{c&&t.push({kind:i,node:c,path:s,address:o,field:a});},r=(i,c,s,o)=>{for(let a of o)n("action",i[a],`${c}/${a}`,[...s,a]);},l=(i,c,s)=>i.forEach((o,a)=>{let u=`${c}/fields/${a}`,p=[...s,"fields",o.key];n("field",o,u,p),o.options?.forEach((d,F)=>n("option",d,`${u}/options/${F}`,[...p,"options",d.value])),n("validation",o.validation,`${u}/validation`,[...p,"validation"],o);});n("form",e,"",[]),r(e,"",[],["submit","cancel"]);let f=e.steps??[];return f.forEach((i,c)=>{let s=`/steps/${c}`,o=["steps",i.id];n("step",i,s,o),r(i,s,o,["next","back","skip"]),l(i.fields,s,o);}),f.length||l(e.fields??[],"",[]),t}function W(e,t,n){return e==="option"?t:[...t,n]}var V={form:["title","description"],step:["title","description"],field:["label","placeholder","helperText"],option:["label"],action:["label"],validation:[]};function L(e,t,n,r=[]){return e===void 0?[]:y(e)?Object.entries(e).flatMap(([l,f])=>r.includes(l)?L(f,`${t}/${l}`,n):typeof f=="string"&&f.trim()?[]:[b("invalid-type",`${t}/${d(l)}`,"must be a non-empty string")]):[b("invalid-type",t,`must be an object of ${n}`)]}function Y(e){let t=e;return [...t.lang===void 0||typeof t.lang=="string"?[]:[b("invalid-type","/lang",'"lang" must be a string')],...L(t.messages,"/messages","message templates"),...L(t.labels,"/labels","label templates"),...h(e).flatMap(({kind:n,node:r,path:l})=>{let f=r.i18n,i=y(f)?V[n].filter(c=>f[c]!==void 0&&typeof r[c]!="string"):[];return [...L(f,`${l}/i18n`,"translation keys",n==="form"?["messages","labels"]:[]),...i.map(c=>b("i18n-unbound-slot",`${l}/i18n/${c}`,`"${c}" has a translation key but no source text`,`Add "${c}" as the fallback text`))]})]}function M(e){let t=Y(e);return t.length?t:B(g(e))}var q={minLength:"min",maxLength:"max",min:"min",max:"max"};function X(e,t){return e.type==="multiselect"&&t.endsWith("Length")?t.replace("Length","Items"):t}function Z(e){let t=new Set([...Object.keys(e.messages??{}),...Object.keys(e.i18n?.messages??{})]);for(let n of g$1(e)){let r$1=n.validation??{};for(let l of a$1.validation)b$1(r$1,l)&&typeof r$1[l==="required"?l:`${l}Message`]!="string"&&t.add(X(n,l));for(let l of r(n))t.add(l);}return t}function ee(e,{kind:t,node:n,address:r,field:l}){let f=n.i18n??{};return a$1[t].flatMap(i=>{if(t!=="validation"){let p=n[i];return typeof p!="string"?[]:[{kind:"text",address:W(t,r,i),key:f[i],source:p,fallback:p,params:{},template:true,apply:d=>{n[i]=d;}}]}if(!b$1(n,i)||!l)return [];let c=i==="required"?i:`${i}Message`,s=typeof n[c]=="string"?n[c]:void 0,o=q[i]?{[q[i]]:n[i]}:{},a=X(l,i),u=s??b$2(e.messages?.[a]??a$2[a],o);return [{kind:"rule",address:[...r,i],key:f[i],source:s,fallback:u,params:o,template:s!==void 0||!!f[i],apply:p=>{n[c]=p;}}]})}function H(e,t,n){let r=t==="messages"?a$2:c,l=e.i18n?.[t]??{};return Object.keys(r).map(f=>{let i=e[t]?.[f]??r[f];return {kind:t==="messages"?"message":"label",address:[t,f],key:l[f],source:i,fallback:i,params:{},template:n.has(f),apply:c=>{(e[t]??(e[t]={}))[f]=c;}}})}function S(e){let t=!!e.steps?.length,n=new Set(t?["continue","back","stepOf","errorSummary"]:["errorSummary"]);return [...h(e).flatMap(r=>ee(e,r)),...H(e,"messages",Z(e)),...H(e,"labels",n)]}function A(e,t,n){if(t!==void 0)return t;if(e!==false)return (e?[e,...n]:n).join(".")}function te(e,t){for(let n of S(e)){let r=x(t,n.address);r!==void 0&&n.apply(n.kind==="rule"?b$2(r,n.params):r);}return {definition:e,messages:e.messages??{},labels:e.labels??{}}}function ne(e,{translate:t,prefix:n=e.id}){let r=(s,o,a,u)=>{let p=A(n,s,o),d;try{d=p===void 0?void 0:t(p,a,u);}catch{return}return typeof d=="string"&&d.trim()&&d!==p?b$2(d,a):void 0},l={messages:{...e.messages},labels:{...e.labels}},f=e.i18n??{};for(let s of S(e)){if(s.kind!=="text"&&s.kind!=="rule")continue;let o=r(s.key,s.address,s.params,s.fallback);o!==void 0&&(s.source!==void 0||o!==s.fallback)&&s.apply(o);}return {definition:e,messages:(s,o)=>r(f.messages?.[s],["messages",s],o,b$2(l.messages[s]??a$2[s],o)),labels:(s,o)=>r(f.labels?.[s],["labels",s],o,b$2(l.labels[s]??c[s],o))}}function se(e$1,t){let n=M(k(e$1)).filter(e);if(n.length)throw new a(n);let r=JSON.parse(JSON.stringify(e$1));return t.lang&&(r.lang=t.lang),"overlay"in t?te(r,t.overlay):ne(r,t)}function re(e,t){let n=2166136261;for(let r of `${e??""}\0${t}`)n=Math.imul(n^r.codePointAt(0),16777619)>>>0;return n.toString(16).padStart(8,"0")}var Q=e=>S(e).filter(t=>t.template);function j(e,t){let n=A(t,e.key,e.address),r=e.source??e.fallback,l=e.kind==="rule"?Object.keys(e.params):O(r);return {address:e.address.join("."),...n!==void 0&&{key:n},text:r,params:l,hash:re(n,r)}}function oe(e,{prefix:t=e.id}={}){return Q(e).map(n=>j(n,t))}function ie(e){let t={};for(let n of Q(e))J(t,n.address,n.source??n.fallback);return t}var D=e=>e.join(".");function ae(e,t){let n=O(t);return e.kind==="rule"?n.some(r=>!Object.prototype.hasOwnProperty.call(e.params,r)):n.join()!==O(e.source??e.fallback).join()}function le(e,t,n){let r=S(e),l=new Set(r.map(s=>N(s.address))),f=y(t)?$(t):[{path:[],value:null}],i=r.filter(s=>x(t,s.address)!==void 0),c={missing:r.filter(s=>s.template&&x(t,s.address)===void 0).map(s=>D(s.address)),unknown:f.filter(({path:s,value:o})=>typeof o=="string"&&!l.has(N(s))).map(({path:s})=>D(s)),invalid:f.filter(({value:s})=>typeof s!="string").map(({path:s})=>D(s)),placeholderMismatch:i.filter(s=>ae(s,x(t,s.address))).map(s=>D(s.address)),unlabeled:h(e).filter(({kind:s,node:o,address:a})=>s==="field"&&!(typeof o.label=="string"&&o.label.trim())&&x(t,[...a,"label"])===void 0).map(({address:s})=>D([...s,"label"]))};if(n?.slots){let s=n.slots,o=a=>Object.prototype.hasOwnProperty.call(s,a);c.stale=i.filter(a=>a.template).map(a=>j(a,n.prefix??e.id)).filter(({address:a,hash:u})=>o(a)&&s[a]?.hash!==void 0&&s[a].hash!==u).map(({address:a})=>a);}return c}export{M as checkTranslations,se as localize,oe as textSlots,le as translationIssues,ie as translationTemplate};//# sourceMappingURL=i18n.js.map
2
2
  //# sourceMappingURL=i18n.js.map