-
Notifications
You must be signed in to change notification settings - Fork 0
Home
ru-codes - один из модулей node.js, где реализована проверка контрольных чисел ИНН, ОГРН[ИП], ОКПО, СНИЛС, банковских счетов и карт, а также рандомизация таких данных для нужд тестирования.
npm install ru-codesconst {isntCadNum} = require ('ru-codes')
for (const record of records) {
if (isntCadNum (record.cadastr_number)) continue
// ... обработка record с корректным cadastr_number
}const {isSNILS} = require ('ru-codes')
try {
isSNILS (s)
}
catch (err) {
switch (err.code) {
// см. Формат результата проверки
}
}const {randomINN12} = require ('ru-codes')
const testINN12 = randomINN12 ({pre: ['50', '77']}) // ИНН физлица, Москва или область| Код | Проверка if | Проверка try | Генератор | Реализация |
| - | - | - | - |
| № р/с| isntBankAcct (str, bic) | isBankAcct (str, bic) | randomBankAcct (bic, opt) | BankAcct
| № карты| isntBankCard (str) | isBankCard (str) | randomBankCard (opt) | BankCard
| ИНН ФЛ | isntINN12 (str) | isINN12 (str) | randomINN12 (opt) | ScalarProduct
| ИНН ЮЛ | isntINN10 (str) | isINN10 (str) | randomINN10 (opt) | ScalarProduct
| Кадастровый № | isntCadNum (str) | isCadNum (str) | randomCadNum (opt) | CadNum
| КПП | isntKPP (str) | isKPP (str) | randomKPP (opt) | Check
| ОГРН | isntOGRN13 (str) | isOGRN13 (str) | randomOGRN13 (opt) | Horner
| ОГРНИП | isntOGRN15 (str) | isOGRN15 (str) | randomOGRN15 (opt) | Horner
ОКПО ЮЛ | isntOKPO8 (str) | isOKPO8 (str) | randomOKPO8 (opt) | OKPO
ОКПО ИП | isntOKPO10 (str) | isOKPO10 (str) | randomOKPO10 (opt) | OKPO
| СНИЛС | isntSNILS (str) | isSNILS (str) | randomSNILS (opt) | SNILS
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
pre |
[String] |
[''] |
Массив строк, одна из которых будет выбрана в качестве префикса генерируемого значения |
format |
Boolean |
false |
Форматировать ли сгенерированное значение (реализовано только для СНИЛС) |
API в целом — функционально-ориентированный, но при желании можно использовать напрямую классы, на базе которых реализованы верхнеуровневые функции. Ссылки на документацию по таким классам приведены в правом столбце таблицы.
На каждый код XXX API содержит пару функций: проверки isXXX и генерации randomXXX.
Функции проверки ведут себя в стиле assert: то есть в норме не возвращают значения, а информацию о нарушениях выбрасывают в виде ошибок. Ошибки эти имеют дополнительные поля — см. пример выше.
Практически для всех кодов единственным аргументом isXXX является проверяемая строка, а randomXXX — набор опций, где общая для всех опция только pre. Исключения описаны по месту.
Все коды и префиксы должны быть представлены только строками. Попытка проверить, например, ИНН, заданный в виде значения типа Number или BigInt — приведёт к ошибке даже для значения с корректной контрольной суммой.
Все функции isXXX и isntXXX для успешно проверенных строк возвращают undefined. Для строк же, не прошедших проверку:
-
isntXXXвозвращают массив вида[message, {code, asis, tobe, pos}] -
isXXXвыбрасывают ошибки с соответствующимиmessageи дополнительными полямиcode,asis,tobeиpos.
| Поле | Описание | Примечание |
|---|---|---|
code |
тип ошибки | |
tobe |
требуемое значение | Если известно точно |
asis |
обнаруженное значение | Если отличается от tobe
|
pos |
позиция проблемного символа |
code |
Описание | +поля | Примечание |
|---|---|---|---|
char |
нецифровой символ | pos |
|
checksum |
контрольная сумма |
asis, tobe
|
зависит от алгоритма |
format |
символ форматирования | pos |
'-', только для СНИЛС |
length |
длина str
|
asis, tobe
|
tobe == totalLength |
type |
тип str
|
asis, tobe
|
tobe == 'string' |
Примечание 1: Для БИК и корреспондентских счетов разрабатывать валидаторы и генераторы на основе контрольных чисел не имеет смысла, поскольку полный справочник этих значений содержит лишь порядка 1000 записей, а его актуальная версия всегда находится в открытом доступе и легко может быть прочитана, например, модулем ru-cbr-newbik.
Примечание 2: Помимо 8- и 10-значных кодов ОКПО, предусмотрены также 14-значные: для обособленных подразделений. Однако там предметом валидации является только отрезок из первых 8 символов: ОКПО юридического лица в целом.