New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@e22m4u/formatted-error

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@e22m4u/formatted-error

Класс реализующий интерполяцию шаблона сообщения об ошибке

  • 0.0.6
  • unpublished
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

@e22m4u/formatted-error

Класс реализующий интерполяцию шаблона сообщения об ошибке.

Установка

npm install @e22m4u/formatted-error

Пример

Рассмотрим пример без использования данного модуля

import {format} from 'util';

function foo(arg) {
  if (typeof arg !== 'boolean')
    throw new Error(
      format('It requires a boolean, but %s given.', arg),
    );
}

foo('true');
// Error: It requires a boolean, but true given.

Пример выше имеет пару проблем:

  • невозможно отличить тип значения от строки
  • не работает в браузере, так как util модуль Node.js

Перепишем его используя класс FormattedError

import {FormattedError} from '@e22m4u/formatted-error';

function foo(arg) {
  if (typeof arg !== 'boolean')
    throw new FormattedError(
      'It requires a boolean, but %s given.',
      arg,
    );
}

foo('true');
// FormattedError: It requires a boolean, but "true" given.

Чтобы отличить строку от остальных типов, такое значение оборачивается в двойные кавычки, а вместо util.format данный класс использует polyfill-функцию, которая обеспечивает работу в браузере.

Объекты

Для объектов и массивов выводится только имя конструктора:

throw new FormattedError(
  'got %s, %s and %s',
  {foo: 'bar'},
  [1, 2, 3],
  new Date(),
);
// FormattedError: got Object, Array and Date

Если нужно разворачивать содержимое массива, то используется фабричный метод explode

throw FormattedError.explode(
  'It requires one of %s, but %s given.',
  ['yes', 'no', true, false],
  new Date(),
);
// FormattedError: It requires one of "yes", "no", true, false, but Date given.

InvalidArgumentError

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

import {InvalidArgumentError} from '@e22m4u/formatted-error';

throw new InvalidArgumentError(
  'The first parameter requires a string, but %s given.',
  undefined,
);
// InvalidArgumentError: The first parameter requires a string, but undefined given.

Сигнатуры:

  • constructor(pattern: string, ...args: any[])
  • static explode(pattern: string, ...args: any[])

Тесты

npm run test

Лицензия

MIT

Keywords

FAQs

Package last updated on 08 Sep 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc