Skip to content

Knyazew36/utils

Repository files navigation

@front-cmdt/utils

Библиотека полезных утилит для фронтенд-разработки.

Установка

yarn add @front-cmdt/utils
# или
npm install @front-cmdt/utils

Утилиты

errorCatch

Обработка ошибок из ответов API. Возвращает текст ошибки из переданной мапы сообщений или из самой ошибки.

Сигнатура:

errorCatch(error: any, options?: ErrorCatchOptions): string | string[]

ErrorCatchOptions:

Поле Тип По умолчанию Описание
errorTextMap Record<string, string> Мапа «ключ из ответа → читаемый текст»
mode 'first' | 'all' 'first' Вернуть первое сообщение (string) или все (string[])

Поддерживает ошибки с вложенной структурой error.response.data.message (в т.ч. когда message — массив строк).

Примеры:

import { errorCatch } from '@front-cmdt/utils/error-catch'

const ERROR_MAP = {
  'learning must be an object': 'Обучение должно быть объектом',
}

// Первое сообщение с маппингом
try {
  // ...
} catch (error: any) {
  console.log(errorCatch(error, { errorTextMap: ERROR_MAP }))
  // 'Обучение должно быть объектом'
}

// Все сообщения
try {
  // ...
} catch (error: any) {
  console.log(errorCatch(error, { mode: 'all' }))
  // ['learning must be an object', 'name must be a string']
}

// Без опций — вернёт первое сообщение из ответа или error.message
try {
  // ...
} catch (error: any) {
  console.log(errorCatch(error))
  // 'Unauthorized access'
}

getName (работа с ФИО)

Набор функций для разбора, валидации и форматирования ФИО. Входные данные: объект { firstName, lastName, middleName }, строка «Фамилия Имя Отчество» или массив строк.


numberSeparator

Форматирование числа с пробелами в качестве разделителя тысяч. Поддерживает целые числа и числа с дробной частью.

Примеры:

  • numberSeparator(1000)'1 000'
  • numberSeparator(1000000)'1 000 000'
  • numberSeparator(-1000000)'-1 000 000'

formatPhone

Форматирование российского телефонного номера по одному из заданных шаблонов.

Параметры: phone — строка или число (цифры номера), variant — желаемый формат.

Варианты формата:

variant Пример результата
'+79999999999' +79155555555
'79999999999' 79155555555
'+7(999)999-99-99' +7(915)555-55-55
'89999999999' 89155555555
'+7 999 999 99-99' +7 915 555 55-55

Номер нормализуется: остаются только цифры, код страны 7/8 при необходимости убирается. Ожидается не менее 10 цифр; иначе возвращается undefined.


ms

Преобразование строки с длительностью в миллисекунды. Принимает строку вида «число + единица времени» и возвращает число миллисекунд.

Параметры: str — строка (например, '2 days', '1h', '30s').

Поддерживаемые единицы: ms (миллисекунды), s (секунды), m (минуты), h (часы), d (дни), w (недели), mo (месяцы), y (годы). Допускаются полные названия и сокращения (seconds, secs, day, days и т.д.).

Примеры:

  • ms('2 days')172800000
  • ms('1h')3600000
  • ms('30s')30000
  • ms('1.5 min')90000

При невалидной строке или неизвестной единице возвращается NaN. Пустая строка, строка длиннее 100 символов или нестрока приводят к выбросу ошибки.


log

Функция для красивого логирования в консоль с цветовым оформлением и эмодзи. Предназначена для логирования HTTP-запросов, ответов и ошибок.

Параметры:

  • name — название лога (строка)
  • data — данные для логирования (любой тип)
  • type — тип лога: 'request' (запрос), 'response' (ответ), 'catch' (ошибка)
  • payload? — дополнительные данные (опционально)
  • isServer? — флаг серверного логирования, убирает декоративные элементы (опционально)
  • isDisabled? — отключает логирование полностью, если true (опционально)

Особенности:

  • Использует стилизованный вывод в консоль с цветами и эмодзи
  • Если data не передан (undefined/null), логирование не выполняется
  • Для клиентского логирования (isServer не установлен) добавляет декоративные разделители
  • Каждый тип лога имеет свой цвет: request (cyan), response (green), catch (red)

Примеры:

// Логирование запроса
log({
  name: 'GET /api/users',
  data: { userId: 123 },
  type: 'request',
  payload: { headers: { Authorization: 'Bearer token' } }
})

// Логирование ответа
log({
  name: 'GET /api/users',
  data: { users: [...] },
  type: 'response'
})

// Логирование ошибки
log({
  name: 'GET /api/users',
  data: error,
  type: 'catch'
})

// Серверное логирование (без декоративных элементов)
log({
  name: 'Server log',
  data: { message: 'Server started' },
  type: 'response',
  isServer: true
})

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors