{"_id":"o-toolbox","_rev":"26-eabac9f8f0c6338471a49e24d2135584","name":"o-toolbox","dist-tags":{"latest":"7.7.0"},"versions":{"1.0.0":{"name":"o-toolbox","version":"1.0.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"test":"npx mocha --config ./utilities-config/.mocharc.json"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"https://bitbucket.org/haijin-development/toolbox","devDependencies":{"o-testing-toolbox":"^1.0.1","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.20.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","mocha":"^7.1","nyc":"^15.0.0"},"gitHead":"97b02103c7da28f31ed65c8852e874017f5d4421","_id":"o-toolbox@1.0.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Wy4sHhNueV4N/Pz3P9UBhjCzfu6rzLxi9CKxUXnzeW2vgoaTcQ0HSigMKoLfwUN+t+BTRWpS6nbFdg6FAv7Fgw==","shasum":"996c761e4b47a1fe0ec4b795a219bdb2f02e5121","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-1.0.0.tgz","fileCount":17,"unpackedSize":32075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe5LqnCRA9TVsSAnZWagAAqwgQAJYSZs1cmn6S6WIbtfyW\nmn45FjK7OVGOqciBDCns4fVpXb7wdGLAlkih+gg9iTg7VRoZVdhsnWdNllrD\neeq8cSMJ1m4+hoHwYnqsnjTVW72oPGOdc2A4By2koivCDfebClmfDlh+0WAd\nMmMK30PIqlitWvBfyOLEELN5Kx1q2tZqYSMDUdrvdGi2cOhWE1rjZ9ywTIyM\nK3wgdqZUs/pWQVBLh2JNzpzNCbTmv3u2z+y+tJK14YhFv9LOgELwgZZUm+w2\nxeqfMMeYwysi+voH/zPJYrTuM5+VzNlTob71SzfY8ygcu66AH6Qc6MQA+i2Q\nkXXX3Gui8Gq9/dc3FyzB7KxbiiCfUX88E9ceXaSq6TS998VeUcz6Y+JNr2UV\nDomuk5sHlNu8clu50yhaddGGl/tkwXXw5OxZBXjSmM09PHLTIzGyqtNGTmSF\n2geC6q7lX7eCXoZQhsk+kSGGh2zP1Bc5mRlTZIaFzu46vsWvsn9YxglT4VZc\nj0oOPXVWRe4Dy9k6/TXrYWYMkHzj7LQhQ/0z77qMXElQT/A2mb1brjgI11zK\nVAhAK3MtdWBhZh9voD8O0ek3gjhhhQ9TBPWWUAOQ0S8UlzintouByt2Syg+G\netF5/FMu0UCtiELJVzvJamXzsDu2KrWseJGtODF03cfQHUdgMkibrk3zHz07\nbwQr\r\n=9vWX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAuBXO9Ti87OjWqmiegDBhZJ2Q/IwDNow34Lm+XLifQJAiBbviKtsRE2ln2K/9/eiGSdtWAClr51cUKAVuZfSqGCgw=="}]},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_1.0.0_1592048295350_0.4888399134385213"},"_hasShrinkwrap":false},"1.1.0":{"name":"o-toolbox","version":"1.1.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"test":"npx mocha --config ./utilities-config/.mocharc.json"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"https://bitbucket.org/haijin-development/toolbox","devDependencies":{"o-testing-toolbox":"^1.0.1","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.20.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","mocha":"^7.1","nyc":"^15.0.0"},"gitHead":"4b5fcdf0dbacd9e7ceb4ea4a825aae015e208a48","_id":"o-toolbox@1.1.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-hns13vS4lYwT73tqW64e/nwP+8l+jBM8svQR7L4N/bHYF1qdGcU2BL+dQtcpCDXftHpRFYrQS+XRIGwNWMJa8w==","shasum":"36884bb0d5e628dfbcaed642f32b536e57d1e944","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-1.1.0.tgz","fileCount":20,"unpackedSize":35633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe98k6CRA9TVsSAnZWagAAzCIP/RtyjdosQflPDMv4Hh9L\n8c4HNuF4ovc4Whu5uWA10XGLXvu1C4nRLV42mc82Ptg1Xx7NExlWV78dbJGG\ni6DNMRB0/FSjOhKWc0EHh+DUrDk+B/7yIIz11ctKfM83z6zdtVwNldoTB6lt\nF6kHIM8iYYCg3zTUFxmdwhCY3qPki95wo1CCVFhfl7RWe497Ak1PBAtqASix\nAJL3a/FgoRJHKGh9Macux2JzYRTLBNfNNwliJu9LRhckomLC1ralxVxqvilO\n0+q8QV5wKbRpN1Ybnov4tytpXzkyfMe4LoRa92A2zWVBvZ7WfSOIWyex2BEi\nnUQbpnEhf96ezAb7Zth5pJX7Db4l2YcNmNqYqUusNdXu4HjML9wEkxM4wv8E\n+EjgoVYCn+gkstGlwArYr3Nj8I9WwHgIRF/fRm2brnu2hLbyJcuQAhhkS34t\nuVLe7m+bSV7go4FODublJr3i7rdFvADsFaBE6RZ9/cXd0XWHUHTxj2z6/gyH\nPpGVpFTPkvs1Xjeu77vJdQFMs0stzJ7cz4pcLDsCdRaQSDllZIlbcLuL9mO4\nQb1zv2VE5RH0O7Sp5bNTfNNWwiDPVEhG5PjDbLePKVNKVGnri1eaN1tUC5/M\nW0qz07sEJXxa2tdgHkfz+xraSKFnchZ7w6sdsQrALs5hpeFmS0EDB9BWre9i\npUJx\r\n=IyyM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDnkVdvEhHLcJPhO1j1hGgW2//SxEkbjk6+O0sCABkxYAiEAirwjB0djxucWVdTw9CUCVA4PAWRdOx4ZzP7Mtycx1+g="}]},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_1.1.0_1593297209474_0.9955651472205318"},"_hasShrinkwrap":false},"1.2.0":{"name":"o-toolbox","version":"1.2.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"test":"npx mocha --config ./utilities-config/.mocharc.json"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"https://bitbucket.org/haijin-development/toolbox","devDependencies":{"o-testing-toolbox":"^1.0.1","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.20.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","mocha":"^7.1","nyc":"^15.0.0"},"gitHead":"2298cfeae30b9f5370eafc394743e1e0c6c341b2","_id":"o-toolbox@1.2.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Rl7ZJ5oNxuNSjSCd0Y2Rj/yqGDJLF9rnFRg4S+wsYpsjPWhKKzy/902f7cME0GtJP8150akT03sPPYbuvgMFdg==","shasum":"702a7230941c5bc1073efd55110f9330a1ec6b33","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-1.2.0.tgz","fileCount":21,"unpackedSize":36655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUGO5CRA9TVsSAnZWagAAWDEP/ij8BMA2iNTLku5hHphT\njPmUaDLrT2rDHjnpTfba7Mgq8uMymR3gTzZmt6nVHDY+5bzvFE9EdbtKb08U\nmQ+MnUBXkIE/cxcuc0BhgUDHD2xT3GHZxJnd7e/TywId/Jerk7Q+lMG1Lhdw\nI20eRwa5kuQqxLLEstSz8TeV3t0+gDRK60bimM2zIp8kOmLfo/swo/bkBFQn\nt6g3hojHA952uonMQUQVRbChfo59M4eMowDoO+bjDTQrpicr/I6OdyRjQz7S\nvugElZMgPuy2AU/ZRb79XVc55QjBXJvBX1ojdpkz4cer8dlcAi+s2BSIsr5t\noUElg+lGk+pZVb4MYK/mmamzIePno+gpXu65UipFWFnJxmszvcYo4hRtRJQ0\nnyzZXlcqEhVgJAcCXsizguuuI+e8zLG3OAumt2xbJ6CGANAnID3r20qfTPAi\ngHd0Jhrow5UNUZ49HnZo8V5/bEsTmna4to9YVwtisxMvI2XGjagS6DYciRCJ\npjpZa8Uzy+8hyF0zW5puirRXXXHRIwkx9s/XW0m2nTYFln5k/VRMNTs+Z/V9\nFZvzFtm+Wy3d3UqNRP4M67c1XW5F/fZR8NUcMJhQlWqg0Xyp1luaEZN5o2sg\n9IKVY1zc5aIAERxKYqLrVkOaQ8PkcgkQ7TMnKxPAMblljpx+76Mp7H7TbOuy\n26gi\r\n=1jGu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh2kumYqYgCg0Iioy05q4caGGr/unZQ5wcGtQOEmArsQIhAM9NWd3mSaf+XJddcbyE1uGq/MMyJvW2FCiMz2lGIrT5"}]},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_1.2.0_1599103928913_0.7766228389125305"},"_hasShrinkwrap":false},"1.3.0":{"name":"o-toolbox","version":"1.3.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"test":"npx mocha --config ./utilities-config/.mocharc.json"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"https://bitbucket.org/haijin-development/toolbox","devDependencies":{"o-testing-toolbox":"^2.0.0","chai":"^4.2.0","eslint":"^7.10.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","mocha":"^7.1","nyc":"^15.0.0"},"gitHead":"aa45c992d4be017caff4cdfcc7e992821ce0111e","_id":"o-toolbox@1.3.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-c1Cxk31gEKTOVlnhP9Y2FuzmnjevY4sYLS7WFSw/atr3UiW6pR0s1SuLJhmsDd7PqX/jKLXo2Hd0Wa+s5ZOPqA==","shasum":"d39bc8d95de87e533537d5adb091a9954407028d","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-1.3.0.tgz","fileCount":21,"unpackedSize":38758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeNL2CRA9TVsSAnZWagAAXrgP/3n9Qqgg80wCtUmh0QyX\nvAqo8AZrjiyL7F8gTrR4Tm/ej/iS4zKPK4mx5pEStAwseiNSDuP55jZWaJAW\ncSvqSbh+rgArRndhiSmtOXjMX12i7UMG2TY4cKcQbCPw6PeBUm2Px22RHkff\n/RDKzOPZxo+SMcDC99A2Fv995ERw4KmAGQ/WdFeFelGXbwrmR7bf+zjtjt+D\nDLXBs6pvoMOpn7l07nD+/cs+pjDltkiEy+Of4mnJ8GHW5J4rASzqwLe2aMWU\nY3byhY6Rx6jmADYO8R/oTHG9JELWI5lJ5z1D9IQsJjYSiuTIc58WxDZGp5kx\nhbK+Y8R/GQ0OhuVfkeDBmOVggvdspL0zY2d9t2T04szwaqvkn7vCVXCvuDFX\namkt6FOPfofum2GhQ4d0uS2l5+/Qsh0e+uf58AMDaBngXrF3cK1/CfqJ2ugA\nzG20q+kXZkd9SxDqOTv9b2dbTZwyrU0p34OIXzMjMG8XIl/Yhe2ck1pYzvrE\nPaP/1lvDC1aqi2f+Wv6immDTlAgsSqQgAm4OK1SMdoUdMdmP+C38cGdQe6Lb\n5SsrvEoLBCZEqXRknooHoCAL2Wh4bQlquNJHNvVqRPGmk/MBOMxL2t6PrHKf\nVdx7aNJw93cl1jbp7p2sJIfFqnHBiKmHm2XhCPFo39MLOPfgRb8WGjL0+Tyd\nydeO\r\n=I8r7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICW3lU+t2AIKavH6pd/8dOvOO0WmL3iqeatHL8SErhNUAiEA302HUVruyYlS7RAWceOQWHPw1TUjQ5kyU/GZ+ms581A="}]},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_1.3.0_1601753845734_0.6186118808105658"},"_hasShrinkwrap":false},"1.4.0":{"name":"o-toolbox","version":"1.4.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"test":"npx mocha --config ./utilities-config/.mocharc.json"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"https://bitbucket.org/haijin-development/toolbox","devDependencies":{"o-testing-toolbox":"^2.0.0","chai":"^4.2.0","eslint":"^7.10.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","mocha":"^7.1","nyc":"^15.0.0"},"gitHead":"a829be593869af14f213899437a34dd7d214a668","_id":"o-toolbox@1.4.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-LmBEPckImQ/bzK9zl1YSyPnXsZ4y3sAOWIoGwttU2gtmTGPcwBHv4EnCOt05e8i7c5tczcHyIUg5SEKJENLp/Q==","shasum":"fb85193d47f3adab3a682ac1a662f6f7d05014c2","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-1.4.0.tgz","fileCount":21,"unpackedSize":39611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfegCbCRA9TVsSAnZWagAA6mQQAJEVFGR1l0kPaRSiQ1Ug\nneMgzxAiUCwqrhT9IGBiJS8/o8WEaMuhNveaomoPM6TKoZlQyQsYU00b4AdT\nNZFkwjzL1piJvP12qa7t53HQLciLQs0BWlxmZAsG6Z8owFmScsKoD9WKRWMw\n4OB84kd1GUambPdXVSX8lzzIuUhb4XGBAYuSvfPtY0zgDITUWqzYEhUpQlA/\n+NMhllHprnKrz6y9Ia01RVzKR8j1f/XqCzWY5AI3YSnzFz880I7/Qdijg8Lb\nQXJRIKk4hvdY71nBzbqx0bkPvleOMxlO18sKfDNSoGbBndl7CfblkmdKppDu\n/a39Y0FngV/+XMik/W9XkXhM6cuuipth+hfF0foRQXndx0apg2DSMLWeFMgR\nPv6zA+LgPBQKDafPTT3yeSDDp8xp+U2wtPxxs03XAUINLcubkCPjQjiPj3O2\na9kCw/u/wHGCZUB68Y27JOb1bmyxsSE7/YRb23HLp4cvV5aEziXJIgz8s+aI\nSev/h10atrH/RPiaVdal+A6Am3AtRVojwD6Z/5TUFLGZgYo+dsOl07zRnfDX\ng/lcu95wkHFiOLmqq5y9+fIxUlboMhy8jWR/9laAT8Wb5gERGIPa8FWp2qDa\nJvb9kSkHSRVXcPbUrBB5o9aIemADWN9sw9SlN8OLAtlY0PL9BEi3vQgCy/1R\nQOYF\r\n=BBK6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDRQebzbec5vgiqGIZirvLML0NJXp6zadp/fDxX1cQvUAiEA97JTJ8Pes549r/SJ/0+76ZZhnqm9Sn8xc8JsbX7yoDU="}]},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_1.4.0_1601831066729_0.48598794412200164"},"_hasShrinkwrap":false},"2.0.0":{"name":"o-toolbox","version":"2.0.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"test":"npx mocha --config ./utilities-config/.mocharc.json"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"https://bitbucket.org/haijin-development/toolbox","devDependencies":{"o-testing-toolbox":"^2.0.0","chai":"^4.2.0","eslint":"^7.10.0","eslint-config-standard":"^14.1.1","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","mocha":"^7.1","nyc":"^15.0.0"},"gitHead":"d6b5ba62a4945b5817aea72dede1734e94716865","_id":"o-toolbox@2.0.0","_nodeVersion":"14.12.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YsOAdkU1BY/Kndaa+MbPvKfMyjgKR2QP8+SaBrW+666Eg8tLt4qhs7H/3Q2wSuZTlGiveNX95FksVJ+NZLLW4w==","shasum":"586943c56956f51df1f184ca2317b80943983bc4","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-2.0.0.tgz","fileCount":21,"unpackedSize":40029,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiQEGCRA9TVsSAnZWagAAs28P/1eJvaEmmmSPv197Stl6\nxyXuqq036GQQqXu4b9TB691k0tDyEa+8U9KNps+l86f34IBLKA2xZcHdCHY3\nfnxbz6DAb2TOKoIz1h12aNZDYZd5R512as3jwsqiUeawjZrNWq95s0baxNtJ\niPmCK9jTgTxJdxLCM+Wcqr0nmMXU9nZGNJ+Adsm0hkOnMMo+2hNGqpWzeilW\nJUygmWPvmJ2/RN95hai2yKHl6EVtOO80u9KawTSJs0MZo2Qo3hAp8ktP+sfn\nSC47/a/isF7xOL0tRqduFAJGMWAHqjTRLgekklflT4rVjovz7WXvbUn9OEWI\nl9Lyu+dVErsjDddWnoFdlm2lJdcqDXdx/deMhlTvb587OWcxVI06SigW3j5O\nPqXENV/Cse5njlXKodcuuZc9RsOyjDRdGwECQcWEvwVehjJanYKOMwygy0Lh\nj4/+//FbsK5iq3WawsYdBCHAroJPGncr7xVIUvKIp13GYjnsiMDyYVayclIv\ngBnzmiuWpPYypVpzzLKAlDaVsgtb5NVe6nZtl3FBhaunnAtPY+MHxoXeCYqQ\n/qyvsZk/M+22S5UXoriwe/NCC87lDmauhikdvfGznKzLGat5cORnKJ8uEdCI\nJhP7zG52bc2jSMYWz1oVPRYvWe6GhPvQB92DW1HMxxJt4XjVKlvdz6v3uoOG\nX6JA\r\n=IiHh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGEq6bbJ9+wMJzQq5iGVD752av7AwGX7XqbuSvITSNTNAiB0e58GWFaX5RSbQBLHm+ZvmKQJUZqqd3fFCW02ShoBTA=="}]},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_2.0.0_1602814214414_0.22909714311064477"},"_hasShrinkwrap":false},"2.1.0":{"name":"o-toolbox","version":"2.1.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"test":"npx mocha --config ./utilities-config/.mocharc.json"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"https://bitbucket.org/haijin-development/toolbox","devDependencies":{"o-testing-toolbox":"^2.0.0","chai":"^4.2.0","eslint":"^7.12.1","eslint-config-standard":"^16.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.2","mocha":"^7.1","nyc":"^15.0.0"},"gitHead":"0b3fa58ac7f2ec6d8dea5ebb567ff749ea218c3b","_id":"o-toolbox@2.1.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-fHldLZeUQVsqPyASnXLe8QSu9EHLQnxja27AsuBXMmrnElwBoaFgWbC7xm7fd+Ox+qFYK0jTMr0LyMleR1gUkw==","shasum":"89556e1de20a3e638c6e2fd107acd8a29438f6f8","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-2.1.0.tgz","fileCount":21,"unpackedSize":40198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpeGZCRA9TVsSAnZWagAAW8cP/2uT8l1Zp7BB1UQK348A\nODseqkOCDtwVNNsOCB0qt8WXDn4LHOz+CF5Fsiho9GO4Mo81TsQayCdhJL7+\nWJOyreJhiiYOFJ1khiiVGyBGXx4cj4DHc802BsBr4sAmd9wXVoZZws9LlV3C\nSv36fHudVGsscu5eUqQb/eLg05GYEYgQlIbonKTG3C1dYx3YKpATwsOHHg3K\nGr9I3YqhgeLGcPZDDPSLCNRzQR+n4XU9g+ZIHkvLfkw8h00PaoxfeOkagiqp\nzv2dOLF+bWLwmLITSC2UNNifN9vuPWr23fybKIY7Uc/wA6k6oCNPHdJ/BNcn\nMXtn8ALGvt8ot3yN5tx0e5LrppeCJpJsljqsZdU1YVEylKSk6Sj5bBDhElVj\nM2gsC/nXlA+36WKbmaTwgwi+njjCpRN+2dVNJocZZqeIsnqpcaGBPt3ndfSP\nxQ5tVrMFsDBSZpw80cF39BX2FWLEM7CFNFp55kIyX/BT2Rm/DjuXIyzfTS9p\n0wktAMxIUC4sJHbJUj86h10u2diCBmy/UR9YeQeI5b8aQ8ZdkLZcHfOGohH9\nOBZDeTXa5Zr+AQGfKJESIoyIMgu6v1q9uUYcRX5ClEaE7+IaUaVmI0WOegPm\n3sauWd25fN+QtvW04Fyp8lc/tewx0+eYwml4DuqNr2aZ9AaCwSc+tnBewuH1\nbN0U\r\n=xixI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYSPPHyxyhOOWZzFhDOnd7l+8VUvZ3li3h57rJnmMboAIhAK1/1NoyzdHTgCmxDvWDKa6dw/BEOekCdIqHrVql/yLP"}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_2.1.0_1604706712674_0.9407628705518734"},"_hasShrinkwrap":false},"3.0.0":{"name":"o-toolbox","version":"3.0.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"test":"npx mocha --config ./utilities-config/.mocharc.json"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"https://bitbucket.org/haijin-development/toolbox","devDependencies":{"o-testing-toolbox":"^2.0.0","chai":"^4.2.0","eslint":"^7.13.0","eslint-config-standard":"^16.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.1.0","mocha":"^7.1","nyc":"^15.1.0"},"gitHead":"6dc1d84273dd93e1bbcdaa0adf26371c046b5158","_id":"o-toolbox@3.0.0","_nodeVersion":"14.12.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-50eqJkmz35bAudmr1rS67n38iNCZE7AvHcR3/qhSo7wXZT9nOu2vSqyNj9urT2usJ32XOzPMZR1SRPj2Zy5zlg==","shasum":"ee415e720c76949d6773839a8887b90e1653ed72","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-3.0.0.tgz","fileCount":21,"unpackedSize":42320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr/loCRA9TVsSAnZWagAAgEQP/2BHHfWW1olaFbRu1/KI\nuv97jihY7jBK+fiXlatn9udWBv/XNihh2JSLnjWEAMZuKwofoJ4bh2/z4ywN\nKqqCf9Tkq1amKEV0V4qwyDKdfE0gCCcRuwkSrvZ130ckEHDtyVQsL99swaQN\nJZH14THFlsCuYEiDoNWg95F2J5gS+KTkVcPudsty9UCn4B6ZuNI8BqvqDxJo\np+l1sUzBgghDhX62eL89aLQFs+Az5z3SStCxff8T9JMutygPUj7vqfcUkqWV\n70YrdyHRbfD0x8eRfErfOrg9ctwqbHZcmtiQrnORhkqZSx9BZOCPPU2RhV0y\newNw3sfxZBgSTsZf5M5VitD2TsHXGcWJTsS91NJ+sNSyC/0ayvild+vYfuJ/\nkJoDLH1/I7HuCf522Z6LXID8XKM+v9BL8L9zB6ZedpWuda5BkA/cUyRJ8Q97\nhoG2DOPxCGNnp/aPc9cvYNr8r4U7lOU798rzmh7sa7K0J6+k1TVD7JOObjby\nlXUjmWFAlR9FXBF79G0/+Pc/z7ZrewpUtX/N/RbLwSrC4RbnqBAGGwMnXOai\nHYPPJZBwJ711wwW/kuPk63tQdQRGVwNxYMRzPKCeLPcenH5M+8MtaMDfd2Gv\nM/EuG4zGLz1pHxWxFedp1jxvx/yKHJfqiPKI7509OFYydr6Newn57jrI5PFh\nPGW3\r\n=SkO4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSlnqUxSljKJGwzmB3T4Nvld7gGqCOaIZuc/qdrVVK5QIgMPm3EgDsRu/is7YAIt1ZggEu4YZ9CBdMDZcMuCeDlKU="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_3.0.0_1605368167686_0.4089044422328205"},"_hasShrinkwrap":false},"4.0.0":{"name":"o-toolbox","version":"4.0.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"https://bitbucket.org/haijin-development/toolbox","devDependencies":{"eslint":"^7.16.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"file:../check-list"},"gitHead":"7dec112e3eaba9d87fbaf164de81dbf30a57044b","_id":"o-toolbox@4.0.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-U+PLV+e8yL0qhB5z/u2VKQiqpw08IHGaqccBn32scgJyQvicqmqcDnpWfkzbkNUnJaCvDmAbYer1jlfRViafkg==","shasum":"7eb121a873ad73c5ac7e05e3c578fb8a783c6bf9","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-4.0.0.tgz","fileCount":32,"unpackedSize":54943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf51QhCRA9TVsSAnZWagAAltAP/3rSiQqNmHBSCJ7kkl/2\nyR7+Qu4QJek78IWWs9spvySiHAEoX7SKbMmM3iVThOJFMiULIrhfSAFs0dul\nRzdqh1KjDId6Vt1vB1F+F0MSejDRJLEqF/UI8fStYDgc/A0J8VpZmRGsWfc0\n3JXW506lOqVJoe26rqtqDqRNZjw/E50vLldn/TB1uGDu89/s1y1nCIOJkqhX\ni8Yhu/pecP4MrV9K+wrH9MW0ZdT23s8KHPQ5HzU+ZrlTgdNE0UnOdvIbWFWP\ny3V4d85f/1veLBHFHaPaM6BAV3pp4u1eceoKq24VNwcHgnegDldFGEnpiJU+\nS0gpzii+Kluw6viK7H7HBd74OjYFj5yNUUATOkEU6jEg3eOXrBQ4w8S/21ay\nf/XusPC7XCK9tKBXB/S7e+876JkZxZmixXEjkgR4Gusyj7ZZIBOmoieA7OTW\noR2XkSQmykN1fG3On09GZp8LuUVG1koYwvpnkPB3/64NsLUWXXr30rEEZ/2V\nBtHS9QsKJ5QPf6KZyXgDInlfzRZi4a5GQLgvmORaFHczpWY4fDmbeEyZA45x\nqq4Mp0t/Rx+hekL9mBeWVFcsUsiEnhJa8LVN7uPZrNmo4r0z53JlVSmO4Eeo\ncNM8I2vAp6R1ODkhjurSfdiWJj+9JeOv9U2ApjXe5qS6ZSNygAmv1IGy0WbI\nxdTN\r\n=iu9z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBiKCwnTinGSPo4/Ftop35FomgZb4gL1HhlAUv88n2jAIgbK0J/yuxu9rSvk4NwaQRc9cmm2ikMNZqDKplTkhjwZU="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_4.0.0_1608995872986_0.14375891387756035"},"_hasShrinkwrap":false},"5.0.0":{"name":"o-toolbox","version":"5.0.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"https://bitbucket.org/haijin-development/toolbox","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"ffd4d06a7ee03ba497d0f5e04cce23145e72352f","_id":"o-toolbox@5.0.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9+v6ZOG9V9CnTnlrLb6dT8Cv9cqpI9lEmecKop2cI3XAAOzZxsjplxXnQy8LD3jkBQ+rMykZ6G6Tl31+8sxjvw==","shasum":"8914f522f4efb02e4bfae5db946a32d887916487","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-5.0.0.tgz","fileCount":35,"unpackedSize":59102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8e42CRA9TVsSAnZWagAAAuYQAI7xLLxMVN4tciAk4cr/\nd8/NJgOFPlSIrpRidxKofi7G+pHYwOolgBZqhcU4nSZYKDchrBS7HbCtHgK8\nQVSeyHIdYIYwiiLcyc+F66o21ocw9AhuZ17XQa4jxMt+tV06/zTet/kVHLxL\nQbwEGq9hTIOBYTHIMYcp/AuExNvCYygwKWt2n04q5jjjypWqOE7aKgxQ2POy\n5l9tv2OiRM1KirllvI4ikiqNG7ftHLzsuBYbx0tLr/DK7geWmgNRQ1ThOizX\n6mRlO9JSThNv0MCULU+XLgR4Yz+9DwskDaPoPTRrn9+NFUfjsMuq9eAbrGO0\njBr2Kogz+if69H3gklhHrb6J6PFDB7Ypjnp48wUvY9FyxSXfxt0U60yOD3kr\nBcxJmGWBcW0W8TKHFk4eKV5r1ZqsqEemD/jesA9sXAjUZpDRcdLDwMBQGEIP\nZ0dbDoUmO5C+DHiq9SuBYtAoEe7/WTmyigyRrPyktjrMw9Dr4M+1tDmuX8z1\nH5V7JtzoZzfOwNEA1Ie0DvlT/g/KjTlk+gbXAVxa5zA5lkxDCpRII3RWJHbd\n23dItxPxSknU5yM0oESve9FuHDnJ8vAQgkvjP22CsrVLLfaEFQjjkWBmQDWm\n124NLnJEsdH1RMkDymVNcNHpUkwDqus6Bi8TH0ROy/3tDg4g9TRamOL9y+Xd\nUubq\r\n=snDy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdt4veHh6f22PLHb0BbTcJ66Q2f0nviySoogXj7RmM/AIhAKuO2ZEACSU+2VS7qAAqHFf/e7DBl+MEEj3mXyEl0mCr"}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_5.0.0_1609690677656_0.6696364572994316"},"_hasShrinkwrap":false},"5.0.1":{"name":"o-toolbox","version":"5.0.1","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"8bed18d94e97b53500db16752c46abdccfb7a358","_id":"o-toolbox@5.0.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-l0b7HUI8kYxIZMwYbb+dFyRFNB5yTUBzLwt21NdFNSfFBHg++zSyoDL6Rep1VlFQz6yJIBQeFCqoeadVwvavOg==","shasum":"e7a9081a9b355c3b5848428eaf3db04791c76637","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-5.0.1.tgz","fileCount":35,"unpackedSize":59190,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9L6uCRA9TVsSAnZWagAAyHUP/jZoomDoiB8czmdSLm2S\nLWeDn7csWTyRW0YGr2qzREsIx+qcvYMOgmzEVwGuQjMO96fpVWcYeFPnpr2A\nMuVCGYIcAensBhk3DG8yJALSO4zSKQjrAHkMjT/SiCNW5ZBa4v/A6Lci+zfY\niKU0riroc/KPGVWTX47MtdU5E8ZD7fu9E7XB2T/OhptSgC9PFT0wfayGUfMr\nkgtfrdknBWVum6dZ/e/5n74JH1CvkrNFmrXrTEVDFoUrwqD6zn98JsAOChF4\nNNqUeSTeSllMvlGIAwXp50+U1WnMvsJxKoBGRPWHqKi5QjBHUKCw++R7oeQO\nkGUJiuMQysVZo0Q1wLMQNTxKxF/jWJxrp54pNZMfo5o9XLaoXs8cHk16HLDC\nXUEDnJy30rszNQ7O8/vdVld+bIWSnS+fwnoD3u3vcu3kNfuKRne0UBcsZrBW\nJWL0mJY86T1ZIvlSgereMHriRsV7blhTdfdBXBsyeWHDA1h+wOQ3w79ShTQ4\nFBOKq2HT9hhvPKpB4bDeM0X4poFyfT+TADs8CcnrtOXYCcGPuely3VkOcMNE\nj66HDg5v+1ndOfU29adUGNrPWH7jP+gEvyzxW+xHad+jz8RCGtfbiVg5CUj9\nr7Oe2t16UKyvp4JoPMk2b0TJRJ1DSLBPd/AG6F/V2kK44XOfCrb/xzngYx5y\nFZKB\r\n=H7/W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFJ4UQdSWqI6mSB1g4Tuj3Z1yOlLABNPdm5N44fJoG46AiEA/QPK+3tFYf6fZ9XS7IG5xcjddBNFePVgH5a3EsBbFRo="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_5.0.1_1609875118387_0.6712750125712434"},"_hasShrinkwrap":false},"6.0.0":{"name":"o-toolbox","version":"6.0.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"91bedea7d8031fb06db4da068e9532f89251c1a6","_id":"o-toolbox@6.0.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bBt6Qrg7eksH7uNJAynzcVhG8hdK02zGQqlWJcxTCRICzDTl7jauoz7XaH1TKUaISmF1h0uq2kWbF4VgOhOjmQ==","shasum":"499d0b7ad4a5ffdbe07cae9b866935e0b74fc988","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-6.0.0.tgz","fileCount":36,"unpackedSize":59955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9aFGCRA9TVsSAnZWagAADG4P/01hZV1xl1hdi7s3Czbw\nKQdCGW8vYbzsGd/3/+4YPEJTvPrZlsewd30awkatnBykAEqdS0fhOEyktI5R\nP0mMQjp7xd8PHtXcNv689aNpvOhmJhm5X5n2DQA+y5ybzrzyAuNDGppC3lvC\nN4fRyMykFo0RSy9+CSN4TusQhL8+xJFUJpgep6C14MrjuU8o/UnVOSOzVQlz\nOnvR6sCec9zyS6vKzgEkfG33qvuq05lk/kvy1U0WeWq+ieRgv96Jk9LDF0fW\nlcnpkV0c90W1MajWYtnpxmc1/udHbO/7vRSx3pp8tXezidg1z8hcXOM7ykp6\nSMXhOvsrDehNTwxmmISn3/a69MzisGZT9ugyt2r8WjAqu0f/+kL3fGkYP5rY\nVuPgcC+5HMJ7qGFYos66H95+SbCH1JApnaKvrrAyYxcOoBU6pw+f2Z1CM6OL\nyzA3WxYtgZHqRYGviGfmBbcuKG6YLhP9vrge5aehvaZSPVWxkRu555U5IiHe\nPr9JZz1yuYlBiDaeZVcufkubXlqg+QY5uIVVZF0MxVP9n1FP3vjUQpbpshZZ\ng4HIarTldFY3QGEIVCDlRu3TxcTGQEu6HYu3B5f38xQu7UYJaB4P2hHDVIpN\nqH9/TLN650ro3eAmk7KxqxrjtPJ5Ug4c/OfLhN5QszCJgR+twkU+UVUGyeOC\nmwa7\r\n=USbc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDph1P4VOxzXhztrnqVWKYb5vq2LVy1IoG9WONQI88tXAiEA03+x4LfmJ4axMdEunmR+2l0xVOFzC9zzLPAWWqR9WYc="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_6.0.0_1609933125297_0.20541821426210394"},"_hasShrinkwrap":false},"6.1.0":{"name":"o-toolbox","version":"6.1.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"62ae3ea516b40e2b708f96143b1006d876a42f72","_id":"o-toolbox@6.1.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mJ5O3eL5WFX38JneI/1LW8jrzFiXl65lkuuYm+dkqv54fWwEFqH/7GiIy7+utaF5xvrN9YP/zzJ4IA6VOA6wSQ==","shasum":"44695949f13d1251da83f3fc20255ae6da6ada73","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-6.1.0.tgz","fileCount":36,"unpackedSize":61138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+bOICRA9TVsSAnZWagAAjtAP/3dGNb1KoM6S4xKmc4pA\nkPiLqk9Eh/j0h7yZkb7q8GKGH//NJW7A+PV92ReKQ/443Ij06CdTpDR8TEvm\nkgmHVcSFKEszBqnO+6mO7n+xkwnd3vOhCB4DVN4JmwbbIazgoS63L5c0UJcI\nmFmh6fRCVbzgxpwd7PrgE7FMTl/fz34KKis+ytQohW33n4itHY+nWkdlLmgM\nT/RbnqKGR2K6M65qJbth+83g/eh0imX9f1WPmcskYXaSJiDjrJRDJeX1SNNN\nbtG6hXj+6WACn71DAJxrgDYiiPKAqlhvpNc1KwWpAAjFnZzLjH0gK6TNMrS9\nRoeaOU1AJlEyUOhyuSEo72Kgtt8S8dQZSc90EUWIHZ79gZsqBQygaVN9UeMY\nPGdZtTzX3KUSzoYMbVPd9jivRGw7AN2cBhDXOXBnNvGHQieb9E81UdL9xzZg\n88TfD2VXQGTFpeeVwuMjf0bd0sABxkivri+DYGzHeF6MrH5tdplEZVaus3Bc\nuQNikLMI8CM1gU625uMdw01ZZS+kb+aUT2cehbO4dr2rtTcclYUyWF2CbWb+\nHAT+bOWr+7onn4Hye2Uw73nByMkitQ00SwzDmA/5V2lhf0MJcyt5gY07CUXk\nqJdD2i9Q6aVBOPSdlFTA+NTiqqK/Ct0jisUHQzxfzDyEabs0nD28WGvv86fc\nnaxU\r\n=uUB6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzszE+t/W6HHKZhDsAA+a5Xd9dqNnYhoiwisRYq9cWxwIgR3a6BkMmB1/v4cFZ/7itEL+0r7fhIxP7a3A6DHrxFPU="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_6.1.0_1610199943735_0.46653658627179917"},"_hasShrinkwrap":false},"6.2.0":{"name":"o-toolbox","version":"6.2.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"9e0d4d46b8e7e35fc3fb03ce5f540ccacbf6e180","_id":"o-toolbox@6.2.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oCDDQcgCLV/01AWHFP0Bp0BF+Q0Sd9pJRjobtbtIU3j1DCybBO4HsTIHhWVYOQcDf+Hi+WyUelzy+EvTmSoyeA==","shasum":"b763e6ff174d37ca8ad331a955e354cb0b39e385","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-6.2.0.tgz","fileCount":37,"unpackedSize":63517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+fATCRA9TVsSAnZWagAAmoIP/11vDSdDi7x5KmY7fTeu\nGfOXLsGPvcmyGhb9h9y7LVks4nk/MxOijlYjPpmSKvGqTaDU5qwbTBLZ0DPu\ntFzyCsFuwuH3OuGjbTvjsk9TrlatK9bjFuLU782DCHRATPKbgrFnCFgjLFYj\n5aMX+3pYi/A6GNUl8x3CjKbMbD1PCgXSdCMc6M77Eu7SVNCDrewR0LbeGka4\n3Lj2lG1Q9H5vajbcPh+lo7WVSxyInpUM1GPvHXRkklU7tOqwwpgvm00s4hsx\n70YGwy+d9LLNRBOz7mRdXUAnhx+FASgiRwi3ks6KcAb35QVzYnaPFdm3o/Yc\nsbot49kti2RBRxBeRwYgUvTFybyymTlGN0/EfGYu38EufsTKdWrOafyZfXm/\nCNACRyCPWei6JXy2385PaFrQ3hW5dpm3NHu5tpbdl+izF4JpwRxgLpy3ARsA\nnetQ0xzB07yoh7HwWNWHn89mFeISLXbWeLIRqSt+60ikaWwJoOH5+2vO8MPV\nkeRQsXDy7tI/NuiK9koTD+NbifR9ZWx7HB7Uz4ibyLAMYoZ5z++T3xeu4vVI\nuCfmOnZAg76mvQ4EikM9nQdhrNPLfmJvHqUx3DYiKO5Ten2s54vD16eI0JXw\nBqIP5qZMPWhrPfNVNPpAyJ8GJkw9NocuAad3O2JWtAuZhBI3SqGUYOc3P0e2\nvyLp\r\n=pPlR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID4aVzycd/H+o1MMb7StIGR2FOzjMpr6WO9r5jD9PFwbAiEAlnTHAUsDRJjpUz0qpjtBK+B3/qUtrmfQXpx8wACFC4Y="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_6.2.0_1610215442533_0.3749474690712462"},"_hasShrinkwrap":false},"6.2.1":{"name":"o-toolbox","version":"6.2.1","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"e3e417edd3d5ae005073b83408188c7dafb05516","_id":"o-toolbox@6.2.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-K5Q9daYYzNlONiTq06Cz1FJnNC61lTnDCnnPMevmKRFqUxZqIkQ48I2C9WVtCuuGnOpoGlr2T2iY/2Ia4ha0jg==","shasum":"0e3417b2d386dbe15065ff74c3b25c8d3857be34","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-6.2.1.tgz","fileCount":37,"unpackedSize":63604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+iZmCRA9TVsSAnZWagAAAxQP/iE9PdMwEqeiYk8VOiKz\nunV0QE3GBBL369UwJmch9jCG6qUwE3cHHcQrCJlKd40sfDk67vBfOONaMEr+\n4gk3CR8io5MHfFctrhUwFMmZYUZ7j4/lf4aT2TYokJTh/Lep8fUlou7h0A0v\nMPGRqiNmd1FPOZxnP2YpGVV5eQaEb4I8YBLCQRhKUPnysVpSz7CmSEYLi9Rj\nIiCYJWDUH9+E2RTuh8w16SJ1FU4ekHu6revk+JxfAHHz7StDYKqN3wDlYm4p\nLg3CSNfWQeauQSDZnOTxWWOQ3uKqp/j1QEtjlvCTWmSMTOlUCUHzFWcfx3Jb\n9tuI4pW2G0IQjEorUwFvMSoJBKTgP42RCSNwrNX0ED+3ry6u4a8ImjhrcWet\nqlAZSAcwO7WNFPi3DCabZqz2GEWNijh3Y0kMR7A7gP27dx683flNlqG+Bvnu\nypEV6cjJlxE2FXQONfZ/Eybh/DJ9PMq+LCl23nSN3SOk0DD/R+0VO/n0gv0k\nV9/aZ3c+5n7zkvcDmjUjvU3Of0MeZvdsbiXjqTXhpHjyLKEg+egtOfTr4LS2\nSXVjpISGAL/t+udUqsZLvsnKHQd7H7b8trKypbkbRCUENCzKhRV/FK2BsK2c\nkN9FoFBru32IN7PzQUysjblG/CrJP3ax2KPKBb7jav0jI4VOZ67xHq80+eJ7\nGIZz\r\n=5/sA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCk2y4O26B57/+msTsblaOhzWYR6s+nHtNIHNHH0wdTtgIgMl6kg1Hxso//o5DCIWGQa42Naz2b/qffOJyqsQq0JXk="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_6.2.1_1610229350169_0.7794603141788763"},"_hasShrinkwrap":false},"6.3.0":{"name":"o-toolbox","version":"6.3.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"0652e86f2a8db8f55ce32cc6a37c17f600f0e139","_id":"o-toolbox@6.3.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-CPNFdlCkE7M55Z7mMrV2arp5k1XoOBASTpGxobbVqk1mNE8TOxMaOaKCoSY2PdcJeiYea1i+XcOjtEYZL0maiA==","shasum":"9a524058beecc434539bcff1a9f75dfd375f7cfb","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-6.3.0.tgz","fileCount":37,"unpackedSize":64278,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/NkICRA9TVsSAnZWagAA5IkP/1wl30aXbLbolFUnoxEM\ngZgv4CwnGCHoIMfwAhh5gKY7RoDpPPxgrnXDrXRLmlm1+EIMXMbX9lEh/i0L\n7dsX6z4arPuYvnAushJRBzDpw6G26FXtb4jeKpOAcOwGzYxYOJYQx/gHfgo7\nSnt8GKkX4e49gic9zzAxaMvVf5jRUVvtUrPMzMl3Bw5IhcCeZUUJldtNggsw\nyAzjvnNZieG+kJTMaxEJSxZZsEPguL5wX5SeTvjO13XViw+8ITxpQKQQ1fvB\nbsWVUmNLkWNdPkWtglhC27q0rtNWguPq7sKzF1PfyJUosLBkf13d8i4FfbvQ\nJjlJUhO7ZvG5Vy9jqKHUsac5MeRlCjEZuJypxgP+6SM5mWrj9RzQZlL3T7X9\nKQHemNjkNYoljPxtAEVKKqxgnxuea0/FG5qvJFrowowdkR1NOv6aoO3UHjm7\n6gJjuxHeHq+cNy64Vqe+VwNvQ5Fud7rIYiHfK73YlEX94AGacngOke1AWv+C\nvmf99V3SO9519HknB7JhS+Gd7uvQYwiIkaQU+RNP0GqgcwDXLAFbzgN1fhyU\npT0xf+8ioiYZVOQGJ9n7bzt4vM2PFceVvAyOh8Lq+D4MFz71wvDWMQHd7Zz4\nSgOpRvQsaAvg8j5ylAVl8vskVsNJS1MwWDl7mpfbAXP6n2riLX+lUlMfYXNd\nCx0C\r\n=nTO0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/OuXWOo6KSETlKzZXnyGrL0CWmMFsXDD9QTVU+yqKbAIhANs8Qnqe1o5j3OPDxXIK1Cj2EjuIKq9egxHWA2y91KHD"}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_6.3.0_1610406152020_0.8287498088454883"},"_hasShrinkwrap":false},"6.3.1":{"name":"o-toolbox","version":"6.3.1","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"54e4c82efd9ae95e2b8f76054016fe2de69dbeab","_id":"o-toolbox@6.3.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-G7V8G06NggVK89iK/zAQcroqN0HOpUCEXtAJUAGnS3kgroX0/gHh98iT2w3GZ4tB+k1QeR+froPVMN7+0tbTbQ==","shasum":"4c280e98faeb38a85db950b6474b460b48eb7ac5","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-6.3.1.tgz","fileCount":37,"unpackedSize":64883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/hctCRA9TVsSAnZWagAAq2EP/i2nGALJvTxzEjgu0XUT\nRV2Vtwg4bhAt+BndwakJVP7G+reegfKoYudZXe6efBizuZeFDzic7bNZkbRB\nbIYF70Rn1y74KK8dgfxqZvscGlvvDZGkv/vsVICXtF1Etau3HAL5Gf8XYF5b\nkAJA0BD6tEqP8HuIr5/DwvZju3em7Bl/eSnbmUO7b3FIxbRnAKEEo4Ib+N5c\nffXmEzSFfHf3qnyCMyBQnurqCEdSvSos4hUVQi8zWT6Vlg7+IsOjsw5C0jwD\n9TOyqnpR9JFmcTuVeZn4P7eKfmrN+83YxIzkegLLZeB6BObm6Fi8L3Y39KHe\nRMrlqPmd4SwFQsWmBRxo6WVpLMVFj1TENpl3DmoMSgqIn0NDX4c1aUsJKyhF\nkYjRxMfcXDgEhr3atG3QDGJ02ZNSaA03dS2cPwqKfJhQpwQULWIskNuc6c92\n6WSFaSdERPvexgqsNU3jiH8Z0NP/ifOQYJrmfMPujIgCNywsJnf+RBR5JtZF\nV5nXvkENGiG4vV/RAYJN9s3gXbykSmifR4yj+18ZN/CZOvwTHBROB/87TSBz\ngKoWKstfY3mKYp9wQvM8af4auhDlzLwz+UqW6Cnd4rMcf/A4wuBcmD8p/yNw\nyySZFH3uvOnCAy/jbzCqZX1z2GzSQCcOGjp+XbIJPC5DFV4LTP6YjKbMfV7I\nWGeD\r\n=yJNf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1iyyWx8DoFGCUfpvueuqrY8isP9olMeV3MLADGuCVtAIhAL2djY6XXk+41toj262f70MPlkuZR/beTAtfJyRR894g"}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_6.3.1_1610487596672_0.8526064229307415"},"_hasShrinkwrap":false},"6.3.2":{"name":"o-toolbox","version":"6.3.2","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"3a2c14e0d12b4bb2ab042830cda83d8059df88d9","_id":"o-toolbox@6.3.2","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ORXP90ExRKipY6eKBlfKB3nAuncY9Rh6Da6PO9fRVgG8AU1zI361bBRDrCmKhydbtdxCuD1tlS7WCG4yaeM9rA==","shasum":"1d119193ce90bfaf975a68449163407999e3a46b","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-6.3.2.tgz","fileCount":37,"unpackedSize":66317,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/6u/CRA9TVsSAnZWagAALH8P/35agAEIYSbu0xYE3X+P\nDBFaT6YSO8FEmVywlm1OAcNQ1yRl083PGlJHWg9MqVneG6tIWWMyY0QQVYf7\nczEkgU/hKbFaqC6Etm88TFfgWjXt8RVtK78KOPvvhF4WBIis2GvNh4hl9LLA\nTS12+L5cQGWKSJw7o+se+zfa4NHoVI9Z1671zUPWUSMzNdLAsrnem0cdxi07\nHjaLMaUmCyDu8HgdVuiU1sYJZUAUiYciujHbno13/2mjS4ZMOJVqQeb8GF3T\n2Yyl9IW285XNpvm/F3imZJ/4tALFi2p2sj4l+05Sy4vf0rX5J2kR1PUPN47F\nwKskLaAf1iJoqOlk2mZgP3DXVJsT/EG5SUq49a7Nmgu3rSeJY4YR+z8pa3ld\nQCkwmzHEYAd1DkGZyyaLquimKbl7v2Pdk1IuRP6GmfUVKYsg0Z3RR1p/ratT\nMaYhQq/fUoGzsFj1fo/sKzQSDpJ0OZi0c0JeKWcUzA8xbS9O6/jwR5duukG2\nNSkqS1xK7fRPECPB86yXcP0TmH1tzzLMeK/KuwdvqpWJiW6QDnxomPbg7CV3\nisTWGw0YyOmUw88A7uruLrkRqQlee6Ne6wayF4uJUaOZ1y8VvagtamlsfcaR\n/hUtcMinAXjLcgiDUDq//3CeC2V7Er03FkdxVhWXm5CWo32ip7J25GSJVJOE\ntgcx\r\n=9JW3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCclvvRL1eYfPqXY4VpDR8hdtMwW1AWa4ZwbDaa+M+r+AIhAOcEfL5twYKr6a/rD6Nz4UuPGgsRVPEfQeKr44vpNdyl"}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_6.3.2_1610591167394_0.888156422295548"},"_hasShrinkwrap":false},"7.0.0":{"name":"o-toolbox","version":"7.0.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"066733446d4bf5c0bb424899561b47bd5d1b05b5","_id":"o-toolbox@7.0.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-XAKWTVQwp80i0QRgQnbiCsd5VeicjQTGRIgml20F65ZNEdqSGxW7sEDCgavPNMVQvheGlfnzaLeSIJGqM49BNg==","shasum":"d839bb28e73ffa14e37e8ea74512a5dffd32d865","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-7.0.0.tgz","fileCount":38,"unpackedSize":69992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBawqCRA9TVsSAnZWagAA0DUP/i+zqWhKMSprFIZ29Fw/\n0Zhpj6opxnND9jCjnsD8jkm//yMd1F/B8zBHFGLpzMAxxmCgMVqJUppaElPr\nobCKlxKiuN1u2iOBJVvJ1QqVJtWLjncFWVRHiPmKxQo+oautoo29WpAkp/oG\nCg88EOIwHVADdCrZYCjHx2P5DPqTUT9ZofRUAlvNQhA45hnOrbztQHYLiKnC\nTeDvKPoxmm/HNo1gCsYxe8iA6mwua+DqjBlguyzF2wrKFu+aX7JQM13nbWBX\n4lDr8ywiCi9lk4r4jHyhDRFg9C2jGdIiuSDF7ZlFjTeLF62S9AP6RB4+b/Dq\nZLOp5F/EuQVwyPQ8N7fQl7vLFAWGG2fqvJCTVXIa7w1vDqhlKJx3PcZkmOO4\nRNnYl5zLsKwipXcasoO+sf6RJz/vmSHCW34r++TXbcoldxeQRyf2vxhN2kQ0\nn5mjdqm6H0wswoWK82rWiPOChWdGLKA7J9Un2VVkcUI3Emv79HjquAd2Pqbs\nL29qRoaZcVv9aW97HCpVGYf32IlwVA3bNBTHX9G6ZonIK+fU0M2RmzkK7eCK\nprgMpCJggIuaai2xvLsatNfYUmn7HI2sviAPh5vdmcgpc1eb5txfYxLsGKnv\nBMlqQoFeDvKWz5n8srAtncEmlrQYlQ9v5Eo/va7CajthUgkcqRWWBdQKP7De\nROJR\r\n=zzx/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDE2mv9GleeslRH5g1ragjbCTiJG18PyfuDJEDxn5q1JgIhAOlQg7Wbce8RNtGC1HaMM78fWDpFR6HiyGefiyTrB488"}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_7.0.0_1610984489901_0.5658201430073533"},"_hasShrinkwrap":false},"7.1.0":{"name":"o-toolbox","version":"7.1.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"3011b2d558161ea4d5928f1d1b7ccea94030cc71","_id":"o-toolbox@7.1.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-PxNYFmLfbSj3VguTQNf/0llrWrsGCQg9F6PCuo0e40xYP4dt4+nq95TuKZLl4dPTDR3aPGudeVNBq5Dy+DPXKA==","shasum":"89d69667c619e697a039f9fcf3ae841582171674","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-7.1.0.tgz","fileCount":38,"unpackedSize":70788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCBJSCRA9TVsSAnZWagAA4ksP/AxWmVCgA01AeXcopDHb\n+PNBnLZbQgZDOeh3Bw00hDxccObEDRFOp1f6fpGUuW/WssRx7bWoBLp+v2vu\nQ48sNmZk12Ayq2uKjmXWkejK6aVDSCYFEfetYURPJvtYdbqrkr3Fnt3o1M/W\nGirG6KHXMGPvEdHIvDJ4EiFWkbY5miy3FYlias+WV/23uz2lD2bvQ8Ae7Xfc\nGvlRY8HmeL/ZhIBZ2zJ2mu7ifBKVV8T42FMGZg7sVHStuZpybRcBoClTKEKT\nRw8Ypc+z2khyL7N57DznhY6cQhDA0O0kaf+OTBkME/sX4eKvy7k5phof2A/C\nNU3BnOcNGRtYrySko9Go4B0A0W1a1slbJt9E3LGZ/k7yxhxE+gHLCkZvOQIs\nUfGMaNEDG4jmU8in+Zof9RsC8+G8EwMJQOfWpfFnn/lg5EdV7KTfUyvf+cmS\nddQhPYnOt6Ugbn94szPCHPj9RmuPUc/043e/TZYSkzw02n6F0FK7AGFk4z38\n+GpAiNwtfTb0btWJtl7o7vaMBP3Qd5PiKOUlD7rCnK7O2ewse2dT6u6hJddf\nNn7JM1X1qBhPycwvJIk14emwMClBY7D+0FihUidTyoVouZqmYI+5SfVJLsbS\n9tZ7lbCJ+ckwadWM72yeV51xGIvfXNCej8IqHNzF2xyopq2AYEvuAuZ76RVe\nlmmH\r\n=6r88\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJSO84CISt+9hQeevFbCcjus2bMGHpjdx3mrjnmtxMZQIgegCrKjJYl5k13N6ZMPKtaRf2RqL6i6i7Ei3cmH6BrHU="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_7.1.0_1611141713556_0.558568009396512"},"_hasShrinkwrap":false},"7.2.0":{"name":"o-toolbox","version":"7.2.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.17.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.1"},"dependencies":{},"gitHead":"c2bfcdaa06f2c48713400791220d416ff1aa6de3","_id":"o-toolbox@7.2.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-5YQYdeJSkonFENdlnRwxESIr8h9lcanGqZSVHz/i5WUuFeRnhXH138TJq2sLUGtHGKFXMWy51PKz+PPJ53eUfg==","shasum":"fb195bf4f1bed9bc9b133d63311055fe95324807","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-7.2.0.tgz","fileCount":40,"unpackedSize":75638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDZEtCRA9TVsSAnZWagAAtlMP/31DuirI+l7QHKlVasQF\n2I9xrCtHJhqYhKGbpJtmLQ1Zz4p9vBqe0dYyxXCUbgB09KDGtb1XEqJA2e4u\nFDKI3jkDwVInPu2B7EfA7sTnWe5GnUlL9fUkQl/E57E1RwOsAeHsae7jEF68\n7KFClLI6oOglFyz40G+NeqMihl+qZkO3o3qBnW14Kg5jb+THM7sjz0mxcqc9\nroM/N1dbmKd4fgfZ0g20NoWqWXdc5jvUqDDKnrCNnY/XmAUJcUAcF3RLxk/0\nHuf9KzTFGiFoUR46jh1/DtQgpZJPJBMtwDMMeJP8xaxwH7Ph6QDv+ze4C1wF\nMdKIyTYg0eryedjZltTepcOMaGiZLwFIGgS7lv4sZ8lUIs0IWPWHiixefmGP\nGBg4RTpD3NdUU+1ZXwJMYPxehHSPjE04F0J84TBTS3zpi+EgDAXiVEHoEPdU\nvzt98+NkOg0J236gc3AEmwrZrpvN28k0HKYNHXFjebpLDjuzV+KiHcBFMu5G\nu3H4rcHA/OusIg3L75hFys6TI+jKB137/f+JlXurks+raES7WXUnk0tK+FBE\nSbT52rq+Web5Wob08UsQfSdami/rbeIQV3/TnxgZ9KpR7gb2Byngj51YhK4e\nrDCIklfNv/cULqFFZNRt4tWoid6hYThXkqLhzH4sZCpxlllgtepxxTqzZpoG\ngNNj\r\n=0buq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGNINErTl0Rw/aYCfjAYyX2Lxf1eNux+YyqaS+Ybtb+YAiBrbIgxRbP2qtq8s7vvd/bEii5YDl/BY9cIPW5r9NhleA=="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_7.2.0_1611501868995_0.8712602401733085"},"_hasShrinkwrap":false},"7.3.0":{"name":"o-toolbox","version":"7.3.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.18.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.2"},"dependencies":{},"gitHead":"5ad60aba8f5002054f503c53c6ec62b1b248eb94","_id":"o-toolbox@7.3.0","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-QstekjlLPfljnn0cvpzBaUU1qBgZAfzcELQoumo8BZea398mhgqPnc4qSa91bCilU1hLdhr/fOGTFWSH0rQUyQ==","shasum":"29d7716381358c19e571e995466ad5935c409f20","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-7.3.0.tgz","fileCount":40,"unpackedSize":78724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFDUFCRA9TVsSAnZWagAAdvQP/3LknjbgVthYLGXc00vQ\n7sf6WQv+8cjrHr/BNJf/U5/CT5MDod8rrr1y5HibZyp9WdDobppc5c7f57RS\nHzxEPUk/pTp0yXMtQchQtFumj06kLhShttCBkdxydSg2DMI63D/8sKv1BwaG\nuVCQQi01vufV6GLC/QQDIHkastbF27FLFFv7byHIOIMfzMyNX87CXQdB1xmJ\nbNNa7AmEzvdcu2NjkeFkCbpPdLhP8wNCr945CHrcLu+VCk9jrFm2pu0gZT5y\n5bDycWo728XZ9NgQw7ATHNefUCbiK9volH7mSiRA+b4XKaixoWkTx2pEKrUb\nlHjtgrdjD36eEx2yF7gSlZFM4YkbVPkrhyd2zMVXLkFCqLJzOo8bWWUeFreW\nBsOKyychZgSgjnStmRn2ylY1Eppt6pmFW8ahNoLjw5w1avkSfGaxbuU3g2RV\nKcHTGoeOsDHWxbn4iGIq11uWfuMjWAcN1iSMHXDulTI3StrK+M9BGODGzcvF\n9OcVTApxQO3wYff2xvXxHOtUIetRfOkbtpzr06p4AvN+qe55bnMAC2DFxHuP\nBIdXuukWUAOdAxsSIK3rV+j/85IG4qBKE//TrNr8xUFSK7FG/+SKYTgtt0u6\nc5aI2QxeDHW0Ez7qhTUyb0KCuflGRvFGPJ4kQm1I7T2wfAViHie2I7D1OZ0k\nuSvX\r\n=aCeK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGg8Z1kANSKE6m7OCdXGqgHmYxoSrSUEQ8tAZ5BMMXrNAiAOHl0xBk7PyQKC1ppJeiK2nb/yBxgTe54d5XDVhm2fDQ=="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_7.3.0_1611937029213_0.4394952786353252"},"_hasShrinkwrap":false},"7.4.0":{"name":"o-toolbox","version":"7.4.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.18.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.4.2"},"dependencies":{},"gitHead":"a25671f452b9693bbc5069e9b54c559e67b0cae5","_id":"o-toolbox@7.4.0","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-AiyzrK38oKoVMpEBWURZbINIKjcaJsq3l8IWGggrzHzvRaFQNQ0vc2KMMiaI2uAWYAzySMhNUunvakObDk9uCQ==","shasum":"5490502c1cc1904c5ed964aa5e30fce36ab11a39","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-7.4.0.tgz","fileCount":40,"unpackedSize":79490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG86xCRA9TVsSAnZWagAASBoP/1UbpkmYucHOvLiNvhhz\ny9GizQODSD5HqYI1ACELBgW010pCbEhWNgO4ba8XVQmvPKV1tx3WWwTFLueR\noVO774HYLejnQO354/2h4j9ALKybhYnE2lOSOmDkuSivkYjTgMCPUY7Lmm6j\nKG0t6A7+Fz8tosiEXSS8+VvE6wWHbbTymxxgfNpeGdz/xCy9mJQiuDG9ETo1\nuoZPDyjd1GemWoK4zRu7IhOqSWvQVDdkyMR2xXBPE+Vik98TkrIqBTNje9NA\nA4x3QEaEgmU5hmB77vN9AlUGWE2OV+vdKuOkSN+73s77ytf7qKBKZjrIuFbx\nEXy6CoWiWhpK8UTWmc7XQxQYUTt/POCRygBQOAXtKfjzB6cavzcutv342dzr\nsc/dVh43x1faCq+jymA5pYdWquBSceqUoOqoNnG9z4869KRW6tC/qNs58XuB\nP1bX7SEmSEZAtGQLVPH8bpl+ow/Kd0im8b426IiRx+5JN4+m8olb5a7Ka9x9\nGm0oeaVSBmlfaoDq6xrL4mceFFVEkZm4kf03nydEGYXMTEesrUwP23gQ+oJV\nEiOd7jNC2fBUCQqLXenOgHw7nIr/GKhyawlGZ8jKBATaxiMqj2eyQcyBAO1I\n28g3qUpBPs4OXH01nVdTLkZO4aMR0UzsXXMWytQhobZdtotERKCbMxmlA7dU\n1cWA\r\n=sug6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHtaMl+p6DryISr0ywaF1O+Vef4ujm1M5Tl/FQklMXTjAiEA9tBUPn5VP0MyzTd39F5T7gbOKC571ejyDVhR01I/ZaA="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_7.4.0_1612435121353_0.01368645598492324"},"_hasShrinkwrap":false},"7.5.0":{"name":"o-toolbox","version":"7.5.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"clean":"rm -rf node_modules && rm package-lock.json","coverage":"npx nyc --nycrc-path utilities-config/nyc.config.json npm test","lint":"npx eslint --config ./utilities-config/.eslintrc.js .","test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.18.0","eslint-config-standard":"^16.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","nyc":"^15.1.0","o-check-list":"^1.5.0"},"dependencies":{},"gitHead":"bc11aca4a5ed5c20a11312f973e695aa71fe8741","_id":"o-toolbox@7.5.0","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-kE9xT1SxQfGoMbS8UqJYgVwX1Shs/DMYu9kW+wlUlLNGVlBV2B0N4eR9XC8YAqD5lPhnDuoaOxw+h5cLmjY3lQ==","shasum":"8fcf5cb86ca2fcd0ab005401045e129c5cc3f867","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-7.5.0.tgz","fileCount":40,"unpackedSize":80691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJny+CRA9TVsSAnZWagAACKIP/2gYexBOjPSQHGzHz8QQ\ngewE1VEXJqlRdeka2uYDCOMIfsH+8XrbCAf+fetD0u8RnzP6+/CYLEUsxyFj\n0vrEUnXpUpmVUO9TYWuZBhI8ZkPjtqJkiMweltYjoyVCauhc4ztDhLyEZePw\nHLUpFkQePvBfheKEIVwrdJUXmvu9A45oU3EnHB4XocttSGDinZpeq7B+lhkX\n6e8Nf/oxXl0JG3mqfigopoAMcF51nAjO2pgTrVctRpFjrPUyOd1jIN72t2nf\nFjrWCQNSe7ynChQJOz+U/s7ktsLDmk4QTDzoq/Xl2RVKS6L5V1pyZ/zjuG3G\naAK6K9FiOpxgT5n5qiTXcUZ/1uizNWzCh5t++9tp5HEdROH5KU1ayHYsdZH3\n8eVYTZCrYobMCUACmvwWzPQpqL4xtkc/QW+MZ7BqhozcQSp/IgdIdeNMFA25\nUA2jHqBB8aul/CYlkq3bD7VXzctG8MuT/SNgQ/0loSBT7HAYKuoQp6OywR6j\nhVzUHSIFrBLiMqTbZl5bgToiz6187ZXpZ9TVSG0dk48pPIWu3d3neh2I6BgC\nBXn9sEPsZB89h+vgnkHNcHxh9oXiM1KgHI43xQFI5QCOgOwa/SN2Q+zCP0/A\nadpxzRMJysGLbdWcR3J22E6rTsUw8csF24PKdMykEEiMQMyyHtyAx9yXzBbI\n66mF\r\n=0TO8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICTiaJIlYpXWsOfK6Wn6Li35JL2KDm1RTV+6UaySNuQsAiEA+r+PI2LVvvEOVAPRNyxDPPMhAvzR6443cn2T4TsNgOg="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_7.5.0_1613135037961_0.004987394121625632"},"_hasShrinkwrap":false},"7.6.0":{"name":"o-toolbox","version":"7.6.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","devDependencies":{"eslint":"^7.29.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.23.4","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^5.1.0","nyc":"^15.1.0","o-check-list":"^2.0.0"},"gitHead":"48d23d463b138c710f24922bc842e3e8d89515ef","_id":"o-toolbox@7.6.0","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-HHphkqDwVUz8djGETSfLuB+uA2Pf2vEVtnZKU5aKRBESv/o6BqY84+ALWZjmbSiu/5HBG11+wDOny6xGYWuPzA==","shasum":"c07071154080d573b69b7f5ddd85a4dc1c75d72d","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-7.6.0.tgz","fileCount":40,"unpackedSize":83753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgziD1CRA9TVsSAnZWagAA9ygP/Rn0CKsebSQxlqXtpaEh\nzXkMGxqSoYvT1auiJUzZdAaXAQs+MN6GIkVLLtkCm/cqdn1tWcsgNPXDYONq\n2nb31HFr5uoJPEbF4O3WlOAXqzMuS8e+M1N7za0c2smDLFrDsnhWpdiqyMwG\nAgyRRcdPt4F3aNHCCo1j+6kG2kPxS3EE8oKlHUCT0CIcH5NDgFREV3y6e9MA\nzHJ7/xw5J+M4LFnrECSU2PUE8cQdioDPX714xXokiDJdry6UnQuYTz0N++bZ\n7DudQCz/vg5G79lCqJRgjfAoMiv48w2ctVaokrKI/mPSO/xXVEDZLHEi6niC\nbWpb50rJOJF50wM0y0LnT6eaVF/RCj0Cxsy+gHRAt88gEEd1x6WIC8xbCWQL\nWkpToLwAc0EeYMuvOIltt91P1lrfHv81zH1cbpzddwDz/7DJbLS2/xnUs0mv\nd+JjSJThrPvxk0cQVSheU4n5fEYSoI2YCheHuhG/5X50sJ8zgriKmx3Nlf+F\nlM4OL/fclYzeZ/PU2qufRFO3vWvY/ueLsG0sfW40sjC0MX86MpHnJvyqLai2\nPO9Z2Tl24rru7wPiEsHFB5yaH1jAtaCAMLJrfmGYeJHiXkDIMHWZRSP5+RSJ\nhrQoRXPDqF5uc/QizBN7Kc4F4JzvhskM+eY+8RmW1gGL/u2twoNpZjJn/0yh\nKLRH\r\n=VSJS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+KriZIIeTauYlMt74YsyNTO1SedsiBatbAV3BcblpoQIhAOJZldqbDTcDQpFXhWokkf4/D8is5v3/lDZsix0GvBlx"}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_7.6.0_1624121588263_0.9237762075798135"},"_hasShrinkwrap":false},"7.7.0":{"name":"o-toolbox","version":"7.7.0","description":"Utilities for Node.js.","main":"index.js","scripts":{"test":"npx checklist"},"keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","homepage":"http://o-programming-language.org","repository":{"type":"git","url":"git+https://bitbucket.org/haijin-development/toolbox.git"},"devDependencies":{"o-check-list":"^3.1.0"},"gitHead":"c2ec12881dcb387b690b92f3e452fe3f918c4964","_id":"o-toolbox@7.7.0","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-SdYym3Hypci7AH0fZs6oa7xS9O3TP8V4c2zF+u73H53x5TkazK+KbFpVYUFy9lDdEeiawC8utbRB898SNpUiSQ==","shasum":"734dd541d87a4893c52f7d03505dfdb1cc48cc89","tarball":"https://registry.npmjs.org/o-toolbox/-/o-toolbox-7.7.0.tgz","fileCount":40,"unpackedSize":86049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIm89CRA9TVsSAnZWagAAW4oP/2YDTiRxAYAk21TipIsZ\nrbcIOihPx8/EdCwCsld7WWB3f9k5hSmlZbKUNKdFc1DwPjsWXK8U33pPv3b1\n0D4UL2XtE+ue6UrGf9cdEWfxjAItv6JGx1PTsVxaQ3FirKhOq7PrjoTHjq7F\n1QdWW8qrCjHzHF8f1uUClYLrEubpbnkpFhFGCrz1ev0HQ7IwFg7S8/f/jbPV\nekzM83zIJBxWyEUHNDMaQTVIW9fA0k2GyjiWZrN2452IP04rmyZNeN/3IQNB\nPPWeQCudhvI9LTUXFxyVG69DdiSWCf+fEdOpiYi3ARRfhmrdxYTmg9jd27Gk\n1tqwG5O3N9jbB6aVF8HdwbkfnSZ14IFUemcKt51Nm5X6hJFgQduRCkAyxTy3\nEOn59g/OU1fX+fET37jpWrQcj6XXFRqXXMYzDURGkznHOdv9mRp2VC9B/Edr\nNetc1qtQJbc4HeFWiD0QED4k0PLD0YlWSj9EwoLfefwmvLw7hubXIeeM65Yj\n95dFYetJu1uRYA3X4X/KWiUBd7/7HSuFqg9Q89ZtG2wJZEftO2D1UkHxYxMv\nN3uow0eiOmOMh7Lew5IyYFIiKTvMCAlyFCBkvwj9BRStmtLCCzXwb/86Mzqp\nJDnVxTt+W8kcH+8TZ++IF4JWQKsrWFOQct9UQAl0wv5kWdurV5dIWf/WFn9m\n7Bz3\r\n=Z0Uc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAdBHfX8OfLBdOZgpodcw3skGHLHyb3iQrewmKQXE/wJAiEAvLZcV554TuzVtTm7hGMPbVxSFR+jIURdw4mALAibrvo="}]},"_npmUser":{"name":"haijindev","email":"haijin.development@gmail.com"},"directories":{},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/o-toolbox_7.7.0_1629646653471_0.786432173606362"},"_hasShrinkwrap":false}},"time":{"created":"2020-06-13T11:38:15.349Z","1.0.0":"2020-06-13T11:38:15.442Z","modified":"2022-05-12T00:03:46.305Z","1.1.0":"2020-06-27T22:33:29.694Z","1.2.0":"2020-09-03T03:32:09.029Z","1.3.0":"2020-10-03T19:37:25.892Z","1.4.0":"2020-10-04T17:04:26.873Z","2.0.0":"2020-10-16T02:10:14.550Z","2.1.0":"2020-11-06T23:51:52.827Z","3.0.0":"2020-11-14T15:36:07.815Z","4.0.0":"2020-12-26T15:17:53.162Z","5.0.0":"2021-01-03T16:17:57.774Z","5.0.1":"2021-01-05T19:31:58.509Z","6.0.0":"2021-01-06T11:38:45.410Z","6.1.0":"2021-01-09T13:45:43.908Z","6.2.0":"2021-01-09T18:04:02.677Z","6.2.1":"2021-01-09T21:55:50.316Z","6.3.0":"2021-01-11T23:02:32.213Z","6.3.1":"2021-01-12T21:39:56.843Z","6.3.2":"2021-01-14T02:26:07.545Z","7.0.0":"2021-01-18T15:41:30.054Z","7.1.0":"2021-01-20T11:21:53.775Z","7.2.0":"2021-01-24T15:24:29.123Z","7.3.0":"2021-01-29T16:17:09.405Z","7.4.0":"2021-02-04T10:38:41.455Z","7.5.0":"2021-02-12T13:03:58.093Z","7.6.0":"2021-06-19T16:53:08.417Z","7.7.0":"2021-08-22T15:37:33.648Z"},"maintainers":[{"name":"haijindev","email":"haijin.development@gmail.com"}],"description":"Utilities for Node.js.","homepage":"http://o-programming-language.org","keywords":["utilities","helpers"],"author":{"name":"Martin Rubi"},"license":"ISC","readme":"# Toolbox\r\n\r\nUtilities for Node.js.\r\n\r\n## Installation\r\n\r\n```\r\nnpm install o-toolbox\r\n```\r\n\r\n## Documentation\r\n\r\n[http://o-programming-language.org/](http://o-programming-language.org/)\r\n\r\n## Usage\r\n\r\n### Type\r\n\r\nUtility to query the type of an object\r\n\r\n```javascript\r\nconst {Type} = require('o-toolbox')\r\n\r\nType.isUndefined(object)\r\nType.isNull(object)\r\nType.isBoolean(object)\r\nType.isString(object)\r\nType.isInteger(object)\r\nType.isFloat(object)\r\nType.isFunction(object)\r\nType.isArray(object)\r\nType.isObject(object)\r\nType.isPromiseAlike(object)\r\nType.respondsTo(object, methodName)\r\n```\r\n\r\nUsing `typeof` has some problems. `typeof(null) === 'object'`, `Number.isInteger()` exists but `Number.isFloat()` does not and there is no type `boolean` to name a few.\r\n\r\nThis utility aims to address some of these issues.\r\n\r\n\r\nUsing `instanceof` is also discouraged since it does not allow full polymorphism. Instead of asking for the class of an object in some cases asking whether the object responds to message or not might be a better choice.\r\n\r\nTo ask that there's the method\r\n\r\n\r\n```javascript\r\nconst {Type} = require('o-toolbox')\r\n\r\nType.repondsTo(object, methodName)\r\n```\r\n\r\nFinally there's the method \r\n\r\n```javascript\r\nType.displayString(object)\r\n```\r\n\r\nwhich returns a string representation of the object suitable for debugging messages. For example\r\n\r\n```javascript\r\nconst {Type} = require('o-toolbox')\r\n\r\nType.displayString(undefined) === 'undefined'\r\nType.displayString(null) === 'null'\r\nType.displayString('a string') === \"'a string'\"\r\nType.displayString(new User()) === \"a User\"\r\n```\r\n\r\n### Copy\r\n\r\nCopies addresses the copy of an object without having to check first the type of the object.\r\nIt copies undefined and null values, basic type values, arrays, objects and class instances.\r\n\r\nTo make a shallow copy of an object do\r\n\r\n```javascript\r\nCopy.shallow(null)\r\nCopy.shallow(1)\r\nCopy.shallow({a: 1})\r\nCopy.shallow(new SomeObject())\r\nCopy.shallow([1,2,3])\r\n```\r\n\r\nIf the object is an instance of a class it's expected to implement a `.copy()` method\r\n\r\n```javascript\r\nclass SomeObject {\r\n  copy() {\r\n    return new this.constructor(this.props)\r\n  }\r\n}\r\n```\r\n\r\nTo make a deep copy of an object use\r\n\r\n```javascript\r\nCopy.deep(null)\r\nCopy.deep(1)\r\nCopy.deep({a: 1})\r\nCopy.deep(new SomeObject())\r\nCopy.deep([1,2,3])\r\n```\r\n\r\nIf the object is an instance of a class it's expected to implement a `.copy()` and/or a `.deepCopy()` method\r\n\r\n```javascript\r\nconst Copy = require('o-toolbox')\r\n\r\nclass SomeObject {\r\n  copy() {\r\n    return new this.constructor(this.props)\r\n  }\r\n\r\n  deepCopy() {\r\n    const propsCopy = this.props.map((prop)=> Copy.deep(prop))\r\n    return new this.constructor(propsCopy)\r\n  }\r\n}\r\n```\r\n\r\n### Dictionary\r\n\r\nA subclass of js `Map`.\r\n\r\nIt handles `Map` methods and adds the protocol\r\n\r\n\r\n```javascript\r\nconst {Dictionary} = require('o-toolbox')\r\n\r\nconst dictionary = new Dictionary()\r\n\r\ndictionary.isEmpty()\r\ndictionary.getKeys()\r\ndictionary.getValues()\r\ndictionary.defines({ key: 'someKey' })\r\ndictionary.define({ key: 'someKey', value: 10 })\r\n\r\ndictionary.at ({ key: 'someKey'})\r\ndictionary.at ({\r\n  key: 'someKey',\r\n  ifPresent: (value) => { ... }\r\n})\r\ndictionary.at ({\r\n  key: 'someKey',\r\n  ifAbsent: () => { ... }\r\n})\r\ndictionary.at ({\r\n  key: 'someKey',\r\n  ifPresent: (value) => { ... },\r\n  ifAbsent: () => { ... }\r\n})\r\n\r\ndictionary.mergeKeysFrom ({prop1: 1, prop2: 2})\r\ndictionary.mergeKeysFromDictionary(otherDictionary)\r\n\r\n// shallow copy\r\ndictionary.copy(anotherDictionary)\r\n\r\n// The following methods are sync and will not work as expected with async code.\r\n\r\ndictionary.keysDo((key) => {\r\n  // ...\r\n})\r\ndictionary.valuesDo((key) => {\r\n  // ...\r\n})\r\ndictionary.keysAndValuesDo((key, value) => {\r\n  // ...\r\n})\r\n```\r\n\r\n### Set\r\n\r\nA subclass of js `Set`.\r\n\r\nIt handles `Set` methods and also adds the protocol\r\n\r\n\r\n```javascript\r\nconst {Set} = require('o-toolbox')\r\n\r\nconst set = new Set()\r\n\r\nset.isEmpty()\r\nset.includes(item)\r\nset.toArray()\r\nset.equals(anotherSet)\r\nset.contains(anotherSet)\r\nset.intersects(anotherSet)\r\nset.addAll(items)\r\nset.remove(item)\r\nset.removeAll(items)\r\nset.union(anotherSet)\r\nset.difference(anotherSet)\r\nset.intersection(anotherSet)\r\nset.copy()\r\n```\r\n\r\n### SequentialCollection\r\n\r\nAn Array like object, with convenience methods and validations of boundaries, and\r\npolymorphic with other collections in this library\r\n\r\n\r\n```javascript\r\nconst {SequentialCollection} = require('o-toolbox')\r\n\r\nconst sequentialCollection = new SequentialCollection()\r\nconst sequentialCollection = SequentialCollection.with(item)\r\nconst sequentialCollection = SequentialCollection.withAll(items)\r\n\r\nsequentialCollection.add(item)\r\nsequentialCollection.addAll(items)\r\nsequentialCollection.at({ index: 1 }) // raises an error if index 1 is out of bounds\r\nsequentialCollection.at({ index: 1, ifAbsent: () => null }) // returns null if index 1 is out of bounds\r\nsequentialCollection.countAllThat( (item, i) => item > 1)\r\nsequentialCollection.clear()\r\nsequentialCollection.filter( (item, i) => item > 1 )\r\nsequentialCollection.forEach( (item, i) => {\r\n  // ...\r\n})\r\nsequentialCollection.forEachInReverseOrder( (item, i) => {\r\n  // ...\r\n})\r\nsequentialCollection.getFirst() // raises an error if empty\r\nsequentialCollection.getFirstIndexThat({ block: (item, i) => item > 1 })\r\nsequentialCollection.getFirstThat({ block: (item, i) => item > 1 })\r\nsequentialCollection.getIndexOf(item)\r\nsequentialCollection.getSize()\r\nsequentialCollection.getLast() // raises an error if empty\r\nsequentialCollection.isEmpty()\r\nsequentialCollection.map( (item, i) => {\r\n  return // ...\r\n})\r\nsequentialCollection.remove(item)\r\nsequentialCollection.removeAll(items)\r\nsequentialCollection.removeAllThat( (item, i) => item > 1 )\r\nconst first = sequentialCollection.removeFirst()\r\nconst item = sequentialCollection.removeItemAt({ index: 1 })\r\nconst last = sequentialCollection.removeLast()\r\nsequentialCollection.sortUsing({ block: (item1, item2) => {\r\n  if (item1 < item2) { return -1 }\r\n  if (item1 > item2) { return 1 }\r\n  return 0\r\n})\r\nsequentialCollection.toArray()\r\n```\r\n\r\n### SortedCollection\r\n\r\nA SequentialCollection that ensures the order of its items\r\n\r\nIts interface is the same as SequentialCollection, except for the creation of the collection, which takes a sort block\r\n\r\n```javascript\r\nconst {SortedCollection} = require('o-toolbox')\r\n\r\nconst sortedCollection = new SortedCollection()\r\n\r\nconst sortedCollection = new SortedCollection({\r\n  sortBlock: (item1, item2) => {\r\n    if (item1 < item2) { return -1 }\r\n    if (item1 > item2) { return 1 }\r\n    return 0\r\n  }\r\n})\r\n\r\nconst sortedCollection = SequentialCollection.with({\r\n  item: item,\r\n  sortBlock: (item1, item2) => {\r\n    if (item1 < item2) { return -1 }\r\n    if (item1 > item2) { return 1 }\r\n    return 0\r\n  }\r\n})\r\n\r\nconst sortedCollection = SequentialCollection.withAll({\r\n  items: items,\r\n  sortBlock: (item1, item2) => {\r\n    if (item1 < item2) { return -1 }\r\n    if (item1 > item2) { return 1 }\r\n    return 0\r\n  }\r\n})\r\n```\r\n\r\n### Path\r\n\r\nA path in the file system.\r\n\r\n`Path`s are immutable values, meaning that no `Path` method changes its state. When a modification is done it returns a new `Path` object.\r\n\r\n\r\n```javascript\r\n// Path is not included in index.js for it depends on 'path' and 'fs' modules\r\nconst Path = require('o-toolbox/src/Path')\r\n\r\nconst path = new Path('/etc/logs/app.log')\r\n\r\npath.exists()\r\npath.isDirectory()\r\npath.isFile()\r\n\r\n// Returns true of the path string matches the given regex\r\npath.matches(regex)\r\n\r\npath.toString()\r\n\r\n// subPath can be a String or a Path\r\npath.append(subPath)\r\npath.back()\r\npath.back({ n: 2 })\r\n\r\npath.getStats()\r\npath.getFileExtension()\r\npath.getFileExtension({dot: false})\r\npath.getFilename()\r\npath.getFilename({ extension: true })\r\n\r\npath.getBasePath()\r\npath.getSegments()\r\npath.getFirstSegment()\r\npath.getFirstSegments({ n: 2 })\r\npath.getLastSegment()\r\npath.getLastSegments({ n: 2 })\r\npath.toAbsolutePath()\r\n\r\n\r\npath.getFiles()\r\npath.getFiles({ recursive: true })\r\npath.getFiles({ matching: /[.]log^/ })\r\npath.getFiles({ recursive: true, matching: /[.]log^/ })\r\n\r\n// Returns the contents of the file as a String.\r\n// Raises an error if the file does not exist\r\npath.getFileContents()\r\n// Returns the contents of the file as a JSON object.\r\n// Raises an error if the file does not exist\r\n// Raises an error if the file contents is not a valid JSON string\r\npath.getJSONFileContents()\r\n\r\n// Writes the given contents to the file\r\n// Returns the path object.\r\n// Creates the file if it does not exist\r\n// Overrides the file if it exists\r\n// Raises an error if the file directory does not exist\r\npath.writeFileContents(\"File contents\")\r\n// Writes the given object as a JSON string to the file\r\n// Returns the path object.\r\n// Creates the file if it does not exist\r\n// Overrides the file if it exists\r\n// Raises an error if the file directory does not exist\r\npath.writeJSONFileContents(object)\r\n\r\n// Deletes the file\r\n// Raises an error if the path does not exist\r\n// Raises an error if the path is a directory\r\npath.deleteFile()\r\n// Deletes the file\r\n// Does nothing if the path does not exist\r\n// Raises an error if the path is a directory\r\npath.ensureDeleteFile()\r\n\r\npath.getDirectories()\r\npath.getDirectories({ recursive: true })\r\npath.getDirectories({ matching: /[.]log^/ })\r\npath.getDirectories({ recursive: true, matching: /[.]log^/ })\r\n\r\n// Creates all the directories in the Path\r\n// If the directory exists does nothing\r\n// If the directory partially exists creates the missing subdiretories\r\npath.createDirectory()\r\n\r\npath.files({\r\n  do: (filePath) => { ... }\r\n})\r\npath.files({\r\n  recursive: true,\r\n  do: (filePath) => { ... }\r\n})\r\npath.files({\r\n  recursive: true,\r\n  matching: /[.]log^/,\r\n  do: (filePath) => { ... }\r\n})\r\n\r\npath.directories({\r\n  do: (dirPath) => { ... }\r\n})\r\npath.directories({\r\n  recursive: true,\r\n  do: (dirPath) => { ... }\r\n})\r\npath.directories({\r\n  recursive: true,\r\n  matching: /[.]log^/,\r\n  do: (dirPath) => { ... }\r\n})\r\n\r\npath.filesAndDirectories({\r\n  do: (dirPath) => { ... }\r\n})\r\npath.filesAndDirectories({\r\n  recursive: true,\r\n  do: (dirPath) => { ... }\r\n})\r\npath.filesAndDirectories({\r\n  recursive: true,\r\n  matching: /[.]log^/,\r\n  do: (dirPath) => { ... }\r\n})\r\n```\r\n\r\n### Environment\r\n\r\nClass to conditionally evaluate blocks of code depending on the environemnt where the script is running\r\n\r\nThe Environment object receives the values in `process.env` or a copy with the variables of interest and provides methods for evaluating functions only in certain environments:\r\n\r\n\r\n```javascript\r\nconst {Environment} = require('o-toolbox')\r\nconst environment = Environment({ env: process.env })\r\n\r\nenvironment.isProduction()  // env.NODE_ENV = 'production'\r\nenvironment.isDevelopment() // env.NODE_ENV = 'development'\r\nenvironment.isTesting()     // env.NODE_ENV = 'testing'\r\n\r\nenvironment.on({\r\n  development: () => { ... },\r\n  staging: () => { ... },\r\n  production: () => { ... },\r\n  default: () => { ... }\r\n})\r\n\r\nenvironment.on({\r\n  development: () => app.use('/', debuggingRoutes)\r\n})\r\n```\r\n\r\n### Errors\r\n\r\nA hierarchy of generic errors\r\n\r\n```javascript\r\nRuntimeError\r\nNotYetImplementedError\r\nSubclassResponsibilityError\r\nAbsentKeyError\r\nAbsentMethodError\r\nPathDoesNotExistError\r\nUnexpectedTypeError\r\nParamsError\r\nMissingRequiredParamError\r\nUnexpectedParamError\r\n```\r\n\r\nEach of these errors can be raised with sync `Exception` or with an async `Promise rejection`\r\n\r\n```javascript\r\nconst {RuntimeError} = require('o-toolbox')\r\n\r\nRuntimeError.raise({ message: 'Error message here ...' })\r\nRuntimeError.raise({ message: 'Error message here ...', async: true })\r\n\r\n// which is the same as doing\r\nnew RuntimeError().raise({ message: 'Error message here ...' })\r\n```\r\n\r\nThe following errors can be raised also with arguments using the method `.raiseOn(...)`\r\n\r\n```javascript\r\nconst {\r\n  SubclassResponsibilityError,\r\n  NotYetImplementedError\r\n  MissingRequiredParamError,\r\n  UnexpectedParamError\r\n} = require('o-toolbox')\r\n\r\nSubclassResponsibilityError.raiseOn({ methodName: 'someMethod', className: 'SomeClass' })\r\nNotYetImplementedError.raiseOn({ methodName: 'someMethod', className: 'SomeClass' })\r\nMissingRequiredParamError.raiseIfMissing({ param: n, paramName: 'n' })\r\nMissingRequiredParamError.raiseOn({ paramName: 'n' })\r\nUnexpectedParamError.raiseOn({ paramName: 'n' })\r\n```\r\n\r\n\r\n### ImportMethods\r\n\r\nImportMethods utility is a simplified implementation of Mixins.\r\n\r\nIt lacks of inheritance with other Mixins applied to the same class and does not keep its own set of instance variables but in many circumstances it still stands as a good enough solution.\r\n\r\nTo import the methods of a Mixin class into a concrete class do\r\n\r\n```javascript\r\n// A mixin to add an .equals(other) method to a class\r\nclass ComparableValueBehaviour {\r\n  equals (other) {\r\n    return this.getValue() == other.getValue()\r\n  }\r\n}\r\n```\r\n\r\n```javascript\r\nconst {ImportMethods} = require('o-toolbox')\r\nconst {ComparableValueBehaviour} = require('./ComparableValueBehaviour')\r\n\r\n// A class\r\nclass CustomValue {\r\n  constructor(value) {\r\n    this.value = value\r\n  }\r\n\r\n  getValue() {\r\n    return this.value\r\n  }\r\n}\r\n// The addition of the mixin into the class\r\nImportMethods.all({ from: ComparableValueBehaviour, into: CustomValue })\r\n\r\n// Now CustomValue instances respond to .equals()\r\nconst value1 = new CustomValue(1)\r\nconst value2 = new CustomValue(2)\r\nvalue1.equals(value2)\r\n```\r\n\r\nImportMethods also supports partial imports with\r\n\r\n```javascript\r\nImportMethods.all({\r\n  from: ComparableValueBehaviour,\r\n  into: CustomValue,\r\n  except: ['someMethod', 'anotherMethod']\r\n})\r\n\r\nImportMethods.methods({\r\n  methodNames: ['someMethod', 'anotherMethod']\r\n  from: ComparableValueBehaviour,\r\n  into: CustomValue\r\n})\r\n\r\nImportMethods.method({\r\n  methodName: 'someMethod',\r\n  from: ComparableValueBehaviour,\r\n  into: CustomValue\r\n})\r\n```\r\n\r\nIf possible it's encouraged to encapsulate the use of ImportMethods in a static method in the mixin to simplify its usage and avoid an additional `require` statement\r\n\r\n\r\n```javascript\r\nconst {ImportMethods} = require('o-toolbox')\r\n\r\n// A mixin to add an .equals(other) method\r\nclass ComparableValueBehaviour {\r\n  static attachTo(aClass) {\r\n    ImportMethods.all({ from: this, into: aClass })\r\n  }\r\n\r\n  equals (other) {\r\n    return this.getValue() == other.getValue()\r\n  }\r\n}\r\n```\r\n\r\n```javascript\r\nconst {ComparableValueBehaviour} = require('./ComparableValueBehaviour')\r\n\r\n// A class\r\nclass CustomValue {\r\n  constructor(value) {\r\n    this.value = value\r\n  }\r\n\r\n  getValue() {\r\n    return this.value\r\n  }\r\n}\r\nComparableValueBehaviour.attachTo(CustomValue)\r\n\r\n// Now CustomValue instances respond to .equals()\r\nconst value1 = new CustomValue(1)\r\nconst value2 = new CustomValue(2)\r\nvalue1.equals(value2)\r\n```\r\n\r\n### NoOverridesImportMethods\r\n\r\n`NoOverridesImportMethods` behaves like `ImportMethods` but if a method is defined in the target class it does not override it.\r\n\r\nIf the mixin provides default implementation of methods overriden in the target classes you should use `NoOverridesImportMethods.all` or `ImportMethods.all({ except: })`.\r\n\r\n\r\n### Protocol\r\n\r\n`Protocol` utility validates that a class defines all the methods in a given protocol.\r\n\r\nTo use it define a protocol to validate\r\n\r\n```javascript\r\nconst {Protocol} = require('o-toolbox')\r\nclass ComparableValueProtocol extends Protocol {\r\n  equals(other) {}\r\n  above(other) {}\r\n  below(other) {}\r\n}\r\n```\r\n\r\nand with it validate that a class implements all its methods\r\n\r\n```javascript\r\nComparableValueProtocol.validate(SomeClass)\r\n```\r\n\r\nIf the validation fails it raises an error.\r\n\r\nIf you prefer to ask for a boolean instead of raising an error use\r\n\r\n```javascript\r\nComparableValueProtocol.isFulfilledBy(SomeClass)\r\n```\r\n\r\nTypically you would validate the class right after its definition\r\n\r\n```javascript\r\nconst ComparableValueProtocol = require('./ComparableValueProtocol')\r\n\r\nclass SomeClass {\r\n  // ...\r\n}\r\n\r\nComparableValueProtocol.validate(SomeClass)\r\n```\r\n\r\nClasses usually have 2 protocols. An implementation protocol stating the methods a subclass must implement and a public protocol stating the methods a user of the class can call.\r\n\r\nThe recomendation is to define and validate each protocol independently with its own Protocol class.\r\n\r\n### Random\r\n\r\nUtility to generate random numbers\r\n\r\n**Important**\r\n\r\nThis random number generator is not a good random generator and it's **not** suitable for statistical calculations, nor to use it in cryptographics\r\n\r\nFor not critical uses, like graphical animations and games, it's good enough\r\n\r\nGenerate a random number with any of the following methods:\r\n\r\n```javascript\r\nconst { Random } = require('o-toolbox')\r\n\r\nconst randomFloat = Random.numberBetween( 1, 10 ) // 1 and 10 are included\r\nconst randomInteger = Random.integerBetween( 1, 10 ) // 1 and 10 are included\r\nconst randomItem = Random.pickFrom( [ 'a', 'b', 'c' ] )\r\n```\r\n\r\n## DoMe commands\r\n\r\nDoMe commands are intended to be self-documented, please take a look at the files in `DoMe/forDevelopment/inWindows`, or in `DoMe/forDevelopment/inDocker`\r\n","readmeFilename":"README.md","repository":{"type":"git","url":"git+https://bitbucket.org/haijin-development/toolbox.git"}}