Skip to content

do-/node-ru-codes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

workflow Jest coverage

ru-codes - один из модулей node.js для проверки корректности ввода ИНН, КПП, ОГРН[ИП] и СНИЛС.

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

  • итог проверки представлен не результатом функции (который в случае успеха всегда undefined), а объектом Error с дополнительными полями;
  • в реализации не используются ни регулярные выражения, ни текстовые операции с подстроками.

Установка

npm install ru-codes

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

const {
    isINN10,
    isINN12,
    isKPP,
    isOGRN13,
    isOGRN15,
    isSNILS,
//  scalarProduct,
//  digit,
} = require ('ru-codes')

try {
  isSNILS (s)
}
catch (err) {
  switch (err.code) {
    case 'type':
      // err.type -- это typeof аргумента, оказавшийся не string
    case 'length':
      // err.tobe -- требуемая длина строки
      // err.asis -- реальная длина строки
    case 'char':
      // err.value -- символ не попавший в интервал '0'..'9'
      // err.pos -- позиция этого символа (от 0)
    case 'checksum': 
      // err.tobe -- контрольная сумма, вычисленная по основной части строки
      // err.asis -- значение контрольной суммы, прочитанное непосредственно из строки
      // err.phase -- для isINN12: номер контрольной суммы (1 или 2) 
    default:
      throw err
  }
}

API

Основные функции

Каждая из функций, описанных в данном разделе, принимает на вход проверяемый код в виде строки (не числа или иного объекта), состоящей только из цифр от '0' до '9'. Если проверка проходит успешно, исполнение функции завершается без результата, иначе генерируется ошибка.

Реализованы только проверки форматов и контрольных сумм, но не чего-либо, связанного с внешними источниками данных (наборы кодов регионов, отделений ФНС, ЕГРЮЛ и т. п.)

Реализованы все проверки через вызовы нижеописанных scalarProduct и digit.

isINN10

Проверяет, может ли аргумент быть ИНН юридического лица.

isINN12

Проверяет, может ли аргумент быть ИНН физического лица.

isKPP

Проверяет, может ли аргумент быть КПП. Поскольку для КПП не предусмотрена контрольная сумма, проверяется только длина и набор символов.

isOGRN13

Проверяет, может ли аргумент быть ОГРН.

isOGRN15

Проверяет, может ли аргумент быть ОГРНИП.

isSNILS

Проверяет, может ли аргумент быть СНИЛС. Как и в остальных функциях is..., на вход должна подаваться строка только из цифр, без дополнительных символов форматирования.

Вспомогательные функции

digit

Для заданной строки str, состоящей из только из цифр, и номера позиции pos возвращает число, соответствующее цифре, занимающей данную позицию (без создания промежуточной подстроки и вызова parseInt).

Используется функциями is... для чтения контрольных чисел.

scalarProduct

Для заданного массива чисел coef и строки str:

  • гарантирует, что str является строкой такой же длины, что coef, и состоящей только из цифр;
  • возвращает скалярное произведение coef на массив чисел, соответствующих отдельным цифрам str.

На старте str преобразуется в буфер -- и это единственный объект, создаваемый по ходу неаварийного исполнения функции: все остальные операции -- числовые.

Используется функциями is... для:

  • общей проверки формата;
  • одновременного вычисления контрольных сумм.

About

ИНН, КПП и т. п.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages