{"_id":"@cacherapp/run-server","_rev":"6-8e1dc55c63ea69cf3cbb580c7f224e29","name":"@cacherapp/run-server","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@cacherapp/run-server","version":"1.0.0","description":"Run WebSocket requests as Bash commands.","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Penguin Labs, LLC"},"license":"MIT","scripts":{"start":"npm run build && node scripts/start.js","build":"bash build.sh","lint":"tslint --project ."},"engines":{"node":">=8.0.0"},"homepage":"https://github.com/cacherapp/cacher-run-server","bugs":{"url":"https://github.com/cacherapp/cacher-run-server/issues"},"devDependencies":{"@types/express":"^4.16.0","@types/lodash":"^4.14.117","@types/node":"^10.12.0","@types/socket.io":"^1.4.38","tslint":"^5.11.0"},"dependencies":{"chalk":"^2.4.1","express":"^4.16.4","get-port":"^4.0.0","js-object-pretty-print":"^0.3.0","lodash":"^4.17.11","nanoid":"^1.3.1","opn":"^5.4.0","shelljs":"^0.8.2","socket.io":"^2.1.1","winston":"^3.1.0"},"gitHead":"36da1284f88ac8e68cb6b51f8eedd9dc6689519e","_id":"@cacherapp/run-server@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"8.11.4","_npmUser":{"name":"cacher.rui","email":"rui@cacher.io"},"dist":{"integrity":"sha512-hMKmp9m61kPYx4fZOs21bYU4IjMNN7a6JKKHlTNUjh/cS9Jk596ONI+X9vAXIu9bRmzHUD53WdAbs3kG/v9ENQ==","shasum":"96f0d8e8677807051514285579a8e9f2da65988b","tarball":"https://registry.npmjs.org/@cacherapp/run-server/-/run-server-1.0.0.tgz","fileCount":40,"unpackedSize":68436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0jFhCRA9TVsSAnZWagAAqPgQAIz0XnxqjMqjz+/rWigR\ncYLqW90jckp5B1WFSlGYqkCpO2NMALyRVx/47VpoZaD2PDQRjDKSOdbJtuoi\nmeQpLHkYZpLvpnZpK+kYUX4iKnApmcKc+XNWdvYI+U2dUxahRXZs92j26Ome\nE240bjg/BdjLR2b/IeOgTs9kwvR8v7710yTOmoqDnUwZY5jrtfr8ioPE7uIl\ntoWP5lXQocDZULlCUIcQehZDrdLeMsF/NfSMdY/UbVlhHM2hH8LBQErtAhlq\nq0GG6zktb6wkN9riCrhnpsqxJw7R3q0+z5hQ/4wK9Px+sExjmjaW2nATmUU9\n5BjoF1V8wXqgvddhYscztI8S0dlLJ3EHMH7Fie4IJqOjiwZDMhd2Lz603DN2\nqeOljcedKRIm+GFPC9VGUtVpAilYFahZUuuG0d3STfiCIfONpAhYnQYEz61n\niydRmt8MymJ7og7M3HfdZo/DIqWIxMnZn+EerbBvtHw4YH0lcFVlGtsNSC62\nGt2f6fN1xzi7KdqdP5s+E9HdcrvXNbCdaOmxps8E4kF2jTn5mJ5BYaELsms9\npnNSn3wpBu3R5P2w2PRIt/Mpe9Rx1tHV1NIitx/Juux5NmAezBlyGrAxAeyn\nxPv3z4HqL64atBosV4PEQVqzUoGK23f83ASo9/0J0zeJ6CCyhL3Qrb+klhHj\nMPFQ\r\n=hIcS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBgxUIZufsyD0AeCXBSWU35XMI6J0HwHG3c2Oeph+TrbAiEAqjVC3gxFsbGKVPgw1yCZ9H6u6rDFk16Wb8gMTDYOcNA="}]},"maintainers":[{"name":"cacher.rui","email":"rui@cacher.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-server_1.0.0_1540501856706_0.6251801107293595"},"_hasShrinkwrap":false},"1.0.1":{"name":"@cacherapp/run-server","version":"1.0.1","description":"Run WebSocket requests as Bash commands.","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Penguin Labs, LLC"},"license":"MIT","scripts":{"start":"npm run build && node scripts/start.js","build":"bash build.sh","lint":"tslint --project ."},"engines":{"node":">=8.0.0"},"homepage":"https://github.com/cacherapp/cacher-run-server","bugs":{"url":"https://github.com/cacherapp/cacher-run-server/issues"},"devDependencies":{"tslint":"^5.11.0"},"dependencies":{"@types/express":"^4.16.0","@types/lodash":"^4.14.117","@types/node":"^10.12.0","@types/socket.io":"^1.4.38","chalk":"^2.4.1","express":"^4.16.4","get-port":"^4.0.0","js-object-pretty-print":"^0.3.0","lodash":"^4.17.11","nanoid":"^1.3.1","opn":"^5.4.0","shelljs":"^0.8.2","socket.io":"^2.1.1","winston":"^3.1.0"},"gitHead":"a941f109d622fdee30cdf218f0e4e0d0add8c610","_id":"@cacherapp/run-server@1.0.1","_npmVersion":"6.4.1","_nodeVersion":"8.11.4","_npmUser":{"name":"cacher.rui","email":"rui@cacher.io"},"dist":{"integrity":"sha512-dlUNoeXrEw1P6jQQogEHYRHZD2/HkHrbTGovqjzrycCagJ7ugRc1B2fM7f5AGFJ790E7QeIHujQXa5Y+JaMVew==","shasum":"2edd02042d2c89adceec8f9e16c64220330a5312","tarball":"https://registry.npmjs.org/@cacherapp/run-server/-/run-server-1.0.1.tgz","fileCount":40,"unpackedSize":68436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0jTRCRA9TVsSAnZWagAA+20QAIj07EvM3ISvqVwtRpYw\nc7y5p0dpJVK7xSPhoNjuqr0Vyj1Bsyui2nAM6z8+FaoZIxZNQvnvPcn4x/0E\nZoA3nh/eqtsSsP5CRJvGTmOXoQML23O1syxJ5gX114aM1letqiogeKEiK71G\npg0vjbstp0Doue9LLPsgQRxnu4CFjhKnLDFfdGIwwfHacLBt/tFeGPGfoA2A\nb8ySQeOwmWfRfT6NsnWCQDl88QwZVT/S+JjBGKwcQxZzX0EMewkZ3rPln6Y5\n2/9es8AWfczwyxIDYBbpT5Z4W1BYbsD6EnDbh3Pm9kE42FIuvsk3UOeXiKev\nI9KEZTio0Gnt7MD7r7XeZkwKOtSJ/sEftMPLr8sTieuZ/RV50uOuT79LnILO\nU04j5gUZD6F9Z5SDsOovvfs5JUO4jN6GT8eLnLmSq07HVIBHRvctJzNBIHvZ\nZ8M1d6Fd3J9L5alnR1j/kuXAJ1jNJ/D9qRNfMmYQ5x9KN3NGDikuhUQAMP4w\nwOGH3P4h9i6rF5pWEtl+8jOU/+PLBsK/c3QLf7KLNt7Y6N3CQayBKAzh7ndA\n4hszCVhCSKuPmRA5+sGvE+c/AdTUjJ1QpumKnENNqe1y2WyEZJlceK/eArRi\nRbK5TOth92hlrUGilhT7UKWFDXYOkICvbj20LgV2jfy0QuQPWMEsl+yFufoU\n6d72\r\n=gSWw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNOZi7PLOwJHYsS8QmXE4um2SIzQ6ABb9etdVbnjJ/fQIhAPALgQEYkQEEAYxllEjahS2iLpGdcdJainrg/8mkrsxQ"}]},"maintainers":[{"name":"cacher.rui","email":"rui@cacher.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-server_1.0.1_1540502736404_0.16316774128406264"},"_hasShrinkwrap":false},"1.0.2":{"name":"@cacherapp/run-server","version":"1.0.2","description":"Run WebSocket requests as Bash commands.","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Penguin Labs, LLC"},"license":"MIT","scripts":{"start":"npm run build && node scripts/start.js","build":"bash build.sh","lint":"tslint --project ."},"engines":{"node":">=8.0.0"},"homepage":"https://github.com/cacherapp/cacher-run-server","bugs":{"url":"https://github.com/cacherapp/cacher-run-server/issues"},"devDependencies":{"tslint":"^5.11.0"},"dependencies":{"@types/express":"^4.16.0","@types/lodash":"^4.14.117","@types/node":"^10.12.0","@types/socket.io":"^1.4.38","chalk":"^2.4.1","express":"^4.16.4","get-port":"^4.0.0","js-object-pretty-print":"^0.3.0","lodash":"^4.17.11","nanoid":"^1.3.1","opn":"^5.4.0","shelljs":"^0.8.2","socket.io":"^2.1.1","tslib":"^1.9.3","winston":"^3.1.0"},"gitHead":"5ee5edc9619c22bd4ee0ff92dc1669fd6a747e81","_id":"@cacherapp/run-server@1.0.2","_npmVersion":"6.4.1","_nodeVersion":"8.11.4","_npmUser":{"name":"cacher.rui","email":"rui@cacher.io"},"dist":{"integrity":"sha512-zqnSDzn4ysje6nWfyp8Om9J1n2h0UGaTCCQPxOPNM/2Dx9/IN6mkvT/fwGPriCGNOiLH48b1DuKhVHVcNoQ/Yg==","shasum":"6407660d4e6d1692ff7828f83147692b3333f91b","tarball":"https://registry.npmjs.org/@cacherapp/run-server/-/run-server-1.0.2.tgz","fileCount":40,"unpackedSize":68732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0zDICRA9TVsSAnZWagAAK6sP/ix+0aVjUThJ4rYVrU8c\nPRfM16+udPNVCYjiwAl6u7n3vjy17+KCRL4gE8P/9t6bpKb08sCWAA3QEeQc\niFCH1RAjJ0vYdPxcuRKqSZX00rIOju3JKg2LxBj1kD3SLxbxIBx6ky+4ES10\nn9kkVUG42lWQFnnrrGXo2HMcKScOm2Q/ceqqgPjGgZx5ODIgsMMNSxet4pno\nbKiUO771qonnuJ5OQWK6wLcU2TgxsX3OuxZs1ggHc7REBqemq+KuERMmLX2A\nRaR0DFg2kz2UTh6IDsn5QvXwH/U5qoi2EdEACQWojB9BLgkFNqG7IX5tVP5v\nrcrBYUTCMwOvWmBYYI/ff4LKlURGYpbj5OD6aGxhDZK04mkTNtR66H1G+ws1\nGZlz/K/UmZMaBMB0n6rjpemw/8+BUvZI5PD332WvYTXrvd0ux7VBo6wTMiWx\nSknCG2c5mGWkeFJI+Hbuc6SibyFB9dPB7s6rAPmNT7colPZsyfCOPAf0uqs1\nMalY8cmksaYzxjwNAqK4FiplwGoheoJGn6CT0S4FBcDNfRWvqTO/WJAanntk\nWTNGfCU+4lq/gdcXaIbkx9c63bpfdI7w8hmYGZKX4bYfXx/qjs/ncIj/z8Xu\nG5CVRjep5D/D4pdz+aJWZjLvLF2LMh0WgomN4uAn53EiP7qXFkzucL0uIc63\nBXFo\r\n=vaWM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAduD4U0OI98Zpc8zSYoceqioc85MAMRjpsQDW3sODViAiEA3PwSQY6i4AdQ4PlI+Ax0RS7G4UuRMcR05AWhjX8Zz/A="}]},"maintainers":[{"name":"cacher.rui","email":"rui@cacher.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-server_1.0.2_1540567239393_0.18374891806303895"},"_hasShrinkwrap":false},"1.0.3":{"name":"@cacherapp/run-server","version":"1.0.3","description":"Run WebSocket requests as Bash commands.","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Penguin Labs, LLC"},"license":"MIT","scripts":{"start":"npm run build && node scripts/start.js","build":"bash build.sh","lint":"tslint --project ."},"engines":{"node":">=8.0.0"},"homepage":"https://github.com/cacherapp/cacher-run-server","bugs":{"url":"https://github.com/cacherapp/cacher-run-server/issues"},"devDependencies":{"tslint":"^5.11.0"},"dependencies":{"@types/express":"^4.16.0","@types/lodash":"^4.14.117","@types/node":"^10.12.0","@types/socket.io":"^1.4.38","chalk":"^2.4.1","express":"^4.16.4","get-port":"^4.0.0","js-object-pretty-print":"^0.3.0","lodash":"^4.17.11","nanoid":"^1.3.1","opn":"^5.4.0","shelljs":"^0.8.2","socket.io":"^2.1.1","tslib":"^1.9.3","winston":"^3.1.0"},"gitHead":"c8a0b85d31de9a3ffe666a54a3f278e7505baa0d","_id":"@cacherapp/run-server@1.0.3","_npmVersion":"6.4.1","_nodeVersion":"8.11.4","_npmUser":{"name":"cacher.rui","email":"rui@cacher.io"},"dist":{"integrity":"sha512-ZMm+MG0+u0VXZM6KINZk1eLXqxPuoreFoRCnP/FHYYnlz4PfJcM6pI3CwWtYvShRPxQCTSN4fNV2XsTnnbJF/A==","shasum":"ef32a1ba41209622e0292d1788aabece504ee344","tarball":"https://registry.npmjs.org/@cacherapp/run-server/-/run-server-1.0.3.tgz","fileCount":39,"unpackedSize":67049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb03kcCRA9TVsSAnZWagAAgG8P/12HR/sTK2utU5/lWHmD\n/llpBFi6SRfOAEy0zbfTFhKDDB/qj7Ei36HnyIaykH2soLljNYa47cee4AYd\nGEnocZXpVluEJEQPPWQIKp4vofn7y0FlZVgzBIt0SUUFlmaABzSTg8BEfbWY\n4lIq+UInzENjSy8N9h/1x9IRcLLIPMwZ9Xvubm2BJd+o3UgK26xFLcS8ohtG\n19n3lRKXxiFCVRnHMHEQVbbPKPTWxGPTJTEcuBPjJsqMnlhfjhhHhhWqKQ4i\n+6TTBMSPDm5j5g6V+Udcpf2Usvb06j6EpUl7J0f0ga0Gsl7obP7hZKY+b7dW\nZ9I+WVI7V6jUW7B+vY/Qeo7JW4BmSyYx+u+YIdMH4ponfURvgfzc0tpxNYVq\nhVVxD57aSnku6xWb5ZmMmVehIaMSTMI1ty49wijXlhv/yDpCIbP/AmOUxn4P\ncHGD4f8V1m1NhtW4ZBgvEyY0MKiwfNYq7EcL04hnAdt5gq8fCRTw52l6JYWw\nESrp+BJNxUqW4nQxYU6nYoZ6lH50T7HO1Nk9K4mNlUm8wmrrDwbrAua+bXyk\nCwrfBNHmupetoxFskntkS1lJIckm+dTVU4NtyzjLPaHu4ymTvwXUuVRGeUwX\nFJnJy1se7fI+xysUNGEaCy0XFsn8cqASmCg/vFb2SFiqSThleCi/HYRGGCoc\nw5/+\r\n=RdzU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGEEok2Rtzh2tmGF7rELtog2EMfsvRm39wXbQf8gzHFNAiEAqbTIcm3JDwigUS6BY7QODfx/gPiKWTXaowdMn291gkQ="}]},"maintainers":[{"name":"cacher.rui","email":"rui@cacher.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-server_1.0.3_1540585755850_0.25322508376440855"},"_hasShrinkwrap":false},"1.0.4":{"name":"@cacherapp/run-server","version":"1.0.4","description":"Run WebSocket requests as Bash commands.","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Penguin Labs, LLC"},"license":"MIT","scripts":{"start":"npm run build && node scripts/start.js","build":"bash build.sh","lint":"tslint --project ."},"engines":{"node":">=8.0.0"},"homepage":"https://github.com/cacherapp/cacher-run-server","bugs":{"url":"https://github.com/cacherapp/cacher-run-server/issues"},"devDependencies":{"tslint":"^5.11.0"},"dependencies":{"@types/express":"^4.16.0","@types/lodash":"^4.14.117","@types/node":"^10.12.0","@types/socket.io":"^1.4.38","chalk":"^2.4.1","express":"^4.16.4","get-port":"^4.0.0","js-object-pretty-print":"^0.3.0","lodash":"^4.17.11","nanoid":"^1.3.1","opn":"^5.4.0","shelljs":"^0.8.2","socket.io":"^2.1.1","spawn-default-shell":"^2.0.0","tslib":"^1.9.3","winston":"^3.1.0"},"gitHead":"d6322117d649200ba587ad0e8bc9af6a5eaaff50","_id":"@cacherapp/run-server@1.0.4","_npmVersion":"6.4.1","_nodeVersion":"8.11.4","_npmUser":{"name":"cacher.rui","email":"rui@cacher.io"},"dist":{"integrity":"sha512-PS5cOeU3h0QMtHOnUOyzD/9eBwSS2dWMgfnABb1dMomcw2dFuRaE9wefkSa9c5R1leOyJRb5/fhjAr4bkuJrbg==","shasum":"ba13ce317c043c887e040c04c77c4504fb02f1b1","tarball":"https://registry.npmjs.org/@cacherapp/run-server/-/run-server-1.0.4.tgz","fileCount":39,"unpackedSize":67124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5DWcCRA9TVsSAnZWagAAqsoP/0K9bHPrFq4vIT94PhiR\nUotuiuD7G2mS77xQCFt495Na87uKPvhNIXh6jrwNCORoreP5dRnnJg+q2bbl\n9JT6i04zuOEWBtVMo7SSH7LySvGq/on+qiFbCaVDj1RfPu7lz+oOJGhxLaJc\n5992nHHlKYLzrzwpYYuUNBxCci5yjaUsoSeHV3NsCihErOnpUEqaHAddU+tV\ne2yfFGCSUrX6Czf3MEzYkXMZMrVQQ10HW9VCkf6Iw6m1jPKqQ/xeTUQWF02w\nt4xKvYZxq2AeoapCUOFQDY1x+qXcYgKP4p5RkKpf+vimouX1TOaghB7cIsiG\nMkUv6k7LWh8vQ/CL7JQuux1FI4kBiMg/RJNvVN9f/mNx6CpwEoc6EWQxO92Q\noyZscuj8crfa3KYNwBLOZNO1inw7QAN5vapjFsgp+Tsvu/vcCKos0o69qDyI\nwr5ezZhsq6esrw2sE5xTwmNvb4CyDkFbblvGc7Z3A/qLrbuXemwNmwj1AN0S\nSTnLQ1hp47jGcjritUpYFFXgvfIK28t7Hc7t7pR7vwJnROvRyJiwgkz8LwbD\n5pUPND0ELjHXF1CctPN2NDhAog56TuHgarOKNCvu5rNNquLCzHcApi0oYDs2\n2KKAKtik1O+PGoUVoBOk4weDLfLwkPvPZWymCnZ3YZdBMgNCXtwde46qeun2\np/3v\r\n=1r91\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6H8bkRegpSwvB1/BnYHDkvYapNmKjxfTS7L5Mxt/8rQIgDC63ad6ox103aG30bUQKlpLKuHYmKgkM66i75b/2qv0="}]},"maintainers":[{"name":"cacher.rui","email":"rui@cacher.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-server_1.0.4_1541682587778_0.9130966875765116"},"_hasShrinkwrap":false},"1.0.5":{"name":"@cacherapp/run-server","version":"1.0.5","description":"Run WebSocket requests as Bash commands.","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Penguin Labs, LLC"},"license":"MIT","scripts":{"start":"npm run build && node scripts/start.js","build":"bash build.sh","lint":"tslint --project ."},"engines":{"node":">=8.0.0"},"homepage":"https://github.com/cacherapp/cacher-run-server","bugs":{"url":"https://github.com/cacherapp/cacher-run-server/issues"},"devDependencies":{"tslint":"^5.11.0"},"dependencies":{"@types/express":"^4.16.0","@types/lodash":"^4.14.117","@types/node":"^10.12.0","@types/socket.io":"^1.4.38","chalk":"^2.4.1","express":"^4.16.4","get-port":"^4.0.0","js-object-pretty-print":"^0.3.0","lodash":"^4.17.11","nanoid":"^1.3.1","opn":"^5.4.0","shelljs":"^0.8.2","socket.io":"^2.1.1","spawn-default-shell":"^2.0.0","tslib":"^1.9.3","winston":"^3.1.0"},"gitHead":"1f0b18bc8fca6ab8d79080123e1af9745653bf08","_id":"@cacherapp/run-server@1.0.5","_npmVersion":"6.4.1","_nodeVersion":"8.11.4","_npmUser":{"name":"cacher.rui","email":"rui@cacher.io"},"dist":{"integrity":"sha512-a9Z2pqZodHo4r3FYBavggTpUNfLYSz+Yw0Q2cjlsVwRAYsjDBQjQO+LecpsKjSjTSB3xl8DKjZ/dpSakqfCj6A==","shasum":"d6257465dcb4b2a720df1bf60edcde74d5afc1a3","tarball":"https://registry.npmjs.org/@cacherapp/run-server/-/run-server-1.0.5.tgz","fileCount":39,"unpackedSize":67847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5Ei3CRA9TVsSAnZWagAA9/0P+gM+RpyRm7YSSiGP9aIk\nIBcgE+vBa175m/HmmdrNSf2W2h6cDmfRB2CPxBsqVsfY4cTZNf36z+3d83mZ\nADdAW0EBb3yiDSF0WZ9A7zWVTvYOpRsdsqMjn2FiDddyxG2z3KUGfAlWs6IH\nKHVKgH1RkWRmrrswecW68YHgcuSv5jJaHk1wl1NRJ77jtHtS4rrxlz9xL80f\nf6bSZzupBAyTUIVxFlZGxUyK32+0hEnt3BpWOFDZ3Js06hu7OknkaTWUVWiR\ndSE72zIoZx5sTKU3uFvsRSaF98O/nx+ojUn9pySPY+YcMTNG/4gbYzd5rKoI\nbufGtAMRPmQCOd+BSQRZWEc1JMl2gFjXlompjuq+Mn1/2ZdPzKqxoP6SkZb/\nfToA9n10meWEN9XaQFKisqk9fAnRPtoChCIh4HYHO9gDkD41RVsn2qYgAjxB\no1IxVBQ6Ez/gx/7AWmYLn3MFLCHyNzqoqimXfcnNVsZmR0tOfNkj3ga1CkhP\n6qhHtkjszQ53fqeDXk9C5pyTy55kvvCtIRF/Hg3dgMxxOAptllTxgEq+A08F\nc2XYExETiuQF48YgzSKM78WrxQXzNtw90boQvTHHis7BWJq3WKfJq5mMlLXG\n8rR2d5wVfXcw6n2pV25Yl+Z91JN/VNtUxScH3i7qBs6SXvLG8xhC+9sx9E2M\n8rzC\r\n=avxB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC3ZUw2WRVPwDmSfnuN5eve3B6vOVXAJokR5GnUwSQwVAiEA6b4ug/Nd24W8waQU1KooDEuaxolcY58AGxX2qCPJYp4="}]},"maintainers":[{"name":"cacher.rui","email":"rui@cacher.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-server_1.0.5_1541687479114_0.6368239062922705"},"_hasShrinkwrap":false}},"time":{"created":"2018-10-25T21:10:56.575Z","1.0.0":"2018-10-25T21:10:56.898Z","modified":"2022-04-04T21:28:31.356Z","1.0.1":"2018-10-25T21:25:36.563Z","1.0.2":"2018-10-26T15:20:39.496Z","1.0.3":"2018-10-26T20:29:16.030Z","1.0.4":"2018-11-08T13:09:47.894Z","1.0.5":"2018-11-08T14:31:19.273Z"},"maintainers":[{"name":"cacher.rui","email":"rui@cacher.io"}],"description":"Run WebSocket requests as Bash commands.","homepage":"https://github.com/cacherapp/cacher-run-server","author":{"name":"Penguin Labs, LLC"},"bugs":{"url":"https://github.com/cacherapp/cacher-run-server/issues"},"license":"MIT","readme":"Cacher Run Server\n=================\n\n![Cacher logo](https://cdn.cacher.io/repos/cacher-logo.png)\n\n[![Version](https://img.shields.io/npm/v/@cacherapp/run-server.svg)](https://npmjs.org/package/@cacherapp/run-server)\n[![Downloads/week](https://img.shields.io/npm/dw/@cacherapp/run-server.svg)](https://npmjs.org/package/@cacherapp/run-server)\n[![License](https://img.shields.io/npm/l/@cacherapp/run-server.svg)](https://github.com/cacherapp/cacher-run-server/blob/master/package.json)\n\nThe Cacher Run Server is a standalone [Socket.io](https://socket.io/)-based server that allows clients to run shell\ncommands via Websocket messages. It is used primarily to run code snippets on the user's local machine via \n[Cacher](https://www.cacher.io/).\n\nDemo of a [Cacher](https://www.cacher.io/) snippet file executing on a Run Server:\n\n![Running a Cacher Snippet File](https://cdn.cacher.io/repos/snippet-run-demo.gif)\n\n## Contents\n\n* [Starting the Server](#starting-the-server)\n  * [Built-in Mode](#built-in-mode)\n  * [Standalone Mode](#standalone-mode)\n* [Editing the Configuration](#editing-the-configuration)\n  * [Rule Properties](#rule-properties)\n  * [Arguments](#arguments)\n  * [Testing your changes](#testing-your-changes)\n* [Contributing](#contributing)\n  * [Development](#development)\n  * [Pull Requests](#pull-requests)\n* [Libraries Used](#libraries-used)\n* [Author / License](#author--license)\n\n## Starting the Server\n\n### Built-in Mode\n\nThe [Cacher Desktop Client](https://www.cacher.io/?dl=auto) comes with the Run Server built-in. Open the Run Server \ndialog and click **Start Server**:\n\n![Start Run Server](https://cdn.cacher.io/repos/start-run-server.png)\n\n### Standalone Mode\n\nStart the Run Server in standalone mode if you require more control over its configuration.\n\n#### Using the Cacher CLI\n\n**Start server locally**\n\n```bash\nnpm i -g @cacherapp/cli\ncacher run-server:start\n```\n\n**Starting the server on a remote machine**\n\nRunning a remote server ensures all your developers are able to run snippet file commands against the same \nenvironment.\n\n**Note:** Since the commands will be run using the shell account from which you launch the CLI, we recommend\nyou use only machines which are for testing or are ephemeral (i.e. Docker instances).\n\nExample of launching with a secure tunnel ([ngrok](https://ngrok.com/)).\n```\nnpm i -g @cacherapp/cli\ncacher run-server:start -p 39135 -t 4D5dzRGliafhGg~btNlR9 -o file:// -v\nngrok http 39135\n```\n\n#### Start via custom script\n\nInstall `run-server` package for your Node project.\n\n```bash\nnpm i --save @cacherapp/run-server\n```\n\nExamples of starting the Run Server:\n\n```javascript\n// examples.js\nconst RunServer = require('@cacherapp/run-server').RunServer;\n\n// Let server pick random port and token\n(new RunServer(\n  { origin: 'https://app.cacher.io' }\n)).start();\n\n// Specify port and token, log verbose output to file\n(new RunServer(\n  {\n    origin: 'file://',\n    port: 43193,\n    token: 'secret_token',\n    verbose: true,\n    logToFile: true\n  }\n)).start(); \n```\n\nSee [server.model.ts](src/models/server.model.ts) for details on options.\n\n**Connecting to the standalone server**\n\nYou'll need either the [Cacher Web App](http://app.cacher.io/) or the [Desktop Client](https://cacher.io?dl=auto) in \norder to connect to a standalone Run Server.\n\nOnce you've logged in, open the Run Server dialog. Input your server's port and token and press **Connect**.\n\n![Run Server Dialog](https://cdn.cacher.io/repos/run-dialog.png) \n\n## Editing the Configuration\n\nThe Run Server uses two Javascript-based config files to define the set of rules which govern how different file extensions are mapped\nto shell commands:\n\n- [config.default.js](src/config/config.default.js) - The default set of file types -> shell command mappings. While\nthis config is copied to the Cacher directory as `~/.cacher/run-server.config.js`, you should never edit this file. If \nyou would like to add a file handler to this config (and let everyone use it), please submit a pull request instead. See \nthe [Contributing](#contributing) section below.\n\n- **`~/.cacher/run-server.user-config.js`** - Edit this file to add or overwrite file extension handlers on your local \nmachine. Here are some examples of functions you might add to handle new file types:\n\n**Add command for `.awesome` file extension.**\n\n```javascript\n// ~/.cacher/run-server.user-config.js\n\nreturn {\n  rules: [\n    {\n      pattern: '\\.awesome$',\n      run: (command, filepath) => `awesome-compiler \"${filepath}\"`\n    },\n    ...\n  ]\n}\n```\n\n**Compile `.md` (Markdown) file into HTML, then display in default browser.**\n\n```javascript\n// ~/.cacher/run-server.user-config.js\n\n// Requires `npm -g markdown` to be run first.\nreturn {\n  rules: [\n    {\n      pattern: '\\.md$',\n      run: (command, filepath, args) => {\n        const outputHtmlFile = `${args.runDir}/${args.baseFilename}.html`;\n        childProcess.execSync(`md2html ${filepath} > ${outputHtmlFile}`);\n        opn(outputHtmlFile);\n\n        // Must return a shell command\n        return `echo \"Generated '${outputHtmlFile}'\" and opened in default browser`;\n      }\n    },\n    ...\n  ]\n}\n```\n\n**Match Javascript files by `.js` extension and file content. Calls `nvm use [version]` before execution.**\n\n```javascript\n// ~/.cacher/run-server.user-config.js\n\nreturn {\n  rules: [\n    {\n      pattern: (command) => {\n        return /\\.js$/.test(command.file.filename)\n          && command.file.content.indexOf('//nvm:') >= 0;\n      },\n      run: (command, filepath) => {\n        let nvmVersion = command.file.content.match(/(\\/\\/nvm: v(.+))/)[0]\n          .replace('//nvm: ', '');\n\n        return `export NVM_DIR=~/.nvm ` +\n          `&& source ~/.nvm/nvm.sh` +\n          `&& nvm use ${nvmVersion} ` +\n          `&& node \"${filepath}\"`;\n      }\n    },\n    ...\n  ]\n}\n```\n\n### Rule Properties\n\n**`pattern: (String|Function)`**\n\nIndicates whether to execute the `run:` callback for the given command.\n\nPass it either:\n- [Regex](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) string that matches against\nthe filename.\n- Function that takes a `command` object and returns a boolean to indicate whether the rule should match. \n\nExamples:\n```javascript\n// Match files which end in .rb\npattern: '\\.rb$'\n\n// Match command which has \"foobar\" in the file's content\npattern: (command) => command.file.content.indexOf('foobar') >= 0\n```\n\n---\n\n**`run: (Function)`**\n\nTakes as input `command`, `filepath` and `args` and returns a string to be executed on the user's shell. Rules matched \nagainst interpreted (non-compiled) languages generally return `[interpreter] \"${filepath}\"`. Rules matched with compiled\nlanguages will compile the source file first before executing the binary.\n\nExamples:\n```javascript\n// Run .dart file with interpreter\nrun: (command, filepath) => `dart \"${filepath}\"`\n\n// Compile C++ file and run binary\nrun: (command, filepath, args) => {\n  const outputFile = `${args.runDir}/${args.baseFilename}.out`;\n  return `g++ \"${filepath}\" -o \"${outputFile}\" && cd \"${args.runDir}\" && ./\"${args.baseFilename}.out\"`;\n}\n```  \n\n---\n\n**`timestamp: (Boolean)`**\n\nSet to `true` to append an epoch timestamp to the end of the filename. This helps to prevent files from being overwritten \nin the `~/.cacher/run` folder. Set to `false` for languages which require a strict match between the filename and the \ncompiled binary. (i.e. Java, Haxe) \n\n### Arguments\n\n**`command (Object)`**\n\nThe object that is sent to the `pattern:` and `run:` callback functions.\n\nProperties:\n\n- `channel` - WebSocket channel for the command\n- `file.filename` - Filename with extension (i.e. `example_code.cs`)\n- `file.filetype` - Type of the file (i.e. `markdown`, `lisp`)\n- `file.content` - The file's content which will be executed\n\n---\n\n**`filepath (String)`**\n\nPassed to the `run:` callback. The full path for the file to be run (in the `~/.cacher/run` folder).\n\n---\n\n**`args (Object)`**\n\nAdditional arguments sent to the `run:` callback function.\n\nProperties:\n\n- `runDir` - The fully-resolved path to `~/.cacher/run`.\n- `baseFilename` - The filename without file extension. This is sometimes necessary to execute the compiled binary. \n(i.e. `java \"${args.baseFilename}\"`)\n\n### Testing your changes\n\n#### With built-in server on Cacher's Desktop Client\n\n1. Stop the built-in server (if running).\n\n![Stop Run Server](https://cdn.cacher.io/repos/stop-run-server.png) \n\n2. Make your changes to `~/.cacher/run-server.config.js`.\n\n3. Start the built-in server again.\n\n![Start Run Server](https://cdn.cacher.io/repos/start-run-server.png) \n\n#### Debugging\n\nIf you run into issues with the server not starting or if your file handler does not perform as expected, debug the\nproblem via the log file: `~/.cacher/logs/run-server.log`.\n\n#### With standalone server\n\n1. Install the [Cacher CLI](https://github.com/cacherapp/cacher-cli) globally:\n\n```bash\nnpm i -g @cacherapp/cli\n```\n\n2. Make your changes to `~/.cacher/run-server.config.js`.\n\n3. Start the server:\n\n```bash\ncacher run-server:start --verbose\n```\n\nMake note of the server port and token, then connect with the Cacher client.\n\n![Run Server Dialog](https://cdn.cacher.io/repos/run-dialog.png) \n\n## Contributing\n\n### Development\n\nGrab the source code for this repo:\n\n```bash\ngit clone git@github.com:CacherApp/cacher-run-server.git\n```\n\nInstall [Typescript](https://www.npmjs.com/package/typescript) globally:\n\n```shell\nnpm i -g typescript\n```\n\nInstall packages and start the development server:\n\n```shell\nnpm i\nnpm start https://app.cacher.io\n```\n\n### Pull Requests\n\nWe are happy to review any code changes, especially for new file rules added to \n[config.default.js](src/config/config.default.js). Please adhere to [contribution guidelines](CONTRIBUTING.md) while \ndrafting your pull request.\n\n## Libraries Used\n\n- [socket.io](https://socket.io/) - Websocket server implementation\n- [nanoid](https://github.com/ai/nanoid) - Unique string ID generator\n- [winston](https://github.com/winstonjs/winston) - Logger for everything\n- [shelljs](https://github.com/shelljs/shelljs) - Portable Unix shell commands\n- [opn](https://github.com/sindresorhus/opn) - Better node-open\n- [chalk](https://github.com/chalk/chalk) - Terminal string styling\n- [get-port](https://github.com/sindresorhus/get-port) - Get available TCP port\n\n## Author / License\n\nReleased under the [MIT License](/LICENSE) by [Rui Jiang](https://github.com/jookyboi) of [Cacher](https://www.cacher.io).\n","readmeFilename":"README.md"}