{"_id":"resin-discoverable-services","_rev":"36-70bff86cfdd96b392f214ec591385184","name":"resin-discoverable-services","dist-tags":{"lucianbuzzo-function-return-types-c5813b5045e10d6b18cfbabdb3ea311fc206683e":"2.0.2-lucianbuzzo-function-return-types-c5813b5045e10d6b18cfbabdb3ea311fc206683e","lucianbuzzo-find-on-all-interfaces-7cf26aeef94faf92aca009316845ef8874e9b6f2":"2.0.3-lucianbuzzo-find-on-all-interfaces-7cf26aeef94faf92aca009316845ef8874e9b6f2","build-flowzonify-c7736f9357219a3003c06b7ca0d93f602d71ba68":"2.0.4-build-flowzonify-c7736f9357219a3003c06b7ca0d93f602d71ba68-1","build-flowzonify-1192e416e974da27f554cb1756eb78b7be272b66":"2.0.4-build-flowzonify-1192e416e974da27f554cb1756eb78b7be272b66-1","build-flowzonify-06c27c0a7114341680c7558ed8ad5424201dc5f1":"2.0.4-build-flowzonify-06c27c0a7114341680c7558ed8ad5424201dc5f1-1","build-flowzonify":"2.0.4-build-flowzonify-06c27c0a7114341680c7558ed8ad5424201dc5f1-1","build-removes-dead-code-597388eb64d3c628328029f8cc19029bb34223df":"2.0.5-build-removes-dead-code-597388eb64d3c628328029f8cc19029bb34223df-1","build-removes-dead-code":"2.0.5-build-removes-dead-code-597388eb64d3c628328029f8cc19029bb34223df-1","latest":"2.0.5"},"versions":{"1.0.0":{"name":"resin-discoverable-services","version":"1.0.0","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.0.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"f38652bfe6b7e84aab86423c4b8d7a1799b1977e","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.0.0.tgz","integrity":"sha512-F3+QSsRJNuaoBOAeiJx4ZuVEbKeT4FGG3NJSFr+jn9dcGA4+j0E7/PcQ1JTI7t9uG8wCsQXNpHOx2E4e2YUnLQ==","signatures":[{"sig":"MEYCIQCyhCdu/bJmRF79SJ64YbZlA21UPm+HR4e6iD0Ig1zuXgIhAI7tNtEB5FYBbne+l6hSCoE8d38/hdieFR0djS4MwZ2z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/register.js","_from":".","_shasum":"f38652bfe6b7e84aab86423c4b8d7a1799b1977e","gitHead":"4fe456a37214332b909910aabc6d332445502176","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"2.15.8","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"4.4.7","dependencies":{"bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.0.0.tgz_1475855487015_0.10518981516361237","host":"packages-16-east.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.1":{"name":"resin-discoverable-services","version":"1.0.1","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.0.1","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"b0568b574f0fcc56a616d6b9934fd45b059882e8","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.0.1.tgz","integrity":"sha512-wQR9rg4uYyMR/t+vq+pytWkrohTPsUxz/ggGD121H8rPHf26Rn2oRu6Rl24wgX1o4u1PxVJ+JTmu8jQWcJZbaQ==","signatures":[{"sig":"MEUCIQCbko9VUK1FXuH1YeXHHBiYCYJCOX0kM82Dba6hdDW+OwIgC9dgQd5cqRIpBnm5XZPICjmAnmBU8GkmV+eOvi9kf24=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","_shasum":"b0568b574f0fcc56a616d6b9934fd45b059882e8","gitHead":"bac5b51061fa5b80b60cbe3651afd2a9ed398981","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"3.9.3","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"6.2.1","dependencies":{"bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.0.1.tgz_1475921960015_0.043364353477954865","host":"packages-12-west.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.2":{"name":"resin-discoverable-services","version":"1.0.2","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.0.2","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"22314b5dc933fffac0453b98d4078ca8e18fcd52","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.0.2.tgz","integrity":"sha512-QrKDP7rMHH+MSwvcvJ+Rffn6UxsO2xsqwZTY4pxHGs/2LPmcSxAn5UMkBsGU9hC9prWi9oBFiI6e1Gmth7gn2A==","signatures":[{"sig":"MEQCIG0LetXtOZWYoKZI6T4KyJaiVIuN4uqO2cLXRVNQ64tdAiByQ0UZTNcTPgCOXIPCX7qJcEe1/mMLohzoAT/Acy4cnw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","_shasum":"22314b5dc933fffac0453b98d4078ca8e18fcd52","gitHead":"ede88f68be1689687e5880a44c5e798d0a9e7052","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"2.15.8","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"4.4.7","dependencies":{"bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.0.2.tgz_1476462028186_0.41691287280991673","host":"packages-12-west.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.3":{"name":"resin-discoverable-services","version":"1.0.3","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.0.3","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"e6e9446ddaf869f7068423ea55b02869abd53665","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.0.3.tgz","integrity":"sha512-QLe3po053xKi51U4MCpUMQfRIp/H015I4FZL1Vi7OjGQCvsCxS6vATgHIm3Sk+P6DLAwgqTd7f1gy7CqG5fxzg==","signatures":[{"sig":"MEUCIDzkYZ+L5bkDmD7wlcfGy/i7sh20MlI2mB1TkwPMmaDRAiEA009PCrjKkiwwOaypsRnT86gx8pYJknnBKD8DCZY6YFo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","_shasum":"e6e9446ddaf869f7068423ea55b02869abd53665","gitHead":"66c26f19e8e42adf447b20074c5614d99f4c5c00","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"3.10.3","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"6.7.0","dependencies":{"bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.0.3.tgz_1477567364143_0.05799311213195324","host":"packages-18-east.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.4":{"name":"resin-discoverable-services","version":"1.0.4","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.0.4","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"8f60c2c502b925d2ac09a5405c196356f95cfbd5","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.0.4.tgz","integrity":"sha512-rswZ2687Q7zwiAuhSZhvBY8rP9xKDOz45z/+9HxAJwP7T831UP4jxha6l9dRErwQCYh9vfBtZoF7/dotR24FyA==","signatures":[{"sig":"MEYCIQCl5Is1MR47Up079NpTxhDMxVT5/yfir65ARb6tDRotqQIhAOYG79JtkUXi1gOOQvkr8Ba2dBBCP9XK6yhjQwswrrGQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","_shasum":"8f60c2c502b925d2ac09a5405c196356f95cfbd5","gitHead":"ed8af2bc322c6fb4f6b363036ce63ccc368c8c21","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"3.10.3","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"6.7.0","dependencies":{"bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.0.4.tgz_1479304740471_0.8147254285868257","host":"packages-12-west.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.0":{"name":"resin-discoverable-services","version":"1.1.0","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.1.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"f880c24752febe6a1a1e884e9769d0ff9a558e63","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.1.0.tgz","integrity":"sha512-FZu0DniRIrUUV8OKLRRNm318rxFNbQiq0RGBU+aVPF9GzUr0GCnntpksRGvaN+oSHPwQL+W85PEfjThz0n1I5g==","signatures":[{"sig":"MEUCIEPHwGfXUKiB7dtAxGwGo9FgDpq1WKv9Nhd6UJguDmCyAiEAjrwH5iwBqzdogSXkFZ8TnpQuSTJ3s9wqQf4F1vgpRig=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","_shasum":"f880c24752febe6a1a1e884e9769d0ff9a558e63","gitHead":"6dee7c54c87d87481597276aefd2c2a66112172f","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"3.10.3","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"6.7.0","dependencies":{"bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.1.0.tgz_1479756245590_0.5523432376794517","host":"packages-18-east.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.1":{"name":"resin-discoverable-services","version":"1.1.1","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.1.1","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"076dfbfea2c3f673310cd031b766dca71b2d06fd","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.1.1.tgz","integrity":"sha512-NbwFZsqlc5P1KCmPAEQ0rqupvtJmOsXKFO9BwfzZuKortJ7LJW2AO86xqTmn00q/Po5D/8WZ0fjCpL+OIw86aA==","signatures":[{"sig":"MEUCIC1Hk0py2xz67VSn5MzkMCpR46+AR28H73B2nO05+zv1AiEAoi4ftdSlwnvyUETcyJzNz9vGBskswWqHvoFFfRnLCs0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","_shasum":"076dfbfea2c3f673310cd031b766dca71b2d06fd","gitHead":"99d2177d608631a9e690223cd1c06e75c1ff10e0","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"3.10.3","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"6.7.0","dependencies":{"bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.1.1.tgz_1479934736139_0.19952548830769956","host":"packages-18-east.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.2":{"name":"resin-discoverable-services","version":"1.1.2","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.1.2","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"a9f0d1324b7a408fbb502d8fcb4f75ba7ddf5ed6","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.1.2.tgz","integrity":"sha512-FKSiNj8iDYILycx84x7Ragkn0YMldnB5QYZYfIP8JpTu1fEz6yTBtpSaEEoNJUtt6a214b4Sz+CBt/KILXPnJg==","signatures":[{"sig":"MEUCIQD/G6IGLXJLvJsEJ8voWMDzR2088UhG8EsUuYYwYA5V2AIgRp4x3YPc+BOTr16DGx7X/vRq/ZueRldW4v6O3zEFc8A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","types":"./lib/declarations.d.ts","_shasum":"a9f0d1324b7a408fbb502d8fcb4f75ba7ddf5ed6","gitHead":"dbc3c4deb97dfafec735e3b9a68bfd04fb104f67","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"3.10.3","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"6.7.0","dependencies":{"bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.1.2.tgz_1481105668545_0.6143103037029505","host":"packages-12-west.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.0":{"name":"resin-discoverable-services","version":"1.2.0","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.2.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"fbcf84f92c9abea15b34770b84594165deedf7e9","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.2.0.tgz","integrity":"sha512-Msq9a/88UIfDxLJ6TNuqAeYORko36j8VfBkZesui/mvznUGM8DHjKiGYqku5sFDBAqz7xff9gSRLIUguJpC38A==","signatures":[{"sig":"MEUCID33hanBltIA833iYf78LigFr86HQFwJ7YWrTcXzZxUwAiEAqMyslB+DttBNlSESw9UJMfXFQlejc0aXHjhpBh9PDU4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","types":"./lib/declarations.d.ts","_shasum":"fbcf84f92c9abea15b34770b84594165deedf7e9","gitHead":"bb8c544a55557bc3c7d435ff7abbbbe718d31a3f","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"3.10.3","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"6.7.0","dependencies":{"bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"ip":"^1.1.4","chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.2.0.tgz_1481734705524_0.8728597019799054","host":"packages-18-east.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.1":{"name":"resin-discoverable-services","version":"1.2.1","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.2.1","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"f8cdc48346a0ac15403340cc2907dc0fd51da905","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.2.1.tgz","integrity":"sha512-oFW85oRFSzT9pf82vo+jdNVJYY6g7EC21p7VQPIjyO3RPHp+xqHOTgx5zwfhZZP1bYus3mZByuskbcRh7Tl8EQ==","signatures":[{"sig":"MEUCIQDXGtmWWcQBSFxkc2P5gFepuW0KCLwhSbRptDfO+leAUAIgdvD9mdbK9M3CM5jNLdX+yz9qV5EvuryfxE7vNMfIWX8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","types":"./lib/declarations.d.ts","_shasum":"f8cdc48346a0ac15403340cc2907dc0fd51da905","gitHead":"c805a16a1d6fea87285a8c460add058636829faf","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"3.10.3","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"6.7.0","dependencies":{"ip":"^1.1.4","bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.2.1.tgz_1484042969469_0.8377281078137457","host":"packages-12-west.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.2":{"name":"resin-discoverable-services","version":"1.2.2","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@1.2.2","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"ae57eedb6a8a5716a7afc8f54c299c4d34cf963e","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-1.2.2.tgz","integrity":"sha512-XKFemt6f1pQpk4b2pgQOpD653txyYP7qYFC31oypZQ26V5gDp0Tt7/cL61I8qTfSKIPYVsYfip+ZJCjL09Gvxg==","signatures":[{"sig":"MEQCIEo2hefdNHn3n2DtE3DS3f8IHXwqBQnCi1CdLaCz1AXQAiAZUPrEhq+L5SimY2Kyw6G2W8Gq+VumNtwvY5MeQSdyfw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","types":"./lib/declarations.d.ts","_shasum":"ae57eedb6a8a5716a7afc8f54c299c4d34cf963e","gitHead":"b2ff13df1c888baaa5367061e4352e9cb7e1064d","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"4.1.2","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"6.9.1","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","lodash":"^4.0.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-1.2.2.tgz_1489006572726_0.7336758410092443","host":"packages-12-west.internal.npmjs.com"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.0":{"name":"resin-discoverable-services","version":"2.0.0","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"87730165b06a56050ec6592a75f0c74db9ecefe1","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.0.tgz","integrity":"sha512-wko61SDNAc61XkaelT4nhj0DbEjq3PjiacXEl/cwUFvEm7dXZrMn9KRc1+Ojz9XlIZs8v0sGAdiTDziRQlI6pg==","signatures":[{"sig":"MEUCIQC/c9LznbVcLeGGRikvhyh6anDauRMa84AGId52A2RyIAIgbvxaBFSs9khApjehCuaZJaM5ikPkpbFNhbdemR0WLdo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","_from":".","types":"./lib/declarations.d.ts","_shasum":"87730165b06a56050ec6592a75f0c74db9ecefe1","gitHead":"78fc6fcd10ebdf26e52e0ba4c2ebec44ca8e60b4","scripts":{"lint":"resin-lint lib tests gulpfile.coffee","test":"npm run lint && gulp test","build":"gulp build","prepublish":"npm test && npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"4.6.1","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"6.7.0","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0","dbus-native":"^0.2.2"},"devDependencies":{"chai":"^3.5.0","gulp":"^3.8.10","mocha":"^3.0.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","gulp-util":"^3.0.1","mochainon":"^1.0.0","gulp-mocha":"^3.0.0","resin-lint":"^1.4.0","gulp-coffee":"^2.2.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"optionalDependencies":{"dbus-native":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-2.0.0.tgz_1503567992530_0.8766205268912017","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.1":{"name":"resin-discoverable-services","version":"2.0.1","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.1","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"21befd54ef62412925d237c4a2a346e6167b6ed4","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.1.tgz","integrity":"sha512-HmM1TYFy09eovNP+rn5V81kQm1r4Huw4VX9Yv00PvsQZnuvi6TNhlVvBwTTPQuesTIIcwOb0vUTs2ZIZOKAztg==","signatures":[{"sig":"MEQCIDLTWLswlAmfQ87cpWxewoVEQOKrkM3AN8+fD75TA5RnAiBJdOjk2AsRfJE/6408CqbyGYEPKIE0rYfEc5TcIj2yEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/discoverable.js","types":"./lib/declarations.d.ts","gitHead":"4eccced02e58cd27c5ca0f6db9b16c9b7091d1a7","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee","prepublish":"require-npm4-to-publish","prepublishOnly":"npm test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"_npmVersion":"5.3.0","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"8.4.0","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0","dbus-native":"^0.2.2"},"devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0","require-npm4-to-publish":"^1.0.0"},"optionalDependencies":{"dbus-native":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services-2.0.1.tgz_1503911519747_0.15388933126814663","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.2-lucianbuzzo-function-return-types-c5813b5045e10d6b18cfbabdb3ea311fc206683e":{"name":"resin-discoverable-services","version":"2.0.2-lucianbuzzo-function-return-types-c5813b5045e10d6b18cfbabdb3ea311fc206683e","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.2-lucianbuzzo-function-return-types-c5813b5045e10d6b18cfbabdb3ea311fc206683e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"f6ecfc311ff52d5ddbf9afc2c2de9526348d14a4","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.2-lucianbuzzo-function-return-types-c5813b5045e10d6b18cfbabdb3ea311fc206683e.tgz","fileCount":19,"integrity":"sha512-DBPbqOwfOz+MWvoJT0GLYOrYmPaHoATxD78zmj5zTmMfnKMd/W7ha+RAmzoq4JKDvfz9PiipM/UXrAE0OSLxlQ==","signatures":[{"sig":"MEYCIQDlx9lY+xU7W/ADqJ8x/ypfvVRw1lTcd8vqbRKBJ+HknQIhAM24L5D+6QW5c4mV/IIEmhuAbHZeK/NEmj5ddKoAsDe6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":76890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnPOkCRA9TVsSAnZWagAAvrUP/2QKOJ+MUI90JZ/vH2xk\n2RgRzM47OgQ+ACCeM/1f7jSshtD9mVAmJZOwtTwZfiL6YnoTCL1g80hrwdQN\nanFGOvdTR5fJIfsi0vUuIu6wyb95l1BLjsNdk4867Fz4ohRQDyJByvH+cy4e\n7cKXTNCNLPZsvz5jpD7d2rI0LHvXRNM3xZsy/YhfJoQR0N9bGh6bj1fKOnH/\nZvpVId8tewHfo1Lwj5wZE1ASb/oraemdOqi1QRkyT5DLTvhkvfzFEU6dZhvt\n+t3DWWodXl61umICTUMOw/Gtt2qv7XGwkganI7ycyjUVHToO23vflD2LNPLO\nySNKrC2OYucbcTLqlukw2AWHqugdg+sfgwc+3SQoUAT6/Y90lGFgUuGKbtcG\nI+W693i9tiyrlJeabgK//b7cE1LWBnUziPxKxetB0H6fYvfBK34MRHIzGfa5\n516BgAGwM8LdeETjBOSwcgllJTkbONp20sQ2MOalkWhEwa4/9eTxs54p+OOe\n9WBAjTOzDhGvH1q5nFnSujjmrvLnOWFfCKpaUfQ62Alp7eOaJUYtf60Iw/Mc\nsds7qasr0Vv7L+HD/ALSvIvzfPtcixOPY3Qiw3uO+hKE1PYZYuwsLPlhu5gw\nizF98u8QuLcx4imS9uhq2IqaFmgsdfYdEgIcY8MGFy157aCps9Qh4xMw2Fxh\nXpNQ\r\n=cOV7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/discoverable.js","types":"./lib/declarations.d.ts","readme":"resin-discoverable-services\n===========================\n\n> Discover all resin registered services from the local network.\n\n[![npm version](https://badge.fury.io/js/resin-discoverable-services.svg)](http://badge.fury.io/js/resin-discoverable-services)\n[![dependencies](https://david-dm.org/resin-io-modules/resin-discoverable-services.svg)\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-discoverable-services.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-discoverable-services)\n[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/resin-io-modules/chat)\n\nRole\n----\n\nThe intention of this module is to provide a way to discover zeroconf services advertised by Resin.io components and devices on a local network.\n\nInstallation\n------------\n\nInstall `resin-discoverable-services` by running:\n\n```sh\n$ npm install --save resin-discoverable-services\n```\n\nAPI\n-------------\n\nThis module exports three methods:\n\n#### setRegistryPath(path)\n\nThis informs the module where to search for valid services to register with itself. By default this is the `services` directory within it.\nService definitions are defined as a set of nested directories, and take the form:\n\n    `[<subtype>/]<type>/<protocol>`\n\nA `tags.json` file may exist in the lowest level directory in a service definition and consists of an array of strings, each of which is a 'shortened name' for the service defined, eg.:\n\n    `[ 'serviceShortName', 'reallyShort' ]`\n\n#### enumerateServices([callback(error, services)])\n\nReturns the list of currently registered service definitions. Service definitions are returned in the standard service form:\n\n    `{ service: `[_<subtype>._sub]._<type>._protocol`, tags: [ [tagNames] ] }`\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nOnly registered services returned by the `enumerateServices()` method may be used to find services on the local network.\n\nShould a callback not be provided, then the method will return a resolvable Promise.\n\n#### findServices(services, [[timeout], [callback(error, services)])\n\nSearches for any occurrences of the specified services on the local network. Services are passed in the standard service form, or as a tag associated with that service.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nThe timeout value is the length of time in milliseconds that the module will search for before returning any results. If no value is passed, it defaults to 2000ms.\n\nThe method returns an array of services that conform to those registered. Each service information object consists of:\n\n* `Array[String] addresses`: An array denoting either an IPv4 or IPv6 addresses where the service is located.\n* `String name`: The name of the service, eg. `My Service`.\n* `String fqdn`: The fully qualified domain name of the service, eg. `My Service._ssh._tcp.local`.\n* `String host`: The machine node name where the service is located, eg. `myMachine.local`.\n* `Number port`: 222,\n* `String type`: The type of the service, eg. `ssh`.\n* `String protocol`: The protocol the service uses, eg. `tcp`.\n* `Array[String] subtypes`: An array of subtypes pertaining to this service, these will only be filled in should the specific subtype have been used in the method call.\n* `Object txt`: Any text records that go along with the service, eg. 'username'.\n* `Object referer`: An object containing:\n    - `String address`: Address of the referer.\n    - `String family`: IP family that the referer used (IPv4 or IPv6).\n    - `Number port`: The port on which the referer runs.\n\n#### publishServices(services, [options, [callback(error, services)]])\n\nPublishes any valid service to the network. If a call to this method is made then a corresponding call to `unpublishServices()` **must** be made before process exit to ensure any existing network sockets are finalised.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\n`services` is an array of objects, each of which contains:\n\n* `String identifier`: The standard service form of the service to publish, or a tag associated with that service.\n* `String name`: The name under which to publish the service, (eg. `Resin SSH`).\n* `Number port`: The port number to advertise the service as running on.\n* `String host`: An optional host name to publish the service as running on. This is useful for proxying.\n\n`options` is an object allowing publishing options to be passed:\n\n* `String mdnsInterface`: An IPv4 or IPv6 address of a current valid interface with which to bind the MDNS service to (if unset, first available interface).\n\n\n#### unpublishServices([callback])\n\nUnpublishes all services currently published to the network. This method **must** be called prior to process exit should any calls to `publishServices()` have been made.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nSupport\n-------\n\nIf you're having any problem, please [raise an issue](https://github.com/resin-io-modules/resin-discoverable-services/issues/new) on GitHub and the Resin.io team will be happy to help.\n\nTests\n-----\n\nRun the test suite by doing:\n\n```sh\n$ gulp test\n```\n\nContribute\n----------\n\n- Issue Tracker: [github.com/resin-io-modules/resin-discoverable-services/issues](https://github.com/resin-io-modules/resin-discoverable-services/issues)\n- Source Code: [github.com/resin-io-modules/resin-discoverable-services](https://github.com/resin-io-modules/resin-discoverable-services)\n\nBefore submitting a PR, please make sure that you include tests, and that [coffeelint](http://www.coffeelint.org/) runs without any warning:\n\n```sh\n$ gulp lint\n```\n\nLicense\n-------\n\nThe project is licensed under the Apache 2.0 license.\n","gitHead":"c5813b5045e10d6b18cfbabdb3ea311fc206683e","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee","prepublish":"require-npm4-to-publish","prepublishOnly":"npm test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T13:55:45.267Z"},"_npmVersion":"6.14.15","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"14.17.1","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0","dbus-native":"^0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0","require-npm4-to-publish":"^1.0.0"},"optionalDependencies":{"dbus-native":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services_2.0.2-lucianbuzzo-function-return-types-c5813b5045e10d6b18cfbabdb3ea311fc206683e_1637675940684_0.19620440187539412","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.2":{"name":"resin-discoverable-services","version":"2.0.2","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"4081c36dc9473630a78afc8c8d2ecfa325184d0f","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.2.tgz","fileCount":19,"integrity":"sha512-AnCO75UQ7rp8tS3nP9GjCdVAOpZUmm4xjCCXyRXNScUq4ogVNS5beWu5GimDskfAOKcoPu+rLklFPue46UL0Sg==","signatures":[{"sig":"MEUCIEsbSQBv5RGhn0pbdPXaDBamnKnnGs1nM4MrnIQ42q/gAiEA+9fuDGpblA5Vrlj49YIVhPjQiFfaMdDGBwcocG9XiPQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":76815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnPcuCRA9TVsSAnZWagAAhqEP/i0KW/X9D41l7GkJGX43\n0wVJjcxMQDe16pnrQMca6U3LYqHTlElnILtplCKjuGBKy+xzIcQxOczjlk2f\n5iTlvtx/yTkLrBGv64ed5bQkRRpaQ7aSdeIGxzlrNx7jiB3u5w9ycoNjQE50\nzHHzM2G6azAyxW+nREg02DZNsFoysA7BKE5opyoTDfbr0mnoM9rmvTVh/aBc\n2mQTrONS2Fd3T7DePjIZ7i3XT6XSrwrTzYIyXML/ycVIZE/ZotkLM5YofVDz\n1p55hV1UmdR362JRSiA4nKlLUY+7qXXXebTqdUlDtbSesHc12mlfb4BkUuUT\ngXjlpO2Hxe10PEoHo0RW0S/BLi/a7af8CR0ln7ZMUnjspZo0dXSgBN0Klt9n\nyjWR7FKu0uiWt9hE59JRQtS2Eqg7s5g9/+LBkgDg10iy9k/gChttRUpCDwlY\nxjRv4iiboejnPPJrs5rGUcupJwDo4INThxYSE0J8LDOWmdOefUCNWpSiBfX8\n8geoIstvtWgbePuuiiTyg243ap3mO7xKhMvKsIkWAjU2qfotnqUaC1p1UoH2\n9vmdHSATv1E95g4m81F32ayR0QbrBU9dAq/fWcZKuWSmDWn3Wh0MNYRwYA6c\nKbC6S96cuJveGYFSGLv2e6tWQqNKow7Kelb+Y8m0RW8E3kb9grvZC+ebtVvw\nix8W\r\n=Xa35\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/discoverable.js","types":"./lib/declarations.d.ts","gitHead":"fbf283dfe895c942dab743b1ae3f8abdbaff09a9","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee","prepublish":"require-npm4-to-publish","prepublishOnly":"npm test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T14:12:00.757Z"},"_npmVersion":"6.14.15","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"14.17.1","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/resin-io/bonjour.git","bluebird":"^3.0.0","dbus-native":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0","require-npm4-to-publish":"^1.0.0"},"optionalDependencies":{"dbus-native":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services_2.0.2_1637676846651_0.14205088917845443","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.3-lucianbuzzo-find-on-all-interfaces-7cf26aeef94faf92aca009316845ef8874e9b6f2":{"name":"resin-discoverable-services","version":"2.0.3-lucianbuzzo-find-on-all-interfaces-7cf26aeef94faf92aca009316845ef8874e9b6f2","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.3-lucianbuzzo-find-on-all-interfaces-7cf26aeef94faf92aca009316845ef8874e9b6f2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"29b3095a90ac1d7fa4c6df74e85ac51ec595275b","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.3-lucianbuzzo-find-on-all-interfaces-7cf26aeef94faf92aca009316845ef8874e9b6f2.tgz","fileCount":19,"integrity":"sha512-wlpuWD9cTAaB/XvP5RP3ZhIO2EI6is35oNNB7mv90IFyGIEnPLevbkEyL4IZHKxNe14IAJPYCy8dU0kVHyghSA==","signatures":[{"sig":"MEUCIBPF8n9sdPq3wBGMizjlmylMW2gGJWMX9zXW3l4N2lFeAiEAwoEiW6Z1qzlxbV/UIn4TVqSAACEmia6RtIpNJiKR0Pw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":79696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoNW9CRA9TVsSAnZWagAAjeEP/A4Y3TkBz8jqTAJ3FEX1\nlLoGFWvLlv+9k6jA8TNCHpLEs71FQT81gcGD/Jv4GMJ6s0OzonUfAhYRMOrL\n9Ujk2N0SaVolaqFAVT/yxIFzq8oL3jZ1PM1/Zib+Ve9pKaatUpgIG+5HeUBo\nqqvED8oYVR9mn6RvqKneXmnlTWTxCoYd2mrYUwnNMwYLD2z+7IJaBJgKioWE\n1i17JzPACEOzOOV7oHDTS1z5+x5ZHczPDEPstc9EX/Yl5vbowE1Tm18agyTK\no+AJGegFfxW/5SSEU9qSX5l30qfu+ZC7qGMt7NpEo/4uRzM43v7glDBqaxcO\nuEqXHTs8AhujMcQhfDTOpRk7npXVI8r5i6HtKHWUekx8yJJhyTibhE11UOvu\nTqQ4GrnI2lAQNmucRE/5N+FMBNz4YrFp18LQRPIr0uJKY9jyWZjZLEQJVDRD\nkraiBQWOa+6Ak2Jbv+7n3wRokglpuG9KlwkwKa3pEK4fP3iwd6GRRBef7Opx\nRGylcyC9WeKVK2mV6eecdynj5YUScDc8YA5d8tHK0h/37Wra1/bZImk3hUqo\n/yATg/UC2tVNFtePypMDx1h7dopEev55PzRsjO8mVazOhAphsuTqWv0SAq41\nFbrjM7f1M6JY7DaDZcY+aJrxCyP/xmJNF5WyXSipM7MzjYxh6sDKJmeRXn96\niYEl\r\n=DvM4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/discoverable.js","types":"./lib/declarations.d.ts","readme":"resin-discoverable-services\n===========================\n\n> Discover all resin registered services from the local network.\n\n[![npm version](https://badge.fury.io/js/resin-discoverable-services.svg)](http://badge.fury.io/js/resin-discoverable-services)\n[![dependencies](https://david-dm.org/resin-io-modules/resin-discoverable-services.svg)\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-discoverable-services.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-discoverable-services)\n[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/resin-io-modules/chat)\n\nRole\n----\n\nThe intention of this module is to provide a way to discover zeroconf services advertised by Resin.io components and devices on a local network.\n\nInstallation\n------------\n\nInstall `resin-discoverable-services` by running:\n\n```sh\n$ npm install --save resin-discoverable-services\n```\n\nAPI\n-------------\n\nThis module exports three methods:\n\n#### setRegistryPath(path)\n\nThis informs the module where to search for valid services to register with itself. By default this is the `services` directory within it.\nService definitions are defined as a set of nested directories, and take the form:\n\n    `[<subtype>/]<type>/<protocol>`\n\nA `tags.json` file may exist in the lowest level directory in a service definition and consists of an array of strings, each of which is a 'shortened name' for the service defined, eg.:\n\n    `[ 'serviceShortName', 'reallyShort' ]`\n\n#### enumerateServices([callback(error, services)])\n\nReturns the list of currently registered service definitions. Service definitions are returned in the standard service form:\n\n    `{ service: `[_<subtype>._sub]._<type>._protocol`, tags: [ [tagNames] ] }`\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nOnly registered services returned by the `enumerateServices()` method may be used to find services on the local network.\n\nShould a callback not be provided, then the method will return a resolvable Promise.\n\n#### findServices(services, [[timeout], [callback(error, services)])\n\nSearches for any occurrences of the specified services on the local network. Services are passed in the standard service form, or as a tag associated with that service.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nThe timeout value is the length of time in milliseconds that the module will search for before returning any results. If no value is passed, it defaults to 2000ms.\n\nThe method returns an array of services that conform to those registered. Each service information object consists of:\n\n* `Array[String] addresses`: An array denoting either an IPv4 or IPv6 addresses where the service is located.\n* `String name`: The name of the service, eg. `My Service`.\n* `String fqdn`: The fully qualified domain name of the service, eg. `My Service._ssh._tcp.local`.\n* `String host`: The machine node name where the service is located, eg. `myMachine.local`.\n* `Number port`: 222,\n* `String type`: The type of the service, eg. `ssh`.\n* `String protocol`: The protocol the service uses, eg. `tcp`.\n* `Array[String] subtypes`: An array of subtypes pertaining to this service, these will only be filled in should the specific subtype have been used in the method call.\n* `Object txt`: Any text records that go along with the service, eg. 'username'.\n* `Object referer`: An object containing:\n    - `String address`: Address of the referer.\n    - `String family`: IP family that the referer used (IPv4 or IPv6).\n    - `Number port`: The port on which the referer runs.\n\n#### publishServices(services, [options, [callback(error, services)]])\n\nPublishes any valid service to the network. If a call to this method is made then a corresponding call to `unpublishServices()` **must** be made before process exit to ensure any existing network sockets are finalised.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\n`services` is an array of objects, each of which contains:\n\n* `String identifier`: The standard service form of the service to publish, or a tag associated with that service.\n* `String name`: The name under which to publish the service, (eg. `Resin SSH`).\n* `Number port`: The port number to advertise the service as running on.\n* `String host`: An optional host name to publish the service as running on. This is useful for proxying.\n\n`options` is an object allowing publishing options to be passed:\n\n* `String mdnsInterface`: An IPv4 or IPv6 address of a current valid interface with which to bind the MDNS service to (if unset, first available interface).\n\n\n#### unpublishServices([callback])\n\nUnpublishes all services currently published to the network. This method **must** be called prior to process exit should any calls to `publishServices()` have been made.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nSupport\n-------\n\nIf you're having any problem, please [raise an issue](https://github.com/resin-io-modules/resin-discoverable-services/issues/new) on GitHub and the Resin.io team will be happy to help.\n\nTests\n-----\n\nRun the test suite by doing:\n\n```sh\n$ gulp test\n```\n\nContribute\n----------\n\n- Issue Tracker: [github.com/resin-io-modules/resin-discoverable-services/issues](https://github.com/resin-io-modules/resin-discoverable-services/issues)\n- Source Code: [github.com/resin-io-modules/resin-discoverable-services](https://github.com/resin-io-modules/resin-discoverable-services)\n\nBefore submitting a PR, please make sure that you include tests, and that [coffeelint](http://www.coffeelint.org/) runs without any warning:\n\n```sh\n$ gulp lint\n```\n\nLicense\n-------\n\nThe project is licensed under the Apache 2.0 license.\n","gitHead":"7cf26aeef94faf92aca009316845ef8874e9b6f2","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee","prepublish":"require-npm4-to-publish","prepublishOnly":"npm test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T12:36:06.034Z"},"_npmVersion":"6.14.15","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"14.17.1","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/resin-io/bonjour.git#fixed-mdns","bluebird":"^3.0.0","dbus-native":"^0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0","require-npm4-to-publish":"^1.0.0"},"optionalDependencies":{"dbus-native":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services_2.0.3-lucianbuzzo-find-on-all-interfaces-7cf26aeef94faf92aca009316845ef8874e9b6f2_1637930429202_0.44651899013425744","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.3":{"name":"resin-discoverable-services","version":"2.0.3","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"f7362b1cdd6bc68563395002e322969fed9d4014","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.3.tgz","fileCount":19,"integrity":"sha512-JdQHlV2TrkXEUofo8D9u3a2aVvz4W0jEBVqzJL1K+V7mNkue4UIPbKtM7e1K0k0vCAim6rjPsPiIdkttK8p4Qw==","signatures":[{"sig":"MEQCIFDboj9ATvIA9j7gx39qiDA3NvjXdd7aPpvFstSDjS3XAiAdgmkJ79ANYMqZpfe31nN6RfXmUa85OyGO2EQ67o3Oqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":79620,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoNfzCRA9TVsSAnZWagAAkT4P/390KyJhwnFNKzvImkA3\nKCDp9mvJe5Ggk8Mb78FHs9VbyiJvUcQ0B4iXjDxbQZoBBFUdTcj0uF1/6W41\nyBY5zKR/72jM0ilD1d/lvrz2fNDgwsWd3SvjmJcjcVjIdORQDTklRwX+xwOa\n/0Rzvlnr9tIXljBH3XjDl9HCDzM0WqBNULoXbl5yoN8bjPat0brYOmJ4O1EN\nXrUbYklfLFBDEQ2OIe2PtfSPvUH6Tv+UcrgHlkTlyYcNn8nFicLQUZ6gHyDg\nmjZ85g6MHyWaBrswnNHVmCcqanI0mCS0Bc6vYaJrhv4eMFbNxOBSJxP6SFuW\nYLjmGY5RvSSzR15y+GQdYZz+pLMBTAs13Ijj+NOnrnI8N5+8Jk7E+CON0Hwn\nhILXxRj0iPquUeb14v4zVtbstdwMKG0pg+xf7yaoDMW5YwHyaSULM0lwbnpl\nRI9sFGRxcBcKuI0X8q3Z5RYen3l0TwNfvwFmPqKIUKBNqSFY534sL30n+fcr\ndJfTIneBUUcnOmfeYtw+I3eLPGRRjIclWXkWKmGlDDhKeVHBBPZiQPwr3Bct\nRsaQtH1z2aZaVHehb6OSRHGDkTR4+4AXpuQytHPvXxaP7hEAcxnfxf39YJ0N\nSS+ARmB6g9Cdbd/hbkO2LN5PxKvmIEEK8WDHpxi5H0o4V7j9SzgNTbaDcz73\n8ZLs\r\n=emnx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/discoverable.js","types":"./lib/declarations.d.ts","gitHead":"e681d5683373e6d3cec04c7e365a656a589d011c","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee","prepublish":"require-npm4-to-publish","prepublishOnly":"npm test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T12:46:28.645Z"},"_npmVersion":"6.14.15","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"14.17.1","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/resin-io/bonjour.git#fixed-mdns","bluebird":"^3.0.0","dbus-native":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0","require-npm4-to-publish":"^1.0.0"},"optionalDependencies":{"dbus-native":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services_2.0.3_1637930995735_0.47590428073786684","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.4-build-flowzonify-c7736f9357219a3003c06b7ca0d93f602d71ba68-1":{"name":"resin-discoverable-services","version":"2.0.4-build-flowzonify-c7736f9357219a3003c06b7ca0d93f602d71ba68-1","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.4-build-flowzonify-c7736f9357219a3003c06b7ca0d93f602d71ba68-1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/resin-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"fecc7505045c3eb73f889a31d08d7142762a17e5","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.4-build-flowzonify-c7736f9357219a3003c06b7ca0d93f602d71ba68-1.tgz","fileCount":33,"integrity":"sha512-Q55OkaonIyBuV5XxhxdWYHlx/gUktoR1lXKppKfrFEnG81o/FTTjoBI/A8x8ucR6yf6Z3jDZY34Kbyg+8KSO9A==","signatures":[{"sig":"MEYCIQCKSQUwj0M3QgFWpp6m4KjnV9my+vFqsA17utJtoTG/wgIhAIDlgqIm/XMC32uG/NZ2ow8v6qsFkRvR3My2UBmzyNIT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkU9FNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr7+hAAi0CfIC6aI+zSM5jcincrOcOiTDRYnUNIX5FJtlIoi0mHy+ZG\r\nCVJ+9+A9jCckmFu0f+idQDxL2uWHByMG0bJfv/sAlkpeFZqi0l1chhs02QH5\r\nmMf699Od4JVnFB6iybrDnPxUBw+/v2wMkjyfnK65FZwyFpB1mRvB/SAMDL/4\r\nPNphSYiVeLkN12U5gFT8/v1FrRHhORSVBfEeFRbJYS7aAiPK2tDX4RU5TltH\r\nYG7S+hNebkyeQcJluZXNBjNWlyqdgQXS4f+SS0vL0WjCzSzmW75AUI6BjIPf\r\nd3FxdSi8i0K3Gc0UTMtlgZ/J7FZg8XS6gFb7hVZn6EJAfkygN4mJEeuzDIf5\r\nmJQT3HOA+QTFx0w6B/en3sgh3CUHCucT0S4mLmivGqFWFzK6nC/Y+/gdixrT\r\nlyj304BPt5MC6duL+tuQz4ER76nDfIfUVbZkUDqCI8kTw7N2/Vz4cc3Xnzwz\r\nxyBjJHqXijEkoHnUH9pokQkQ9DPWcMSNuSbYNH+ykLohmhM6BibmyTIs7oID\r\nc35M33lHzCX065z5pSeDzYTRVBjWqgSqPBBXUNbpEbgVsgB0Eawo0IRmFNNp\r\n5Wxd2HYjgH8tUPyFD4FmHBPP/FDIwn97DD50E0kpx8lWwx4jTuTeMOXXKrYj\r\nu8Vw+v87MiQr/RQF69iMTPsJ3O8+si4yUTw=\r\n=cLXK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/discoverable.js","_from":"file:/home/runner/work/_temp/resin-discoverable-services-2.0.4.tgz","types":"./lib/declarations.d.ts","readme":"resin-discoverable-services\n===========================\n\n> Discover all resin registered services from the local network.\n\n[![npm version](https://badge.fury.io/js/resin-discoverable-services.svg)](http://badge.fury.io/js/resin-discoverable-services)\n[![dependencies](https://david-dm.org/resin-io-modules/resin-discoverable-services.svg)\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-discoverable-services.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-discoverable-services)\n[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/resin-io-modules/chat)\n\nRole\n----\n\nThe intention of this module is to provide a way to discover zeroconf services advertised by Resin.io components and devices on a local network.\n\nInstallation\n------------\n\nInstall `resin-discoverable-services` by running:\n\n```sh\n$ npm install --save resin-discoverable-services\n```\n\nAPI\n-------------\n\nThis module exports three methods:\n\n#### setRegistryPath(path)\n\nThis informs the module where to search for valid services to register with itself. By default this is the `services` directory within it.\nService definitions are defined as a set of nested directories, and take the form:\n\n    `[<subtype>/]<type>/<protocol>`\n\nA `tags.json` file may exist in the lowest level directory in a service definition and consists of an array of strings, each of which is a 'shortened name' for the service defined, eg.:\n\n    `[ 'serviceShortName', 'reallyShort' ]`\n\n#### enumerateServices([callback(error, services)])\n\nReturns the list of currently registered service definitions. Service definitions are returned in the standard service form:\n\n    `{ service: `[_<subtype>._sub]._<type>._protocol`, tags: [ [tagNames] ] }`\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nOnly registered services returned by the `enumerateServices()` method may be used to find services on the local network.\n\nShould a callback not be provided, then the method will return a resolvable Promise.\n\n#### findServices(services, [[timeout], [callback(error, services)])\n\nSearches for any occurrences of the specified services on the local network. Services are passed in the standard service form, or as a tag associated with that service.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nThe timeout value is the length of time in milliseconds that the module will search for before returning any results. If no value is passed, it defaults to 2000ms.\n\nThe method returns an array of services that conform to those registered. Each service information object consists of:\n\n* `Array[String] addresses`: An array denoting either an IPv4 or IPv6 addresses where the service is located.\n* `String name`: The name of the service, eg. `My Service`.\n* `String fqdn`: The fully qualified domain name of the service, eg. `My Service._ssh._tcp.local`.\n* `String host`: The machine node name where the service is located, eg. `myMachine.local`.\n* `Number port`: 222,\n* `String type`: The type of the service, eg. `ssh`.\n* `String protocol`: The protocol the service uses, eg. `tcp`.\n* `Array[String] subtypes`: An array of subtypes pertaining to this service, these will only be filled in should the specific subtype have been used in the method call.\n* `Object txt`: Any text records that go along with the service, eg. 'username'.\n* `Object referer`: An object containing:\n    - `String address`: Address of the referer.\n    - `String family`: IP family that the referer used (IPv4 or IPv6).\n    - `Number port`: The port on which the referer runs.\n\n#### publishServices(services, [options, [callback(error, services)]])\n\nPublishes any valid service to the network. If a call to this method is made then a corresponding call to `unpublishServices()` **must** be made before process exit to ensure any existing network sockets are finalised.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\n`services` is an array of objects, each of which contains:\n\n* `String identifier`: The standard service form of the service to publish, or a tag associated with that service.\n* `String name`: The name under which to publish the service, (eg. `Resin SSH`).\n* `Number port`: The port number to advertise the service as running on.\n* `String host`: An optional host name to publish the service as running on. This is useful for proxying.\n\n`options` is an object allowing publishing options to be passed:\n\n* `String mdnsInterface`: An IPv4 or IPv6 address of a current valid interface with which to bind the MDNS service to (if unset, first available interface).\n\n\n#### unpublishServices([callback])\n\nUnpublishes all services currently published to the network. This method **must** be called prior to process exit should any calls to `publishServices()` have been made.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nSupport\n-------\n\nIf you're having any problem, please [raise an issue](https://github.com/resin-io-modules/resin-discoverable-services/issues/new) on GitHub and the Resin.io team will be happy to help.\n\nTests\n-----\n\nRun the test suite by doing:\n\n```sh\n$ gulp test\n```\n\nContribute\n----------\n\n- Issue Tracker: [github.com/resin-io-modules/resin-discoverable-services/issues](https://github.com/resin-io-modules/resin-discoverable-services/issues)\n- Source Code: [github.com/resin-io-modules/resin-discoverable-services](https://github.com/resin-io-modules/resin-discoverable-services)\n\nBefore submitting a PR, please make sure that you include tests, and that [coffeelint](http://www.coffeelint.org/) runs without any warning:\n\n```sh\n$ gulp lint\n```\n\nLicense\n-------\n\nThe project is licensed under the Apache 2.0 license.\n","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee","prepublish":"require-npm4-to-publish","prepublishOnly":"npm test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_resolved":"/home/runner/work/_temp/resin-discoverable-services-2.0.4.tgz","_integrity":"sha512-Q55OkaonIyBuV5XxhxdWYHlx/gUktoR1lXKppKfrFEnG81o/FTTjoBI/A8x8ucR6yf6Z3jDZY34Kbyg+8KSO9A==","repository":{"url":"git+https://github.com/resin-io-modules/resin-discoverable-services.git","type":"git"},"versionist":{"publishedAt":"2023-05-04T15:35:57.497Z"},"_npmVersion":"9.5.1","description":"Resin.io local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"18.16.0","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/resin-io/bonjour.git#fixed-mdns","bluebird":"^3.0.0","dbus-native":"^0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0","require-npm4-to-publish":"^1.0.0"},"optionalDependencies":{"dbus-native":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services_2.0.4-build-flowzonify-c7736f9357219a3003c06b7ca0d93f602d71ba68-1_1683214668871_0.02146209890641404","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.4-build-flowzonify-1192e416e974da27f554cb1756eb78b7be272b66-1":{"name":"resin-discoverable-services","version":"2.0.4-build-flowzonify-1192e416e974da27f554cb1756eb78b7be272b66-1","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.4-build-flowzonify-1192e416e974da27f554cb1756eb78b7be272b66-1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/balena-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"f44e6be9f292351c1bfd428f8ddf37940528d941","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.4-build-flowzonify-1192e416e974da27f554cb1756eb78b7be272b66-1.tgz","fileCount":33,"integrity":"sha512-MeBfVl9ZpDH9uLUp+2fxlNKOESmM4mZJ03zhSkm0wDqWp5m74AZl1QtC7uMI7QGOKKhqskLIzd/mh+WD291adQ==","signatures":[{"sig":"MEYCIQC0uOCmB4DHgKTb6tbH8rEdLomlnuANmHu7gDsVRcmumgIhAL2q4DFJVZExaa/Ub5wZZyfSx4X51nh7xFyWHMvKSiBF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkU9TpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo6VA//bt4Oc/v/PN/cGfocYWYx+Eu14ZAN8dDhNiIHJsdJppc8XIfm\r\nr4LklNlsaNMPku3y1MwAJzs9zL3EGSF9bN1920ICb1GS5RK8LpctJOqPrj16\r\n0/xo4F1GGkK40OpLSqxlWMkjt4h9Ej5mvMUOSX8P4d7xPYaT0N4V9cKhuzUd\r\nnNIYq3x60EvbSGybM69lTRAkHV5UwY5VGyfzAO+FFoq26s6zWiU1nQw7392K\r\nXOBSPMYHi+O4U0SZ7eKKu+b+OrsaVSfPqCtdgu4n2OhQ5ZqBkDwKPH/eGink\r\nRJb+dEYsYhnMDPhWTVoU4XSB81ywfR1J6RnoSUDpGrPietdbG5txOo36Quni\r\nVn6t5KCXYxX5gBvhJ6Ehl1zCAbkhTf/VIPh30WfLmIQL7lV9iyEno3EoVMyO\r\nut4xQtsRPo+NF3wx67qsKkRAdbSAs8l10YV2KsCfTn/xkr5LMo0ZJdXq534r\r\nB1pShZtOtQBYzgMX8Vqopd9yvU93O+ortZlCVNPWfjHhCBg1RZ9/ZEz3hSjC\r\nZSQgci/pN8BHLpRv8n2Cs4HQqU73CdCPsKcItFL3PzOtRrBajnLZ6D6O++C3\r\nBwZmWo41li9ENiPSbruVaXsqG/vZlvRDUgQRYIjBTlrC6FwjU0DuiCiE19Sp\r\nMucdngCYlpSEX487jsg0VdQb/mC6pVewYSE=\r\n=zgzZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/discoverable.js","_from":"file:/home/runner/work/_temp/resin-discoverable-services-2.0.4.tgz","types":"./lib/declarations.d.ts","readme":"resin-discoverable-services\n===========================\n\n> Discover all resin registered services from the local network.\n\n[![npm version](https://badge.fury.io/js/resin-discoverable-services.svg)](http://badge.fury.io/js/resin-discoverable-services)\n[![dependencies](https://david-dm.org/resin-io-modules/resin-discoverable-services.svg)\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-discoverable-services.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-discoverable-services)\n[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/resin-io-modules/chat)\n\nRole\n----\n\nThe intention of this module is to provide a way to discover zeroconf services advertised by Resin.io components and devices on a local network.\n\nInstallation\n------------\n\nInstall `resin-discoverable-services` by running:\n\n```sh\n$ npm install --save resin-discoverable-services\n```\n\nAPI\n-------------\n\nThis module exports three methods:\n\n#### setRegistryPath(path)\n\nThis informs the module where to search for valid services to register with itself. By default this is the `services` directory within it.\nService definitions are defined as a set of nested directories, and take the form:\n\n    `[<subtype>/]<type>/<protocol>`\n\nA `tags.json` file may exist in the lowest level directory in a service definition and consists of an array of strings, each of which is a 'shortened name' for the service defined, eg.:\n\n    `[ 'serviceShortName', 'reallyShort' ]`\n\n#### enumerateServices([callback(error, services)])\n\nReturns the list of currently registered service definitions. Service definitions are returned in the standard service form:\n\n    `{ service: `[_<subtype>._sub]._<type>._protocol`, tags: [ [tagNames] ] }`\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nOnly registered services returned by the `enumerateServices()` method may be used to find services on the local network.\n\nShould a callback not be provided, then the method will return a resolvable Promise.\n\n#### findServices(services, [[timeout], [callback(error, services)])\n\nSearches for any occurrences of the specified services on the local network. Services are passed in the standard service form, or as a tag associated with that service.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nThe timeout value is the length of time in milliseconds that the module will search for before returning any results. If no value is passed, it defaults to 2000ms.\n\nThe method returns an array of services that conform to those registered. Each service information object consists of:\n\n* `Array[String] addresses`: An array denoting either an IPv4 or IPv6 addresses where the service is located.\n* `String name`: The name of the service, eg. `My Service`.\n* `String fqdn`: The fully qualified domain name of the service, eg. `My Service._ssh._tcp.local`.\n* `String host`: The machine node name where the service is located, eg. `myMachine.local`.\n* `Number port`: 222,\n* `String type`: The type of the service, eg. `ssh`.\n* `String protocol`: The protocol the service uses, eg. `tcp`.\n* `Array[String] subtypes`: An array of subtypes pertaining to this service, these will only be filled in should the specific subtype have been used in the method call.\n* `Object txt`: Any text records that go along with the service, eg. 'username'.\n* `Object referer`: An object containing:\n    - `String address`: Address of the referer.\n    - `String family`: IP family that the referer used (IPv4 or IPv6).\n    - `Number port`: The port on which the referer runs.\n\n#### publishServices(services, [options, [callback(error, services)]])\n\nPublishes any valid service to the network. If a call to this method is made then a corresponding call to `unpublishServices()` **must** be made before process exit to ensure any existing network sockets are finalised.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\n`services` is an array of objects, each of which contains:\n\n* `String identifier`: The standard service form of the service to publish, or a tag associated with that service.\n* `String name`: The name under which to publish the service, (eg. `Resin SSH`).\n* `Number port`: The port number to advertise the service as running on.\n* `String host`: An optional host name to publish the service as running on. This is useful for proxying.\n\n`options` is an object allowing publishing options to be passed:\n\n* `String mdnsInterface`: An IPv4 or IPv6 address of a current valid interface with which to bind the MDNS service to (if unset, first available interface).\n\n\n#### unpublishServices([callback])\n\nUnpublishes all services currently published to the network. This method **must** be called prior to process exit should any calls to `publishServices()` have been made.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nSupport\n-------\n\nIf you're having any problem, please [raise an issue](https://github.com/resin-io-modules/resin-discoverable-services/issues/new) on GitHub and the Resin.io team will be happy to help.\n\nTests\n-----\n\nRun the test suite by doing:\n\n```sh\n$ gulp test\n```\n\nContribute\n----------\n\n- Issue Tracker: [github.com/resin-io-modules/resin-discoverable-services/issues](https://github.com/resin-io-modules/resin-discoverable-services/issues)\n- Source Code: [github.com/resin-io-modules/resin-discoverable-services](https://github.com/resin-io-modules/resin-discoverable-services)\n\nBefore submitting a PR, please make sure that you include tests, and that [coffeelint](http://www.coffeelint.org/) runs without any warning:\n\n```sh\n$ gulp lint\n```\n\nLicense\n-------\n\nThe project is licensed under the Apache 2.0 license.\n","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee","prepublishOnly":"npm test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_resolved":"/home/runner/work/_temp/resin-discoverable-services-2.0.4.tgz","_integrity":"sha512-MeBfVl9ZpDH9uLUp+2fxlNKOESmM4mZJ03zhSkm0wDqWp5m74AZl1QtC7uMI7QGOKKhqskLIzd/mh+WD291adQ==","repository":{"url":"git+https://github.com/balena-io-modules/resin-discoverable-services.git","type":"git"},"versionist":{"publishedAt":"2023-05-04T15:51:29.397Z"},"_npmVersion":"9.5.1","description":"Balena local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"18.16.0","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/balena-io-modules/bonjour.git#fixed-mdns","bluebird":"^3.0.0","dbus-native":"^0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"optionalDependencies":{"dbus-native":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services_2.0.4-build-flowzonify-1192e416e974da27f554cb1756eb78b7be272b66-1_1683215593627_0.4276082141296025","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.4-build-flowzonify-06c27c0a7114341680c7558ed8ad5424201dc5f1-1":{"name":"resin-discoverable-services","version":"2.0.4-build-flowzonify-06c27c0a7114341680c7558ed8ad5424201dc5f1-1","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.4-build-flowzonify-06c27c0a7114341680c7558ed8ad5424201dc5f1-1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/balena-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"00946b6e91a12902c6f180bff782c200e3e1033c","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.4-build-flowzonify-06c27c0a7114341680c7558ed8ad5424201dc5f1-1.tgz","fileCount":33,"integrity":"sha512-GDBrd/4VIkqVXWHie/yh67FMzFVYhGvbgqdWPu+t+VVN3InSZHm3htPq/cHJKX57eD0ATGY5HjaKa5ggmurF4Q==","signatures":[{"sig":"MEYCIQD66vK9qgB2V1w2+pTGI/HbW8havT48i13hM1zJdVyH8wIhAJQYcPfM0HnwcIcUSzkPsNPG9qDnCTJKVcS1BO1HEm4j","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkVAE2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpEohAAkOEcvmiEAxZJmJYgBT3xEL3pbIacmQSGQviFygyd/6S1Hu/v\r\nY9c0bqInYkUYxskiRCaIBnGbV6sZckbeqA42EIN4+gpdhd3vB3pN4ZfE4Gwj\r\nbAzYJY8g8ZwfIINXm39zziFniy/d8qkwbJQGonujsb0pr6jBzy8QB8Wp38O2\r\n4t6AkesL7Kb9145p6iYqBbCwvoNBNPwxezzYxQM+X9mlHKWGRAekHfir5jcm\r\n+18LXFIe/ubbTBEDr7A36WOOoQozRaQIhZB3T5piWoUQESfROKTYj96bzmAB\r\noIO/syH82w5jwl8CshroXTtwpXZk6EMzrPpyFHbXoCe7aVWVlrZeI/sJcgLG\r\nSwORciWfBqmAw61oHeFe5VjAgGScawvRpGI22jt/YCprwQZRvkP53mr2x3Xx\r\nyQDJEiKLIOeHw+BEQfN4dJStgyuRS857yfmIhXPqmDkUqv8gj7vMyV6a2Htt\r\nynh0cC3f0RAioEEpsBumRWuIbf9Hs0lTktyBItXLBROaQTdKlQNh8BiXYgFs\r\nE++mdiXr8I8BD/qKu2OVf+ihfVP6a0VsGT+Q/UftB9Dic97P4XZWpenNlW9N\r\ntEMtIugIcM/CzA54KODjdXjr860dj0uRzNO5ANS3IxTt33JxQWb0NqsZA8UI\r\ntmCo1o6fX1s42TXvz4mWF8+lyAxZQcN6Xhk=\r\n=nhZR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/discoverable.js","_from":"file:/home/runner/work/_temp/resin-discoverable-services-2.0.4.tgz","types":"./lib/declarations.d.ts","readme":"resin-discoverable-services\n===========================\n\n> Discover all resin registered services from the local network.\n\n[![npm version](https://badge.fury.io/js/resin-discoverable-services.svg)](http://badge.fury.io/js/resin-discoverable-services)\n[![dependencies](https://david-dm.org/resin-io-modules/resin-discoverable-services.svg)\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-discoverable-services.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-discoverable-services)\n[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/resin-io-modules/chat)\n\nRole\n----\n\nThe intention of this module is to provide a way to discover zeroconf services advertised by Resin.io components and devices on a local network.\n\nInstallation\n------------\n\nInstall `resin-discoverable-services` by running:\n\n```sh\n$ npm install --save resin-discoverable-services\n```\n\nAPI\n-------------\n\nThis module exports three methods:\n\n#### setRegistryPath(path)\n\nThis informs the module where to search for valid services to register with itself. By default this is the `services` directory within it.\nService definitions are defined as a set of nested directories, and take the form:\n\n    `[<subtype>/]<type>/<protocol>`\n\nA `tags.json` file may exist in the lowest level directory in a service definition and consists of an array of strings, each of which is a 'shortened name' for the service defined, eg.:\n\n    `[ 'serviceShortName', 'reallyShort' ]`\n\n#### enumerateServices([callback(error, services)])\n\nReturns the list of currently registered service definitions. Service definitions are returned in the standard service form:\n\n    `{ service: `[_<subtype>._sub]._<type>._protocol`, tags: [ [tagNames] ] }`\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nOnly registered services returned by the `enumerateServices()` method may be used to find services on the local network.\n\nShould a callback not be provided, then the method will return a resolvable Promise.\n\n#### findServices(services, [[timeout], [callback(error, services)])\n\nSearches for any occurrences of the specified services on the local network. Services are passed in the standard service form, or as a tag associated with that service.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nThe timeout value is the length of time in milliseconds that the module will search for before returning any results. If no value is passed, it defaults to 2000ms.\n\nThe method returns an array of services that conform to those registered. Each service information object consists of:\n\n* `Array[String] addresses`: An array denoting either an IPv4 or IPv6 addresses where the service is located.\n* `String name`: The name of the service, eg. `My Service`.\n* `String fqdn`: The fully qualified domain name of the service, eg. `My Service._ssh._tcp.local`.\n* `String host`: The machine node name where the service is located, eg. `myMachine.local`.\n* `Number port`: 222,\n* `String type`: The type of the service, eg. `ssh`.\n* `String protocol`: The protocol the service uses, eg. `tcp`.\n* `Array[String] subtypes`: An array of subtypes pertaining to this service, these will only be filled in should the specific subtype have been used in the method call.\n* `Object txt`: Any text records that go along with the service, eg. 'username'.\n* `Object referer`: An object containing:\n    - `String address`: Address of the referer.\n    - `String family`: IP family that the referer used (IPv4 or IPv6).\n    - `Number port`: The port on which the referer runs.\n\n#### publishServices(services, [options, [callback(error, services)]])\n\nPublishes any valid service to the network. If a call to this method is made then a corresponding call to `unpublishServices()` **must** be made before process exit to ensure any existing network sockets are finalised.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\n`services` is an array of objects, each of which contains:\n\n* `String identifier`: The standard service form of the service to publish, or a tag associated with that service.\n* `String name`: The name under which to publish the service, (eg. `Resin SSH`).\n* `Number port`: The port number to advertise the service as running on.\n* `String host`: An optional host name to publish the service as running on. This is useful for proxying.\n\n`options` is an object allowing publishing options to be passed:\n\n* `String mdnsInterface`: An IPv4 or IPv6 address of a current valid interface with which to bind the MDNS service to (if unset, first available interface).\n\n\n#### unpublishServices([callback])\n\nUnpublishes all services currently published to the network. This method **must** be called prior to process exit should any calls to `publishServices()` have been made.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nSupport\n-------\n\nIf you're having any problem, please [raise an issue](https://github.com/resin-io-modules/resin-discoverable-services/issues/new) on GitHub and the Resin.io team will be happy to help.\n\nTests\n-----\n\nRun the test suite by doing:\n\n```sh\n$ gulp test\n```\n\nContribute\n----------\n\n- Issue Tracker: [github.com/resin-io-modules/resin-discoverable-services/issues](https://github.com/resin-io-modules/resin-discoverable-services/issues)\n- Source Code: [github.com/resin-io-modules/resin-discoverable-services](https://github.com/resin-io-modules/resin-discoverable-services)\n\nBefore submitting a PR, please make sure that you include tests, and that [coffeelint](http://www.coffeelint.org/) runs without any warning:\n\n```sh\n$ gulp lint\n```\n\nLicense\n-------\n\nThe project is licensed under the Apache 2.0 license.\n","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_resolved":"/home/runner/work/_temp/resin-discoverable-services-2.0.4.tgz","_integrity":"sha512-GDBrd/4VIkqVXWHie/yh67FMzFVYhGvbgqdWPu+t+VVN3InSZHm3htPq/cHJKX57eD0ATGY5HjaKa5ggmurF4Q==","repository":{"url":"git+https://github.com/balena-io-modules/resin-discoverable-services.git","type":"git"},"versionist":{"publishedAt":"2023-05-04T19:00:25.666Z"},"_npmVersion":"9.5.1","description":"Balena local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"18.16.0","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/balena-io-modules/bonjour.git#fixed-mdns","bluebird":"^3.0.0","dbus-native":"^0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"optionalDependencies":{"dbus-native":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services_2.0.4-build-flowzonify-06c27c0a7114341680c7558ed8ad5424201dc5f1-1_1683226933942_0.5413092938600004","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.4":{"name":"resin-discoverable-services","version":"2.0.4","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/balena-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"c2716596582180d80fc3cdebc56310f483c88c62","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.4.tgz","fileCount":20,"integrity":"sha512-VTcofJsfFSL9jbu9Hh4By5HUTVfuRuSi8b4FgzGKRlzsXbe0jPHtmU/su1FXUGb8J1GmE3H3FYK9vHK2tyZFcw==","signatures":[{"sig":"MEQCIH0FaqI3dRmYHCzB//teeHWSwkrseVZWiPVllCyMP5ZDAiAimWpRTrFYoZ/c9cILlJvDGX0fYaRzgLIze+SoegGAZQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkVA9YACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpomg//TF/fd8EFB7/iP24HrajTv9sPBzrbSF5ugLuienC8BA4ULcjl\r\nNNona/k6AE1jlR14ksAVb/e6BrjI+l0OHlUcjePQA9wet45KIuoV60qq6tqd\r\nXWJXOAkBzKSTd29bUhvczRniIYwqiRX2M3k4CMYcxvMPJa8DCLTY8lWYCg5U\r\na08vPvk8TB1ujvDSybBn+36Rm7fczuF3Qq5K3Ao70HaH5ejmAdrbcVacKvsl\r\nVUs7Iw8bi6FhvBoL9dnw+I+dWAANHl0IWu9wakyVadWWPEb9V7Nj9ztc5aMG\r\nbVxC95iV84tVC4OZDJjI4C8jkGQW2EgnXskx6xwResAliIUclCu9hwZIkG1L\r\nlTl/gdDrUfq8gSECznqDEFDn1n5CGVv3d4VqeF8y3M83SxJCGQulVQbRuF//\r\nZP5ma/8Sy3rkPgEHJUabgZ/hH1eB2ziZ6rRK9bUNA9WGiTh6hCM9qNI/gPAC\r\nyXPKzsD/zX61Uc6PLf98avKcw43zg/XeSudg4wCeEmiC2j/QMUsX/vUCN9yi\r\nCcuYaU7QC2X9PBS6kflYlClpb+I9PbN4KYQmOtlFv65i4q3TOZ4HbXjcJ8Qt\r\nWxzW642rWerzl0dO44yhOZzAnHv74CxF9Z038WisGnEVydcNEsyPSS8WWyv1\r\nMfs6sAhSoomjZIoNzum4hT9iTiQS9xiQYy4=\r\n=LNVU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/discoverable.js","_from":"file:/home/runner/work/_temp/resin-discoverable-services-2.0.4.tgz","types":"./lib/declarations.d.ts","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_resolved":"/home/runner/work/_temp/resin-discoverable-services-2.0.4.tgz","_integrity":"sha512-VTcofJsfFSL9jbu9Hh4By5HUTVfuRuSi8b4FgzGKRlzsXbe0jPHtmU/su1FXUGb8J1GmE3H3FYK9vHK2tyZFcw==","repository":{"url":"git+https://github.com/balena-io-modules/resin-discoverable-services.git","type":"git"},"versionist":{"publishedAt":"2023-05-04T19:00:25.666Z"},"_npmVersion":"9.5.1","description":"Balena local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"18.16.0","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/balena-io-modules/bonjour.git#fixed-mdns","bluebird":"^3.0.0","dbus-native":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"optionalDependencies":{"dbus-native":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services_2.0.4_1683230552567_0.8143187873451112","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.5-build-removes-dead-code-597388eb64d3c628328029f8cc19029bb34223df-1":{"name":"resin-discoverable-services","version":"2.0.5-build-removes-dead-code-597388eb64d3c628328029f8cc19029bb34223df-1","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.5-build-removes-dead-code-597388eb64d3c628328029f8cc19029bb34223df-1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/balena-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"7b9f3552d7989c0a7e0d7f2805c9b481c4f79a4a","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.5-build-removes-dead-code-597388eb64d3c628328029f8cc19029bb34223df-1.tgz","fileCount":26,"integrity":"sha512-r2jWlK7c4HkKv2qIXJWjV5D++Gg3tit8f5V/mF/yig3mfYTwzrbAJybXHRy78En11cjcrSC5IzFtvPlgpCrhoQ==","signatures":[{"sig":"MEUCIQDlcNPYoA/GHuq4Tqp88HdLR86ngbuyh148HuZro785VgIgJmn7Ml69Cd3YLx9f/tXBYVOuYUEGM1NxNnOwCtMmRu0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":72971},"main":"build/discoverable.js","_from":"file:/home/runner/work/_temp/resin-discoverable-services-2.0.5.tgz","types":"./lib/declarations.d.ts","readme":"resin-discoverable-services\n===========================\n\n> Discover all resin registered services from the local network.\n\n[![npm version](https://badge.fury.io/js/resin-discoverable-services.svg)](http://badge.fury.io/js/resin-discoverable-services)\n[![dependencies](https://david-dm.org/resin-io-modules/resin-discoverable-services.svg)\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-discoverable-services.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-discoverable-services)\n[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/resin-io-modules/chat)\n\nRole\n----\n\nThe intention of this module is to provide a way to discover zeroconf services advertised by Resin.io components and devices on a local network.\n\nInstallation\n------------\n\nInstall `resin-discoverable-services` by running:\n\n```sh\n$ npm install --save resin-discoverable-services\n```\n\nAPI\n-------------\n\nThis module exports three methods:\n\n#### setRegistryPath(path)\n\nThis informs the module where to search for valid services to register with itself. By default this is the `services` directory within it.\nService definitions are defined as a set of nested directories, and take the form:\n\n    `[<subtype>/]<type>/<protocol>`\n\nA `tags.json` file may exist in the lowest level directory in a service definition and consists of an array of strings, each of which is a 'shortened name' for the service defined, eg.:\n\n    `[ 'serviceShortName', 'reallyShort' ]`\n\n#### enumerateServices([callback(error, services)])\n\nReturns the list of currently registered service definitions. Service definitions are returned in the standard service form:\n\n    `{ service: `[_<subtype>._sub]._<type>._protocol`, tags: [ [tagNames] ] }`\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nOnly registered services returned by the `enumerateServices()` method may be used to find services on the local network.\n\nShould a callback not be provided, then the method will return a resolvable Promise.\n\n#### findServices(services, [[timeout], [callback(error, services)])\n\nSearches for any occurrences of the specified services on the local network. Services are passed in the standard service form, or as a tag associated with that service.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nThe timeout value is the length of time in milliseconds that the module will search for before returning any results. If no value is passed, it defaults to 2000ms.\n\nThe method returns an array of services that conform to those registered. Each service information object consists of:\n\n* `Array[String] addresses`: An array denoting either an IPv4 or IPv6 addresses where the service is located.\n* `String name`: The name of the service, eg. `My Service`.\n* `String fqdn`: The fully qualified domain name of the service, eg. `My Service._ssh._tcp.local`.\n* `String host`: The machine node name where the service is located, eg. `myMachine.local`.\n* `Number port`: 222,\n* `String type`: The type of the service, eg. `ssh`.\n* `String protocol`: The protocol the service uses, eg. `tcp`.\n* `Array[String] subtypes`: An array of subtypes pertaining to this service, these will only be filled in should the specific subtype have been used in the method call.\n* `Object txt`: Any text records that go along with the service, eg. 'username'.\n* `Object referer`: An object containing:\n    - `String address`: Address of the referer.\n    - `String family`: IP family that the referer used (IPv4 or IPv6).\n    - `Number port`: The port on which the referer runs.\n\n#### publishServices(services, [options, [callback(error, services)]])\n\nPublishes any valid service to the network. If a call to this method is made then a corresponding call to `unpublishServices()` **must** be made before process exit to ensure any existing network sockets are finalised.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\n`services` is an array of objects, each of which contains:\n\n* `String identifier`: The standard service form of the service to publish, or a tag associated with that service.\n* `String name`: The name under which to publish the service, (eg. `Resin SSH`).\n* `Number port`: The port number to advertise the service as running on.\n* `String host`: An optional host name to publish the service as running on. This is useful for proxying.\n\n`options` is an object allowing publishing options to be passed:\n\n* `String mdnsInterface`: An IPv4 or IPv6 address of a current valid interface with which to bind the MDNS service to (if unset, first available interface).\n\n\n#### unpublishServices([callback])\n\nUnpublishes all services currently published to the network. This method **must** be called prior to process exit should any calls to `publishServices()` have been made.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nSupport\n-------\n\nIf you're having any problem, please [raise an issue](https://github.com/resin-io-modules/resin-discoverable-services/issues/new) on GitHub and the Resin.io team will be happy to help.\n\nTests\n-----\n\nRun the test suite by doing:\n\n```sh\n$ gulp test\n```\n\nContribute\n----------\n\n- Issue Tracker: [github.com/resin-io-modules/resin-discoverable-services/issues](https://github.com/resin-io-modules/resin-discoverable-services/issues)\n- Source Code: [github.com/resin-io-modules/resin-discoverable-services](https://github.com/resin-io-modules/resin-discoverable-services)\n\nBefore submitting a PR, please make sure that you include tests, and that [coffeelint](http://www.coffeelint.org/) runs without any warning:\n\n```sh\n$ gulp lint\n```\n\nLicense\n-------\n\nThe project is licensed under the Apache 2.0 license.\n","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_resolved":"/home/runner/work/_temp/resin-discoverable-services-2.0.5.tgz","_integrity":"sha512-r2jWlK7c4HkKv2qIXJWjV5D++Gg3tit8f5V/mF/yig3mfYTwzrbAJybXHRy78En11cjcrSC5IzFtvPlgpCrhoQ==","repository":{"url":"git+https://github.com/balena-io-modules/resin-discoverable-services.git","type":"git"},"versionist":{"publishedAt":"2024-07-09T11:00:42.423Z"},"_npmVersion":"10.7.0","description":"Balena local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"18.20.3","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/balena-io-modules/bonjour.git#fixed-mdns","bluebird":"^3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services_2.0.5-build-removes-dead-code-597388eb64d3c628328029f8cc19029bb34223df-1_1720522934915_0.25000631369377624","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.5":{"name":"resin-discoverable-services","version":"2.0.5","keywords":["resin","service","discovery"],"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","_id":"resin-discoverable-services@2.0.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/resin-discoverable-services","bugs":{"url":"https://github.com/balena-io-modules/resin-discoverable-services/issues"},"dist":{"shasum":"228b5632a122c69930b687cd9a56d8f86ba3bb98","tarball":"https://registry.npmjs.org/resin-discoverable-services/-/resin-discoverable-services-2.0.5.tgz","fileCount":15,"integrity":"sha512-LMLfyxrpVPSjHboHQT3w2DqquQfEEqJqXs5cjlUi/szyY218G2hjF+Lw0NYVcC1zsc/N/PcdzxohA9+ZKxQWYg==","signatures":[{"sig":"MEQCIESJMuXItnqOCbu2stsQYr+VTRx9IsRafkwCb8fwsP1pAiBGiBcDF06OqYG4pMMb8Tg5EobFGI1ZE3m1rxk3hlnaAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":72904},"main":"build/discoverable.js","_from":"file:/home/runner/work/_temp/resin-discoverable-services-2.0.5.tgz","types":"./lib/declarations.d.ts","scripts":{"lint":"resin-lint lib tests","test":"npm run build && npm run lint && npm run mocha","build":"rm -rf build/ && coffee -o build/ -c lib/","mocha":"mocha --compilers coffee:coffee-script/register tests/**/*.spec.coffee"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_resolved":"/home/runner/work/_temp/resin-discoverable-services-2.0.5.tgz","_integrity":"sha512-LMLfyxrpVPSjHboHQT3w2DqquQfEEqJqXs5cjlUi/szyY218G2hjF+Lw0NYVcC1zsc/N/PcdzxohA9+ZKxQWYg==","repository":{"url":"git+https://github.com/balena-io-modules/resin-discoverable-services.git","type":"git"},"versionist":{"publishedAt":"2024-07-09T11:00:42.423Z"},"_npmVersion":"10.7.0","description":"Balena local service discovery utilities","directories":{"test":"tests"},"_nodeVersion":"18.20.3","dependencies":{"ip":"^1.1.4","lodash":"^4.17.4","bonjour":"git+https://github.com/balena-io-modules/bonjour.git#fixed-mdns","bluebird":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","mocha":"^3.5.0","rmdir":"^1.2.0","mkdirp":"^0.5.1","mockery":"^1.7.0","mochainon":"^1.0.0","resin-lint":"^1.4.0","coffee-script":"~1.11.0","chai-as-promised":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-discoverable-services_2.0.5_1720535692945_0.15066797724214842","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."}},"time":{"created":"2016-10-07T15:51:29.674Z","modified":"2026-01-29T10:53:15.371Z","1.0.0":"2016-10-07T15:51:29.674Z","1.0.1":"2016-10-08T10:19:21.717Z","1.0.2":"2016-10-14T16:20:29.994Z","1.0.3":"2016-10-27T11:22:46.872Z","1.0.4":"2016-11-16T13:59:02.444Z","1.1.0":"2016-11-21T19:24:06.118Z","1.1.1":"2016-11-23T20:58:56.689Z","1.1.2":"2016-12-07T10:14:30.554Z","1.2.0":"2016-12-14T16:58:26.135Z","1.2.1":"2017-01-10T10:09:31.591Z","1.2.2":"2017-03-08T20:56:14.785Z","2.0.0":"2017-08-24T09:46:33.628Z","2.0.1":"2017-08-28T09:12:01.007Z","2.0.2-lucianbuzzo-function-return-types-c5813b5045e10d6b18cfbabdb3ea311fc206683e":"2021-11-23T13:59:00.847Z","2.0.2":"2021-11-23T14:14:06.832Z","2.0.3-lucianbuzzo-find-on-all-interfaces-7cf26aeef94faf92aca009316845ef8874e9b6f2":"2021-11-26T12:40:29.391Z","2.0.3":"2021-11-26T12:49:55.929Z","2.0.4-build-flowzonify-c7736f9357219a3003c06b7ca0d93f602d71ba68-1":"2023-05-04T15:37:49.047Z","2.0.4-build-flowzonify-1192e416e974da27f554cb1756eb78b7be272b66-1":"2023-05-04T15:53:13.912Z","2.0.4-build-flowzonify-06c27c0a7114341680c7558ed8ad5424201dc5f1-1":"2023-05-04T19:02:14.147Z","2.0.4":"2023-05-04T20:02:32.724Z","2.0.5-build-removes-dead-code-597388eb64d3c628328029f8cc19029bb34223df-1":"2024-07-09T11:02:15.084Z","2.0.5":"2024-07-09T14:34:53.179Z"},"bugs":{"url":"https://github.com/balena-io-modules/resin-discoverable-services/issues"},"author":{"name":"Heds Simons","email":"heds@resin.io"},"license":"Apache-2.0","homepage":"https://github.com/balena-io-modules/resin-discoverable-services","keywords":["resin","service","discovery"],"repository":{"url":"git+https://github.com/balena-io-modules/resin-discoverable-services.git","type":"git"},"description":"Balena local service discovery utilities","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"readme":"resin-discoverable-services\n===========================\n\n> Discover all resin registered services from the local network.\n\n[![npm version](https://badge.fury.io/js/resin-discoverable-services.svg)](http://badge.fury.io/js/resin-discoverable-services)\n[![dependencies](https://david-dm.org/resin-io-modules/resin-discoverable-services.svg)\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-discoverable-services.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-discoverable-services)\n[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/resin-io-modules/chat)\n\nRole\n----\n\nThe intention of this module is to provide a way to discover zeroconf services advertised by Resin.io components and devices on a local network.\n\nInstallation\n------------\n\nInstall `resin-discoverable-services` by running:\n\n```sh\n$ npm install --save resin-discoverable-services\n```\n\nAPI\n-------------\n\nThis module exports three methods:\n\n#### setRegistryPath(path)\n\nThis informs the module where to search for valid services to register with itself. By default this is the `services` directory within it.\nService definitions are defined as a set of nested directories, and take the form:\n\n    `[<subtype>/]<type>/<protocol>`\n\nA `tags.json` file may exist in the lowest level directory in a service definition and consists of an array of strings, each of which is a 'shortened name' for the service defined, eg.:\n\n    `[ 'serviceShortName', 'reallyShort' ]`\n\n#### enumerateServices([callback(error, services)])\n\nReturns the list of currently registered service definitions. Service definitions are returned in the standard service form:\n\n    `{ service: `[_<subtype>._sub]._<type>._protocol`, tags: [ [tagNames] ] }`\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nOnly registered services returned by the `enumerateServices()` method may be used to find services on the local network.\n\nShould a callback not be provided, then the method will return a resolvable Promise.\n\n#### findServices(services, [[timeout], [callback(error, services)])\n\nSearches for any occurrences of the specified services on the local network. Services are passed in the standard service form, or as a tag associated with that service.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nThe timeout value is the length of time in milliseconds that the module will search for before returning any results. If no value is passed, it defaults to 2000ms.\n\nThe method returns an array of services that conform to those registered. Each service information object consists of:\n\n* `Array[String] addresses`: An array denoting either an IPv4 or IPv6 addresses where the service is located.\n* `String name`: The name of the service, eg. `My Service`.\n* `String fqdn`: The fully qualified domain name of the service, eg. `My Service._ssh._tcp.local`.\n* `String host`: The machine node name where the service is located, eg. `myMachine.local`.\n* `Number port`: 222,\n* `String type`: The type of the service, eg. `ssh`.\n* `String protocol`: The protocol the service uses, eg. `tcp`.\n* `Array[String] subtypes`: An array of subtypes pertaining to this service, these will only be filled in should the specific subtype have been used in the method call.\n* `Object txt`: Any text records that go along with the service, eg. 'username'.\n* `Object referer`: An object containing:\n    - `String address`: Address of the referer.\n    - `String family`: IP family that the referer used (IPv4 or IPv6).\n    - `Number port`: The port on which the referer runs.\n\n#### publishServices(services, [options, [callback(error, services)]])\n\nPublishes any valid service to the network. If a call to this method is made then a corresponding call to `unpublishServices()` **must** be made before process exit to ensure any existing network sockets are finalised.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\n`services` is an array of objects, each of which contains:\n\n* `String identifier`: The standard service form of the service to publish, or a tag associated with that service.\n* `String name`: The name under which to publish the service, (eg. `Resin SSH`).\n* `Number port`: The port number to advertise the service as running on.\n* `String host`: An optional host name to publish the service as running on. This is useful for proxying.\n\n`options` is an object allowing publishing options to be passed:\n\n* `String mdnsInterface`: An IPv4 or IPv6 address of a current valid interface with which to bind the MDNS service to (if unset, first available interface).\n\n\n#### unpublishServices([callback])\n\nUnpublishes all services currently published to the network. This method **must** be called prior to process exit should any calls to `publishServices()` have been made.\n\n**Notice** Should a callback not be provided, then the method will return a resolvable Promise.\n\nSupport\n-------\n\nIf you're having any problem, please [raise an issue](https://github.com/resin-io-modules/resin-discoverable-services/issues/new) on GitHub and the Resin.io team will be happy to help.\n\nTests\n-----\n\nRun the test suite by doing:\n\n```sh\n$ gulp test\n```\n\nContribute\n----------\n\n- Issue Tracker: [github.com/resin-io-modules/resin-discoverable-services/issues](https://github.com/resin-io-modules/resin-discoverable-services/issues)\n- Source Code: [github.com/resin-io-modules/resin-discoverable-services](https://github.com/resin-io-modules/resin-discoverable-services)\n\nBefore submitting a PR, please make sure that you include tests, and that [coffeelint](http://www.coffeelint.org/) runs without any warning:\n\n```sh\n$ gulp lint\n```\n\nLicense\n-------\n\nThe project is licensed under the Apache 2.0 license.\n","readmeFilename":"README.md"}