{"_id":"@dlabs71/d-connection-checker","name":"@dlabs71/d-connection-checker","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@dlabs71/d-connection-checker","private":false,"version":"1.0.0","author":{"name":"Danila Ivanov","email":"danila.a.ivanov@d-labs.ru"},"description":"Library for checking connection to a remote service by IP and host","license":"MIT","scripts":{"build":"npx rollup -c rollup.config.mjs","test":"jasmine --reporter=jasmine-console-reporter --config=test/jasmine.json","lint":"npx eslint --fix ./"},"dependencies":{},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.6","@babel/plugin-transform-runtime":"^7.19.6","@babel/preset-env":"=7.18.10","@babel/register":"^7.18.9","@babel/eslint-parser":"^7.19.1","@rollup/plugin-babel":"^6.0.2","@rollup/plugin-commonjs":"^23.0.2","@rollup/plugin-node-resolve":"^15.0.1","@types/jasmine":"^4.3.0","eslint":"^8.26.0","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.26.0","jasmine":"^4.2.1","jasmine-console-reporter":"^3.1.0","rollup":"^2.68.0","rollup-plugin-delete":"^2.0.0","rollup-plugin-node-externals":"^5.0.2","rollup-plugin-terser":"^7.0.2"},"main":"dist/d-connection-checker.umd.min.js","module":"dist/d-connection-checker.esm.min.js","repository":{"type":"git","url":"git+https://github.com/dlabs71/d-connection-checker.git"},"keywords":["connection","host","IP","check","connectioncheck","remote"],"bugs":{"url":"https://github.com/dlabs71/d-connection-checker/issues"},"homepage":"https://github.com/dlabs71/d-connection-checker#readme","engines":{"node":">=12.22.12"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"gitHead":"ee123959fd8d0f7ddb9a55cebe557f5404233fee","_id":"@dlabs71/d-connection-checker@1.0.0","_nodeVersion":"12.22.8","_npmVersion":"6.14.15","dist":{"integrity":"sha512-zAYhJ57gsZM14193yJ9jPmhmS9N90RrZ+uIAV0eUBjwl/dLU5zNYKDuidadJVeIch0BMOrb1Py83TgIDXvcWMg==","shasum":"fb9bb3cb4691257e6ca3a8837b17b899b665a502","tarball":"https://registry.npmjs.org/@dlabs71/d-connection-checker/-/d-connection-checker-1.0.0.tgz","fileCount":11,"unpackedSize":56339,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEuY4mJPJb/v6kwt1ImdDVej69UZVETBYbKerv3MVzYOAiEAtAOs1jPwmu6+qF2a2v49rnIJERbonHEp+gYP4FSX2To="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvEHnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqkQBAAjSiGJ4SQDK48V8CBgFceOy7171q9ZBK5qFpVxJYQ9ERuka8H\r\nM2n/uR2E5AYuezkyZNhfsomHsBFpvsb/QiyIT5cpEyOANWWGfGJpe2i6ytcw\r\nl+8BtIOjr4pGruf3bIkhpI7/tjDzhGocovu2NXuChSdblQC2iHW6uEjtb8Bv\r\nlJ2rKb2QF345JwVsVIu22dTs608BLp9ke7hb9KD8E1qpHg9bJxPZvPvbL95K\r\nDStiFS3iEVvFpIl/T3buqFmFPecD9qIJd7DmvDiFcRranw5J4GDFui6az5I5\r\nKFhMD6yrpQ39j84GqTCjOVRiHLp0pRstBXcEzMlGHT5wjkvLHjZhhqV8Wwop\r\n36/kKid/o0sZxkRTXyqEBIHAuPMPfg+3U7mGWEi4CnzG0gJy8BNHnjaETGMu\r\nMHDhOEM79Ng+wWccdBBAj1ehm6augzyy1qYyeH0g667KIP/H0Oi79g2EDaHu\r\n9yVXhIrGBh3f/lpWniCGZkqAL5A6sc955yorSmEIxrTvEKtDSvtYt8mnQzad\r\nYUH7UJI8l6I0JSkBRKd3A/8mYN3ys38rOmRcy5GJwTT7KAAi4FasA3ONh1oi\r\nhzE6uA0xALxmgbPCvPxdWjXLlkt8OnqBdrtJRHs/CvGaRdWuwoo9CViuTvXE\r\nx3hRvI4Jj+n+Hn8D+fG58psaeO+0MkCaAG0=\r\n=ybZ4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dlabs71","email":"danila.a.ivanov@d-labs.ru"},"directories":{},"maintainers":[{"name":"dlabs71","email":"danila.a.ivanov@d-labs.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/d-connection-checker_1.0.0_1673282023440_0.7371428969295017"},"_hasShrinkwrap":false}},"time":{"created":"2023-01-09T16:33:43.395Z","1.0.0":"2023-01-09T16:33:43.609Z","modified":"2023-01-09T16:33:43.777Z"},"maintainers":[{"name":"dlabs71","email":"danila.a.ivanov@d-labs.ru"}],"description":"Library for checking connection to a remote service by IP and host","homepage":"https://github.com/dlabs71/d-connection-checker#readme","keywords":["connection","host","IP","check","connectioncheck","remote"],"repository":{"type":"git","url":"git+https://github.com/dlabs71/d-connection-checker.git"},"author":{"name":"Danila Ivanov","email":"danila.a.ivanov@d-labs.ru"},"bugs":{"url":"https://github.com/dlabs71/d-connection-checker/issues"},"license":"MIT","readme":"# D-connection-checker\n\n[![NPM Version][npm-image]][npm-url]\n[![License][license-image]][license-url]\n\nБиблиотека для проверки подключения к удаленному сервису по IP-адресу и порту\n\n# Установка NPM\n\n```sh\nnpm i @dlabs71/d-connection-checker\n```\n\n# Использование\n\nДанная библиотека может быть использована в любом Node.js или Electron приложении. Для корректной работы библиотеки\nнеобходим модуль Node.js - [net](https://nodejs.org/api/net.html).\n\nD-connection-checker предоставляет класс с возможностью хранения данных о множестве подключений (IP и порт) и набором\nметодов для проверки доступности данных подключений. Также библиотека предоставляет класс для организации циклической\nпроверки доступности, хранимых подключений.\n\n**`example-1.js`**\n\n```js\nimport {CheckerConnection, HostData} from '@dlabs71/d-connection-checker';\n\nlet host = HostData.build(\"ya.ru\", 80);\n\nlet checkerConnection = new CheckerConnection();\ncheckerConnection.checkConnectionByHost(host)\n        .then(() => {\n            // сервис доступен\n        })\n        .catch((err) => {\n            // сервис не доступен.\n            // при недоступности сервиса метод проверяет коннекшен ещё 4 раза (по умолчанию), \n            // каждый раз уменьшая timeout в двое. Если все разы сервис так и не стал доступен, \n            // то считается что подключение недоступно. Данное поведение также можно изменить при помощи \n            // доп. параметров метода или параметров конструктора\n        });\n```\n\n**`example-2.js`**\n\n```js\nimport {CheckerConnectionRunner, HostData} from '@dlabs71/d-connection-checker';\n\nlet hosts = [\n    HostData.build(\"ya.ru\", 80),\n    HostData.build(\"localhost\", 2222)\n];\n\nlet rejectFunc = (host) => {\n    // когда сервис становиться неактивным, вызывается эта функция\n};\n\nlet checker = new CheckerConnectionRunner(rejectFunc);\nchecker.setHosts(hosts);\nchecker.run();\n// runner запущен, теперь в цикле будут проверяться все сервисы хранимые в нём. Если сервис недоступен, \n// то у него проставляется статус ERROR и он больше не проверяется, пока статус не измениться вручную\n\n// чтобы остановить цикличную проверку необходимо вызвать метод stop\nchecker.stop();\n```\n\n# Документация\n\n## Оглавление\n\n* [1. Класс HostData](#section1)\n* [2. Класс CheckerConnection](#section2)\n    * [2.1. Метод checkConnectionByHost](#section21)\n    * [2.2. Метод checkConnectionById](#section22)\n    * [2.3. Метод checkConnections](#section23)\n    * [2.4. Метод setHosts](#section24)\n    * [2.5. Метод addHost](#section25)\n    * [2.6. Метод removeHost](#section26)\n    * [2.7. Метод getHosts](#section27)\n* [3. Класс CheckerConnectionRunner](#section3)\n    * [3.1. Метод run](#section31)\n    * [3.2. Метод stop](#section32)\n\n## <h2 id=\"section1\">1. Класс HostData</h2>\n\nКласс **HostData** предназначен для описания параметров сервиса IP, порт и служебных параметров, таких как ID и статуса\nдоступности при последней проверке. Это основной класс через который происходит передача данных в функциональные методы\nданной библиотеки.\n\n| **Поле**   | **Тип**    | **Значение по умолчанию**  | **Описание**     |\n| :----------| :----------| :------------------------- | :----------------|\n| $id        | String     |                            | Уникальный идентификатор объекта. Создаётся на основе host и port |\n| $status    | String     | READY                      | Статус последней проверки подключения SUCCESS или ERROR |\n| host       | String     |                            | IP адрес сервиса |\n| port       | Number     |                            | порт сервиса |\n| addedData  | Object     | {}                         | Дополнительные данные. Устанавливаются пользователем при необходимости |\n\nДанный класс имеет статический метод **build**, предназначенный для быстрого и удобного создания экземпляра класса.\nПринимает 2 параметра:\n\n| **Параметр** | **Тип** | **Обязательность** | **Значение по умолчанию** | **Описание**     |\n| :------------| :-------| :----------------- | :------------------------ | :----------------|\n| host         | String  | да                 |                           | IP адрес сервиса |\n| port         | Number  | да                 |                           | порт сервиса     |\n| addedData    | Number  | нет                | {}                        | Дополнительные данные     |\n\nПример использования:\n\n```js\nimport {HostData} from '@dlabs71/d-connection-checker';\n\nlet hostData1 = new HostData(\"localhost\", 2222);\n\nlet hostData2 = HostData.build(\"ya.ru\", 80);\n\nlet hostData3 = HostData.build(\"ya.ru\", 80, {outerId: 123, name: \"Yandex\"});\n```\n\n## <h2 id=\"section2\">2. Класс CheckerConnection</h2>\n\nКласс **CheckerConnection** предназначен для хранения подключений, а также проверки их доступности. Конструктор данного\nкласса принимает следующие параметры:\n\n| **Параметр**       | **Тип**    | **Обязательность** | **Значение по умолчанию** | **Описание**     |\n| :----------------- | :----------| :----------------- | :------------------------ | :----------------|\n| logger             | Console    | нет                | console                   | Логгер |\n| defaultRepeat      | Number     | нет                | 3                         | Количество повторений проверки доступности |\n| pingDefaultTimeout | Number     | нет                | 8000                      | timeout ожидания подключения |\n\n### <h3 id=\"section21\">2.1. Метод checkConnectionByHost</h3>\n\nМетод **checkConnectionByHost** предназначен для проверки доступности сервиса по IP и порту. При отсутствии подключения\nданный метод пытается ещё несколько раз подключиться, каждый раз уменьшая timeout подключения в двое. Если подключение\nвсё равно остаётся недоступным, то считается что подключение полностью недоступно. Данное поведение можно регулировать\nпри помощи параметров repeat и timeout. Параметры:\n\n| **Параметр** | **Тип**    | **Обязательность** | **Значение по умолчанию**                      | **Описание**      |\n| :----------- | :----------| :----------------- | :--------------------------------------------- | :---------------- |\n| hostData     | HostData   | да                 |                                                | Информация о сервисе |\n| repeat       | Number     | нет                | 3 (используется глобальный параметр класса)    | Количество повторений проверки доступности |\n| timeout      | Number     | нет                | 8000 (используется глобальный параметр класса) | timeout ожидания подключения |\n\nПример использования:\n\n```js\nimport {HostData, CheckerConnection} from '@dlabs71/d-connection-checker';\n\nlet host = HostData.build(\"ya.ru\", 80);\nlet checkerConnection = new CheckerConnection();\n\ncheckerConnection.checkConnectionByHost(host)\n        .then(() => {\n            console.log(\"CONNECTION SUCCESS\");\n        })\n        .catch((err) => {\n            console.log(\"CONNECTION REFUSE\");\n        });\n```\n\n### <h3 id=\"section22\">2.2. Метод checkConnectionById</h3>\n\nМетод **checkConnectionById** предназначен для проверки доступности сервиса по ID хранимого подключения во встроенном\nхранилище. Параметры:\n\n| **Параметр** | **Тип**    | **Обязательность** | **Значение по умолчанию**                      | **Описание**      |\n| :----------- | :----------| :----------------- | :--------------------------------------------- | :---------------- |\n| storeId      | String     | да                 |                                                | ID подключения в хранилище (параметр $id в HostData) |\n| repeat       | Number     | нет                | 3 (используется глобальный параметр класса)    | Количество повторений проверки доступности |\n| timeout      | Number     | нет                | 8000 (используется глобальный параметр класса) | timeout ожидания подключения |\n\nПример использования:\n\n```js\nimport {HostData, CheckerConnection} from '@dlabs71/d-connection-checker';\n\nlet hosts = [\n    HostData.build(\"ya.ru\", 80),\n    HostData.build(\"localhost\", 2222),\n];\nlet checkerConnection = new CheckerConnection();\ncheckerConnection.setHosts(hosts);\n\ncheckerConnection.checkConnectionById(hosts[0].$id)\n        .then(() => {\n            console.log(\"CONNECTION SUCCESS\");\n        })\n        .catch((err) => {\n            console.log(\"CONNECTION REFUSE\");\n        });\n```\n\n### <h3 id=\"section23\">2.3. Метод checkConnections</h3>\n\nМетод **checkConnections** предназначен для проверки доступности сервисов, которые хранятся в хранилище. Параметры:\n\n| **Параметр** | **Тип**    | **Обязательность** | **Значение по умолчанию**                      | **Описание**      |\n| :----------- | :----------| :----------------- | :--------------------------------------------- | :---------------- |\n| rejectFunc   | Function   | нет                | (host)=>{}                                     | Callback функция, которая будет вызываться когда проверяемое подключение будет недоступным |\n\nПример использования:\n\n```js\nimport {HostData, CheckerConnection} from '@dlabs71/d-connection-checker';\n\nlet hosts = [\n    HostData.build(\"ya.ru\", 80),\n    HostData.build(\"localhost\", 2222),\n];\nlet rejectFunc = (host) => {\n    // когда сервис становиться неактивным, вызывается эта функция\n};\n\nlet checkerConnection = new CheckerConnection();\ncheckerConnection.setHosts(hosts);\n\ncheckerConnection.checkConnections(rejectFunc)\n        .finally(() => {\n        });\n```\n\n### <h3 id=\"section24\">2.4. Метод setHosts</h3>\n\nМетод **setHosts** предназначен для того, чтобы инициализировать хранилище списком подключений описанных при помощи\nкласса **HostData**. Параметры:\n\n| **Параметр** | **Тип**    | **Обязательность** | **Значение по умолчанию** | **Описание**       |\n| :----------- | :----------| :----------------- | :------------------------ | :----------------- |\n| hosts        | HostData[] | да                 |                           | Массив подключений |\n\n### <h3 id=\"section25\">2.5. Метод addHost</h3>\n\nМетод **addHost** предназначен для того, чтобы добавить в хранилище новое подключение, описанное при помощи класса **\nHostData**. Параметры:\n\n| **Параметр** | **Тип**    | **Обязательность** | **Значение по умолчанию** | **Описание**       |\n| :----------- | :----------| :----------------- | :------------------------ | :----------------- |\n| host         | HostData   | да                 |                           | Данные подключения |\n\n### <h3 id=\"section26\">2.6. Метод removeHost</h3>\n\nМетод **removeHost** предназначен для того, чтобы удалить из хранилища подключение, описанное при помощи класса **\nHostData**. Параметры:\n\n| **Параметр** | **Тип**    | **Обязательность** | **Значение по умолчанию** | **Описание**       |\n| :----------- | :----------| :----------------- | :------------------------ | :----------------- |\n| host         | HostData   | да                 |                           | Данные подключения |\n\n### <h3 id=\"section27\">2.7. Метод getHosts</h3>\n\nМетод **getHosts** предназначен для того, чтобы получить список всех подключений хранимых в хранилище.\n\nВозвращаемое значение:\n\n| **Тип**    |  **Описание**       |\n| :----------|  :----------------- |\n| HostData[] | Массив подключений  |\n\n## <h2 id=\"section3\">3. Класс CheckerConnectionRunner</h2>\n\nКласс **CheckerConnectionRunner** предназначен для реализации цикличной проверки подключений. Наследует **\nCheckerConnection**. Параметры конструктора:\n\n| **Параметр**       | **Тип**    | **Обязательность** | **Значение по умолчанию** | **Описание**     |\n| :----------------- | :----------| :----------------- | :------------------------ | :----------------|\n| rejectFunc         | Function   | да                 |                           | Callback функция, которая будет вызываться когда проверяемое подключение будет недоступным |\n| logger             | Console    | нет                | console                   | Логгер |\n| defaultRepeat      | Number     | нет                | 3                         | Количество повторений проверки доступности |\n| pingDefaultTimeout | Number     | нет                | 8000                      | timeout ожидания подключения |\n| runTimeout         | Number     | нет                | 4000                      | timeout ожидания между циклами запуска проверки |\n\n### <h3 id=\"section31\">3.1. Метод run</h3>\n\nМетод **run** предназначен для того, чтобы запустить циклическую проверку подключений хранимых в хранилище. Параметры:\n\n| **Параметр** | **Тип**    | **Обязательность** | **Значение по умолчанию**                      | **Описание**       |\n| :----------- | :----------| :----------------- | :--------------------------------------------- | :----------------- |\n| timeout      | Number     | нет                | 4000 (используется глобальный параметр класса) | timeout ожидания между циклами запуска проверки |\n\n### <h3 id=\"section32\">3.2. Метод stop</h3>\n\nМетод **stop** предназначен для того, чтобы остановить циклическую проверку подключений хранимых в хранилище.\n\n[npm-image]: https://img.shields.io/npm/v/@dlabs71/d-connection-checker\n\n[npm-url]: https://www.npmjs.com/package/@dlabs71/d-connection-checker\n\n[license-image]: https://img.shields.io/badge/license-MIT-blue.svg\n\n[license-url]: LICENSE","readmeFilename":"README.md"}