{"id":22356327,"url":"https://github.com/do-/node-ru-codes","last_synced_at":"2026-01-25T13:31:24.686Z","repository":{"id":189356732,"uuid":"680494854","full_name":"do-/node-ru-codes","owner":"do-","description":"Проверка и генерация ИНН, КПП и т. п.","archived":false,"fork":false,"pushed_at":"2025-05-30T12:22:20.000Z","size":96,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-08T20:38:24.358Z","etag":null,"topics":["inn","kpp","ogrn","okpo","snils"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/do-.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-08-19T12:33:25.000Z","updated_at":"2025-05-30T12:22:23.000Z","dependencies_parsed_at":"2024-09-17T16:12:55.208Z","dependency_job_id":"1200efc0-aed2-4e48-87ac-77700d4e79bb","html_url":"https://github.com/do-/node-ru-codes","commit_stats":null,"previous_names":["do-/node-ru-codes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/do-/node-ru-codes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/do-%2Fnode-ru-codes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/do-%2Fnode-ru-codes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/do-%2Fnode-ru-codes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/do-%2Fnode-ru-codes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/do-","download_url":"https://codeload.github.com/do-/node-ru-codes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/do-%2Fnode-ru-codes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28753431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T10:25:12.305Z","status":"ssl_error","status_checked_at":"2026-01-25T10:25:11.933Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["inn","kpp","ogrn","okpo","snils"],"created_at":"2024-12-04T14:09:55.100Z","updated_at":"2026-01-25T13:31:24.669Z","avatar_url":"https://github.com/do-.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![workflow](https://github.com/do-/node-ru-codes/actions/workflows/main.yml/badge.svg)\n![Jest coverage](./badges/coverage-jest%20coverage.svg)\n\n[ru-codes](https://github.com/do-/node-ru-codes/wiki) - один из модулей node.js, где реализована проверка форматов и контрольных чисел ИНН, ОГРН[ИП], ОКПО, СНИЛС, номеров кадастровых записей, банковских счетов и карт, а также рандомизация таких данных для нужд тестирования.\n\n# Установка\n```sh\nnpm install ru-codes\n```\n# Использование\n## Проверка значения с использованием `if` (быстрая)\n```js\nconst {isntCadNum} = require ('ru-codes')\n\nfor (const record of records) {\n  if (isntCadNum (record.cadastr_number)) continue\n  // ... обработка record с корректным cadastr_number\n}\n```\n## Проверка значения с использованием `try`\n```js\nconst {isSNILS} = require ('ru-codes')\n\ntry {\n  isSNILS (s)\n}\ncatch (err) {\n  switch (err.code) {\n    // см. Формат результата проверки\n  }\n}\n```\n## Генерация случайного корректного кода\n```js\nconst {randomBankCard} = require ('ru-codes')\nconst testCardNumber = randomBankCard ({\n// pre: ['2200', '2201', '2202', '2203', '2204'], // МИР\n// format: true,                                  // с пробелами\n}) \n```\n\n# API\n\n| Код | Проверка `if` | Проверка `try` | Генератор | Реализация |\n| - | - | - | - | - |\n| [№ р/с](https://ru.wikipedia.org/w/index.php?title=%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE\u0026oldid=139614063#%D0%9D%D0%BE%D0%BC%D0%B5%D1%80%D0%B0_%D0%B1%D0%B0%D0%BD%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%85_%D1%81%D1%87%D0%B5%D1%82%D0%BE%D0%B2) [*](https://github.com/do-/node-ru-codes/wiki#%D0%BE-%D0%B1%D0%B0%D0%BD%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%85-%D0%BA%D0%BE%D0%B4%D0%B0%D1%85)| `isntBankAcct (str, bic)` | `isBankAcct (str, bic)` | `randomBankAcct (bic, opt)` | [BankAcct](https://github.com/do-/node-ru-codes/wiki/BankAcct)\n| [№ карты](https://ru.wikipedia.org/w/index.php?title=%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE\u0026oldid=139614063#%D0%9D%D0%BE%D0%BC%D0%B5%D1%80%D0%B0_%D0%B1%D0%B0%D0%BD%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%85_%D0%BA%D0%B0%D1%80%D1%82)| `isntBankCard (str)` | `isBankCard (str)` | `randomBankCard (opt)` | [BankCard](https://github.com/do-/node-ru-codes/wiki/BankCard)\n| [ИНН](https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0) ФЛ | `isntINN12 (str)` | `isINN12 (str)` | `randomINN12 (opt)` | [ScalarProduct](https://github.com/do-/node-ru-codes/wiki/ScalarProduct)\n| [ИНН](https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0) ЮЛ | `isntINN10 (str)` | `isINN10 (str)` | `randomINN10 (opt)` | [ScalarProduct](https://github.com/do-/node-ru-codes/wiki/ScalarProduct)\n| [Кадастровый №](https://ru.wikipedia.org/w/index.php?title=%D0%9A%D0%B0%D0%B4%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80\u0026oldid=124734476#%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F) | `isntCadNum (str)` | `isCadNum (str)` | `randomCadNum (opt)` | [CadNum](https://github.com/do-/node-ru-codes/wiki/CadNum)\n| [КПП](https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0#%D0%9A%D0%BE%D0%B4_%D0%BF%D1%80%D0%B8%D1%87%D0%B8%D0%BD%D1%8B_%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8_%D0%BD%D0%B0_%D1%83%D1%87%D1%91%D1%82_(%D0%9A%D0%9F%D0%9F)) | `isntKPP (str)` | `isKPP (str)` | `randomKPP (opt)` | [Check](https://github.com/do-/node-ru-codes/wiki/Check)\n| [ОГРН](https://ru.wikipedia.org/wiki/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%B3%D0%BE%D1%81%D1%83%D0%B4%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80) | `isntOGRN13 (str)` | `isOGRN13 (str)` | `randomOGRN13 (opt)` | [Horner](https://github.com/do-/node-ru-codes/wiki/Horner)\n| [ОГРНИП](https://ru.wikipedia.org/wiki/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%B3%D0%BE%D1%81%D1%83%D0%B4%D0%B0%D1%80%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%B8%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D1%82%D0%B5%D0%BB%D1%8F) | `isntOGRN15 (str)` | `isOGRN15 (str)` | `randomOGRN15 (opt)` | [Horner](https://github.com/do-/node-ru-codes/wiki/Horner)\n[ОКПО](https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%89%D0%B5%D1%80%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80_%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D1%8F%D1%82%D0%B8%D0%B9_%D0%B8_%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B9) ЮЛ  | `isntOKPO8 (str)` | `isOKPO8 (str)` | `randomOKPO8 (opt)` | [OKPO](https://github.com/do-/node-ru-codes/wiki/OKPO)\n[ОКПО](https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%89%D0%B5%D1%80%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80_%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D1%8F%D1%82%D0%B8%D0%B9_%D0%B8_%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B9) ИП | `isntOKPO10 (str)` | `isOKPO10 (str)` | `randomOKPO10 (opt)` | [OKPO](https://github.com/do-/node-ru-codes/wiki/OKPO)\n| [СНИЛС](https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D1%85%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%B8%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BB%D0%B8%D1%86%D0%B5%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D1%87%D1%91%D1%82%D0%B0) | `isntSNILS (str)` | `isSNILS (str)` | `randomSNILS (opt)` | [SNILS](https://github.com/do-/node-ru-codes/wiki/SNILS)\n\n## Функции-валидаторы\nНа каждый код `XXX` API содержит пару функций проверки `isXXX` и `isntXXX`. \n\nДля успешно проверенных значений все они возвращают `undefined`. Отличие заключается в том, как представляются ошибки валидации:\n* `isntXXX` [возвращают](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return) массив вида `[message, {code, asis, tobe, pos}]` — то есть [правдоподобное](https://developer.mozilla.org/en-US/docs/Glossary/Truthy) значение в отличие от [неправдоподобного](https://developer.mozilla.org/en-US/docs/Glossary/Falsy) `undefined`, что позволяет подставлять результат прямо в `if`, `while` и т. п., если детали ошибки не представляют интереса;\n* `isXXX` же, подобно функциям модуля [`assert`](https://nodejs.org/docs/latest/api/assert.html), [выбрасывают](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw) [ошибки](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) с соответствующими `message` и дополнительными полями `code`, `asis`, `tobe` и `pos` — соответственно, предназначены для применения в блоках [try...catch](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch).\n\nИспользование специальных синтаксических конструкций для обработки ошибок помогает лучше структурировать код, однако за это приходится [жертвовать](https://www.measurethat.net/Benchmarks/Show/32500/1/return-err-vs-throw-err#latest_results_block) производительностью, поэтому для достижения максимальной скорости при массовой обработке данных следует использовать `isntXXX`.\n\n### Формат результата проверки\n\n| Поле | Описание | Примечание\n| - |- |- |\n| `code` | тип ошибки |\n| `tobe` | требуемое значение | Если известно точно\n| `asis` | обнаруженное значение | Если отличается от `tobe`\n| `pos` | позиция проблемного символа |\n\n| `code` | Описание | +поля | Примечание\n| - |- |- |- |\n| `char` | нецифровой символ | `pos` | \n| `checksum` | контрольная сумма | `asis`, `tobe` | зависит от алгоритма\n| `format` | символ форматирования | `pos` | `'-'` для СНИЛС, `' '` для № банковских карт\n| `length` | длина `str` | `asis`, `tobe` | `tobe == totalLength`\n| `type` | тип `str` | `asis`, `tobe` | `tobe == 'string'`\n\n## Функции-генераторы\nНа каждый код `XXX` API содержит функцию `randomXXX`, генерирующую случайные значения необходимого формата. Необязательный аргумент `opt` — во всех случаях объект с набором опций:\n| Имя | Тип | По умолчанию | Описание\n| - | - | - | - |\n| `pre` | `[String]` | `['']` | Массив строк, одна из которых будет выбрана в качестве префикса генерируемого значения\n| `format` | `Boolean` | `false` | Форматировать ли сгенерированное значение (реализовано только для СНИЛС и № банковских карт)\n\n# Примечания\n## О банковских кодах\nКонтрольная сумма номера расчётного счёта определяется не сама по себе, а зависит от [БИК](https://ru.wikipedia.org/wiki/Банковский_идентификационный_код) соответствующего (вообще говоря, филиала) банка — так что связанные с этим функции имеют дополнительный аргумент `bic`.\n\nРазрабатывать валидаторы и генераторы для самих БИК (как и корреспондентских счетов) на основе контрольных чисел не имеет смысла, поскольку полный справочник этих значений содержит лишь порядка 1000 записей, а [его актуальная версия](https://cbr.ru/PSystem/payment_system/) всегда находится в открытом доступе и легко может быть прочитана, например, модулем [`ru-cbr-newbik`](https://www.npmjs.com/package/ru-cbr-newbik).\n\n## Об ОКПО\nДля кодов [ОКПО](https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%89%D0%B5%D1%80%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80_%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D1%8F%D1%82%D0%B8%D0%B9_%D0%B8_%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B9), помимо 8-значных (ЮЛ) и 10-значных (ИП), встречаются также упоминания о 14-значных: обособленных подразделений. Однако  реального примера такого кода в открытых данных обнаружить не удалось, как и внятной нормативной документации. В текущей версии функции _*OKPO14_ не реализованы.\n\nЕсли верить некоторым описаниям, предметом валидации там является только отрезок из первых 8 символов: ОКПО юридического лица в целом — так что при необходимости вполне можно обойтись OKPO8.\n\n## О типах данных\nВсе коды и их префиксы в этой библиотеке представляются исключительно [примитивными](https://developer.mozilla.org/en-US/docs/Glossary/Primitive) [строками](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String). Попытка проверить, например, ИНН, заданный в виде значения типа [Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) или [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) — приведёт к ошибке вне зависимости от того, какими цифрами оно представляется в десятичной записи.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdo-%2Fnode-ru-codes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdo-%2Fnode-ru-codes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdo-%2Fnode-ru-codes/lists"}