Browse Source

docs: updates README.md

e22m4u 2 days ago
parent
commit
c57a464745
1 changed files with 15 additions and 80 deletions
  1. 15 80
      README.md

+ 15 - 80
README.md

@@ -2,22 +2,11 @@
 
 JavaScript модуль для работы с проекцией данных.
 
-Модуль использует схемы для определения правил видимости полей данных.
-Поддерживается вложенность, функции-фабрики, именованные схемы, области
-проекции и строгий режим.
-
 ## Содержание
 
 - [Установка](#установка)
 - [Схема проекции](#схема-проекции)
 - [Использование](#использование)
-  - [Создание проекции](#создание-проекции)
-  - [Проекция массива](#проекция-массива)
-  - [Строгий режим](#строгий-режим)
-  - [Вложенные схемы](#вложенные-схемы)
-  - [Область проекции](#область-проекции)
-  - [Фабричные функции](#фабричные-функции)
-  - [Именованные схемы](#именованные-схемы)
 - [Тесты](#тесты)
 - [Лицензия](#лицензия)
 
@@ -69,15 +58,7 @@ const {projectData} = require('@e22m4u/js-data-projection');
 
 ## Использование
 
-Модуль экспортирует функцию `projectData` для создания проекций
-и класс `DataProjector` с возможностью регистрации и применения
-именованных схем.
-
-#### Создание проекции
-
-Схема проекции описывает настройки видимости для каждого поля. Логические
-значения определяют видимость поля. Поля, отсутствующие в схеме, остаются
-в результате по умолчанию.
+Создание проекции данных с помощью схемы.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projection';
@@ -101,11 +82,7 @@ console.log(result);
 // }
 ```
 
-#### Проекция массива
-
-Если входные данные представляют собой массив, то проекция применяется к
-каждому элементу рекурсивно. Структура результата соответствует исходному
-массиву.
+Применение схемы к массиву объектов.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projection';
@@ -128,11 +105,7 @@ console.log(result);
 // ]
 ```
 
-#### Строгий режим
-
-Строгий режим исключает из результата все поля, не описанные в схеме явно.
-Поведение регулируется опцией `strict`. Данный режим позволяет гарантировать
-отсутствие лишних данных в результате.
+Исключение неизвестных полей в строгом режиме.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projection';
@@ -157,11 +130,7 @@ console.log(result);
 // }
 ```
 
-#### Вложенные схемы
-
-Вложенные объекты обрабатываются с помощью свойства `schema` в настройках
-поля. Данное свойство позволяет определять правила видимости для вложенных
-структур данных.
+Применение вложенных схем для сложных структур.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projection';
@@ -179,10 +148,10 @@ const schema = {
 };
 
 const data = {
-  id: 10,             // будет скрыто, явное правило
+  id: 10, // будет скрыто, явное правило
   name: 'Fedor',
   city: {
-    id: 20,           // будет скрыто, явное правило
+    id: 20, // будет скрыто, явное правило
     name: 'Moscow',
   },
 };
@@ -197,11 +166,7 @@ console.log(result);
 // }
 ```
 
-#### Область проекции
-
-Правила видимости полей могут зависеть от области проекции. Свойство `scopes`
-определяет специфичные правила для разных контекстов, передаваемых через
-опцию `scope`.
+Определение правил видимости для областей проекции.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projection';
@@ -239,28 +204,7 @@ console.log(outputData);
 // }
 ```
 
-Модуль экспортирует объект констант с именами часто используемых областей
-проекции.
-
-```js
-import {ProjectionScope} from '@e22m4u/js-data-projection';
-
-console.log(ProjectionScope);
-// {
-//   INPUT: 'input',
-//   OUTPUT: 'output'
-// }
-
-projectData(schema, data, {
-  scope: ProjectionScope.INPUT,
-});
-```
-
-#### Фабричные функции
-
-Вместо статической схемы можно передать фабричную функцию, которая вернет
-объект схемы. Это полезно, если схему необходимо генерировать динамически
-или переиспользовать логику создания схем.
+Использование фабричной функции вместо объекта схемы.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projection';
@@ -286,8 +230,7 @@ console.log(result);
 // }
 ```
 
-Фабрики также поддерживаются во вложенных структурах. Свойство `schema` может
-принимать функцию, возвращающую схему для вложенного объекта.
+Использование фабрики во вложенной схеме.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projection';
@@ -323,11 +266,7 @@ console.log(result);
 // }
 ```
 
-#### Именованные схемы
-
-Класс `DataProjector` позволяет сохранять схемы во внутреннем реестре
-для их последующего использования по имени. Это удобно для переиспользования
-схем в разных частях приложения.
+Регистрация именованной схемы и создание проекции.
 
 ```js
 import {DataProjector} from '@e22m4u/js-data-projection';
@@ -359,9 +298,7 @@ console.log(result);
 // }
 ```
 
-Зарегистрированные схемы могут ссылаться друг на друга, что позволяет
-компоновать сложные схемы из более простых. В примере ниже схема `user`
-использует схему `address` как вложенную.
+Использование вложенных именованных схем.
 
 ```js
 import {DataProjector} from '@e22m4u/js-data-projection';
@@ -407,19 +344,17 @@ console.log(result);
 // }
 ```
 
-Для ручного разрешения имен используется опция `resolver` функции `projectData`.
-В опцию передается функция, которая принимает имя схемы и должна вернуть
-соответствующий ей объект схемы.
+Реализация пользовательской функции разрешения имен.
 
 ```js
 import {projectData} from '@e22m4u/js-data-projection';
 
 // функция для разрешения имен
-const resolver = key => {
-  if (key === 'user') {
+const resolver = name => {
+  if (name === 'user') {
     return {id: true, name: true, password: false};
   }
-  throw new Error(`Schema "${key}" is not found!`);
+  throw new Error(`Schema "${name}" is not found!`);
 };
 
 const data = {