ru-codes v1.0.0
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...
для:
- общей проверки формата;
- одновременного вычисления контрольных сумм.
1 year ago