|
|
@@ -11,7 +11,14 @@ JavaScript модуль для работы с проекцией данных.
|
|
|
- [Установка](#установка)
|
|
|
- [Использование](#использование)
|
|
|
- [Функция `projectData`](#функция-projectdata)
|
|
|
+ - [Создание проекции](#создание-проекции)
|
|
|
+ - [Проекция элементов массива](#проекция-элементов-массива)
|
|
|
+ - [Строгий режим](#строгий-режим)
|
|
|
+ - [Вложенные схемы](#вложенные-схемы)
|
|
|
+ - [Область проекции](#область-проекции)
|
|
|
- [Класс `DataProjector`](#класс-dataprojector)
|
|
|
+ - [Именованные схемы](#именованные-схемы)
|
|
|
+ - [Комбинирование именованных схем](#комбинирование-именованных-схем)
|
|
|
- [Тесты](#тесты)
|
|
|
- [Лицензия](#лицензия)
|
|
|
|
|
|
@@ -30,7 +37,15 @@ npm install @e22m4u/js-data-projector
|
|
|
|
|
|
### Функция `projectData`
|
|
|
|
|
|
-Создание проекции с помощью схемы.
|
|
|
+Функция выполняет проекцию данных на основе переданного объекта схемы.
|
|
|
+Принимает исходные данные и дополнительные опции для управления режимом
|
|
|
+строгости и областью видимости.
|
|
|
+
|
|
|
+#### Создание проекции
|
|
|
+
|
|
|
+Создание проекции выполняется на основе объекта схемы. Логические значения
|
|
|
+определяют видимость полей. Поля, отсутствующие в схеме, остаются в
|
|
|
+результате по умолчанию.
|
|
|
|
|
|
```js
|
|
|
import {projectData} from '@e22m4u/js-data-projector';
|
|
|
@@ -54,7 +69,11 @@ console.log(result);
|
|
|
// }
|
|
|
```
|
|
|
|
|
|
-Создание проекции элементов массива.
|
|
|
+#### Проекция элементов массива
|
|
|
+
|
|
|
+Если входные данные представляют собой массив, то проекция применяется к
|
|
|
+каждому элементу рекурсивно. Структура результата соответствует исходному
|
|
|
+массиву.
|
|
|
|
|
|
```js
|
|
|
import {projectData} from '@e22m4u/js-data-projector';
|
|
|
@@ -77,7 +96,11 @@ console.log(result);
|
|
|
// ]
|
|
|
```
|
|
|
|
|
|
-Создание проекции в строгом режиме.
|
|
|
+#### Строгий режим
|
|
|
+
|
|
|
+Строгий режим исключает из результата все поля, не описанные в схеме явно.
|
|
|
+Поведение регулируется опцией `strict`. Данный режим позволяет гарантировать
|
|
|
+отсутствие лишних данных в результате.
|
|
|
|
|
|
```js
|
|
|
import {projectData} from '@e22m4u/js-data-projector';
|
|
|
@@ -102,7 +125,11 @@ console.log(result);
|
|
|
// }
|
|
|
```
|
|
|
|
|
|
-Создание проекции с помощью вложенной схемы.
|
|
|
+#### Вложенные схемы
|
|
|
+
|
|
|
+Вложенные объекты обрабатываются с помощью свойства `schema` в настройках
|
|
|
+поля. Данное свойство позволяет определять правила видимости для вложенных
|
|
|
+структур данных.
|
|
|
|
|
|
```js
|
|
|
import {projectData} from '@e22m4u/js-data-projector';
|
|
|
@@ -138,7 +165,11 @@ console.log(result);
|
|
|
// }
|
|
|
```
|
|
|
|
|
|
-Создание проекции для указанной области.
|
|
|
+#### Область проекции
|
|
|
+
|
|
|
+Правила видимости полей могут зависеть от области проекции. Свойство `scopes`
|
|
|
+определяет специфичные правила для разных контекстов, передаваемых через
|
|
|
+опцию `scope`.
|
|
|
|
|
|
```js
|
|
|
import {projectData} from '@e22m4u/js-data-projector';
|
|
|
@@ -178,7 +209,15 @@ console.log(outputData);
|
|
|
|
|
|
### Класс `DataProjector`
|
|
|
|
|
|
-Создание проекции с помощью именованной схемы.
|
|
|
+Класс управляет реестром схем и предоставляет методы для их регистрации и
|
|
|
+использования. Экземпляр хранит именованные схемы в памяти, что позволяет
|
|
|
+ссылаться на них по строковому идентификатору при создании проекций.
|
|
|
+
|
|
|
+#### Именованные схемы
|
|
|
+
|
|
|
+Класс позволяет регистрировать схемы под уникальными именами. Метод
|
|
|
+`defineSchema` сохраняет схему в реестре, а метод `project` использует
|
|
|
+имя для применения правил.
|
|
|
|
|
|
```js
|
|
|
import {DataProjector} from '@e22m4u/js-data-projector';
|
|
|
@@ -206,7 +245,10 @@ console.log(result);
|
|
|
// }
|
|
|
```
|
|
|
|
|
|
-Комбинирование именованных схем.
|
|
|
+#### Комбинирование именованных схем
|
|
|
+
|
|
|
+Именованные схемы могут быть использованы внутри других схем. Что позволяет
|
|
|
+комбинировать зарегистрированные схемы для комплексных структур данных.
|
|
|
|
|
|
```js
|
|
|
import {DataProjector} from '@e22m4u/js-data-projector';
|