Git Product home page Git Product logo

node-ru-codes's Introduction

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... для:

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

node-ru-codes's People

Contributors

do- avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.