{"_id":"muhb","_rev":"42-ae0a8ede5d0a0095f664c487bf5e3005","name":"muhb","dist-tags":{"latest":"3.2.1","beta":"2.0.3-beta-1","rc":"3.1.3-rc2"},"versions":{"0.0.0":{"name":"muhb","version":"0.0.0","description":"A simple set of functions for coding easy to read HTTP requests.","main":"index.js","scripts":{"test":"mocha -b --no-diff test/spec.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple"],"author":{"name":"gcsboss"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"94fcbd5b2a63755e93a058b10b6131a344ccb8ed","_id":"muhb@0.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"dist":{"integrity":"sha512-ChEPUsyQ2y5IeaBVLR3B/dvd1rEt4UdsUVQijn/pNmn5I+frEAeeXqDkR/xTSa5NIPTCjNN1+KddSZA69bX3vA==","shasum":"513eb9cdf4897f63a7b321e8b51745356922a495","tarball":"https://registry.npmjs.org/muhb/-/muhb-0.0.0.tgz","fileCount":8,"unpackedSize":11147,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmCn0CRA9TVsSAnZWagAAcYMP/0IViZ7nLjzOq6FoljCQ\ninGADNF16ZAUUrwSDzL9PJZvApt9H96GCKx4gyIdHdElVyVDOVriEQqwCc3N\n41psERCbLv3zsprBV3Mi3dBTn5hPQRGPnrdKLrSjyH6B+eO9O+xY9TE7/0l8\nlhdjzSXpwIHvnZjckCx681jPydJqW5iAEZylpeajUaX+agnpVzgAty5oEi5y\nfDKYQIfg5hDfCovaePHd0M5QkbT+y7434nQ55P4nchlVM4TSzzAKy0JibhuF\nEGkBhnkYlZoT8sHwJYi2tr4sYHVpbubqtpxy3FX23/ilHpJG1BS6j0rtUiIK\nBHjg54kjt+tTYrLFk/oCFCFIg3qcALoif+q/jv8YS4jEQEit3mt+deuDR9K8\ngZHM3BqIRD/MZ2RdCMeMu0VgFml7vbncee1r/wHTnG0nWEU8esjWvARgYb+5\nKn1BmFDVIhJsLYrPbL0fhiANHwot3ZlahcgV+Nxr5htz5SdD2aKz3K7AVy8l\nUoBh2kgAgeM2Jn+2++4sc8Y4BIzx5I9wr15Gs4gA4/FtD9A+MXnxFqs7UQKm\nkAFslaAlIYOrKdmFBzhi7cSZKS93SlLZpVLKqfoJPTECvv8mUba3NEtw/njE\nJGuN3Gw+sIoanSxpTbO+LHdFvi5oKI0BksXupYg8q7IK3rQYd7PI6Aw2p73J\nfu7y\r\n=1RWs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNET+Io/2EGtVjsCoLfS2dj6VOeuNsniABDiNlJ8M3aQIgSLKUuoS8X+aKygPCHZz44vPP7mlEtmc9kL+oz1+pi3w="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_0.0.0_1536698867681_0.8449071361403842"},"_hasShrinkwrap":false},"0.0.1":{"name":"muhb","version":"0.0.1","description":"A simple set of functions for coding easy to read HTTP requests.","main":"lib/index.js","scripts":{"test":"mocha -b --no-diff test/spec.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple"],"author":{"name":"gcsboss"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"f3e3e5f0b2faa033a75ac9757452fc029d6d33dd","_id":"muhb@0.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"dist":{"integrity":"sha512-DQXA36Dh1RV+EnKvIqKnWZSByD/yDrTr5arqv/xSC6J/JpBJ4/0ycJVw0Wp70SkaO0AJU35S3H6NKhtGRnDeBQ==","shasum":"2de6f498605269855cad0525ee8c0053a858aa3c","tarball":"https://registry.npmjs.org/muhb/-/muhb-0.0.1.tgz","fileCount":8,"unpackedSize":10873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmUxzCRA9TVsSAnZWagAAMSgP/id6pI81KtDPI+/pR50r\nqm7qVeEP79pxss7ROv2zHEdiQ/U366MzXDbEYszkmHbeQQFAOr8E+TCswOI8\n15+LplhnOW7e2u+IdYFz6k4Sqs5jFqhBl7boGWv3rGo0rYvg4IPl9IAdkACo\n8QP5kn2OXriYdwPFD4HUleghbMNNI0KzZge9B45MER+kkM5DcscsF8pmbn8F\nTCVUt6tNdjcZR4zEgUM2D0plUu7PfPG607swZYvAmgrkhqjWWtAX5ZpPdvmx\nwyahv65a74yw5q+YROIsTUX7k6xpVB/22h/cI32rXoNgRh2CWHVDRiIoPKBG\nQoz+QmFQLQ8Me5tZggIC7+WkI6HdcbXdkg/3qjQVhfROwr+YU/juNY+wJTNj\nx3gAUqFIvIP/EI53GLzHelW4+ZIKIUA2Bfy47fxLQK9yHwNkJ/iEdTX9UQ12\n1HHngvHHSAX1XdmygKE7dplT4cKDsntRjDy5xm9FohRcvNDEa0hU2Ow02B0S\n7YyuKRp+g/JOvm1E0zCgfr5ikD4mBdkvZK658aXGFIQ839dfhzfWk865TSRC\nVgcvT0CSDkfECi3aeB7vnd9jy5qZhkgrZ4om9NylrA4bZJAzNP725XftWqc2\ncVUBfnwDcVK4t8s/yr/7VJYasX2sWRSp5r9ZC7xDFkjXM1hC/MoLnq7dGh45\n6nyx\r\n=2SKM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDycBymKUDwaucTBpMNN5PCCIP0QAdjC8/q7v8ke4cdCQIhAMsZfNSw02XXsDIRbtJyhGjvsq2WfFglbmTksfALEbT4"}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_0.0.1_1536773234495_0.7204206177424692"},"_hasShrinkwrap":false},"0.0.2":{"name":"muhb","version":"0.0.2","description":"A simple set of functions for coding easy to read HTTP requests.","main":"lib/index.js","scripts":{"test":"mocha -b --no-diff test/spec.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple"],"author":{"name":"gcsboss"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"065b355d8694ff29c6a7eb56a4ff19f374e7158a","_id":"muhb@0.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"dist":{"integrity":"sha512-+P9PZ5DROsEDLCCuZZO8yAvD+AuguLV5fM0yFJ7YEpm0Xon3BiZhMoBwn5dtpIdQxNLXrHRizhN1uy+a3yGHgA==","shasum":"64d15775c1563c347c2fb4654c13bcadc5f2cce4","tarball":"https://registry.npmjs.org/muhb/-/muhb-0.0.2.tgz","fileCount":8,"unpackedSize":11934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbm7VDCRA9TVsSAnZWagAAmKcP/266ROjWJaLOqAD9UflG\nWyAAkaLXltWxaT35SKBbHzoQZi4X2f71EG0wDBkUy8lbzGjO4++CVS7BSiGQ\nWGhE+dZMJXjq5V4Cdw3SAIUy6GP4dvVc7tAdaXAK1axzQJF3ZWW5DsO+nnZ+\nvR8jPeMeyYmw3TwHdJlvKwTl3YpVA+38F1t+pl7E7flVm/nVxCC3dsWYCn49\nKy8OzftYbKVM9gZZ7p27fGMAHsaw01BbARohnlTcNsRClYsfSeuFC1LA6bV8\neqBJnxohkIoPLQXAV5aGKMIeTfhjf6k7e84+eQU3ofA55NPjKW96pTjayP3m\nXnzvj2ePOY1POwkvyvThkpv1ruQvCraW0NkQykYRTd3yBtbv/vPQ7zUluZhq\n8UPx7ToVHnXwnkr3n1M8XtUOAB/k2vNZHvPvUorqG9faE6XTlhA0sswPY9Ej\nNPecISZe1oonjPNYHBoCATigMSdB64AiGro/erp/PDFyIHXDd3gykQN3tjz3\nvI5EyefT76zfnfnX1WOv1aItV62J2Lg9P9JMctbHby3PQiB48JL0/0mPXek8\nCzyeE5Sx2garnvmYQe2dU69Bxkc2yK7f4YTsJ/8fsNwd+i8sfvgho3fCaTE2\nTPqicTJab7naR1j9Tgzmxk9nS4xE3gTyD9qjaaJfAxCZeiJnxUSvqzPk30/E\n/jyO\r\n=4FCK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB+oFBu4wNg+4kAxWiX90ToELc5HBGemuv+K3TBaPeNEAiEAjE5drvNhgAOjf7XNlfCP1ZURyZ/cqR5HYnUF9nEfE8I="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_0.0.2_1536931138465_0.37484239591643753"},"_hasShrinkwrap":false},"0.1.1":{"name":"muhb","version":"0.1.1","description":"A simple set of functions for coding easy to read HTTP requests.","main":"lib/index.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","api","test","easy","rest"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"48fdab95a9782777958ad8d854d05f2d0ec38244","_id":"muhb@0.1.1","_nodeVersion":"12.4.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-lgIv46lwt5PwKS2zYpb2L3vOWgcB2G1mz0ogzM1BW0IT8VN6bOWmi+wqFJwWHskt1f77+HDdDk84p6pmisij1Q==","shasum":"e30d295483e207d4c2201f48d2c77e925067cc44","tarball":"https://registry.npmjs.org/muhb/-/muhb-0.1.1.tgz","fileCount":10,"unpackedSize":12793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFLlgCRA9TVsSAnZWagAAXiYQAIDRx6EMOMt1pdd+z1Ve\nEHLG+sR6qKhk8HG9UFlqs6ZSXtd6VhZy3tLfisqJBwVYLOA9LqTVm5eEOfVj\nPiIGJKTyiII74x1ca+IKLDeJ4OGpHmrd5vaC73p0lyqH+0B9ugTri51UqLeg\nrOZhYe9uSSJ38A62pS0Pomj2Qx9LaAtQUBbfiaM5fngTMqOLf1VXQ7Kw3mRq\nMoOd8IvNLyyEZa+71G4oaGKWghn4dOwjvZS9N40EIDV+H4YVWS+CjuvBXYTX\nWVYf623hQmyEM/wXN9dVyj/bUNE8NTSq16x3ucIVTIoms9+mwoQwyXOFmwUx\nJ9vExgOPQlpUVA3ef9PGpnrdiLWD2W/KqWv7BJct84+zcIMv3mP5eyGXuYe9\nOs3M3R9KAlNTqGAhOj83NBeLD7cL4uo2smEgD33DFH+cv9xEGT7rLHKj1Glr\nkOX7NsQ91cwVsX4si2DPRWPyp+VLxnfxPb2ZwuVn3PRJNNzBdPWOFD9N0VBN\nsGqmS2rId+wNaoNMuhtFFs3y/DoB4wkv6vfxrZrURyeBccxLVk0TtYICgfiw\ntXFxmuARn5+MVIp7UdXn4A1sqCjFujSLWXj9svODCDjFrMx190Rd/UX25Rxr\n6Z0dyH/g8m77dKjmGrXvb2Yv0Q9Q+A695eYh1qRj+BdPc7O0JtSrnqqu3SKO\n+wo2\r\n=/jgn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/axySSjTSV4wka/lOKvyYzOAa5gQB6zIm9gFgpICcVgIgNa0wxKiGXiNt+rRHkRcbKh3+EhtYiDsfW5dyPYNyvmQ="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_0.1.1_1561639263900_0.2874801051048619"},"_hasShrinkwrap":false},"1.0.0":{"name":"muhb","version":"1.0.0","description":"A simple set of functions for coding easy to read HTTP requests.","main":"lib/index.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","api","test","easy","rest"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"3ea3dbef4a5d6f0471885587deaba3a1086e166e","_id":"muhb@1.0.0","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-yFuiCt9NczBw/HWTwpVXhH37IujZBcpUlJMNeaSsKL0chgqH4jNGd0idcjDCoVFaIJiTfa/TbZ+zatBxOvGc0Q==","shasum":"c7dfbe2f7ee71932d27a85e2c17b6ac32bf536d8","tarball":"https://registry.npmjs.org/muhb/-/muhb-1.0.0.tgz","fileCount":11,"unpackedSize":21893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNgjPCRA9TVsSAnZWagAAzJMP/RdRpxv4JGgY8iFSke15\n/z0Mvs6w7vbi5AJ9WylZK9G+tStHVsgYCM81OlI22PZYtBR67hEPFdnA2r25\nmm0jAKEBWmWCAOuOHXBgAcIdbYQbO85bU3fHRIzo4odgRpQ3wbG8A1tyrKBN\nabrJreDUvAlECvUsiE+bMw5iFZSQeNEs4wtfQi417P7zX30jM551Rqi/vnFf\nsqrH/qyi1444ACHi5WFMFX85FJzU0GRroBfypZvv6ClaigVq8zxf4MS+Hl9j\nMnDXtSE6na2sEIzJ0gsX8/vA0dLGbn/LuzVrDwc8PQlOLM/ayhYx/X1cC86+\nxfnNyqbVK3Qv7ty5+Ii5dH36cxdVkoLQkqUYUrECTiQ4wc1C9d7Z4fSe2ECq\n/3JxFDh0TzSVzERXK5u5B7zCYwGyHyjCQ2OxM1LdzE4/acyhUifVQYv5JU3L\nKlKQaj17Xfmkm4D0QpZm5o8ZqGTEugJBK5d2YLpxPDgwGjXWWlDW3FumS5q6\nb8RXckTuqX4KHm5QGPT2PCdr032Gu5uIQ4eamJQGeZ/0caLGFnWIl57RkIBX\nQ7o2fU63LWfBUEWDHdezAHZmXBGBwluCR/W09MPp3uuEbSqfKDwdMmDBa9IN\nDN6gfK6GXcj3AP+nCNKEyY1NEMxjWMD+BBUgbnc7bjQM4tNXRmhw1X7cO3oc\nfBhE\r\n=rEjA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDVM4s8vkvyyj5gTYV41c1+03Mq40/fSR7Nbxa0Jx74fAiEA3glLbdLr6fbq34M7K3GSK83STh2p3aLzQdry5YWAvko="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_1.0.0_1563822287112_0.10241176494176218"},"_hasShrinkwrap":false},"2.0.0":{"name":"muhb","version":"2.0.0","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"0dfd378524922d986d8fea62fcc1a5d148a877ab","_id":"muhb@2.0.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-xfdJR0GoWMUCefBIKypXut9icgDbILiVlj6Rc8OSPfGRaGuMWAovicYSwBZy7TlUagqKeavdaWZahIyEl9BxKw==","shasum":"2aab20d3501ad228b7f754fa7b411d60f5c32fa3","tarball":"https://registry.npmjs.org/muhb/-/muhb-2.0.0.tgz","fileCount":14,"unpackedSize":26697,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdepRQCRA9TVsSAnZWagAA91MP/jRqv6szsmOhUNf13lzH\ndA1KaMc7ZRWFE9yNwuNy0suWYIfndB5lM2NuFY6eD6PFE1LkDQ4fXIsuHVye\nJoBLJ7tKNIj5vTkCi83t1rBoLtPdA++iwKNfJ1gdO1Thu+18l9ncS0fReyo2\ny9Q+2/mYdbb4g/t3IOcdxvwKgH1XtwJMABVZ4mhNmQnsjGYO1ab++JdNwXPd\nnx7yUu3GnZt6ju+KuLydI+JbOHa0KsasukE77WhzwoUqZS9iwksnZpTib/oj\n+dsfCv63NOTwwJZh2gzkKtFMH0YJLlTluaaEMUcY5tLQfSGkMXFVuzCnbJy2\nvN36582ze972weWx9j0v2IIO7aVODlmouqjD3mLZeJK/7aF3ykYZwnQyvyum\n9inWvaN/VombkyRWOv/RSP6WRiIddEflnz/apMU1MpDeQVMxV/YAiUUFv8lj\n/xds2VkULHx1fUp+iu12b5s15mseOS27NF0t0ZLBlmixg085jSML/g8z+oCs\nY77gzlynWjJgErSdtMSO++vA8af8Y0ZXgYrK04OWObRrbgCgwQz+UXoTm3lG\nTpxjQV4HZDmTwMqVNNW6L6cDqc1nZgkU9FtwnADhO7lxd/cNmj1Gu0WlZRNi\nTFMTDVq7tBuJ8F/fVFMZu+hgMdnRpvQLK2rPRAMdftgzrOsePUI8h07cjaSg\ngVGO\r\n=RMOA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9K1otp0OVsriHOdYMmOUltJcWmdQb0u5cfm5jE0jW0AiEAiwF3oETzogBZ4ZAweERyKrU+0HGSUqV0XEELX8uKOsY="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_2.0.0_1568314447794_0.7178639760287275"},"_hasShrinkwrap":false},"2.0.1":{"name":"muhb","version":"2.0.1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"1fef283057c1fdd6515dc07cdf08bba15788ba50","_id":"muhb@2.0.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-Jg3qozuYeuILTwNqZKxVf5Y7QzCVq9ve0ZClYisz05TfIHRqsqDdPa74xfuM/2xGS8pygTpt8ylQlq2k1QmxhA==","shasum":"4b8a5a5782b31aafa47d32e3f0bd58cf998b02e5","tarball":"https://registry.npmjs.org/muhb/-/muhb-2.0.1.tgz","fileCount":14,"unpackedSize":27799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf9IeCRA9TVsSAnZWagAAlkMP/38pPe4Nc+PpDyKt15+g\nMm0zyAQHOgG9QVkfQBDI9R8pSSLbSTyr1SdCzg+d64XUDGoTy5alksYb52HV\nBIX+Ue458+IPUlRsvk2XePWJAvmMSx2U0KfFxrzvzlzILXRJjqhgdGY5X6sh\nkvZu7aWeNQNVvBtiqVrgCFoOjvcrMPTMn/plfaDnuJy+g1p7MVKpdfOPY8rC\nxuUuwfAn33W+qAbG/GCE+RhSsO8+SvIQebZr5NvOrOweWmeAq15LRjk5UxOy\nc55jad0rTyWfLKERjxiA98GIh5ZD2O3y7+zTnT13aHFR9SWdpX4osNjZTy9E\n73/4lkhj2JZ6M7c66U9ICPt+3sqY8yoNvUcdeR6Tcyu7FNCsRn/xlQoTPtCE\nk2TWok9NFcAbHPD3AH2fsZRGfeF32gLtwV78C/yKzoJFI8pBuuuTnT2Xt4ia\n9lCuxaSwVrzfRrmk0eC4x+YeWDlxp1fLlqoU6Ni0Geaux6V6lD+Q744UXrvq\n4WCthhAQ8flvjkUIKJ+q/uATz7s1f8eClWDgFOpniO8U525QHYajzWpnv4nD\naz3gSX4BM2xZxFDVW4tNk0qn7J5hvaGGiEJzuWbymVZZVp/GKyzyrKPjS6Cy\n2k3ikkPxXFJhJTfSYmRcCnPeD+2c+2mLEWaLn3lWgD5V3R94wSlzPyDElltE\ny7eO\r\n=K8Ll\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF4eiDIGXhAuWZoab0WxvSxa46bHyZypTNYNEMgV3AdLAiBO4whFLVYoMi1WAxV1/6B7eP8OJlvs/81GdJV+9l509A=="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_2.0.1_1568657950063_0.10311728477512805"},"_hasShrinkwrap":false},"2.0.2":{"name":"muhb","version":"2.0.2","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"7558b836ffa0a6b701e11e091fe84a382d60d58d","_id":"muhb@2.0.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-oXG/db3XEcJdOpP5Z0zhiWZHWx6JMPvOiQJelpSzzODrXv10t7z8aVhwwIVTwgMxH08C0LClE6IQO5vkhxLuJA==","shasum":"d453c9c7654a4214a40985f63199dc4941635017","tarball":"https://registry.npmjs.org/muhb/-/muhb-2.0.2.tgz","fileCount":14,"unpackedSize":29322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgNxNCRA9TVsSAnZWagAAVqsP/jENwlkxqPbrqfG0j/Xe\nu0CK68oHQHEr9F5jWg+ySjJWsRx/K1csop3At3/vrdhBrfoY30CBQOWURzJM\n0vuWGW75TBbJ58Gie3GOnqGNdVgfTwJJG6Tt/8Dgxty4wbnN3oeFZLwzGK9y\ntixCxbVArStfl6rk+TV/kT6RT36Xu2Rftwu4KkgGaLJtxFg1eVKyeDTZu2iu\n2Bu1DZfdvbysKLBvDBPciWffRxPOZIWV9bBOT1w+Fpo4OdGJ4HJgn7ZoKACr\nShNFc76ZCJv5t78IV5+RM2RPfY3tQ13BUz/E3xmghKL7wM6mECWpFZAenvE7\nDg5MD3iLfbFPlLcoMuP+vEm9mDvNclWwbnypieR5D4yJ03fzYH8Bj//dTc3a\nyq+CNwas5+jodOgn11j+gmB8dmy8HS1riwabFiZP7jYO3mVc6zNIDqxBXckU\nQPN6Vl5M7XLg0o4No4qyKa0vtrtSrQC9TN+AcRHCiYLXJfmj4FrwpefaXJUl\n5YIBeIWW4whOkPHs30zj8QSDiENh5ugvU+V9Myt326F6DuOS5XnTU6rO4/0o\nWNkXNHdjIqk/ORYzMT37hxu7zLCnaA4ePz9BH/7QHepf0wh2w1pPmLiNICh/\nucLTpgMXnc6IJoEVZ5qXQkemaJchHqUoRzND0G8SzM6qukcdEUA0Dm6QAeJn\npN8N\r\n=vDIj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFOD8KLtAz/0ZocSQtYXlpZb4ukkYNTpPhkDd4/OugQAIhAMG+3zcIUqNsuAcmKnXBL8ZMtmzxmjqT0v5Y6Xssfe3s"}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_2.0.2_1568726092954_0.545610154800882"},"_hasShrinkwrap":false},"2.0.3-beta-1":{"name":"muhb","version":"2.0.3-beta-1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"facd608999430323c710bd3fa2d03f4c368876b1","readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send request bulks with pooling strategy.\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.delete //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { pool } = require('muhb');\r\nlet myPool = pool(10, 2000);\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nmyPool.post(bodies, 'http://localhost/fail', letter => letter);\r\n```\r\n\r\nThe first argument must be an array which will be the bulk subject. Next three\r\nparameters are either functions or values for respectively **url**, **headers**\r\n(*optional*) and **body** (*optional*).\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","_id":"muhb@2.0.3-beta-1","_nodeVersion":"12.4.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-HAdclIBs3DbXbRVY4KkIWeKRi8nUoz0TX6VKylmXtuDYeI4xgZRvzB3RZwHFO+fD7zuuJHNnEIJQIunqPAWz4w==","shasum":"c7efee1c614ca423f8a94e10d5e1f6179759c0b8","tarball":"https://registry.npmjs.org/muhb/-/muhb-2.0.3-beta-1.tgz","fileCount":14,"unpackedSize":29769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk0UxCRA9TVsSAnZWagAA188QAKQ8VqHHVVFN220NM9eb\nyhyrUwR+BP0RTNR6PUacQ3ykAxkvCsMKIX0SdLGzBfOyaUJQYGYhJnlPW5eu\nomDSMmpx8mgL+92My54BmMLmL06MKQ5Fn92kThknTMN6eBoLNXb7CnxvWuKZ\nTuFm9ps1Et61ewmWfqTZYxWhFKIk2SrHZHIxOGekNqEjUufxCKVo+4w0u3wL\n6Ch0xfljpVekWTUSmuYfcpdmWm+ZhjNwHTmHpmqNVXKuoU4jkQWXlU6/G24m\nXSqVToMinRp5Yc7ZBQra1wm/4q9xhnXESAGKPs9l2FInVF5XQuCEE9m0r6WP\nfU8vqkcQx0IeC1CfqPBu03iAnVfqBx1GpubH1WpHK0ydNktVRbrMKNA05QBa\nWJAxZP+RWn13e8GZPCL2lWyl5y0XMoDX3bXwlp+8z8W7FInD66ixVCgCSulA\nV1ysEhxptYRob7YGUpPZ9ebxRWuCyRqUP6QWStt7IzPD9x+VpEEIlSMPY3ux\nJoBtSfIs64a9Hy00lFrSwczU7rd1orGvfxGXv3XYUR8FeBMTr45DLmG86tvM\nGCJNgbiJZyhsX3B+aeoWmVxNoawiD+R89GOBKmIoo9n1mqh6dCkOb6pYywCb\nCrxN8kKsiLyDWxY5ZMbQ4QEBRvSggf8oranb0xUouAGqO/9rbbMUBLDwhfDd\nlu/p\r\n=DZXO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFw+29hg7j2kQr99g/QbDS54UQHmg9Tf4lgu8yn0MSYuAiBcWu7P25AoESmA7LVwCpEflpcPkWMbLbQXs21iKZKYUw=="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_2.0.3-beta-1_1569932593125_0.6878084506135242"},"_hasShrinkwrap":false},"2.0.3":{"name":"muhb","version":"2.0.3","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"724619d23fdfd29d36ebb756cc78d7228ba6c857","_id":"muhb@2.0.3","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-yklcZDdgYkEqKVFhLVyTvagAkvMAN/YdYdoK5HStm1PlSmrQjMeWQfaQqklLVPXIvEH6RQms0vXDFb2k1UOTFQ==","shasum":"fd83c9dd53e5f74fc8b8607ba48a5e6e62344308","tarball":"https://registry.npmjs.org/muhb/-/muhb-2.0.3.tgz","fileCount":14,"unpackedSize":29583,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdp0fvCRA9TVsSAnZWagAA/HYP+wYKNLbIVOeU7WroPC+8\nCksMqRAbL6gZ/LpXyRce3g5EFDFkeMOkUbiBjT0nWOvHCfGr7iDO9Deo7lrN\nJiRCV4CVeu2Wpign33q4LhslrFm+YcrOpyFyQBU3/+k6xr5CM8JvIOGlpSq9\n4WJjBim19U7B760esaEQwEBR7z/vfmalgcPTGGb57WYRXcVda1HQ+N+xilXT\neiYcqh0MZHDLakQBkd2ABJDGIXPRX20sctJybvY/wFAlCb0CoLZ434cWKdJb\nywgzkS9kHOa0mr+WuDiU2eFWGpnn8v3v87eq3sMsRyEQuhsCVjsQDx1P9ME5\nKAzXNTWfZdtTk2zVm8kFQzQxWnyrSoVhEl95JU709iMzVyjN30+XJFqH1YMz\nBupupC1tHa8M5QCsH2IRyj+nzYYRWUGVeNd2TgT2FqwszKgJtSfZapg+9cee\nffwU/RTtYRgjZ1u+ttTcC0Wlb0PBRDgd5UHCKmZT5dW3fK7VGZFOHdsqsqQ/\nKqVMMFM1KhuqsapHgE0aa3GmVXDyBlegOTrazqxav++ajj9OuLKPQ1ZMBxGC\nRoglw6yMuzKhmdPe4dFnMFWw2HR4pW4Ma8dl3Y/CiQtEChBcUAgDqW8RcbxG\n9d1Rp1pSs/OcAwxAuq+xjyFbTuWje+xe0C5CRT9IgUT//tSXpps1RqwnhAaJ\nC/BW\r\n=svGF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGkddZT0wJhzq5lw8zkyxy861NY9wYfFohu0L1MwXeOAiBpR/a//Q3HPOS4cMbtGYsaqhMGs0UddsvK88xuM+ycbQ=="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_2.0.3_1571244014528_0.18112743637955275"},"_hasShrinkwrap":false},"2.1.0":{"name":"muhb","version":"2.1.0","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"ac8ac8d3fdd826e0406c20c86d299c6c9396d7d6","_id":"muhb@2.1.0","_nodeVersion":"13.6.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-29H9rXzX9qInpH+l/9ZuohZ1oEYmc/3rltEUNKnm7WUBtp8QXLNtQfU1nBF1OxiGSgZrKiwot3F8s2G7TtKBLQ==","shasum":"9df724518c07e6ff673f8764790c1629b21348f1","tarball":"https://registry.npmjs.org/muhb/-/muhb-2.1.0.tgz","fileCount":15,"unpackedSize":34077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGzwpCRA9TVsSAnZWagAAet8P/0FOhWnqEBWGS4ngch+x\nQGakQHUrD4bYgu2UodLr3I0hElwZplBnF5M7ZIVOwnz9Fbu0bE6d9i+5JU65\najr/HFGbeaSA24DUecvf60IYdPXE9voGIo/azajnAhKoQsZK2fNHfB9gfR62\niG/Yqzx92GDTyQ4xXyJYQNv3/26syJuXNbYY19T0BIMZc09bwPwNSjHB/4so\nI93Io9WEZX+5MPyWwXYR3JMY/Csvq0TY2rJF4G0wqFHY3omnsA38IOWTsors\nxF+6cVkh4zP7CemnpXkmsbnA2ku2fwvzcRqw9ITrR7YmaZSjlLUvNl/REwVR\nG2LaCG3tp5dY+acbCy49RcUbPujhBa89DvP1FxUu3ENUOISICTt25MzuobKu\ndRz8Y+78RV0NBpGtpu9ESUrYNQnsOTjP4Xc6GCuiH3Iwa0dUkNxDkdhwS8Se\nuCYmBOI4C8auJKJDXp5coP/vHxwR7Ot7g9MwmNtqdbXY8Jgq+X58z5N1z5OT\nh4WiqlcGRHIJnmXyFGFPzRfINQvN7YTn9omGwrwl2FYGN378nSRgFV4vmtvu\nCVL6tNsZMU5w3OPfrcXzDZRiPDFUrR1levNMdzmbbaQXwS1skJHeVH09r0DX\nVKD57IiStQS0Oe/k2nfh80uO5ZhODWxm1CkdDrceUn+ExOPJS83tfypKz9LI\nmdUj\r\n=5onR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDDOL6Gg9uXVknYoiiw3/BkVu59WA70wAhdDw7G+kSlbAiEAxMI5JXrwAPZEenUzzJN+hsyVyLASHPC30pVa1szIY7U="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_2.1.0_1578843177136_0.3136174515862027"},"_hasShrinkwrap":false},"2.1.1":{"name":"muhb","version":"2.1.1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"c14121ceacc4b8cbba61bea8939e372d9c5486e8","_id":"muhb@2.1.1","_nodeVersion":"13.6.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-DMV8YfovXfEoivLj0WUUQKG0cwIyi9CnUqxBUF/fXn5aXIcpxoQU9EUS96cCe536n7zdxHqqiVcFKMW3WDPSHg==","shasum":"4fa9b95860dbfa6758bc69c3140c6f768ff35eee","tarball":"https://registry.npmjs.org/muhb/-/muhb-2.1.1.tgz","fileCount":16,"unpackedSize":34482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHeHICRA9TVsSAnZWagAAG2EP/3krcwTXQbH20LDNOf/7\nK3cQe2aUZz61Csze6zIfMWTiKOp6z7yRLTn1TpOtQQpDazpstIAHihVf74YN\nxI8dXvuBUtqBbfYe3Z61A6vwywpWEjvr6md/44pKSCE8Fb+ARFK3canebR/S\nnoWoP0nPGz8z1NYEWiNTiclurxVaXGjIUCt7U9H3KXJFKpotMSaaEINKJPWa\nUnDE5Oujgl/KILxozvDyyvb3VDCbo9/fHK2hzFCoPlNEMI7lEXprSACMQ4XR\nx1lknSmbmdcWo3gITyft/HMJo+K/+kTZQPMV/ezyxUFwcJ1PFQ7QGA1Dj9QE\nWDdqnvv3zapHUMHSmU+gl1UszVWHDVkllWUdtjbBqiiJvvU8tI8jcNhRGzw5\nIy477f1fNcWULTmSOZVUKsrLOcb6tgmgxupSXhAruFBO+I+Pu5Mim8OyGRXT\nOORH1SwTHaYy2bJrNIzW6Cxdmvl6rTTaNosm5hdbdm7ArA+x8nQuFzxWec88\nlf4OprF+iNfZQ4KmC5KZCMakkHd10f+v9mjyoKes+BjQXKlK5Mw2Kf0na96h\neouGq52a1Jb/l6uXIGynsqNrlYsa/hS3ew5Z2mzz6HhWEOG88jT60/CMQ/Qm\nEKGG9wH9kHa4TgzBDzYhC+pfv+G3GuFm4z1IBwNi+FGncBM9mAHBmhElN8FV\ny82a\r\n=b1Ks\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHkV4UR3rRSgRWPUz/DVI9mu2qhPTbse5T840x3GMk5IAiAArhexumaBzt1EWKZaKErkBI6aiIjkm45V20+guvwi3g=="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_2.1.1_1579016647729_0.5118894760031631"},"_hasShrinkwrap":false},"3.0.0":{"name":"muhb","version":"3.0.0","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"6a297ee3cba6ad6ec50cd32018b34d64c36c05ad","_id":"muhb@3.0.0","_nodeVersion":"13.7.0","_npmVersion":"6.13.6","dist":{"integrity":"sha512-+jrEVwwicbXXJ5X+H/9cjYa5joN7Z2oxX2ET74Kyo0Y2B6A4rcQEmlCnBxvBPLWeSB9xjA5Xl1UeG9+o2HeWPA==","shasum":"5e6441a73c25ca431c013acd70289165c7200e2a","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.0.tgz","fileCount":17,"unpackedSize":38059,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOtYGCRA9TVsSAnZWagAAHUEP/jI+kE8wBbfQZ4/DMHew\nA0ZktRs9Tuc0Si0PoqQJ1hMnjUabzul2Zh5uinpLg89rzI/Vj2qQKxd3QD4j\n9ithPenKOtU3NZUnkdUOZ4JPM+LOeNsvI39fKRVa2jS9JOPvtZFGLVUbpsDc\nKUH0y2yMAGyeCZ16D3mlihkV3Z4OVNMJod+Qh+ie1ns7LJU4BIk/RzF/tsRZ\nNoISb3777ewufNqm8OQXIeNF859i+KNDqDTDYoiRNPXCs0dOGuW0qGbS8R+F\nRUUZJjeKNx/rbuiNSgTjP+d9LoyqxG8HEQK0Jg5DTm1rBkq1LkqHatfHbt/x\nXozJTASQksgzYo5bX4ppNSQ7fzGUatiJZMTXJO8am2U9LtkYHZIzumnNrmJS\nPlrqgmEf+3O6BmlqMexjvY2I3g9iCrQshqxgfdkJGOkn9GuOrrgb4o/Mknge\nd9FXWgvnopJw9YAqNTncuSUKT1/TsXDcfsM3KT5//F9+nhxIvD/c59Rhfbei\nMrRhxN0gnGhehlb7V3oKnrkfRo0kH4uzxA2rB2RKdh+/1QSzCJd0tsRuBEJd\nOdphncJtDJEqW9tZrHjPdev+p+pjpK+giEvc9GLWLeKyzjBEQXvIahbx7+Y3\nQmy/jXNOduPDA8KqhdMM26ytJmK5yX89N30ChHy8rbPYOYMo79jRhO6+GCF0\ngN0P\r\n=sDhW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID1NEM7xbb7GSWWoZrcbNDm1dXs1YS//WDfSvutZMg5tAiEAhAThHjpG+yPlH+J8yD0hIzmXSQHNYLNQqoTWukYxpO4="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.0_1580914182360_0.825887958454357"},"_hasShrinkwrap":false},"3.0.1":{"name":"muhb","version":"3.0.1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"7bb4b345ce6a055101bb329aee320adcbcb6cbc7","_id":"muhb@3.0.1","_nodeVersion":"13.8.0","_npmVersion":"6.13.6","dist":{"integrity":"sha512-dLbDfLtfH5O1cNge0p4jziElqIWhg5vM8PSB1jr//XnvBF/oNelM5MNDkMjJ8ZoRWawBJ8pZ4i7+UN29cUNMug==","shasum":"97782977b54c4d40290557f93df3dc990e7e2635","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.1.tgz","fileCount":17,"unpackedSize":38556,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeW/ZvCRA9TVsSAnZWagAAX78P/3jlDxfJO6ZxHZf6HRtb\nGBR7vAoC6oJT0UKWTMpt8AHyTMmZdWLFcA/loFrBAf7Dwn2UaOcaTZwDOG6p\n5xcVu7zeio4mpV8e3Ojq48Vta5Uek921yED2elCaVmpwsHGjfqG6dBABJQLM\nTCIrsSuGbOFVvFQACE8GLvStuwrS1XBn+tYkzwX6HW0HBoyDdsdqkXQUFKci\ne2mpI3SvTV6j7fCxYUZIH9ZDiYlwTP6F3AmV9DP+46NrtSMrUpGLTrhheDEl\nsbyGVk6P9Yzpwue9LKtX2gCmf/IM8OuYXdpEuOgAoc225C0ge1MT35qJJ9rL\nIrnxzdHmsNeDEUDG5bcDFJYhVnRmILQD9cPXPeGuDIRcwyc/2rLf4Qaxx+Yn\nTB9Ac9zKys/QVuiuz5qe2eu5X3lmx41/Q969DjvzqQwHhOCFzwzz1dWRlk+i\njZa8KopfVBGXrHjJXxGyQ4ufMqeI01zqqk+JBwPMyqSDF+q/nCZfiKivKBHi\njM0UqDAxL8Z5k8973BiyDvSEUmyWeX/xrFHc13dTLt3gHZ3+JDECmlAZeuJn\nPbpIKH5JAzbgb1rtaHWE99ug6lVr1XxtrtjyPELNBzm+GD2DeUV9M4TbeSOu\nn7TSO228Xb+m31TPIo3InOdmyiozk1GRqXB2uOxqXc6dI97VBBVVoUSRlecu\n+YCL\r\n=Lm83\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAxqtU1w4nRLnsHiEb4MQybbkuaNDye5HD9GUXnGIwB8AiAVfitNwPt4x1Iy+5JAd/hiCqjWWI7O1Aaz0bdwpE+thQ=="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.1_1583085166779_0.2696219474280044"},"_hasShrinkwrap":false},"3.0.2":{"name":"muhb","version":"3.0.2","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"3b0bd7e71d128de5733f2cf7b3281f1df58538a0","_id":"muhb@3.0.2","_nodeVersion":"14.0.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-NfuDNW35fYrFux7gZa7oGDs8zZg6rLnLA3RaFH12hLkIV47YALPZjTxbnHz1Kc+P7yv9gD/DeP6fQjcPPLFlJQ==","shasum":"edbf28dc779e4de36d14e4d8d3c071e9cc88ffe8","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.2.tgz","fileCount":17,"unpackedSize":39449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepecKCRA9TVsSAnZWagAAMTEP/iBVIEbiRJz2smtHzH72\n1d/u3glJpolDi6i6Al1Y6pVxnzHAE2ZOP9ds3WcyS5SCFlQoheGIi8BML1hQ\nGD/OZ8y6Xci2dYhGyhyUG70c3CLTR49dBFQ2rzXC8HEOdPWCWAYBbdHCAcGs\n03dG4AtmsB4eM53gz9mx0BTPtIsN3TnfF7EOWuU7RdMXFgihD07lLBJujkw+\nmyIdi19v/3Tn1WgsvToHQ3OYieXpx//PwsJit+DEKfNcgreWkMAXFnt1LKcm\nQ81ihhQARHRTN2IcMXpsBFZ/V8R8mVC68gHiaUKaAEFNAETNMJZ082HflVL8\nCGy2mWwL6VBoC945qCbhF2yXvPVpHI4PDsdPq6FMKE4IUqBA8mJT9CBKB1Zd\nDQTbS24WELKaO3QYPiCgLeuWAvlgIxdK2rkrP3jBqfBOnpKEfztRZRG+D0XY\ntc0DXNz+Rrn7XdDX2CY3mSmDasx/nGZGCnG876fbx912QhjihvNEIHVtG3O2\nRUTKbsKXEp5zseptLRpLFvxoTORogeuzqJBO4W3QFpesD2qR/toYtPlZiYS1\nanQWYxQjEgmkj+sjozr1gvtn3rAMWA3rzqNw+CmPngA1QVOjIvSVxz9ahGU0\nlEXHkT67Vbu3HrrD11PYTPZIrddnzJGBfWz2bRjyv9aSdiFsnbdjpx2jIe2J\nm07g\r\n=Lu33\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCui/ugUqyT4PhOaKcSZibeTs+8ggEbLAk4Sr2hfyWJygIhAPPhZXi7iGI01hl21urD/OkHL2KQ/qNkOyWqt2A2Q/A6"}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.2_1587930890302_0.2344745096564942"},"_hasShrinkwrap":false},"3.0.3":{"name":"muhb","version":"3.0.3","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"4770d5655e7c2823cd5ff4db73f0f6197a896fb2","_id":"muhb@3.0.3","_nodeVersion":"14.0.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Z+UZtPBJYU6OpUrcoVYjS08TKZ5/+0PJso4gf8m0tgDFD8qK8QAPTHHeV0Ssd3drdTA2jmtBM1d+e3mUZM9WCQ==","shasum":"c331ee9c0abc0846f20c610739fd6764bfd2aae5","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.3.tgz","fileCount":17,"unpackedSize":39882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepyOnCRA9TVsSAnZWagAAseYQAJN3zuFQ/0KbTt++tXK5\nQfr6IwsMd/eXfIP1NI5jtGRNnjqlTJzg0JZIWciw8ZAFkLsVISTX6R25h8M0\nXI4HJEKewnIBrx9+1CQaDjB2v/gz5xZsvBbI+QRwrJgJzIpP8NW4AHgtlTMF\n74O/N/cbdZX2/Epu0fWTckA9sbVZqS+3ObAZR62mHBopssJpULyzn15Z7oWn\nqIkuNVH8H6nF9twe0DYhdW1+TtUCbV8pnJY0A1jshO5YDLHTLqtOujnWlPI4\n4tcEz0Q4FPkdzwP3LMEBpWU/TWev+5IyNqxcEwLrN3QqTiewH+s8R6EStGCV\nAaQaakBFaVWi8KFej8FWi6JrNYa4Hvo1HBZipRi5l2JEkf9O8WCrN3VLXkm9\nPMB8Fqu7deCwtzxpowmkalY3bLEIcyLYjIysaSqjFUvQAO0riYRp+HQzGKsm\nk9G76IVZ4zkqvnzMabv7t4AFIHo2iclTXoYYCssZqSMdxO77jVCzsYgkaGgb\nP0tij5UJUHYtgw/Exs2zMyM+j7z7rZnUHrn7H6FeY17zrspogCp0prBXgCk4\nmgqZofCBjsWjuiEDNsXpvhUXMVfd/39OjGzR9MsMSAIC7ZTIFs0RmCrwwKB5\ne21fauvN6oUco3U4guifsEu+rDoK+LlVke0rW6GkfqOnlanFTjO0VOFSzE8I\nn2L1\r\n=arHU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF/YM9u/++ajBRwuAJkbmOBCn2CaRw8TxKT1RxJOsOFAAiEAwyUAAFEDJnZLpSvR8oWSSdgm+pnKN6BmM16sjDZNk/E="}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.3_1588011942514_0.3809818820378912"},"_hasShrinkwrap":false},"3.0.4":{"name":"muhb","version":"3.0.4","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"a905104c29c4b05cbbee2c8e0d6e6d849a5767b5","_id":"muhb@3.0.4","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-ycfL91sUkeN1H/LoGce4zlcD7xMXeh3GiGUS2Ve+tD4o3ixtf/lgq2T5Xxg4yjG4dzlEgIoQDK0l6lnOIF8aRw==","shasum":"90871280ba87f7c9c7372c3123f7fd03635942eb","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.4.tgz","fileCount":17,"unpackedSize":40030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ9xcCRA9TVsSAnZWagAAopcP/3Q8JEyrCUtn/iJd3rbS\nvOx5eTM1H70j+9Rz59ne0Gl6t/o1JGbgHDA1zwEjtLOI+/VByLL7HVct2DKq\nSYvKxiRW/yZn0pNB90R7W4/xgRnGwza/b7obLu3w6BPG115ZubJYtNMOGX3G\n+jiVjNc0ratC9tGrHltWoUFtj5ioMI6w0t8VUJLQF5z8rLKspTMiF/3HQ4Hm\nq/XcRQTZAR2WaaTab7LLO/z6rMOIAl2YJm5Fj0bty3KzDvBujPGspKjLcKdi\nvIesOZYcN0KxDgwKawOZm4vJF8f+WWv4OMT32qjg3aL1gm84rtSQpKkWSEBG\nxmgY9q0//uuRCSmXfxSRvvA3avr9vWZQVeM5O2MdUVzvdpthM8pshlXJkJBd\n4cbKuA71L8LmdBUXKuyS1vP8Z1KvxYLjGpXB0n/LTJg+U8wR3Lw0CgGjvZYW\nNTR+u2ESeGQSZWoTmg2aYJq4z2diXfxcrABsHLWUA37RzPguVirO/LiVXXRV\nMRQg/1QtCCTNlYurD93Nlc3uBgCY8rGILTbhU5ojquX75cFBJR+/+REl7eA+\nY+tUg18ck+aMxnza/uN3HIeZyBac2GFSfdmqQT7OO42Tu73N1Mn78zu7t/i4\ne1aLN5FDU2CIdNkM0QM+PqC6qkvKaC9A8tNtU2tQ7ydO6b9nanL/0zUHtgGK\nkMST\r\n=Jzvj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1nr/v9DoHSI5OmC6vhMWuzeUNqSCXgKws2Vr2P38z1QIhAO8TGzDulJ5yS1mLeYJz0g0PXfvP0ISE0UobTARvHDpI"}]},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.4_1598282844175_0.9087105529208455"},"_hasShrinkwrap":false},"3.0.5":{"name":"muhb","version":"3.0.5","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"1474d298d90b02b66906ef66106015d1fea47a57","_id":"muhb@3.0.5","_nodeVersion":"16.7.0","_npmVersion":"7.20.3","dist":{"integrity":"sha512-vyEIFvUbWBSP0lNrEFioYwAvReRbt9eZxo0k7hrVKtPJJRhbDlT2XYfeoB1l4aiRbon2iggV9vNb+jKYEuKBDA==","shasum":"602ae4dede6707b919d3c19339ecae4ae77db4b4","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.5.tgz","fileCount":17,"unpackedSize":41292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhH6v3CRA9TVsSAnZWagAAQHUP/0SgR4aMW5X2CwBYYj5i\nQXjG38tiasF02vaI0CovsisCrDRGirOnDZxVsxeYVmcU4dQnDLtVPHzoru8s\nSkvuFbgIRCpXrMxuyrtTDbyc9QLfwVH75U8x0caXQMYRCZ143BOKv0TQCuQJ\nS0VTQXs5UJYnMNtHBdpa1mJvcgD/Lso2o/0x0vmKjvb4MtA/wtm+1IGsGM/a\npIxWBuZYl47JY7NrhNN++2YCmhoYJrP0jY2KkveQRoYGD35OpkZT/heHjElF\nzN4H8Udow9xVKXSynxpb2q/QG5Z12i1VKSMbGNUQ4Q8tjZGULK4VzxuU00qV\njfSAVrG+xCOHXMNhCBIQZ+ONQLuxHqtGSjtWhr+cYr7D6SLFTRt4vsXeQLSg\nqnFkyAiQ7HkjuqSk+5lyjD7gQK6yf64zm9A0IZKxfyuQlr2ucmSLAX3OBl/f\n7S5yTiW3oBsqwcIWXjMwb3Ei0Hvte19+B3vMO/LwB4r2op/u+0ZTBMdeIWXb\nX+14R6i7x35Pd2zRIGg4b37t3BIQehB3ZgCS5iusbp/Q2Tti8gniC7Cz3IK1\ndyMAhkJKdPy3w3tMznOTDkQGd20eWr/kvnbkhY2uAEnPGVALjp4K63RFuvk0\n+BsLQqxfaoPL9Aax2BWXc0NkWOHFkBIQDxkDTWdWhUya3RKMFTcm22vWpKnH\ngv8C\r\n=XScQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHuuNjhRp+wkWgCZlQkk+0+wG1Iuj3gaRWrYPv1dnwHwIhAKHOBaMtS5lc8cCPZmNTYckVXGXSZ74ztPEbCura51CD"}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.5_1629465591375_0.26367724197079356"},"_hasShrinkwrap":false},"3.0.6":{"name":"muhb","version":"3.0.6","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"6b103b00c941f9590bd6dfbf9aa884f6e1b5208c","_id":"muhb@3.0.6","_nodeVersion":"16.8.0","_npmVersion":"7.21.0","dist":{"integrity":"sha512-C1MHE2m5VCmgUpf20fcE5Pz19nQvXQTSG37LXZVrYRVrMwAylyJ0aoOiTZ5IjIrnDeeNk6zKa9xW0qhjroLpLg==","shasum":"77600f531088b687e5ee2c29d9f0d85d269e9f48","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.6.tgz","fileCount":16,"unpackedSize":42545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLP06CRA9TVsSAnZWagAArewP/A4xfUlTmhKQNXLn03AV\nvL6aV3/Du2eAjMN/EE5OHnA8TEN8oigo+JFsweyb/BO/dvIvhm7166lDJASK\nzJcDnEIofVJWXleNwwublIckM9z2lSAknsCJTuQvADkZw/bwB872D3gjRMYM\nwF5wtuIAN+SO1jp9BC3kq5QZdmmgT1XpnzZFh3ZGJ5EU3gHwmMRlsFhd1+Q6\n3ko/hYPzUJOl+VBoLalfnYr1A9V2pq5nSXmsK5xwwqImyoE2FZAGrX+7lLkL\nvnvNNoM1emwNGugKb0AkeOmZV5A2zQOpbhmGyf3FstBDtl5uKOE6aaMfJs9T\nbDknNV48wjr5J/08V4DDgr+Ep05xgDTLsYdEcPqX9DxGjYhKTXv3hIlQT7Q2\nTyMdQUd7fLZ8qoDcYqeAZMsO5ECy/STglBMNuQNW1df8PwK2aBZy/EKyXXsh\n5+0eATdzjyHjY+Le0mEsxfS6g6kJxgLT3ZKApZnOsNy+F56iZ1p1CSr14noa\nsSErw19l8c0Npg6nGlmuybLzp+f7pBuik8bcaDqQhsCoaXuYUZWuJl22KS0C\neTj8g9wsfR7UfdrHXrxUuHTfgN49TQZvpn6aWBJ9M65l/W1h41O8b4hUO9AX\n5faN2+do3Wt6F6J4bibWRLZ8hpH++GdSxp7m9OqZT3Y5bIme7EtdaxGqKLNn\nhc0k\r\n=oFWK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCL92Xl0ejarO6eBowfRUQC472OkIstziAc/+pCv51cZwIgMstunmBCAHRjfH1Z+Skn2Wmbo6uoUwXxwexiVYpOTlI="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.6_1630338362713_0.5620532695264746"},"_hasShrinkwrap":false},"3.0.7-rc1":{"name":"muhb","version":"3.0.7-rc1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.delete //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"6b103b00c941f9590bd6dfbf9aa884f6e1b5208c","_id":"muhb@3.0.7-rc1","_nodeVersion":"16.13.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-/K0p1ZzKbsy7dx6L4X/oUkmuTKIUp6+Gr+i16c8+v+JKZ9UAqWiUYLxqVL6cH6LUjoEujaUclJvalBnElcUZiw==","shasum":"8e92a8b6fa906975bbc3b77b61a8863e737dcb6e","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.7-rc1.tgz","fileCount":16,"unpackedSize":43369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJn7zACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoC3w/9FlD2NEtacTS7hPxmv9L6pnjD4E0nlNjwHYfgM5Y4x/3fkk9R\r\n+sdWM2Cq/jiiz/WKRIYsi2ZMo16oueXHQox5+3vPWKcM+O7VMLT/xgs6QXIH\r\n9/FUpGbDPs2WCqo+OSZfGE/1kKxYT1Wmpmm2crqNziEWzdT4ykU6IDjQ4LJs\r\nao+4IgWXo4RyWCmgQdT2ev4e9jRnFyr1kBqbQDFH7CgWbCxtdzuymHPYTms+\r\nYRzC260whZrBtAIFGpvV0R1xgn73jndvgWisk62M8aZ5WedjBz7euTQonIbs\r\nM9YGK+4c5qpHf4uNQ9KKZK4wl68tpGz2TeEV0EXP8jjYCorK286nzZo5Tj0x\r\nqxGrNTyyYmHkZbZxt3RHZzCz71YXy7F8tWVk++N6SClOSKY90dq61xzU2Y3X\r\no96s/BBcX3Nt/zMbmcpVQ6r8RVI0N7QsMEOesCnixG5F3Iz/273kl3MO/wZs\r\n7YjBRyokDFguOeLxm3ObpbhIGuWpZjyIedCct6cWJYjQ/EnIshiyDQCKwUSu\r\nKISBajpGW8SQniHGEfU1rr9QS9IxeOtr2GWKbn2KkIp57IMRv7bFz+pgBlkw\r\n6X/mvojvZRRrNpJZYEzq3YhihFwTmiTMZqHVeHvaI6kOchuvk2vQlPA575vf\r\nTUWO6odm6hk1ZtrpB6crVbr49jd57f4GOVs=\r\n=lQgt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9eKKBjARH5ZBP6gaY/JbadJrGEpniVfibiLXjsKGGmAIgE0Aji7sdITNGY8RMDLMY5ppcsirELc7J/JdlB2JFKYY="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.7-rc1_1646690035069_0.6201701528249342"},"_hasShrinkwrap":false},"3.0.7-rc2":{"name":"muhb","version":"3.0.7-rc2","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.delete //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"6b103b00c941f9590bd6dfbf9aa884f6e1b5208c","_id":"muhb@3.0.7-rc2","_nodeVersion":"16.13.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-54EQhi4mHvriJV9uHhXL/l+SNTzSuJjxicjuni+Z+OsbeGh8WXk6hq7tB70NxLe03MqqK1uK9bRWhCmfGk3rUw==","shasum":"4e1ae5f6488d6eb069a2f0a159e31de947529f4b","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.7-rc2.tgz","fileCount":16,"unpackedSize":43400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJohvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoulxAAhCCJB/NhWQQH7nmVUK2LP88FWAe/PKJ7rV7Onxq0LJEr9Gir\r\ngzwoQwH2nslVbNsNdxUkkOLjZ8ZflYdTdw+Fk/DZhYDNIovCI9mWq9ZuWmdj\r\noZkgMLHTWv4hEhOwUk6co2F2Rm6hpg11v9wjBMzhQlfOTyjL+vgnsLZ3WDQP\r\n9ScFtQpetk5qp5z3FNpsnUFM4QGqjBnnaQwhFWN7gyDJNkf0coZw8/WsMMmv\r\noDXUiPI9kCTX+WrYIvCcZBl2KMTyFBJUj+brPMny9Lpu08nCStoINYmKjuRO\r\nTfqS4iGBKSBiuZPn+5eSL8aZsM+UwA3ZycCYDDJqo8c2oyzjRJJdC8E56/oE\r\ntH9Y0r4n5p0CFgiLI3nOTmYqKEayS3NENO3v/TFiDJLpLanRDxCJp+T4vi/+\r\n9jHTJI+iEb4d6KaVeJbnD/s8YMF/eZK9PKbhIkAF3HwsXTEvRWOghKmqNOo8\r\nbf4l+hFVjcnpsFMYahhxmALUm89emFrJ5Zs/KU1S9kv9bGsWhtA/ZU0zrJ/d\r\nJvW9/8o0NqdQb7BBymQBdCFJWC73UegYvimxS5IDTs+vH73KG2H3yGZMYyMQ\r\nBSMUB3cse1j0jCnwAWHGS0RaKiSPaVjPivj5OW1iMEb3e9FbBPU8l7rzmmk0\r\nO8aXrLFox03Ev/25yS3aHvrsF1WnGChhKgM=\r\n=RIcg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdzS5YgcsyXjDBKx8XgGWab9n296/bewaMgtEcyQdvvQIhAN+blZ0ALEP00yuYhFA4VYwlG5VPkKIH5nngaXHbucbj"}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.7-rc2_1646692462768_0.1691037717691808"},"_hasShrinkwrap":false},"3.0.7-rc3":{"name":"muhb","version":"3.0.7-rc3","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.delete //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"6b103b00c941f9590bd6dfbf9aa884f6e1b5208c","_id":"muhb@3.0.7-rc3","_nodeVersion":"16.13.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-vhluw31yBL0ZyKLuq6SGzvu/lXtCpRCEDkQOPG0kzMXT7179kcWvmgi7pn92o3D8S0eVWUNkMaKVnNLLqd7SfQ==","shasum":"41f3d75da3a0ce2235ae2455a6b444b6804ec6de","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.7-rc3.tgz","fileCount":16,"unpackedSize":43294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJo2TACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrY0A//Qlxs8C0e6nfN+6gYFubk5tkb+qLpIFEmOtjSZCjoQZwafHXG\r\nvzQzx712PXVgpdail0NvsLaigu4ndqCV6HMbeV/RSAKT/B1U4fFRQrThtlv6\r\nc+0W9r210xuqPbb5qZmvCBM0DjRagqIE4qDB8XpjR9oyvOFoQTVh1VRJWcLP\r\nfit9ZzIA2Ai3i+y+7zFjufAb7CgZ1zD7kX2i6ToCm46dNbVC7251K55/94Ne\r\n7IYCo4w2gSs6IHaDm/2CYXbL96npZaGftcseLtNAoJwhmv66xIDjrCN3QJ49\r\nQtOJpEACnSYMUO4ZxGYjbYv61B3frcgZNnbC0RXFSlXtjRP9sBnH2riJLEAV\r\nVVxAQsuAXWR60sElG/6z5InWCJ3uPWKGMgEkMDOZ2Adp1zqjObB7nOnZslz0\r\n5q9oXSrvvamu6P41gVNctQqA3l5zC9qrcrepWyhbc524kmQbmcyWYbIXLjQ/\r\n3vqkPhEkQwnEfLFbUg9YXYH+7SVg6WKygeAed/TQSFsrYKUTtwfO2xxKU1pQ\r\nLL4WteyR9cMzkNT5vHiYGPd1DxtgIVQUauu4uR4+/HIQ5dLIurs1VqTCqUxS\r\nvWgVjBqwbPKIqDARxtnbbrEp1JIubXxA2N7xVviXi39N9k9zAoh6XEF6+Val\r\nqfCjeC8Y7OpheNtt2u5q7ZZbwn53ktRAgQk=\r\n=mlEw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBa2kxFXnC4omimxWmX57cWoLIntzSpITjZmp5fRQ7ffAiBgkkHE9PU0XKqzxDHoCvKNo6FIfvUGB1jRGAOMpPQUhA=="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.7-rc3_1646693779004_0.9530174810825742"},"_hasShrinkwrap":false},"3.0.7":{"name":"muhb","version":"3.0.7","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"a2561194515d3891081a8e738a1453bc860a34d2","_id":"muhb@3.0.7","_nodeVersion":"17.6.0","_npmVersion":"8.5.1","dist":{"integrity":"sha512-yZKzR4JpfycInBWVKT5I8jciNgW4gSJxV7JMaVenogszo3Opg+YAfTxrs3PTumbuQezIW1/N0TXsteELF7wXUA==","shasum":"3e397c8048056bee91f2a6e1b9790cda85332e14","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.7.tgz","fileCount":16,"unpackedSize":42632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJ6aNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmplvBAApKhk1IGSw7UbWFWsKSnonnEni8u1jryNont+24c7bU6bHH86\r\nIFuxzXo6YFRVfsgeML0fZmBl7npfPmRdXWf+w3KKXikF0itf9XRAOR6W59Dj\r\ncqQoK+escA7LU/GXLdGLW3tGm5CJX0lAgcP4tViXX9zSY8TjXRQ+gAZPVrFo\r\n1cIHq1wULBPNE1Avad3ERqDDD8Px9d5IdSzaU/cgA+z5QxrnJmi7MLwvfqfn\r\nOw1A751OLsUBfKAys/GUDYSJBtb/V5G2dBH/oIWFRVIQH3isVjEnLXB05cmQ\r\nfPj2AGxCxDnXs6ll2D5RIkcV5MhjvfTL7aCJfJRwVY57ZLrLFD0YLhcjhWKS\r\nS4YDBgr5bFYOmnbmeVLVS5JM/jRl6cZXTzRwXYjutXmLKnfEKAP3wnL6dauS\r\nRKWze9raohjnQWFJ4w+W4fIDlH6x7IvPvt8Goyc4fHsTgKi04m6i44mRIOjY\r\nng8mOn0VdmPligg0pflidYIEqDbyXAP4QWTtptlbZPFwgwn33nyIhUyAoqz6\r\nStyxoKrl8eJaGn1ugyKQh9pNTzc4kCC9jHpUtU2vfYSeki2PU3SF6fkE6YYZ\r\nipJUVRZv8zTuvE/zwbG3iZyAYCB6bcKhvUPPy+gpAvX98X2WWCuZR8XRtZzh\r\nYZQnavUVxkCIjZ4Abpq5dLFzgGJhLr8IBS8=\r\n=qRrL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCl8FeZAGNyGubyUAc8KoXpL97g/Ex4O1DVrtcM1/9PHwIhAIQodJ3fOObPlAC+vkqyyKPeXYsImE1vQ+YmpBSksQjf"}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.7_1646765709654_0.5314900614420133"},"_hasShrinkwrap":false},"3.0.8-rc1":{"name":"muhb","version":"3.0.8-rc1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"25393f80117d22229a6cff055bdf5771e846912d","_id":"muhb@3.0.8-rc1","_nodeVersion":"16.13.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-Lht1bGnyhEDowEt1FQjaLjWpEOP1sqyzWpU1Ma58n6isgAVin72ZS8NBPcm06JmuVG/9KniYgQ1b1yeXsWJR1w==","shasum":"73c483f83f70e4042462f9af491f5612b377d0d3","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.8-rc1.tgz","fileCount":16,"unpackedSize":44322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMMLQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmol0w/+IHIb4a0F9Rm97oY0XrlGmudyKz4+m39ixbLphRu+Lqr0/8Jl\r\nKRbo7ujdZmOs8yCvSTGgKEzOtinjeN1jcqc+Si/Ou89K0theKtyid7tDkKIO\r\nxiYZHDEIFYMuj00tGpmQdcBV6jLBNu8NrP2Ti0GSSp0lqe9O3JeTVjVMUtDc\r\nYqHVs3MJRpOAQ03gpY0XUcbIZgeLxW6y3cDkLecg2jxA3dqBIrElXK4Flkcn\r\nc6M99VkK5yQsL2pjTnv8kU/gIpH0bMtf+DObaDdtYxBPsxcGLDyceV1xdMmW\r\nzEQnPu/aerM5aAoYHfwRr+5gYPC2aFokbUe3cHLFKnY/O1KZ3LrJKB39Pjfg\r\n/DC6yLukamJgUBoUCZT+6wuGIrTeag9BfzVyVwaSHsLcP07now9JhDY7+vMb\r\nQqjVnYSjlljxQqZ5Z+z++kGOM102HOB7RNSfZSiF/oIE/OoSGuX3qrOilaEz\r\nldh9Q58Uq5WPCryQC14H4yGBL/i1gUR+CW+o203kfHB9/RMmcbjVnKp6An2a\r\n+0wga/Iaz/MCkPlWlN9zIDian1U4jtDr78w+dtWu4c20IAq7rX/0PIRatGKw\r\n4zQikY4smgSLUV5FcTX3sMuqpz1mAO+GE3O9ThLh0bV6d+2H/mHRwoD5UpFt\r\nGcxTqsDTN+pEzxWNnyD5wutdQHJdPhNqq/U=\r\n=K8uT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHnmdV4U6GbFqolwpQel2Nhx3kI2EnaKKsLs/VxeqgEeAiEAqYNldysd59Al38q7ru1t2w9r3azJS5UMaGBt6sHDwYw="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.8-rc1_1647362768135_0.46108796878249736"},"_hasShrinkwrap":false,"deprecated":"Published by mistake"},"3.0.8-rc2":{"name":"muhb","version":"3.0.8-rc2","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.delete //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"25393f80117d22229a6cff055bdf5771e846912d","_id":"muhb@3.0.8-rc2","_nodeVersion":"16.13.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-xtAcNTDu0JgEi/6CspuEvkwdhny9mLScqt/0o2oz/3G97IVsFHUbZZo89JRzZKc6gXiyhmz/ZE+pcf7aYcTbIw==","shasum":"4cbf8c803bfdc9df12d3fcac47c045cf04657955","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.8-rc2.tgz","fileCount":16,"unpackedSize":44322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMMPeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqIcA/+MCHy3lm2GkPLEV0hBAtRQFO/OKl7VsRnNf4zxlVINqCe9E9M\r\ncRHiYDrSJEqZ9d5Qh5BEiEOaWxyrYEXq9I+MRdTSPIMiJhM5wCZ3DPgAX2PK\r\ngrjXaj/R+hW6T11zdJGYue+2J4RGEXyVxWVpDELtq/urnqH3CE1SvsF1OrTR\r\nhAzOVvv2on8NGFC331zFLqhjW+zRVOAtgj/73+8/SltXiXXRO8l27zCrGcMD\r\n4fmZeyMxsPncBSvPGYgtB7CuY1NetMyo38dL26oZ7zF/5rtCqA7SID2RcVc5\r\np2q8dUJEXHmD7rpOSvvFC2uSIUxax6vPdMVxXUPv5RDxLxsWK+QxzCIkdB3u\r\nsinJjj6WgF6HT8dMV2U32ulrWsedfeMHNbfHss7lmW/J3VoNAjxqDnuLyQsT\r\n6ngvzcTnzpTgghp6WHQymXbzBYbDJMEy9BzH9n96pYMieDK0bZBfnn2CQ7ye\r\nHCRi2amgd+hu9xszJm4PD15MqAWE8H/DB5E53kFdju5SBMIJnHKKUma+y6Et\r\nN3+N4olkXW30ES3rZsOUR7e5PiTiPuwMLeeNZMn1zdZstE9SfVqhOPLxj/Lf\r\n22PskHp1jybWbR29RM9ksNYbbjhtgzc7hzcg5P7gYQZ11uZLnHs/eeVKtFCA\r\nhIk34bZin+WTztoNDdS5dYJcK7mZgXrSh+o=\r\n=Uvm7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF8MofiwESiJp1JQ6zByuDcrH1Hbc9ziVOJalLnLYp/5AiEA1a1DuC1L+ct7ZxpEUV2B/JpngQAEFuI97VgkxzpHVJg="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.8-rc2_1647363038806_0.9143222774117818"},"_hasShrinkwrap":false},"3.0.8-rc3":{"name":"muhb","version":"3.0.8-rc3","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.delete //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"25393f80117d22229a6cff055bdf5771e846912d","_id":"muhb@3.0.8-rc3","_nodeVersion":"16.13.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-2XbeesVgqTem2dHdYA6JjlNh9NXrqvl1Bpd2CMA1qPO5g4PJuBUtZmyVd2hUlqrJt0rf2j2ljeeVV46eNLMlzw==","shasum":"ef301cdc8de9e09a9ff8abe7d6564602a105191c","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.8-rc3.tgz","fileCount":16,"unpackedSize":44344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMMzIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrA6hAAm9ITHgzpSRVsYKp0UozV78aOuHO1CRsWYlk8wjFGqLKAjCXq\r\nNhRalWlAHBqlzU5M7W3WsoBMp6uP5vbh3LXICL/QsyhmBm3BKzCjzZezNwPa\r\nPHZJ9KpUF97/lPXLsvvJJPqxvrqese6ZqhiThpa7NXajJFXRqZXUHAQp9Qm6\r\nu9TO/O3XmwpydjL5zKny5nzUDFn9Ipptg4m4pmnd4IMqUdovXavM2I8ki0GW\r\nQbg8kvi6vNbQCcQcgKvDjLv7GS/OBCRtcJ/ylltGpuEUZzscWwihT2CZVpB0\r\nBfLeIlif8Lq38isfwkZW65Xi+PPfclazKbMwqKadBDVDTMVeVe5tptBrpsUy\r\nBIQJGbD2bWxyYmsCbISZhm/uUEwYayVBITNpfM3TMKTaqu+z+C9XqkzZ1mEs\r\nXE3lzp72MEzvGZ0haJhpXQk6I5LvydHSZR2seHrd+eKMywM7ip4UCx8zMxgs\r\n4whJ2O429KosinI4Da4YdaoJ5JgOtlFY5MVB/hrcLhAI8+Boc/AIDnO7Xbmb\r\njTDBukVmGTvjuJuzb1ytsG6erBElQvh6VAOXhJKwSevSyhsWcXPID4aENHPX\r\nAxdhDmudXftJ4GwmjA+Ei6aXDfr4zW9RDgDvC1s3P1lgiJdVjPjwO4uQOPMF\r\nV10wbDIpQ2bh5ulRnOyUcjw4YSkxSQt2mmM=\r\n=dkDq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDumjk8qzcwmeXujb0WunQisCLpyBn+UvVHz6ISlGkRPwIhAIhzVx1ZwizOLQQABDXBhUG8UISocTwwpeQ9XbVopkw8"}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.8-rc3_1647365319989_0.8313972104034655"},"_hasShrinkwrap":false},"3.0.8-rc4":{"name":"muhb","version":"3.0.8-rc4","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.delete //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"9c2500fb45cf6f6eafbfbabd9e6e54adfd2a1d22","_id":"muhb@3.0.8-rc4","_nodeVersion":"14.19.1","_npmVersion":"8.1.4","dist":{"integrity":"sha512-nTzjPgCkFT4YzvgPHoI2rcFOkEhFg1vgn7yAvz9xp++V4p/tZcD+iyIpQ+osvFmQMHZMf91ouNSBMRYUMtBbCw==","shasum":"961ffd3002fe5eeddd2cdfe88b07b433a0220803","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.8-rc4.tgz","fileCount":16,"unpackedSize":44763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPwu/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpgwQ//foa1X0GbTvUe+e2dIOPJlTPqhx/vJYVsQYoGs4tolYg2JJju\r\nXRU4HEWSHTe5PJt0YRSxhyXtpS1xDtZOkeuQB7OcZ1Xr/dSvK8ZTo3k1JXXo\r\nDW1f1UtMxF2ASAEvbWvvllP2AWxNIAcZDhN+Xpx8/J/sbl+U91gAO2Tqrelt\r\nSi7eKa0NqKG9/60MfHthlyFqZDpe47nOcaHrWKK4lfdX3iD6orudz9R9+Z3A\r\nwBflxqmtTJtT37y/laGegz7mMHudSzqXeGIRq/K1QUD4Fex0Qwu+CPHbeZiX\r\npjb+wFtbK++DkHIF5T4yVdCaDdv331mXR/EwhYMkMxCDHKr4nnJsjHCaJA3Q\r\noq1u2J198Exb539fz2yM1bhOOcT/R1XW3T0cl3uysKwc7D1BwpEOm85MSO22\r\nqRU39KS9UkQj8bC0YTUBPqFqekGquBFpYayAgh92T5TFNtumllJsmgCd2NtJ\r\nrA/q7Ng4XyG4jrkxVsEpvL6iLPj10AYzrpndsfJrJvP3SHiX5SWUzswwe/51\r\naHfeDa54w5LLJJdXHU2jKuySsNg1g6OKrMfzSza61k6TyBxyB19gPQbVWjaP\r\nrAIsL6EhIdGk8+HoAB8Mf4PLSU29sBPJNcz2+1Hy0VjHndQwz8lar6tvCeUQ\r\ndREPm3mBNeoRtpphRaIUonQqsqFizI73+Ek=\r\n=2sqf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCY/OlBPRHlDD4uxcZq1vRTfqZbpdCwtJr5T1JT/uQUmAIgbVsxxWiRWM1q+1mUPXxeMByI2gcqQDJI4Zy4Xo5smPU="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.8-rc4_1648298943134_0.27973352327532486"},"_hasShrinkwrap":false},"3.0.8-rc5":{"name":"muhb","version":"3.0.8-rc5","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.delete //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"774871c22b52f977811a1b84543f06ac027f19f7","_id":"muhb@3.0.8-rc5","_nodeVersion":"14.19.1","_npmVersion":"8.1.4","dist":{"integrity":"sha512-nTeHXreDh2aAWZby9vJRcYQCjtGzpoGKzezjN+oVoVq4Z5E+PucQZu5yFQRSNsEhGJzok7x/DFYEbAG1sgBpNw==","shasum":"f7199e619cfabbe9e16b6bdd0b2511a8e624db19","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.8-rc5.tgz","fileCount":16,"unpackedSize":46307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPyRUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqIcg/9Ee4CI812RDurV2s4pRci7ZdxEJK8dY+9hNyGmsNjWciFFg2k\r\nVEAQcbZnLrIGm1hm2tgkCY2EYl3Kf52pnAps0b1DV0dZorHjnPUJd+qy4tET\r\nVR+gu/3jNWxdJo6uvNsuMLIQFQaSfUnlLxovQjZV9sBRbIv7wVnojbBscx6d\r\nlzClgY9RupjEpLABZZnMuQp7CnDvEi/eYBvaivjccUAq+DszE15GdkJMtFp/\r\nN2QnG581kpJJrd5xXbZsU8kaWGniA22Hw8ua3OEnTb0E1TGL08+Sh0Xs17QT\r\n5tatDgJkjo6Ys46gypqgDoIE5UImVAJ2ka+8suGwEhv/GPNqd+2q3A3LfR/V\r\nd8rr1jGkTZyCkqasrHORwFk1myHpalVxWMDDhg+oqRfJlWDn0KqEJGbMKV+d\r\nhzplT/Czq3k0PTHdEwjkCDXmiqRMzF4gVMjNLtSJ8bICYUXzaZY2FIMI1DHQ\r\nLmmrHV2hTAv5C9QEpSvxoRF3bin5mDRCq9VDfCvI5CQEbyBfneqYSfkeGHDW\r\nDg3vSiBuTTuCvd+QVtZtHO8ZyGw0RRjU1a0ZbQ2LnsXTpOSeCUgoubiFoHAm\r\ncJEEuHmGzUcsQpNTTdDddi7x2cI/muXpQzNEO9pbITQaxoixY8ZtBjLQS34A\r\nBYaIixHBJCu/6xpHt4lUZFRQ7ptcqBCYuNw=\r\n=Kk+1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAxBCIBpT7HLc532HZoP9m0mUd7gk/eLijxvRmp2A94SAiA61Rz5h9tQKxaZi+2F8INO+rMwkyubKoHOg9QwfNX3sA=="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.8-rc5_1648305236449_0.5726269305326745"},"_hasShrinkwrap":false},"3.0.8-rc6":{"name":"muhb","version":"3.0.8-rc6","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.delete //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"66fea68603135f77ac535a628c753ad942a6cb70","_id":"muhb@3.0.8-rc6","_nodeVersion":"14.19.1","_npmVersion":"8.1.4","dist":{"integrity":"sha512-1wlqNFICv9I2+afoJZajbuGCW1GTaHkdf7kJEWXnp/HBpyaU2QTRwyCaZ7vNKBkV2lQtRIvOmiRNY1eCFHTUgA==","shasum":"34df4f08342acdd709f6da4dc9186bb3563dc767","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.0.8-rc6.tgz","fileCount":16,"unpackedSize":47202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPzHfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmod4Q//W9V8JmoIHiOLOL1DN6Gv4ZDjerK05jpkrulDUz0hLB4KtS7I\r\nIcyyLfRkdEcHqxPXTmU4X+V+E+48C486AlhA4K/iJgsVv5PYNSJIgh6/gh7Z\r\nn5XiX3Dx4ejfaMQ0QftEmxNWMGQuIG+0yihVjIUOCn+RKoMRPFzGqzVHOZrf\r\nJXBSpJQcVAaQEqDU8QD7leb6liQOsmSGFvnw6/V3JkoEt9eLf+GkzoiZ2uI2\r\nTSPBbLxwMWZOOIVzxwnz8jxQJ60kDbGARuKtX6tXMbOoGJCvmwgDwSd+xMIB\r\nocNM7ODJwXgXb+olZfwhlhJboM8VAMlffk0krxjQzUBhvMfz9xQEXB2PFcwn\r\n4e/M3X8y8iKH32rIdrwpG0lblCOuy70Cu7KJzGQMsSges9qLTDpjLw93aBTI\r\nxe+py4/zSW7lFs1nzFWq9Xp09z6Rc40Gr2Esr76RwYcFHiyCBqHu0zvRNIhC\r\n/uTuTVOpER4bk9jf/yRLuDAQc8dbUQVcRwQLWRQ/nZVbR1+7C4uyUy6WpQKK\r\naq/0l9yGe+VX87zepBnmRFIruDUHBANFp6EUGasZKtyvUKNozalYvhPc6nU2\r\nK8vTuwlDJuGTzfOaAX4ekeaIQB5MlBsliz+999EJf486Tb656qzwq3u7NyBV\r\nqIYteMS2+S2gHLT6HY2kBXJ7KNsgtElaTwA=\r\n=sxbc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG6y1RqYZKcnXOlVtCbyNVuLGBS7Uevue4TwipUTUdwRAiATdl//dPdm+IUj1mK05YOFu5MD+1TqFQ68XDCS0+9J7g=="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.0.8-rc6_1648308702901_0.3509038136145859"},"_hasShrinkwrap":false},"3.1.0":{"name":"muhb","version":"3.1.0","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","types":"./lib/main.d.ts","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"b08bb40e7f212acab45c318e1dd649e0b958cc1e","_id":"muhb@3.1.0","_nodeVersion":"17.8.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-g3KwmYIvuGtU8gBYr6+1il+yWapOfdVy0BC8tVStYudxmLixGFe8l5nvS9bMQtyuJU4pmUzWLJ5ItPXgcpPlbQ==","shasum":"9bad6f25dd42a062374372f10962371774376d92","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.1.0.tgz","fileCount":17,"unpackedSize":53055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiP0s2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2xw/9GUwMWD1mNQuk17lYqk2AWW3gs9rjJPA5FrWNRg5TZiLG2Ihw\r\nK3j86+S2znQ2GUIJ5/e7CKSKkKwgoNyiyK9dydF4dWoKe6OqOIBom+NyMnIY\r\nrfGGq85SBg53gdsQwuZdb6FelVuXJ8x7v3SZh7HqrqGabcKsD2mmuXdl+Yaf\r\n4jvUuOpTNlH8LclnrSI4ayMn1UQbIXgdCAXii8ddARmnLmezqM5NCoyjjnYF\r\nTY0peEqU99QWUlBZ0shAFwn4Z7wGsX5U80SHt35Ex7WVaSr9dJ6qQJ++lZYI\r\nPQB2RWtsXROo7HSoyl5IPeH4XC9nJi+5sKjgJ52lOCK5Ko5UFOzkz3SyOXoF\r\neuY8KRVxkfmT922a2ZZxKSK0+DUZ/xeuDezaU4Vy2wiFbKgHlQzwMlXbmr/9\r\nezcObBaEA1yNC+nnwtWkIGffULGFsL9Q/stINFuQ+n3jUZuwnyikag7ddF30\r\nOfCElHMl4N6rdWMQSf0z4hvTZBBw+U8yFELjnQ0OVSoSAnqt1DdHNy56euAW\r\neL61WQ5KbqJ3DZg93ZQbz0WCEme2XkkkmsnCNoLSKyucxOmCDOYowLCRnRIC\r\n7QTJDSckDowgtg5ZH9b58hCUHXpzXHpJ2DzwTT6Vb9pwYz0wdCiRAT98Io/H\r\nkAOJZY5AjENg9wxTTrP2YCGbZJRbz1wLfnc=\r\n=ftch\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaQAcWAFrrqroiH/KORckn/TUBJblMEm0s6195YAYUgwIhAPkdP70F+ItxqwkPO6izAK9AkjCORjjU81LQIgDEkhty"}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.1.0_1648315189751_0.4083676949100292"},"_hasShrinkwrap":false},"3.1.1":{"name":"muhb","version":"3.1.1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","types":"./lib/main.d.ts","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"c653fbb200116e565ec210d8661236c2ac6bd10f","_id":"muhb@3.1.1","_nodeVersion":"18.1.0","_npmVersion":"8.8.0","dist":{"integrity":"sha512-PTOyN1IhbIMloWC+Vp+4oPwwZKPTzY4N+Ku8uGRtgUszsxEFzbZJF/MMFEuSg88SjGmnm1h9pr7N/Nj7RCp9Yg==","shasum":"171b162be591bec464d6431fd677234261fd3aba","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.1.1.tgz","fileCount":17,"unpackedSize":53247,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzL2gdPdclOpnvjuhFcEZyNS3V2bi26brpafqmxvYUoAiBc15Iw88MdJe3ORQlm3hI8Y6teW0TnL06is+xGI5e7RA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidUv8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmovQA//aO3wBWM9OyeV732x2/S2X6/55ih+0ocW4DScDA3UO2+xw4h2\r\nRtvqm8ceB0BTD9MNyLXMEDNjdCRLeR/gMxRdB36QjSsBe3laCQk+3D5WrSmM\r\nqtfQlK8nU7Qt0LvXhHjoSBad5BMyu6/QjBcaoXPY95KW7itrHk+LGuPfYrD+\r\n7aB8vzA/bqlLf78K12v3kVAPkscNwnBNu764o0xWk4LPg/owx/kxwhAR8pxE\r\nTVnNuoOa+VDKGWQ2LiOpD0r8TXqu57vkf6hBgcVmoWTcb8zwPWk0pztOHJfN\r\ndyTugZnIqwNQXdOfmu5Bqg4FOTy6qnO19iK428Pj8xxdmewalA8r07qHqLkO\r\nNPF2z8aNVaM9KHAgYXr9lR0k12BJ52Jq2S0WGs9OBMKD91B6n4QWL4/Nezms\r\nYGyhBuRiP4Y8w7htOcioYPSWT1Md08AnnjeapaO8cd1u6nEyJ4wvrGBQXUdE\r\nQlPU3Lwz3vGGY+JH75LXnHB9d4Qd99L0cAtvKvVo/AIj2D2+Uqsd358xboHJ\r\nlmRluyCjP+SPe65nOH0nQGzfiducQEfOPyzcwSggCEqK3We+a8VvBiIpqs96\r\nXijvjv0WWWUa6R8/AYZJXUCg4DXSn+IqiwVFqbEoECtog2Nx4LOj+H+62gOM\r\n1tGlzpJLW076Cm4MXCsSTiA5zlzT96ajk9E=\r\n=Jxvb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.1.1_1651854332183_0.5869801333561144"},"_hasShrinkwrap":false},"3.1.2-rc1":{"name":"muhb","version":"3.1.2-rc1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","types":"./lib/main.d.ts","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.del //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"c653fbb200116e565ec210d8661236c2ac6bd10f","_id":"muhb@3.1.2-rc1","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-67J6/9tB9K2dETpIHbhDCeYQQREWVHdnUlV4sUzOQJ7MUwqi6dg9DUpIO8LWfmTk6CosK7W1VIl6cpDx95Vz8w==","shasum":"5a8f2bf9f21c556ef3ea690e5cdf0d3b68c31c39","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.1.2-rc1.tgz","fileCount":17,"unpackedSize":55464,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsLfxf3FV5Gwuvb8h1GmXwhE5PIDq3b05IMMwVsLuO4wIhAPMZHK31krXzthunjQz5vziXRroHbnS5mDTVj2tn/03O"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkUUCVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpYHQ/9ECKpNf7Vxuwv73nJj7H21dKybVQaArHNN4JPHXBaFL7vA182\r\n+Igc0RvOO5kLSQRkclQVk8cR0NKzG3Y2q65+HZyat4A1Ie1hXOzX4l65pd4y\r\nCJv31nXFNFmho0hzn4eYU2k2+GGSV4EsnX6cScKV8LJQ2Z38YaaTpt4hSnJh\r\nXIxHCTUhnZGnvNE6gMSfRutbReN8qzJOGL7l53iiFYKstlJrW1m/GjgQE4ct\r\nXaT1iTa+Cykh4lAp0CnGEHmL/k4DdDXbFGpKYI4vBya4FyU5CDmecDqWjVPX\r\nsyZvD1Bs2va5JhdmHF2+aHot0I+LkWIsOewo+h5X+b4BGqGdWVGAVJ3U3wk6\r\nSlDHsme2K8Jvr11Wme9Y+sVqH9FJguIhK3v6sD63Mn249j9P4gXichej6ka3\r\nuXHWiuiuefugbypD6dlONgEb4D1kii3w1MKzQwKVy4RK8HCKUT3GwzXq8nE+\r\nUMrNDklikRsrWDzRtt9HYGnD7UblS7IbS7HxqK1O7zlac3Jeh3EXejqcQF91\r\nioUUXj2yzHHr5UYljQ9tbzCWRuS+5NJEVp4MMxUbF+h2iFiQI2q8HEu35PS2\r\nM/S4N7FLRJMjIE7e4z9Ujo8gLlt/v4kU8wrQuBNFZnMIplTle9G8RtiAjOtg\r\n7pPyRmLnfNHncxba0fWg80Y/Kl5hqKhKMxs=\r\n=LfLg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.1.2-rc1_1683046549649_0.043079509106676905"},"_hasShrinkwrap":false},"3.1.2":{"name":"muhb","version":"3.1.2","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","types":"./lib/main.d.ts","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","gitHead":"7646ea041acb5e94d1856d3e05c4cdde8bb29c8f","_id":"muhb@3.1.2","_nodeVersion":"20.0.0","_npmVersion":"9.6.4","dist":{"integrity":"sha512-UuNnVp0FfCJQMnoW+GtTp2zCWOX+qzW0kB2zgGusjfbiePthaDqAPNa1Vw6v9NVypsuFKZJOmoPFZCSu0x9+fQ==","shasum":"d679fa04400d566adf6dbf1cc87b8ada8ce51d10","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.1.2.tgz","fileCount":17,"unpackedSize":53365,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFaj3FvSM56evk6ZlG+UmeY2EgMvm8vEUgMA/L5P1YQqAiAsBCB9SF4/srGvl9Hb3wyTcefUANmHYKi3ereF8CZw6A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkU5s1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpvJBAApB4kQnuYkWHGQWFTAul/BX7zQv6MVkel601f3W59pGUWrB3U\r\ndoxiZD5WUzdhUNoLoTokB5k9xglo4kOau8JNbPpovTpzmZX5EVfbVUGXQ6+c\r\nOIFjht6eD182GcB6C9FW0bSEFeW4bnp8+KWy741m90Ah26TMQkvzGB/fPfWn\r\nhjyT52ZcKv5oR794AgNb9O27CH+CR4KmwRsp34D/K85/oFDH03SLDeMpKDkC\r\n58mWOm2h5SZMHQIjl5boqk5zjK9HlUOjFa7YTFEiwcoeWbzook3Jr85fsiJU\r\nGsa4PSdgczcIrXBXo40v2OhpwFwGYz6zNmsQAVdKi2QA8Mdo5ryKJi9jFB/Y\r\n5kbEC+tp/QBx4fNs3BosTK/NrQc9yNzSf3drpjRN3RbURtNL290EgSxP65Vw\r\n0JyMe0i3CGkJ8o1m37/0G7nxo7Nm/lnpoI5fbxme9mbA+uxPs5XNesc4oMWC\r\nF/y24KO7rX0BM3IVZtSubVj+ewNB4OWhnrzLlmi/dXC2jzH5EYmF7j1dfDaT\r\nx8mrNCvZwyCntIodxsK93jzpZtxt03c6J7LImEEt9C80swlqKLGCY/xSSxEY\r\nf4anrEuet++fEfY+42DCuWPyr3ZF8XlJnUh2qf9taR45b+HQ8anDjpsdB/Th\r\nzCswQtS4UPu3Q+bfm4++06HV5eGsu0+p+Gk=\r\n=UfY2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.1.2_1683200821749_0.9398104134568364"},"_hasShrinkwrap":false},"3.1.3-rc1":{"name":"muhb","version":"3.1.3-rc1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","types":"./lib/main.d.ts","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","devDependencies":{"form-data":"^4.0.0"},"readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.del //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"f5eca019fa305e0b49ab9915be35d1686196a677","_id":"muhb@3.1.3-rc1","_nodeVersion":"18.16.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-9O5Z6/i5ugagFLR0dWJ/UUQvaxbc0GehLsHt0Qkkm3w9yUj8w0JYQYftgM9xu6lO6J6ySyW3L2Jj+qdN2AcGGg==","shasum":"c1dee648ac7fcaefb1d92184823a0af4739bb13b","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.1.3-rc1.tgz","fileCount":18,"unpackedSize":59496,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBmTMGKxL/A9z6aqDOS2gae+d/mvb5hKfAKt1/aHaNzAIgPCB5ytwkV+Zhu3qfc0DTJK8MGD73U4Jpe7/2EKK1XWo="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.1.3-rc1_1697580280969_0.08914452551242658"},"_hasShrinkwrap":false},"3.1.3-rc2":{"name":"muhb","version":"3.1.3-rc2","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","types":"./lib/main.d.ts","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","devDependencies":{"form-data":"^4.0.0"},"dependencies":{"wtfnode":"^0.9.1"},"readme":"# MUHB\r\n\r\n**M**ethod, **U**RL, **H**eaders and **B**ody\r\n\r\n- Easy to read HTTP requets.\r\n- Run over promises.\r\n- Built-in assertion functionality.\r\n- Send many request over pooling strategy.\r\n- NO external dependencies\r\n\r\n## Usage\r\n\r\nInstall with: `npm i muhb`.\r\n\r\nGetting NodeJS homepage:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\r\n```\r\n\r\n### Shorthands\r\n\r\nMUHB exposes a short signature for all HTTP verbs:\r\n\r\n`method ( String url [, Object headers] [, String body] )`\r\n\r\nPosting a random form:\r\n\r\n```js\r\nconst { post } = require('muhb');\r\n\r\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\r\n```\r\n\r\nSending headers:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nIf you would like MUHB to not generate automatic content and date headers, send\r\na ghost parameter like this:\r\n\r\n```js\r\nconst { put } = require('muhb');\r\n\r\nvar { status, headers, body } = await put(\r\n    'https://nodejs.org/en/',\r\n    { 'no-auto': true, myHeader: 'example' },\r\n    'key=value&key=value'\r\n);\r\n```\r\n\r\nHaving all available muhb methods:\r\n\r\n```js\r\nconst muhb = require('muhb');\r\n\r\nmuhb.get //=> [function]\r\nmuhb.post //=> [function]\r\nmuhb.patch //=> [function]\r\nmuhb.del //=> [function]\r\nmuhb.put //=> [function]\r\nmuhb.head //=> [function]\r\nmuhb.options //=> [function]\r\n```\r\n\r\nIf you need to access the nodejs `res` object, all muhb methods return it modified\r\nto have our `status` and `body` keys.\r\n\r\n```js\r\nconst { get } = require('muhb');\r\nlet res = await get('https://nodejs.org/en/');\r\n```\r\n\r\n### Assertions\r\nTesting response data:\r\n\r\n```js\r\nvar { assert } = await get('https://example.com');\r\n\r\n// Assert about your reposnse body.\r\nassert.body.exactly('foobar');\r\nassert.body.contains('oba');\r\nassert.body.match(/oo.a/);\r\n\r\n// Mostly chainable.\r\nassert.body.type('application/json').length(23);\r\n\r\n// Test JSON bodies.\r\nassert.body.json\r\n    .hasKey('foo')\r\n    .match('foo', 'bar')\r\n    .empty(); // test for {}\r\n\r\n// Test JSON array.\r\nassert.body.json.array\r\n    .match(1, 'bar')\r\n    .includes('foo')\r\n    .length(2)\r\n    .empty();\r\n\r\n// Assert about response status code\r\nassert.status.is(200);\r\nassert.status.not(400);\r\nassert.status.in([ 200, 203, 404 ]);\r\nassert.status.notIn([ 500, 403, 201 ]);\r\nassert.status.type(2); // Test for 2xx\r\nassert.status.notType(5) // Test for NOT 5xx\r\n\r\n// Assert about response headers\r\nassert.headers\r\n    .has('authorization')\r\n    .match('connection', 'close');\r\n```\r\n\r\n### Authentication\r\n\r\n> As of now the only auth methods supported are Basic and MD5 Digest.\r\n\r\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\r\nso muhb knows to perform the auth.\r\n\r\nThen just send your credentials in the headers object as follows:\r\n\r\n```js\r\nlet { body } = await post('http://example.com', {\r\n    auth: { username: 'my-user', password: 'my-pass' }\r\n});\r\n```\r\n\r\nOr use the user and password syntax (they will be stripped from the URL before being sent).\r\n\r\n```js\r\nlet { body } = await post('http://my-user:my-pass@example.com');\r\n```\r\n\r\n### Pooling\r\n\r\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\r\n\r\n```js\r\nconst { Pool } = require('muhb');\r\nlet myPool = new Pool({ size: 10, timeout: 2000 });\r\n```\r\n\r\nThen run the pool over an array of say request bodies:\r\n\r\n```js\r\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\r\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\r\n```\r\n\r\nWait until all requests recive responses.\r\n\r\n```js\r\n// With promises\r\nlet responses = await myPool.done();\r\n\r\n// With events\r\nmyPool.on('finish', responses => console.log(responses));\r\n```\r\n\r\nWait for a single request in the pool to finish.\r\n\r\n```js\r\nlet res = await myPool.post('http://localhost/fail');\r\n```\r\n\r\nAct on every request that is responded.\r\n\r\n```js\r\nmyPool.on('response', (req, res) => {\r\n    console.log(res.status);\r\n});\r\n```\r\n\r\n## Contributing\r\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\r\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\r\n","readmeFilename":"README.md","gitHead":"f5eca019fa305e0b49ab9915be35d1686196a677","_id":"muhb@3.1.3-rc2","_nodeVersion":"18.16.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-AOkv5aJRkN+2lynGkiLP2Kg0/cIbmF6R4YjE4+rvHq9B18s9WcRXE6RcZXPUVc6R7LG9FgXOU2YXuFxuzzFEkA==","shasum":"951470b0872373fc9b9e2e9bd034aa9bf6ad783f","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.1.3-rc2.tgz","fileCount":18,"unpackedSize":60735,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNknfwtpMISL5hXAP5DfAVqVyZRlT7/6PJzHvjGwVODAiEAwxoQmnIpuYq1yfCm8QnKLxxAoG7snXfyTrx3T/XkQEk="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.1.3-rc2_1697737995889_0.8385735487433861"},"_hasShrinkwrap":false},"3.2.0":{"name":"muhb","version":"3.2.0","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","types":"./lib/main.d.ts","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","devDependencies":{"form-data":"^4.0.0"},"_id":"muhb@3.2.0","gitHead":"231c7d11fd1c3b391e921110b0440ee4317d60f2","_nodeVersion":"20.8.1","_npmVersion":"10.1.0","dist":{"integrity":"sha512-+8Za+Z3qusyEoyaqZ1aVHrf3s31igrHaHAphmZigCRnO+m3GT3XCJZtO/BHzHtoAqZz9vd1fub2OvVyHncKfOA==","shasum":"7c7de49b294615db2a33d5a49fbfa243b6e3a136","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.2.0.tgz","fileCount":17,"unpackedSize":55374,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH83l6HWFlhLylyySXUBrpQa/JO1jFNr7jZ3X/Y5BEvgAiBmCncV6DGyE8bQfxGVregzgi7F1qed+p+9I0uD2uRu7A=="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.2.0_1697747297553_0.78769099461162"},"_hasShrinkwrap":false},"3.2.1-rc1":{"name":"muhb","version":"3.2.1-rc1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","types":"./lib/main.d.ts","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","devDependencies":{"form-data":"^4.0.0"},"gitHead":"231c7d11fd1c3b391e921110b0440ee4317d60f2","_id":"muhb@3.2.1-rc1","_nodeVersion":"18.16.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-TKkxkd4+HtGHkwLfL+v103wnJelUomaP05/CBNGSQI0hc9NsPDpBMcLopXqm1eFGJdiPUMFbx5E3EeuwjPWTzg==","shasum":"4d52e9a4f5880de16c126745006693f4370aed0d","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.2.1-rc1.tgz","fileCount":17,"unpackedSize":56450,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+vb2rjhqm4ZU1SYhJ96pvDKakspSYAAZrHYOM8qWg0AiA886wphCoAjn3encrSEyNBcaYEVh41O0NcbIIj8cOjJw=="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.2.1-rc1_1698092758127_0.9724547469407181"},"_hasShrinkwrap":false},"3.2.1-rc2":{"name":"muhb","version":"3.2.1-rc2","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","types":"./lib/main.d.ts","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","devDependencies":{"form-data":"^4.0.0"},"gitHead":"231c7d11fd1c3b391e921110b0440ee4317d60f2","_id":"muhb@3.2.1-rc2","_nodeVersion":"18.16.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-HVbskmvcfPyB7EzNNjkLTAMvujN06frOzPjfx+ndTEOZxDMFa8jlaXnOMBhIPbcgcMHW1FvNmxrIL9KxrKWYJw==","shasum":"46f106d6e766df8bede252742f39d76d34f6a2b3","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.2.1-rc2.tgz","fileCount":17,"unpackedSize":56182,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxKJnYvAdyFvMMsMn/sZzxrzR2dyZfOFTj/QPgQKizpAIgKIVcyL9khznfrhjAWcymk9wdge1/Qz0LyuhnBsNZAHU="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.2.1-rc2_1698093057252_0.8167086755892747"},"_hasShrinkwrap":false},"3.2.1":{"name":"muhb","version":"3.2.1","description":"A set of functions for coding easy to read HTTP requests.","main":"lib/main.js","types":"./lib/main.d.ts","scripts":{"test":"mocha -b --no-diff test/*.js","coverage":"nyc -r html -r text-summary mocha -b --no-diff test/*.js"},"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"author":{"name":"Guilherme C. Souza"},"license":"MIT","bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"homepage":"https://gitlab.com/GCSBOSS/muhb#readme","devDependencies":{"form-data":"^4.0.0"},"_id":"muhb@3.2.1","gitHead":"80a23c07ad2e795d98b4e53458102758f90f3eea","_nodeVersion":"21.0.0","_npmVersion":"10.2.0","dist":{"integrity":"sha512-DFXWdAEzVxZsPLGl/OXL1Eb5Og2BljNX3noelbml7yNFLnY4R0aBw/TcvsxvmjrT70uN0yQEtxVXzndc3gC/Pw==","shasum":"28e761aa9780f0a8f50b0db6aad492392c07177d","tarball":"https://registry.npmjs.org/muhb/-/muhb-3.2.1.tgz","fileCount":17,"unpackedSize":55577,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG+/Dlxn//kuuc9d9Fu6ICR8RUdz1HV9kEPd8Z3os15KAiEA1nMfHLzBQQduRcdNJJLvzy+ujCnH+OQDTbY7rkPRJsg="}]},"_npmUser":{"name":"gcsboss","email":"gcsgacc@gmail.com"},"directories":{},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/muhb_3.2.1_1698095027826_0.7888472653201555"},"_hasShrinkwrap":false}},"time":{"created":"2018-09-11T20:47:47.681Z","0.0.0":"2018-09-11T20:47:47.790Z","modified":"2023-10-23T21:03:48.257Z","0.1.0":"2018-09-12T17:25:31.873Z","0.0.1":"2018-09-12T17:27:14.563Z","0.0.2":"2018-09-14T13:18:58.619Z","0.1.1":"2019-06-27T12:41:04.096Z","1.0.0":"2019-07-22T19:04:47.206Z","2.0.0":"2019-09-12T18:54:07.976Z","2.0.1":"2019-09-16T18:19:10.264Z","2.0.2":"2019-09-17T13:14:53.099Z","2.0.3-beta-1":"2019-10-01T12:23:13.276Z","2.0.3":"2019-10-16T16:40:14.695Z","2.1.0":"2020-01-12T15:32:57.305Z","2.1.1":"2020-01-14T15:44:07.877Z","3.0.0":"2020-02-05T14:49:42.520Z","3.0.1":"2020-03-01T17:52:46.964Z","3.0.2":"2020-04-26T19:54:50.461Z","3.0.3":"2020-04-27T18:25:42.630Z","3.0.4":"2020-08-24T15:27:24.285Z","3.0.5":"2021-08-20T13:19:51.489Z","3.0.6":"2021-08-30T15:46:02.877Z","3.0.7-rc1":"2022-03-07T21:53:55.204Z","3.0.7-rc2":"2022-03-07T22:34:23.165Z","3.0.7-rc3":"2022-03-07T22:56:19.151Z","3.0.7":"2022-03-08T18:55:09.950Z","3.0.8-rc1":"2022-03-15T16:46:08.297Z","3.0.8-rc2":"2022-03-15T16:50:38.943Z","3.0.8-rc3":"2022-03-15T17:28:40.166Z","3.0.8-rc4":"2022-03-26T12:49:03.265Z","3.0.8-rc5":"2022-03-26T14:33:56.643Z","3.0.8-rc6":"2022-03-26T15:31:43.064Z","3.1.0":"2022-03-26T17:19:50.150Z","3.1.1":"2022-05-06T16:25:32.348Z","3.1.2-rc1":"2023-05-02T16:55:49.833Z","3.1.2":"2023-05-04T11:47:01.956Z","3.1.3-rc1":"2023-10-17T22:04:41.182Z","3.1.3-rc2":"2023-10-19T17:53:16.209Z","3.2.0":"2023-10-19T20:28:17.935Z","3.2.1-rc1":"2023-10-23T20:25:58.333Z","3.2.1-rc2":"2023-10-23T20:30:57.447Z","3.2.1":"2023-10-23T21:03:48.053Z"},"maintainers":[{"name":"gcsboss","email":"gcsgacc@gmail.com"}],"description":"A set of functions for coding easy to read HTTP requests.","homepage":"https://gitlab.com/GCSBOSS/muhb#readme","keywords":["http","request","simple","test","easy","assert","pool","digest","bulk","await","promise","client","async"],"repository":{"type":"git","url":"git+https://gitlab.com/GCSBOSS/muhb.git"},"author":{"name":"Guilherme C. Souza"},"bugs":{"url":"https://gitlab.com/GCSBOSS/muhb/issues"},"license":"MIT","readme":"# MUHB\n\n**M**ethod, **U**RL, **H**eaders and **B**ody\n\n- Easy to read HTTP requets.\n- Run over promises.\n- Built-in assertion functionality.\n- Send many request over pooling strategy.\n- NO external dependencies\n\n## Usage\n\nInstall with: `npm i muhb`.\n\nGetting NodeJS homepage:\n\n```js\nconst muhb = require('muhb');\n\nvar { status, headers, body } = await muhb('get', 'https://nodejs.org/en/');\n```\n\n### Shorthands\n\nMUHB exposes a short signature for all HTTP verbs:\n\n`method ( String url [, Object headers] [, String body] )`\n\nPosting a random form:\n\n```js\nconst { post } = require('muhb');\n\nvar { status, headers, body } = await post('https://nodejs.org/en/', 'key=value&key=value');\n```\n\nSending headers:\n\n```js\nconst { put } = require('muhb');\n\nvar { status, headers, body } = await put(\n    'https://nodejs.org/en/',\n    { myHeader: 'example' },\n    'key=value&key=value'\n);\n```\n\nIf you would like MUHB to not generate automatic content and date headers, send\na ghost parameter like this:\n\n```js\nconst { put } = require('muhb');\n\nvar { status, headers, body } = await put(\n    'https://nodejs.org/en/',\n    { 'no-auto': true, myHeader: 'example' },\n    'key=value&key=value'\n);\n```\n\nHaving all available muhb methods:\n\n```js\nconst muhb = require('muhb');\n\nmuhb.get //=> [function]\nmuhb.post //=> [function]\nmuhb.patch //=> [function]\nmuhb.del //=> [function]\nmuhb.put //=> [function]\nmuhb.head //=> [function]\nmuhb.options //=> [function]\n```\n\nIf you need to access the nodejs `res` object, all muhb methods return it modified\nto have our `status` and `body` keys.\n\n```js\nconst { get } = require('muhb');\nlet res = await get('https://nodejs.org/en/');\n```\n\n### Assertions\nTesting response data:\n\n```js\nvar { assert } = await get('https://example.com');\n\n// Assert about your reposnse body.\nassert.body.exactly('foobar');\nassert.body.contains('oba');\nassert.body.match(/oo.a/);\n\n// Mostly chainable.\nassert.body.type('application/json').length(23);\n\n// Test JSON bodies.\nassert.body.json\n    .hasKey('foo')\n    .match('foo', 'bar')\n    .empty(); // test for {}\n\n// Test JSON array.\nassert.body.json.array\n    .match(1, 'bar')\n    .includes('foo')\n    .length(2)\n    .empty();\n\n// Assert about response status code\nassert.status.is(200);\nassert.status.not(400);\nassert.status.in([ 200, 203, 404 ]);\nassert.status.notIn([ 500, 403, 201 ]);\nassert.status.type(2); // Test for 2xx\nassert.status.notType(5) // Test for NOT 5xx\n\n// Assert about response headers\nassert.headers\n    .has('authorization')\n    .match('connection', 'close');\n```\n\n### Authentication\n\n> As of now the only auth methods supported are Basic and MD5 Digest.\n\nYou must ensure your server responds with `401` and a `WWW-Authenticate` header\nso muhb knows to perform the auth.\n\nThen just send your credentials in the headers object as follows:\n\n```js\nlet { body } = await post('http://example.com', {\n    auth: { username: 'my-user', password: 'my-pass' }\n});\n```\n\nOr use the user and password syntax (they will be stripped from the URL before being sent).\n\n```js\nlet { body } = await post('http://my-user:my-pass@example.com');\n```\n\n### Pooling\n\nDefine a pool with a max size of 10 requests and a timeout of 2 seconds:\n\n```js\nconst { Pool } = require('muhb');\nlet myPool = new Pool({ size: 10, timeout: 2000 });\n```\n\nThen run the pool over an array of say request bodies:\n\n```js\nlet bodies = 'abcdefghijklmnopqrstuvwxyz'.split('');\nbodies.forEach( body => myPool.post('http://localhost/fail', body) );\n```\n\nWait until all requests recive responses.\n\n```js\n// With promises\nlet responses = await myPool.done();\n\n// With events\nmyPool.on('finish', responses => console.log(responses));\n```\n\nWait for a single request in the pool to finish.\n\n```js\nlet res = await myPool.post('http://localhost/fail');\n```\n\nAct on every request that is responded.\n\n```js\nmyPool.on('response', (req, res) => {\n    console.log(res.status);\n});\n```\n\n## Contributing\nWe will be delighted to receive your [issues](https://gitlab.com/GCSBOSS/muhb/issues/new)\nand [MRs](https://gitlab.com/GCSBOSS/muhb/merge_requests/new).\n","readmeFilename":"README.md"}