npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@ellementul/message-types

v3.2.0

Published

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

Downloads

143

Readme

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, остальные свойства должны быть типами.