Skip to content

Справочник API

Типы TypeScript

Все основные публичные типы экспортируются из корня пакета:

ts
import type {
  // Схема поля
  FieldDefinition,
  FieldType,
  FieldOption,

  // Маскирование
  MaskConfig,
  MaskPreset,

  // Валидация
  ValidatorFn,
  AsyncValidatorFn,

  // useForm
  UseFormConfig,
  UseFormReturn,
  ValidateOn,
  ValidateMode,

  // Адаптеры схем
  TypedFieldDefinitions,
  JSONSchema,
  JSONSchemaField,
  BuiltinRule,
  InferValues,

  // Кастомные компоненты / реестр
  FormFieldProps,
  ComponentMap,

  // useFieldArray
  FieldArrayRow,
  UseFieldArrayReturn,

  // useMultiStepForm
  MultiStepFormReturn,

  // useFormDebug
  FormSnapshot,

  // Ошибки с сервера
  NormalizedServerErrors,
  ServerErrorFormat,
  ServerErrorMapper,
  ApplyServerErrorsOptions,
} from '@macrulez/vue-form-schema'

Точка входа /openapi экспортирует собственные дополнительные типы, не реэкспортированные из корня (важны только если вы вызываете parseJSONSchema/parseOpenAPI напрямую):

ts
import type {
  JSONSchemaObject,
  JSONSchemaDocument,
  InferJSONSchema,
  OpenAPISchemaSelector,
  OpenAPIRequestBodySelector,
} from '@macrulez/vue-form-schema/openapi'

Утилиты для путей

Низкоуровневые хелперы для dot-path, используемые внутри useForm/useFieldArray и экспортированные для тех, кто строит собственную обвязку вокруг значений полей за пределами встроенных composables.

getByPath

(obj: Record<string, unknown>, path: string) => unknown

Читает вложенное значение по dot-path — getByPath({ address: { city: 'NY' } }, 'address.city') возвращает 'NY'. Возвращает undefined для отсутствующего или не-объектного промежуточного сегмента, никогда не выбрасывает исключение.

setByPath

(obj: Record<string, unknown>, path: string, value: unknown) => Record<string, unknown>

Записывает вложенное значение по dot-path, создавая промежуточные объекты по мере необходимости, и возвращает (изменённый) объект.

ts
import { getByPath, setByPath } from '@macrulez/vue-form-schema'

const values = { address: { city: 'NY' } }
getByPath(values, 'address.city') // 'NY'
setByPath(values, 'address.zip', '10001')
// values теперь { address: { city: 'NY', zip: '10001' } }