Skip to main content

compileSchema()

function compileSchema(
tree,
model?,
options?): CompiledSchema;

Defined in: form/schema/compile.ts:512

Скомпилировать дерево схемы: вид каждого узла, нормализованные привязки, идентификаторы и индексы области.

Повтор selector в одной области — исключение с путями обоих узлов. Неизвестный ключ узла и нераспознанная привязка — предупреждения в dev; такой узел становится контейнером. Вторая привязка той же ручки — тоже предупреждение: нода формы у ручки одна.

Parameters​

tree​

FormSchemaNode

Корень авторского дерева (FormSchemaNode).

model?​

object

Модель области (корень сборки, под-модель строки либо группы): пути вложенных областей считаются от неё; без неё — абсолютные пути ручек (#/phones.1.address).

options?​

CompileSchemaOptions

CompileSchemaOptions.

Returns​

CompiledSchema

CompiledSchema области.

Throws​

Error при повторе selector в области, при селекторе, совпавшем с позиционным путём узла (#/1), и при зацикленном дереве (в том числе через подформу).

Example​

const model = createModel({ email: '', phones: [{ number: '' }] });
const compiled = compileSchema(
{
children: [
{ selector: 'email', model: model.$.email, component: Input },
{ model: model.$.phones, item: (row) => ({ model: row.$.number, component: Input }) },
],
},
model
);

compiled.nodes.get('email' as SchemaNodeId)?.kind; // 'field'
compiled.fields.get(model.$.email)?.component; // Input
compiled.arrays.get(model.$.phones)?.row(model.phones.at(0)!).scope; // '#/phones[0]'