@ellementul/message-types

3.2.0 • Public • Published

Typesjs

Библеотека для тестирования и генерации занчений по заданой типом структуре

Функциональность ядра

Создание типа

Эта функция принимает три аргумента: Первое это имя типа. Второе это конструктор типа. Третий конструктор типа из JSON.

Сам тип состоит из трех функций: Генератор значений Валидатор Преобразователь типа в JSON Отключение тестов Это свойство представленное изнутри геттером и сеттером, которое если равно False, отключит все тесты, они будут возвращать по умолчанию так же значение False без каких либо реальных проверок.

Модули

Bool

Обычный булев тип

Number

Обычное дробное число, реальный максимум зависит от движка, но нужен не для этого. Нужен для того чтобы дать конкретные ограничение размеру числа, потому что реальные объекты обычно не имеют каких сверх больших значений, и у любого объекта есть свои пределы. Если эти пределы неизвестны, то это говорит о плохо спроектированных алгоритмах, потому в реальности ограничение у чисел все равно будет, просто будет зависеть от платформы, а не от программиста. Принимает три параметра: Максимум, Минимум и Количество знаков после десятичной запятой. Index Этот тип служит для индексации. Диапазон от нуля до максимума принимаемого как аргумент при определении типа в целых числах. Причем максимальное число никогда не будет достигнуто.

Alpha

Просто диапазон дробных значений от 0 до 1, точность значения в данном случае будет возложена на платформу, так как обычно это какой диапазон чисел отображенный на отрезок от 0 до 1, в этом случае этот тип лучше не использовать, а использовать изначальный диапазон, например для цвета это от 0 до 255. Но если важно именно такое абстрактное значение, то ограничение на количество десятичных цифр будет только мешать.

Key

Строка максимальной длиной 256 состоящая из символов a-zA-Z0-9_, дающий максимально совместимый строковой тип, предназначенный для идентификации структуры. Аргументов у конструктора никаких нет.

UUID

Тип для uuid Это обертка над библеотекой https://www.npmjs.com/package/uuid Для генерации используется uuid v4

Const

Этот тип работает со строками, числами, Boolean, “null”, “undefined”, просто оборачивая их в тип который по сути является константным значением которое всегда может быть сравнено напрямую.

Object

Это мета-тип обрабатывающий объекты, конструктор принимает лишь одно значение, это объект по которому будет создан шаблон Объекта. Вторым необязательным аргументом указываеться должен ли тестр типа игнорировать "лишнии" свойтсва в проверямом объекте Все вложенные объекты в том числе массивы будут обработаны рекурсивно этим же конструктором. Если требуется иное поведение, то массив для начала стоит привести к типу. Хотя включение функций вообще не рекомендуется в структуру, тем не менее функция в объекте будет обработана конструктором типа Const Типы содержащиеся в этом объекте будут включены в шаблон без обработки. Все значения не имеющие внутренней структуры объекта(строки, числа и т. д.), будут обработаны конструктором типа Const Если внутри объекта будет найдена ссылка на сам этот объект, или другие циклические зависимости, все они будут проигнорированы, как во время генерирования объектов, так и во время проверки объектов на соответствие типу. Старайтесь избегать циклических зависимостей в структуре.

Any

Объединение типов, при этом значение должно отвечать структуре одно из перечисленных типов. На вход конструктор типа принимает первым аргументом массив типов и констант. Констаные значения будут переданы в конструктор констатного типа автоматически Вложенные массивы и обьекты будут преобразовываться в тип обьекта

Array

Тип массива, подразумевает что все элементы в массиве одного типа, конструктор типа принимает на вход тип, длину массива, и может ли массив быть пустым. Сам массив может быть меньшей длины чем максимальная длина. Первый аргумент не может быть ничем кроме типа.

String

Тип строки, его конструктор принимает символьный класс и максимальный размер строки в качестве аргументов. Символьный класс это строка являющаяся способом перечислить допустимые символы, по факту будет обернута в в регулярное выражение /^[simbol_class]&/, при этом вы не можете использовать отрицание в начале символьного класса как это делается с регулярными выражениями.

Switch

Этот тип предназначен для создания структуры которая зависит от ключевого свойства, которое и решает какого типа структура будет. Конструктор типа принимает два аргумента. Первый аргумент это либо одно значения типа Key, либо массив таких значений. Это набор ключевых свойств объекте отвечающих за тип структуры объекта. Второй аргумент это массив объектов, каждый из станет типом структуры. Поэтому каждый объект должен обязательно содержать ключевое свойство(свойства) со значением типа Key, остальные свойства должны быть типами.

Readme

Keywords

Package Sidebar

Install

npm i @ellementul/message-types

Weekly Downloads

124

Version

3.2.0

License

ISC

Unpacked Size

55.9 kB

Total Files

32

Last publish

Collaborators

  • ellementul