Skip to main content

Function: resolveFieldMapping()

resolveFieldMapping<TComponents>(fieldKey, componentName, componentConfig): object

Defined in: packages/codegen/src/generate.ts:240

Resolve the component name and override config for a single FormField key.

Walks the componentConfig.fields map (by exact key, then normalized key) to find a per-field override, then falls back to the componentConfig.components.overrides map keyed by component name. Returns { source: 'none' } when no config is present.

Type Parameters​

TComponents​

TComponents extends Record<string, unknown>

Parameters​

fieldKey​

string

Dot-path key from FormField.key (e.g. 'address.street').

componentName​

string | undefined

Inferred component name from the schema walker.

componentConfig​

any

Optional ZodFormsConfig with fields and components overrides.

Returns​

object

Resolved component name, override config, and the resolution source.

componentName?​

optional componentName?: string

componentOverride?​

optional componentOverride?: any

override?​

optional override?: any

source​

source: "fields" | "components" | "none"

Remarks​

Resolution order: (1) componentConfig.fields[fieldKey] exact match, (2) componentConfig.fields[normalizedKey] for array-indexed paths (e.g. items[].name), (3) componentConfig.components.overrides[componentName] for component-level metadata. A field-level override wins over a component-level override on conflict.

Use When​

  • Building a custom codegen backend that needs the same override resolution logic as the CLI
  • Writing tests that verify field-to-component mapping for a given config

Avoid When​

  • You are using the CLI or Vite plugin — this is called internally and you don't need it

Example​

const mapping = resolveFieldMapping('address.street', 'Input', componentConfig);
if (mapping.source !== 'none') {
console.log('Override component:', mapping.componentName);
}

Never​

  • NEVER assume source: 'none' means the field has no component — the schema walker may have inferred one; resolveFieldMapping only resolves user-provided config overrides