{"_id":"gearmanode","_rev":"31-d77ddf5125f72640bb4f51bd3442c62f","name":"gearmanode","description":"Node.js library for the Gearman distributed job system with support for multiple servers","dist-tags":{"latest":"0.9.2"},"versions":{"0.1.0":{"name":"gearmanode","version":"0.1.0","description":"Node.js library for the Gearman distributed job system","keywords":["gearman","distributed"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"_id":"gearmanode@0.1.0","dist":{"shasum":"0a6c118b794d163eb1badcde9ab7d1f0fbf093dc","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.1.0.tgz","integrity":"sha512-uEyP7XqxWoQlgSAHbhmrfxeQFCLx6YIyJUzS2SpGF0tyjYkbTyKnVAVIBennIX5SihwXtqJ5uVFa/EbrDVxy4Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBqkGrX8EUfnwTiJHgnSAoVej2eXvAMzdqjxrLK+NloFAiBOBy5gQWuYJ4kL3lZwutEYUcoJ/nU7USgzoQ6JOh4Whw=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}]},"0.1.1":{"name":"gearmanode","version":"0.1.1","description":"Node.js library for the Gearman distributed job system","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"_id":"gearmanode@0.1.1","dist":{"shasum":"e740e82f6dd405c6449f8ceac00cd0c62e37259f","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.1.1.tgz","integrity":"sha512-RDL5fq4+M68oU64DS2lpedvffPLnVPXZWr2s7nurTTHX4ZaB1okuUlTLFcT918G7X4ZuTjogeMIVIXEUrfGmaw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGzIR0YvG219ZTakdlgZHZWbS59EO7WEFrOUT5e7bDiNAiAnUTJtEWy5vMX8yJ7fW5advWdtYOFPV0Zu7NY1yyq+1g=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}]},"0.1.2":{"name":"gearmanode","version":"0.1.2","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"homepage":"https://github.com/veny/GearmaNode","_id":"gearmanode@0.1.2","dist":{"shasum":"afaaf7a02d95f8ff847d8be575677901ca97a2cc","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.1.2.tgz","integrity":"sha512-hU5UUZesl9mcH/xsAmjHyGFfciG8NoTDz/S9MMV0a+5u9qeB8Oy2rIiwq30qg1HXcinnRAzOuvT7qeiUMGFUSg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID4qt/0M/cSIKbVu+eyePCVOKJefd5apuKVAEljkABcsAiEAxUig+y+9Z8tvaX+0xyJd4VmcB0Kxi0Z+cR6PQm0hlsQ="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}]},"0.1.3":{"name":"gearmanode","version":"0.1.3","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"homepage":"https://github.com/veny/GearmaNode","_id":"gearmanode@0.1.3","dist":{"shasum":"ca7e7862dca071b9080179d9e0273b6264484972","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.1.3.tgz","integrity":"sha512-PNz+gQHv3/H8JNOXSnCGv/95DuXUs0j/qH4rCZgVu6+f+VsYuVJFY0E5lQYRORcl9rZTuP08aDiHDOUVYCwRVg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIECOV3TqHXAB2vy4JumgWlmD8TtujoU/OhG66UbwTICNAiEA7Yj8M7R0Wr5Ima2st4rTBlB58tiXDctzti5tH6IZPRI="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}]},"0.1.4":{"name":"gearmanode","version":"0.1.4","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"homepage":"https://github.com/veny/GearmaNode","_id":"gearmanode@0.1.4","dist":{"shasum":"a483d91d5b76ce8ff23bd1c8deea7531f2812362","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.1.4.tgz","integrity":"sha512-7IgbhImzHPe2WVekao8yjqIHUNYvvpSYW3w3l3RydJlBg9f5SA3Rqah8ibqFiLAmqxFTAPUa8GxgvW9a/ZEzkA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGBCMm4RLEjxMC6+0v3HTTgaMxxsYxsqNH6mJpbwySX9AiEA/H7D9Wu/TKRu8MNwEaIr02JmXMKfQLlBvHGt4RcND+s="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}]},"0.1.5":{"name":"gearmanode","version":"0.1.5","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"homepage":"https://github.com/veny/GearmaNode","_id":"gearmanode@0.1.5","dist":{"shasum":"793d0037bc2e3992582340002cc4b14bd83a0c94","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.1.5.tgz","integrity":"sha512-Ag8s7cDEyYyIPAVRWUgzitTMbKRJnqynLGFffSgQcTqmT6bZ749BgrGx6glHTUsGAH38tYx9mfP6QRWrvL/7iw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHtUTgwXSHgjwwUVt5zEb0W8zOMiI+351ofql3DF56nVAiAcoeQIFmTcDbN0+nN3sNCMHo6ouTqeg2CpKUe6k71ipA=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}]},"0.1.6":{"name":"gearmanode","version":"0.1.6","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"gitHead":"93fe533fd561bc9fba9d298772d89a012db45797","homepage":"https://github.com/veny/GearmaNode","_id":"gearmanode@0.1.6","_shasum":"239fac2f3d73908d103c39552552bfc598dbdef4","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}],"dist":{"shasum":"239fac2f3d73908d103c39552552bfc598dbdef4","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.1.6.tgz","integrity":"sha512-Pl3wmXOE8YY3QTfqUkM2WC2Jtj/6/glDZEQa7yR8xM+hcWyKtGYjTRJBOq5UN8YK0jFO2fOoS4RCbfzpDZNiag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnaz6zZB2L1+sFoXrDIksFGnkZouG8inbzC+nw3HNyawIgFtw051BPgxZpX7BmZnV2sx7/HxM5U1FaoeMt936bw8E="}]}},"0.1.7":{"name":"gearmanode","version":"0.1.7","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"gitHead":"34652f6452e2d7c2793a753db91480c6c5627553","homepage":"https://github.com/veny/GearmaNode","_id":"gearmanode@0.1.7","_shasum":"ad8401296161828c7025c90aab8da1073b940345","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}],"dist":{"shasum":"ad8401296161828c7025c90aab8da1073b940345","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.1.7.tgz","integrity":"sha512-1+I4tkWz65I9Y5BjFvFKMRiE5M/TSuIG44yRc04uuX9yfW9ModE1HMDoPC8BKGhDbq+HLyOBjHzndZocN2dEGg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG+Xeif+H0wJtoMeKia8+Zn2t/IPLgIg5lGxNnpcyTvIAiEA7eVwK8SncniZrt09LmyOGCKJs+iziI2TePJyzEkfjpU="}]}},"0.1.8":{"name":"gearmanode","version":"0.1.8","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"gitHead":"821f185a3d74a25451be192ce221cd8106b63c41","homepage":"https://github.com/veny/GearmaNode","_id":"gearmanode@0.1.8","_shasum":"0df0c7d9eb9c4edbb014b7de7e0c5251a958ca15","_from":".","_npmVersion":"1.4.25","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}],"dist":{"shasum":"0df0c7d9eb9c4edbb014b7de7e0c5251a958ca15","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.1.8.tgz","integrity":"sha512-/MHCpDOOh3TvINbvZ/gSXw/9yTp0Ax2GunfjvZ3H6E9rq9Ai9Rp2eZlumHPB8lSfTYlFNdHv5gXDXqRAGSXeYQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqnScwd32CVCzx8qgz8GVnmBsUDXqqTXwOeQ61OHPgvAIgbDU1Ftq1bVaxfvDohI4yn9mUdKUQk1/g9v+eQCRQpQA="}]}},"0.2.0":{"name":"gearmanode","version":"0.2.0","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"gitHead":"08deb570b5102a65a152e7934fa7d02146997134","homepage":"https://github.com/veny/GearmaNode","_id":"gearmanode@0.2.0","_shasum":"6a5202c77497759a0239a8d467949f4d00678e09","_from":".","_npmVersion":"2.7.1","_nodeVersion":"0.12.0","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}],"dist":{"shasum":"6a5202c77497759a0239a8d467949f4d00678e09","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.2.0.tgz","integrity":"sha512-vv1bVVk5q/yrAUTQ16n+nsFj/iApbI/zgLmHLGg3idcnDEAlxHruHm3w21sd9F65RW+JTANcUpM5iRTVC/iIag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKuJeA+tPGRKZuqkS0xITSZXPMh2VgYJi1nGXx35qOkAIhAJF5YTwU/IHZ6hzaXr08UNNq/e+abFMxgLZRLtyatl+b"}]}},"0.2.1":{"name":"gearmanode","version":"0.2.1","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"gitHead":"8f404588658bc880c8f245b566e9a774c8e18dbd","homepage":"https://github.com/veny/GearmaNode","_id":"gearmanode@0.2.1","_shasum":"61cb317cd4054c8b96a3e9da92b43071d3459d82","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.1","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}],"dist":{"shasum":"61cb317cd4054c8b96a3e9da92b43071d3459d82","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.2.1.tgz","integrity":"sha512-9boODu4nsiQVHyEppR/eUbBdcfQLLvCx24aXY9v73SV6UxkiSu5wjYhUL1IwaTIf8JsSfFvU/arNIXijcc6rQw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHwCgDmdW5e5nBdDV3yhI2M3eONxBgv2281ewZ+EUoE5AiATn7qPE/2jJQKcb9Gmq6jG5OUqDEQBqtWIm7sdISPFHQ=="}]}},"0.2.2":{"name":"gearmanode","version":"0.2.2","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"https://github.com/veny/GearmaNode"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"gitHead":"4800d753c4eac9fa0dad7d9c5d66314d9c079a4d","homepage":"https://github.com/veny/GearmaNode","_id":"gearmanode@0.2.2","_shasum":"1a2c169ce160bfceea5f68f1da999c9bcfcabfd5","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.1","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}],"dist":{"shasum":"1a2c169ce160bfceea5f68f1da999c9bcfcabfd5","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.2.2.tgz","integrity":"sha512-2P+nSYroybr79mNcNCZmxCf8Yv+rifGc2dsdma+HIYIUuwTtVQ5yiupHA/6G/uXKjSdR5vZi+w+FsJd7f4n8XA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjYe3DFFa89L9jqi15iJaENZgkX2l08FEZ6g9gPIFSGAIhAJWS/06U7kvCpAHmhXaa7vPcuIiVDKsPCmD3J8mcvW+7"}]}},"0.9.0":{"name":"gearmanode","version":"0.9.0","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"git+https://github.com/veny/GearmaNode.git"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"gitHead":"e6db17a55b73fc237eabfeba72f3530854152417","homepage":"https://github.com/veny/GearmaNode#readme","_id":"gearmanode@0.9.0","_shasum":"372d89d28365003c8c488131504368ccdda37a89","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.4","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}],"dist":{"shasum":"372d89d28365003c8c488131504368ccdda37a89","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.9.0.tgz","integrity":"sha512-17Sx7o9rhWgnpUjW+GCOZIrkJ57QXmFW3sfMcNhloOPJABmZ9mlT0zR2gcmIW8u6kkWo67tn33S6wmgl72qUiQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEeZSsfsjmUy9/k+Q5xdWPmAkkGkrq8omkhuyzoLkxSQAiAS6KKsZA7PsuW2k06VKHyPtSOQOq/y5nCWGU+JT1M/Vw=="}]}},"0.9.2":{"name":"gearmanode","version":"0.9.2","description":"Node.js library for the Gearman distributed job system with support for multiple servers","keywords":["gearman","distributed","message queue","job","worker"],"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"main":"./lib/gearmanode","repository":{"type":"git","url":"git+https://github.com/veny/GearmaNode.git"},"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"engines":{"node":">=0.10.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}],"scripts":{"test":"mocha","doc":"jsdoc lib/gearmanode.js lib/gearmanode/*.js"},"dependencies":{"winston":">=0.7.1"},"devDependencies":{"mocha":">=1.10.0","should":">=1.2.2","sinon":">=1.7.3"},"files":["lib","README.md","LICENSE"],"gitHead":"a5216bd209cf707c865c777f5a805251700adcac","homepage":"https://github.com/veny/GearmaNode#readme","_id":"gearmanode@0.9.2","_shasum":"16d42d21a12acc3a1393476797376be8e13e0979","_from":".","_npmVersion":"3.5.2","_nodeVersion":"5.3.0","_npmUser":{"name":"veny","email":"vaclav.sykora@gmail.com"},"maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}],"dist":{"shasum":"16d42d21a12acc3a1393476797376be8e13e0979","tarball":"https://registry.npmjs.org/gearmanode/-/gearmanode-0.9.2.tgz","integrity":"sha512-0JOiLukHyaRFoBaNP0FbOx6BCIoj7dvtPR7gaivQechSrQTAQWmzKbLg6qAtHRGC+YKCsxntw68dzfO9+FMdFA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBTVcL6R3QZ4x1fDRPCq6Ic/lpL0Z63mtO7cL5dprfHVAiEAr3/d9BO67mvagL9ET2hox21gODDAUnctYbxq+xYQD94="}]}}},"readme":"            ____                                 _   _           _\n           / ___| ___  __ _ _ __ _ __ ___   __ _| \\ | | ___   __| | ___\n          | |  _ / _ \\/ _` | '__| '_ ` _ \\ / _` |  \\| |/ _ \\ / _` |/ _ \\\n          | |_| |  __/ (_| | |  | | | | | | (_| | |\\  | (_) | (_| |  __/\n           \\____|\\___|\\__,_|_|  |_| |_| |_|\\__,_|_| \\_|\\___/ \\__,_|\\___|\n\n\nNode.js library for the [Gearman](http://gearman.org/) distributed job system with support for multiple servers.\n\n\n[![npm version](https://badge.fury.io/js/gearmanode.svg)](http://badge.fury.io/js/gearmanode)\n[![Build Status](https://secure.travis-ci.org/veny/GearmaNode.png)](http://travis-ci.org/veny/GearmaNode)\n\n#### Breaking API change\n* v0.2.0\n * payload given back to client as `job.response` in `complete`, `workData`, `warning` and `exception` events: is instance of `Buffer` now, unless you provide `toStringEncoding` option in `submitJob`\n\n## Features\n* fully implemented [Gearman Protocol](http://gearman.org/protocol/)\n* support for multiple job servers\n * load balancing strategy (`sequence` or `round-robin`)\n * recover time (when a server node is down due to maintenance or a crash, load balancer will use the recover-time as a delay before retrying the downed job server)\n* support for binary data and miscellaneous string encoding\n* careful API documentation\n* rock solid tests\n * currently more than 130 test scenarios and 400 asserts\n* in depth tested with gearman clients and workers written in other languages (Ruby, PHP, Java)\n\n\n## Installation\n\n    > npm install gearmanode\n\n* Node package published here: https://npmjs.org/package/gearmanode\n\n\n## Changelog\nSee [version.js](https://github.com/veny/GearmaNode/tree/master/lib/gearmanode/version.js) for detailed changelog.\n\n\n## Usage\n\n* **Client**\n\n```javascript\nvar gearmanode = require('gearmanode');\nvar client = gearmanode.client();\n\nvar job = client.submitJob('reverse', 'hello world!');\njob.on('workData', function(data) {\n    console.log('WORK_DATA >>> ' + data);\n});\njob.on('complete', function() {\n    console.log('RESULT >>> ' + job.response);\n    client.close();\n});\n```\n\n* **Worker**\n\n```javascript\nvar gearmanode = require('gearmanode');\nvar worker = gearmanode.worker();\n\nworker.addFunction('reverse', function (job) {\n    job.sendWorkData(job.payload); // mirror input as partial result\n    job.workComplete(job.payload.toString().split(\"\").reverse().join(\"\"));\n});\n```\n\n### TOC\n\nSee [Geaman Manual](http://gearman.org/manual) to understand generic Gearman concepts.\nSee [example](https://github.com/veny/GearmaNode/tree/master/example) folder for more detailed samples.\n\n* [Client](#client)\n * [Submit job](#submit-job)\n * [Client events](#client-events)\n* [Worker](#worker)\n * [Register function](#register-function)\n * [Set Worker ID](#set-worker-id)\n * [Worker events](#worker-events)\n* [Job](#job)\n * [Job events](#job-events)\n* [Job server](#job-server)\n * [Job server events](#job-server-events)\n* [Binary data](#binary-data)\n* [Multiple servers](#multiple-servers)\n* [Error handling](#error-handling)\n* [Configuration](#configuration)\n * [Logger](#logger)\n\n### Client\n*The client is responsible for creating a job to be run and sending it to a job server. The job server will find a suitable worker that can run the job and forwards the job on.*\n-- Gearman Documentation --\n\nInstance of class `Client` must be created to connect a Gearman job server(s) and to make requests to perform some function on provided data.\n\n```javascript\nvar gearmanode = require('gearmanode');\nvar client = gearmanode.client();\n```\n\nBy default, the job server is expected on `localhost:4730`. Following options can be used for detailed configuration of the client:\n\n * **host** {string} hostname of single job server\n * **port** {number} port of single job server\n * **servers** {array} array of host,port pairs of multiple job servers\n * **loadBalancing** {'Sequence'|'RoundRobin'} name of load balancing strategy\n * **recoverTime** {number} delay in milliseconds before retrying the downed job server\n\n```javascript\n// special port\nclient = gearmanode.client({port: 4732});\n\n// two servers: foo.com:4731, bar.com:4732\nclient = gearmanode.client({servers: [{host: 'foo.com', port: 4731}, {host: 'bar.com', port: 4732}]});\n\n// two servers with default values: foo.com:4730, localhost:4731\nclient = gearmanode.client({servers: [{host: 'foo.com'}, {port: 4731}]});\n```\n\n#### Submit job\n\nClient submits job to a Gearman server and futher processed by a worker via `client#submitJob(name, payload, options)`\nwhere `name` is name of registered function a worker is to execute, `payload` is data to be processed\nand `options` are additional options as follows:\n\n* **background** {boolean} flag whether the job should be processed in background/asynchronous\n* **priority** {'HIGH'|'NORMAL'|'LOW'} priority in job server queue\n* **encoding** - {string} encoding if string data used, **DEPRECATED**: ignored, will be removed in next release, use Buffer with corresponding string encoding as payload\n* **unique** {string} unique identifiter for the job\n* **toStringEncoding** {string} if given received response will be converted to `String` with this encoding, otherwise payload turned over as `Buffer`\n\n```javascript\n// by default foreground job with normal priority\nvar job = client.submitJob('reverse', 'hello world!');\n\n// background job\nvar job = client.submitJob('reverse', 'hello world!', {background: true});\n\n// full configured job\nvar job = client.submitJob('reverse', 'hello world!', {background: false, priority: 'HIGH', unique: 'FooBazBar', toStringEncoding: 'ascii'});\n```\n\nClient-side processing of job is managed via emitted events. See [Job events](#job-events) for more info.\n\n```javascript\nvar client = gearmanode.client();\nvar job = client.submitJob('reverse', 'hi');\njob.on('complete', function() {\n    console.log('RESULT: ' + job.response);\n    client.close();\n});\n```\n\nA client object should be closed if no more needed to release all its associated resources and socket connections. See the sample above.\n\n#### Client events\n* **socketConnect** - when a job server connected (physical connection is lazy opened by first data sending), has parameter **job server UID**\n* **socketDisconnect** - when connection to a job server terminated, has parameter **job server UID** and optional **Error** in case of an unexpected wrong termination\n* **socketError** - when a socket problem occurs (connection failure, broken pipe, connection terminated by other end, ...), has parameter **job server UID** and **Error**\n* **jobServerError** - when an associated job server encounters an error and needs to notify the client with packet ERROR (19), has parameters **jobServerUid**, **code**, **message**\n* **close** - when Client#close() called to end the client for future use and to release all its associated resources\n* **error** - when an unrecoverable error occured (e.g. illegal client's state, malformed data ...), has parameter **Error**\n\n\n### Worker\n*The worker performs the work requested by the client and sends a response to the client through the job server.*\n-- Gearman Documentation --\n\nInstance of class `Worker` must be created to connect a Gearman job server(s), where it then informs the server(s) of all different functions the Worker is capable of doing.\n\n```javascript\nvar gearmanode = require('gearmanode');\nvar worker = gearmanode.worker();\n```\nBy default, the job server is expected on `localhost:4730`. Following options can be used for detailed configuration of the worker:\n\n * **host** [see Client](#client)\n * **port** [see Client](#client)\n * **servers** [see Client](#client)\n * **withUnique** {boolean} flag whether a job will be grabbed with the client assigned unique ID\n\n#### Register function\n\nA function the worker is able to perform can be registered via `worker#addFunction(name, callback, options)`\nwhere `name` is a symbolic name of the function, `callback` is a function to be run when a job will be received\nand `options` are additional options as follows:\n\n* **timeout** {number} timeout value in seconds on how long the job is allowed to run, thereafter the job server will mark the job as failed and notify any listening clients\n* **toStringEncoding** {string} if given received payload will be converted to `String` with this encoding, otherwise payload turned over as `Buffer`\n\nThe worker function `callback` gets parameter [Job](#job) which is:\n\n* job event emitter (see [Job events](#job-events))\n* value object to turn over job's parameters\n* interface to send job notification/information to the job server\n\n```javascript\nworker.addFunction('reverse', function (job) {\n    var rslt = job.payload.toString().split(\"\").reverse().join(\"\");\n    job.workComplete(rslt);\n});\n\n// or with Timeout and conversion to String\n\nworker.addFunction('reverse', function (job) {\n    var rslt = job.payload.toString().split(\"\").reverse().join(\"\");\n    job.workComplete(rslt);\n}, {timeout: 10, toStringEncoding: 'ascii'});\n\n```\nIt tries to connect to ALL job servers and fires `error` if one registration fails.\n\nA registered function can be unregistered via `worker#removeFunction`.\nCall `Worker#resetAbilities` to notify the server(s) that the worker is no longer able to do any functions it previously registered.\n\n#### Set Worker ID\n\nThis method sets the worker ID in all job servers so monitoring and reporting commands can uniquely identify the various workers.\nParameter `workerId` has to be a non-blank string with no whitespaces.\n\n```javascript\nworker.setWorkerId('FooBazBar');\n```\n\n#### Worker events\n* **socketConnect** - when a job server connected (physical connection is lazy opened by first data sending), has parameter **job server UID**\n* **socketDisconnect** - when connection to a job server terminated, has parameter **job server UID** and optional **Error** in case of an unexpected wrong termination\n* **socketError** - when a socket problem occurs (connection failure, broken pipe, connection terminated by other end, ...), has parameter **job server UID** and **Error**\n* **jobServerError** - whenever an associated job server encounters an error and needs to notify the worker with packet ERROR (19), has parameters **jobServerUid**, **code**, **message**\n* **close** - when Worker#close() called to close the worker for future use and to release all its associated resources\n* **error** - when a fatal error occurred while processing job (e.g. illegal worker's state, socket problem, ...) or job server encounters an error and needs to notify client, has parameter **Error**\n\n\n### Job\n\nThe `Job` object is an encapsulation of job's attributes and interface for next communication with job server.\nAdditionally is the object en emitter of events corresponding to job's life cycle (see [Job events](#job-events)).\n\nThe `job` has following getters\n\n* **name** - name of the function, [Client/Worker]\n* **payload** - transmited/received data (Buffer or String) [Client/Worker]\n* **response** - data that is returned to the client as a response if job is done by a worker [Client]\n* **jobServerUid** - unique identification (UID) of the job server that transmited the job [Client/Worker]\n* **handle** - unique handle assigned by job server when job created [Client/Worker]\n* **encoding** - encoding to use [Client] **DEPRECATED**: ignored, will be removed in next release, use Buffer with corresponding string encoding as payload\n* **unique** - unique identifier assigned by client [Worker]\n\nand methods\n\n* **getStatus** - sends request to get status of a background job [Client]\n* **workComplete** - sends a notification to the server (and any listening clients) that the job completed successfully [Worker]\n* **sendWorkData** - sends updates or partial results [Worker]\n* **reportStatus** - reports job's status to the job server [Worker]\n* **reportWarning** - sends a warning explicitly to the job server [Worker]\n* **reportError** - to indicate that the job failed [Worker]\n* **reportException** - to indicate that the job failed with exception (deprecated, provided for backwards compatibility) [Worker]\n\n#### Job events\n* **submited** - when job submited via a job server; server UID stored on the job; has no parameter [Client]\n* **created** - when response to one of the SUBMIT_JOB* packets arrived and job handle assigned; has no parameter [Client]\n* **status** - to update status information of a submitted jobs [Client]\n * in response to a client's request for a **background** job\n * status update propagated from worker to client in case of a **non-background** job\n * has parameter **status** with attributes: known, running, percent_done_num, percent_done_den (see protocol specification for more info)\n* **workData** - to update the client with partial data from a running job, has parameter **data** [Client]\n* **warning** - to update the client with a warning, has parameter **data** [Client]\n* **complete** - when the non-background job completed successfully, has no parameter [Client]\n* **failed** - when a job has been canceled by invoking Job#reportError on worker side, has no parameter [Client]\n* **exception** - when the job failed with the an exception, has parameter **text of exception** [Client]\n* **timeout** - when the job has been canceled due to timeout, has no parameter [Client/Worker]\n* **close** - when Job#close() called or when the job forcible closed by shutdown of client or worker, has no parameter [Client/Worker]\n* **error** - when communication with job server failed, has parameter **Error** object [Client/Worker]\n\n\n### Job server\nClass `JobServer` represents an abstraction to Gearman job server (gearmand).\nAccessible job server(s) are stored in array `jobServer` on instance of Client/Worker.\nThe class introduces following methods:\n\n* **echo** - sends the job server request that will be echoed back in response\n* **setOption** - sends the job server request to set an option for the connection in the job server\n\n```javascript\nvar client = gearmanode.client();\nvar js = client.jobServers[0];\n\njs.once('echo', function(resp) {\n    console.log('ECHO: response=' + resp);\n    client.close();\n});\njs.echo('ping')\n```\n\n#### Job server events\n* **echo** - when response to ECHO_REQ packet arrived, has parameter **data** which is opaque data echoed back in response\n* **option** - issued when an option for the connection in the job server was successfully set, has parameter **name** of the option that was set\n* **jobServerError** - whenever the job server encounters an error, has parameters **code**, **message**\n\n\n### Binary data\nBoth binary data and text with various encoding are supported. By default the data delivered to client and worker are `Buffer` objects.\nYou can change this approach by providing `toStringEncoding` option in `Client#submitJob` or `Worker#addFunction`.\nSee following snippets of code or [test-all-stack.js](https://github.com/veny/GearmaNode/blob/master/test/test-all-stack.js) for more inspiration.\n\n```javascript\n// send text with default encoding; Job#response will be a Buffer object\nclient.submitJob('reverse', '123');\n\n// send text with given encoding; Job#response will be a Buffer object\nclient.submitJob('reverse', Buffer('123', 'ascii').toString());\n\n// send text with given encoding; Job#response will be a String object with ASCII encoding\nclient.submitJob('reverse', '123', {toStringEncoding: 'ascii'});\n// and receive text on Worker; Job#payload will be a String object with ASCII encoding\nworker.addFunction('reverse', function (job) {\n    job.workComplete(job.payload.split(\"\").reverse().join(\"\"))\n}, {toStringEncoding: 'ascii'});\n\n// send binary data\nclient.submitJob('reverse', new Buffer([49, 50, 51]));\n```\n\n\n### Multiple servers\nMany of Gearman job servers can be started for both high-availability and load balancing.\n\n[Client](#client) is able to communicate with multiple servers with one of the following load balancing strategy:\n\n* default mode is `Sequence` which calls job server nodes in the order of nodes defined by the client initialization (next node will be used if the current one fails)\n* `RoundRobin` assigns work in round-robin order per nodes defined by the client initialization.\n\n```javascript\n// default load balancer\nclient = gearmanode.client({ servers: [{host: 'foo.com'}, {port: 4731}] });\n\n// desired load balancer and recover time\nclient = gearmanode.client({ servers: [{host: 'foo.com'}, {port: 4731}], loadBalancing: 'RoundRobin', recoverTime: 10000 });\n```\n\n[Worker](#worker) can be initialized with multiple servers in order to register a function on each of them.\n\n### Error handling\nAlthough exceptions are supported in JavaScript and they can be used to communicate an error, due to asynchronous concept of Node.js it can be a bad idea.\nAccording to Node.js best practices following error handling is introduced in GearmaNode.\n\n#### Synchronous errors\nA synchronous code returns an `Error` object if something goes wrong. This happens mostly in input value validation.\n\n#### Asynchronous errors\nIn asynchronous code an error event will be emitted via `EventEmitter` on corresponding object if something goes wrong.\nThis happens mostly by network communication failure or if a gearman service fails.\n\n### Configuration\n\n#### Logger\n`Winston` library is used for logging. See the [project page](https://github.com/flatiron/winston) for details.\n\nThe `GearmaNode` library registers following loggers:\n\n* Client\n* Worker\n* JobServer\n* Job\n* LBStrategy\n* protocol\n\nYou can configure the logger in this way:\n\n```javascript\ngearmanode.Client.logger.transports.console.level = 'info';\n````\n\n\n## Class diagram\n\n[![](https://raw.github.com/veny/GearmaNode/master/ooad/Classes.png)](https://raw.github.com/veny/GearmaNode/master/ooad/Classes.png)\n\n\n## Tests\n\n    > cd /path/to/repository\n    > mocha\n\nMake sure before starting the tests:\n\n* job server is running on localhost:4730\n* `mocha` test framework is installed\n\n\n## Author\n\n* vaclav.sykora@gmail.com\n* https://plus.google.com/115674031373998885915\n\n\n## License\n\n* [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)\n* see [LICENSE](https://github.com/veny/GearmaNode/tree/master/LICENSE) file for more details\n","maintainers":[{"name":"veny","email":"vaclav.sykora@gmail.com"}],"time":{"modified":"2022-06-18T05:11:31.628Z","created":"2013-11-10T16:25:15.406Z","0.1.0":"2013-11-10T16:25:19.286Z","0.1.1":"2013-11-12T20:10:38.411Z","0.1.2":"2013-11-27T20:21:28.201Z","0.1.3":"2014-02-20T07:28:32.395Z","0.1.4":"2014-02-27T21:42:45.773Z","0.1.5":"2014-03-20T08:06:13.051Z","0.1.6":"2014-06-17T19:51:05.863Z","0.1.7":"2014-07-14T18:43:51.754Z","0.1.8":"2014-08-24T20:37:05.369Z","0.2.0":"2015-03-23T17:01:30.231Z","0.2.1":"2015-04-01T15:27:46.447Z","0.2.2":"2015-04-02T19:06:24.546Z","0.9.0":"2015-06-19T15:01:17.331Z","0.9.2":"2015-12-21T15:55:35.270Z"},"author":{"name":"Vaclav Sykora","email":"vaclav.sykora@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/veny/GearmaNode.git"},"readmeFilename":"README.md","homepage":"https://github.com/veny/GearmaNode#readme","keywords":["gearman","distributed","message queue","job","worker"],"bugs":{"url":"https://github.com/veny/GearmaNode/issues"},"users":{"mcharytoniuk":true,"steevhise":true}}