@lad-tech/config
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

@lad-tech/config

Система конфигурации для nodejs с возможностью валидации и автоматической документации

Установка

npm i @lad-tech/config --save

Возможности

  • Обязательность полей

  • Значения по умолчанию

  • Документация параметра

  • Конечный тип (пример, .asBoolean(), .asInteger()), корректно работает с TS

  • Массивы через разделитель с возможностью его замены

  • Валидация с выводом в MD таблицу

    Пример вывода ошибки:

    ## AnyService
    | error                                | required | default | env       | description                   | type                  |
    |--------------------------------------|----------|---------|-----------|-------------------------------|-----------------------|
    | Параметр обязательный для заполнения | да       |         | ANY_LEVEL | Задает уровень взаимодействия | enum:low,middle,hight |
    
  • Экспорт конфигурации в MD таблицу

    Пример:

    ## Logger
    | required | default | env          | description                                 | type                                                              |
    |----------|---------|--------------|---------------------------------------------|-------------------------------------------------------------------|
    |          | false   | `LOG_PRETTY` | Отображать логи в человеко понятном формате | `boolean`                                                         |
    |          | info    | `LOG_LEVEL`  | Уровень отображения логов                   | `enum:trace,debug,info,warn,error,fatal,silent,10,20,30,40,50,60` |
    
    ## WEB сервер
    | required | default   | env         | description      | type      |
    |----------|-----------|-------------|------------------|-----------|
    |          | 127.0.0.1 | `HTTP_HOST` | HOST WEB сервера | `url`     |
    |          | 3000      | `HTTP_PORT` | Port WEB сервера | `integer` |
    

Пример файла конфигурации

JS

const { Config } = require('@lad-tech/config');

const levelEnum = 'trace,debug,info,warn,error,fatal,silent,10,20,30,40,50,60'.split(',');
class LoggerConfig extends Config {
    description = 'Logger';
    constructor() {
        super();
        this.pretty = this.param('pretty')
            .default(false)
            .fromEnv('LOG_PRETTY')
            .description('Отображать логи в человеко понятном формате')
            .asBoolean();
            
        this.level = this.param('level')
            .default('info')
            .fromEnv('LOG_LEVEL')
            .description('Уровень отображения логов')
            .asEnum(levelEnum);
    }
}

TS

import { Config } from '@lad-tech/config';

const levelEnum = 'trace,debug,info,warn,error,fatal,silent,10,20,30,40,50,60'.split(',');
class LoggerConfig extends Config {
    description = 'Logger';

    pretty = this.param('pretty')
            .default(false)
            .fromEnv('LOG_PRETTY')
            .description('Отображать логи в человеко понятном формате')
            .asBoolean();
            
    level = this.param('level')
            .default('info')
            .fromEnv('LOG_LEVEL')
            .description('Уровень отображения логов')
            .asEnum(levelEnum);
}

Использование

const config = new LoggerConfig();

// Получение значений
config.pretty; // -> false
const { pretty, level } = config;

// Переопределение
config.override('pretty', true);
config.pretty; // -> true

// Документация. Возвращает текст с таблицей описания конфигурации
const doc = config.render();

// Валидация. Возвращает текст с таблицей ошибок
const err = config.renderError();

Для создания параметров

необходимо вызвать метод класса param с указанием имени параметра и присвоить его параметру класса

class AnyConfig extends Config {
    constructor() {
        super();
        this.paramName = this.param('paramName').asString();
    }
}

Метод param возвращает экземпляр класса ConfigItem

ConfigItem

Методы настройки параметра

метод Описание
fromEnv(envName) Имя env переменной из которой будет взято значение
description(desc) Описание параметра
override(value) Перезапись параметра указанным значением
splitter(splitter) Разделитель для получения массива значений

Методы указания типа валидации

метод тип валидации Описание
asString() string Строка
asInteger() integer Целое число
asBoolean() boolean Булево значение
asUrl() url URL начинается с http:// или https:// убирает / на конце
asEnum(list) enum Значение из списка
asArrayString() Массив string Массив строк
asArrayInteger() Массив integer Массив целых чисел
asArrayBoolean() Массив boolean Массив булевых значений
asArrayUrl() Массив url Массив ссылок
asArrayEnum(list) Массив enum Массив значение из списка

Readme

Keywords

Package Sidebar

Install

npm i @lad-tech/config

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

27.3 kB

Total Files

12

Last publish

Collaborators

  • blynskyniki
  • bibazavr
  • format-x
  • gleip