{"_id":"jump.sh","_rev":"32-db9d2860d7e284033c2fe14ab04494d2","name":"jump.sh","dist-tags":{"latest":"1.0.0","next":"1.0.0-rc.1"},"versions":{"0.0.1":{"name":"jump.sh","version":"0.0.1","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.0.1","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"dist":{"shasum":"2019bfcf893ab047f1c2a7ee3b688cb62ddaec69","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.0.1.tgz","fileCount":1,"integrity":"sha512-qWglORVJnY65lIJ87PEcLengNt7iqAe9act1YxvhScacAK+QlZlZSn1Aer0fHmHLh+lSPE4ncArsVDyQys6Dqw==","signatures":[{"sig":"MEYCIQD68lF+/zjKdLFW+gEYlLidkmDfukzX0d3gA5RppucQDgIhAKxlsInA4Po7quFjJjuJKP/j9+FIDVQ1wuC7C16n7RNX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":385},"type":"module","scripts":{},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.0.1_1772493437519_0.6941424527387097","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"jump.sh","version":"0.1.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.1.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jumpsh":"bin/jumpsh.js"},"dist":{"shasum":"3de35e60cd5bccc719deb1ab1c0e92b99613398c","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.1.0.tgz","fileCount":43,"integrity":"sha512-UxDmlODF2m+QzdRPhBL/CDohs8eFn9tf6ci4Ib5Qaw7nP6FaUScwWXVhEoZf+IOG8zwdplo4r4dWZG3NZMc4Gg==","signatures":[{"sig":"MEQCIGdx3fjwI6iXD50dKrC/t4qB0Ej7kOYdOQrgJ4CicN3fAiA/4CR11YtF43f3d8WM6mgoJauCgEIXdva3C5PMzVWo0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253593},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"e0f0f091464ee5cdfba411a30647d28cf71ca25a","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.1.0_1772576525378_0.29215650131043724","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"jump.sh","version":"0.2.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.2.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"5b70ab190678de53c8bd4c4c4f9256120896fb15","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.2.0.tgz","fileCount":43,"integrity":"sha512-QG+2ZO8s1fOBa9ng7mm37v/RJhilwkN2sUIjyTo1FCcyPDqj6gU3471nEcVCbUk/7W09vDgqgEXXhKNF9toEzA==","signatures":[{"sig":"MEQCICJbyMXx0oNJN5y6jRTMkM7G1wiJntsq+B3DRhVr2VyFAiAatdo2LKDr9mppSrc+q9oeURbJOE3MsnWVh6ckKi6HcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254337},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"605d89c5cb6a2013dcb2b22795489af91dea4da4","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.2.0_1772577711549_0.3228281261399164","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"jump.sh","version":"0.3.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.3.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"be686ecab12ed2c13bae15062a159cb0e0c25573","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.3.0.tgz","fileCount":39,"integrity":"sha512-NL6EkEKPrHEu/5CqogI6NOayVcUxqnRZdSH4cvT+yE/KHArXNv819i9WYWLQSS9yNTrb6BT+Ci3taMF00ieO4g==","signatures":[{"sig":"MEQCIER+u+XjAI9I51BlKxw/e4+kk5D+emeYGq30RTVZc5wfAiABTQMLXS4waSOHs0UmBe7/prXSqcEScILUzPdEjo942Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":241799},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"8fb30480263425477e6772775339aafdca50de1e","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.3.0_1772579671838_0.5290338390539653","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"jump.sh","version":"0.4.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.4.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"27cca0ccf0bd76c433814574a0e2d1a0fcdc4513","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.4.0.tgz","fileCount":39,"integrity":"sha512-EUKfP9KxDSCFlxeOIwrhP4ycnguDMS1f6q52yYBjNuORMyZbTuiKQN97QzZ1hvIGiCukYGaTedA25Q+5OD4NPQ==","signatures":[{"sig":"MEUCIHGraajP1FYBUD5dC2LPRGCrPCmZEK1XBYEDY2+2NivkAiEA/JUiTB4Cly/Jj9ktJFeiridNuAVGnNjc4lbmCAJ7Nl4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":241975},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"40b313101a2e58e50c92436e8fc930e1d23da824","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.4.0_1772580068327_0.8507195176096496","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"jump.sh","version":"0.5.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.5.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"1ab97174ec5f8464d99bb9b9bbe5849b517cd4bb","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.5.0.tgz","fileCount":37,"integrity":"sha512-GZE33oijGEMkHRfovDiQHSwBtN4rnDv3fL/A/MXux+mwpznHhUtZSVTq7j7vbCAVEWvaXIeGdmluRINPVuLXDQ==","signatures":[{"sig":"MEUCIAFspcuxXTY99/gPD0aCF1YP5Qr6yx9QaateC0HdyEOcAiEA72lSPoJeHmAN/DmqwCk4fs81ZqZDYKEr7F9k8TPWu2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233510},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"6d957a0e851831c7640b7f8de7dc78387b42eec1","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.5.0_1772581221737_0.10053741593340426","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"jump.sh","version":"0.5.1","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.5.1","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"b6eaf93bb0094cfc5ceff26e339e9b56bc6561a9","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.5.1.tgz","fileCount":37,"integrity":"sha512-50OIoQ/v5WD8e0UxtsRVlBy+ciG+SLw7yhgLneJ3g+SXmGjKdsim2otqrDQVWoUEwZj1fUlc2mXs9OPIy2wmWg==","signatures":[{"sig":"MEQCIAZuQt85oOLQvsLtBnEOrxVvh/m3lR7cGdfj8ieZGBZ4AiA01BkLcWrYE9c6HintQW1ldQunu6imVGWp2M2qxzi9pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234376},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"c1c2aefc74ae6ad8ee90101c25cf2e19edcf2812","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.5.1_1772583177986_0.9380595229819659","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"jump.sh","version":"0.6.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.6.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"b70ca73ede5d345fb36e60a2988f88b1f8898f8b","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.6.0.tgz","fileCount":37,"integrity":"sha512-7EnI0Ldk5IlN+Um8nDMvm1UDJCmIKLKN+f04ov0RVdeF5UsFky+XbD3qYO7uqQr9Q+vs83FWG1oNlELIWDu42A==","signatures":[{"sig":"MEYCIQC//TR6OIIykAqSDpaLtqRA9TWv/9Z5SuCmw2mfuhDArQIhAN2UvIGeDNShKQJPTZm2AJ6eLHQJdWEbP1UNpxTE/nzf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242769},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"b05c77f3ba0ca69fe483c69f11474f74602c3b74","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.6.0_1772586226573_0.22118152273247405","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"jump.sh","version":"0.6.1","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.6.1","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"d39ee6d14d610d9d3c6ff0425d61c5fae9cf6ef0","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.6.1.tgz","fileCount":37,"integrity":"sha512-3ESQSzPfrnFsNgWfjZ57CCs2L1w8dOqWaRQSOfbqGKlN6NNB9uFuZS/qzhaau+h197+bi1iQEbsp7PBZikF9VA==","signatures":[{"sig":"MEQCIDhU44pwncXWmmIPZJ8VMRq7Z86VSXCug49kh8AuHydjAiBmz7s0hNIWa+zfHIk3XRPa1QOmeGHVUhABWGS0OmPsAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242438},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"63ce399683bb33a4224d61a18727cf53d442a58e","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.6.1_1772586975767_0.7892323330820399","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"jump.sh","version":"0.7.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.7.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"566f2b2384ccac91a47507dbd95dbb8b19188694","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.7.0.tgz","fileCount":37,"integrity":"sha512-0BxLDM8Ky9IhggPB8a9X2mkrbF42Ml2lLT3v5pxO97v5Q1+MZf0ji2A1MsfBnVA6ZLnEUEb7nFfreY+JB82jsw==","signatures":[{"sig":"MEYCIQCRR6q/vG7T8Y2SgcJfOFTIzPvssujY2a3d1xFlJG9t5gIhALMTLtuZcd19U4gk9mGeaaVNbj2O/ucmc54ggVfjfjGA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253953},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"909adb5a26cb3770f573a8a1609362e63d2a9704","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.7.0_1772666190252_0.36311040024252716","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"jump.sh","version":"0.8.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.8.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"e03a8eff39ba2d974b93f06b8172277394e6858b","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.8.0.tgz","fileCount":39,"integrity":"sha512-HfjI2RFlhpMoWNVSM5NzrolnwDZPRv9h7J/i1zgMs7ZmDazwiRWNgtUbWa6RvM2/+A+2bI8fWpnQ6nCPzjIf0Q==","signatures":[{"sig":"MEUCIQDRaZHuGPRk0I0Poymrp+E9fA0KQkKwmaK5mrSI3QVQigIgGMayb5FZ2ktzsKUFjJSigDnV//IFP7w7XN0q22jX/rM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269760},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"319370412dd5be2ddfc8e550b485d59499860069","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.8.0_1772673413975_0.7773535969586778","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"jump.sh","version":"0.9.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.9.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"08ff47b3d9a5d0f9c6ecd5e8afffbd3e50ef1e56","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.9.0.tgz","fileCount":42,"integrity":"sha512-HnCO37wYd5Kv1EAcCm7pC/ov/GWtHXBiIoPIs2IazMfWzRSA7aT1qVUMSoahxFPLT5JTSP+qDbvTvBDDWjHggw==","signatures":[{"sig":"MEQCIFIchUJLEcOWaIHBXFGmk7IDdHJCStKHl1AaNNgAc5O0AiAmd3uTYokqnERVa4qsz6gd5I6OJjWD0EWlCM4mkCCKlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293602},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"d9d01869483be32e2160fac6c670236fb11426d9","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.9.0_1772779518321_0.5627748278082725","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"jump.sh","version":"0.9.1","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.9.1","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"12e1d39ae441d9e0e1ff878353e5154f61c8a134","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.9.1.tgz","fileCount":42,"integrity":"sha512-NQVVX5ug5SVw434p98CzzTX3GyKhSonUSz9tvye2LJXIlkCs5+fRKEhS8Fb9IHueLmCoD4Z1myELeruoJUkiGQ==","signatures":[{"sig":"MEUCIDfLCjEq7ViPAqnkv+KljEzLm4/TAiWFmX0moSUJ1cKdAiEAlzElQEMFzX4HC4OzA3NhPmJE2OOoG4DxQ5jt+K0UW9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":295376},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"cbae6bbf7210fe9327a06b8030be08735401c133","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.9.1_1772811866948_0.312772049411125","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"jump.sh","version":"0.10.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.10.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"5cea4acd5c6aa9bc0b014e2377b7445c42885e63","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.10.0.tgz","fileCount":42,"integrity":"sha512-QFHmjCLx+NhuX1cnVboOThbLNMG1cBGvdFi8lvxq1j2M4+vuuDgPY9VkxbDeBgn//NpHPJmOy3laP4vso56tdg==","signatures":[{"sig":"MEUCIHWuT/F9qcJwuYTHnOcfKhTe+FYRjjTcjSvSosCDEhHvAiEA/1O4mn2RuP8psQ+m+7TK9tosVQ1aVm3tmwPMxgFr2u0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297482},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"89c5c6f4220cc1ab1917733b693ac98a34619bde","scripts":{"dev":"nodemon server.js","test":"node --test test/*.test.js","start":"node server.js","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.10.0_1773252661933_0.2354597682780346","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"jump.sh","version":"0.10.1","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.10.1","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"edf828c6cd7870ebb9fd5d886a5ee850a7e9e806","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.10.1.tgz","fileCount":44,"integrity":"sha512-qgds2b/raYARjNmPj2/bsZe20rzHcPI6MmBKiiSkEVOI9oLG75f56GYntR/ZJB0/OTvUwDlTSgHiYgf49M1kEA==","signatures":[{"sig":"MEYCIQDbsLN79QaqQI7a4zk5dqWuVrIo/9C0V03fK4AwTjmMTwIhANMuabWy20OSakhEIkyVh8YXVLcuE/ZwM2g/0JWoNSNO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":301931},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"40feee0ed2d524ed96f96ae5c937a4a971b662bc","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.10.1_1774977160873_0.9533373319036724","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"jump.sh","version":"0.10.2","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.10.2","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"98f2b6cdec1ebb98e22d3216d3a56cc8043d7e8e","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.10.2.tgz","fileCount":44,"integrity":"sha512-ww3kGnUbpOMjidOazeAWS2rFS62XO5GTwkqM4DJQ3r/rBmHOJps0grixsMKZpbnib9cKP1pu2jSy7p/IN7N14g==","signatures":[{"sig":"MEQCIGSYXZqXSZPtF/amm3Jl3u/pQzqofK9/jFuEgcT94f5tAiBK3VpRkot5Ebop0Bf/OHz+s7932l39j1CVG8tFwe8vng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302814},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"a42b8c32fb4da46ec85c00a0af2a86dae967a2a5","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.10.2_1774978705752_0.8847090424968502","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"jump.sh","version":"0.11.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.11.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"9e86d5aa20470cc4498a1cd5a2ef5679887d91ee","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.11.0.tgz","fileCount":49,"integrity":"sha512-D9lsxZCVXizgkcEKvMbEfoV0OjH3wA2giQefEdXCXyKSY6KNqWGGKMROAC9LWUVJcT+O21Eaj11qMGNlXvq3ug==","signatures":[{"sig":"MEQCIGdT1u7A3S03xYVfq1Fq5xUYzr8PUfjdZXv9wR5RqyuRAiA5dzTrePAZfez7pI2R4NmiTOOnAzkKMJjnIY31xBGwyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":319089},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"a74f5e6864315d1e45112ab89e543a4ce5e09b3c","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.11.0_1777140012607_0.24480453650423417","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"jump.sh","version":"0.11.1","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.11.1","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"cd94157e453cba3e6a0a5997d42e112872d1a67a","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.11.1.tgz","fileCount":49,"integrity":"sha512-pUZxHLBTFZG7XP/PNQcZpJjtJO1uVOzMYhe0uY+Fc+1cNZkFw95Nw0r1Hnt7GXfeOeumq2z70kgXnadoUqOPFA==","signatures":[{"sig":"MEYCIQCffm7CGB9Y2rapfSs4cTVRslR7SCyDzHg7m4hA9lC8cAIhAMxatj8PWg0Md0tWMZxQL8903Y+UHU9KS74m+vcPFZqU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":319475},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"522daf51a3b0956d1047a4b6b55c698e74f3a3d6","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.11.1_1777566859833_0.3512812499836666","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"jump.sh","version":"0.11.2","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.11.2","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"4916886b729a8c775b6dacfa46761b42eb47079f","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.11.2.tgz","fileCount":51,"integrity":"sha512-MjVDiYKbFA/cuL56ASUJnLOoMSSIwDpHc47WWn9er4ngvlxIWTwnqn4gT7R/xxTf+QYkuOcpPxE+fDrTS0I8cw==","signatures":[{"sig":"MEUCIQCEzsb8/L5gkEPPno4CSUsVEjl/61tZe93mpd+oqp2J0wIgSTbNPuBn6w8SEnnGaORsfzSttj7XOybFZ9VmUCWwLL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":328571},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"f46eeeaea1fe429207eabdb7aa9a326d4961b533","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.11.2_1780425381147_0.25567285761393777","host":"s3://npm-registry-packages-npm-production"}},"0.11.3":{"name":"jump.sh","version":"0.11.3","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.11.3","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"fe8c9806e371025d3943d2a9363ce8ab9a92bf0a","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.11.3.tgz","fileCount":51,"integrity":"sha512-uezhj9vtdUN9GZek306snA9lsLFp8kiYjkdmf0k/5xj6FENSjTmFrSUIg49+B5UexnrZ42svjmLIcvb7fMO95w==","signatures":[{"sig":"MEUCIAYhO3IsyeX3MDrOOftnn9tOnMiDcVdxO6X1oQm9lysDAiEApNvf9tPQbq1y+IXJ03u050QxkB58bTwOeO+yIkCpQNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":329930},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"ffbe66231510576c2cedd11047c80ce9c582e52d","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.11.3_1780426786842_0.9989894798930679","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"jump.sh","version":"0.12.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.12.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"d602b40a260725165a02824ec1f3c130e2b31bc3","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.12.0.tgz","fileCount":53,"integrity":"sha512-N53hfyKv49HZeCsy6LzsQ7wu9dpjTkEfJ+41/mteXLqZRBBTZdQ6IIchGNApN/m2mmMOKipIeki/fzb+hhm+jA==","signatures":[{"sig":"MEQCIF/iZ2YfsS7HfJzyS99v8FjAVRQk8L2gtyNLfGaNI78oAiA2432Van4Py6zSA/+gUXGKW4Z0NSCi8eM7C0cO6C9gPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":338150},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"f8b07cff44901c5120bda8322addc50b9887e4c5","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.12.0_1780427007893_0.3732970397030453","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"jump.sh","version":"0.12.1","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.12.1","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"5485345bb5fa45f51bc4e3fb9effb0962c08a05e","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.12.1.tgz","fileCount":54,"integrity":"sha512-MXmSWm7EpMcrhkBdpBkk+g8ZI+nQF4RnxYfLbRJRRZ59l6BidD+TMAhfxks9rhhgSCx6vz59WL7YTdOSnhAV2g==","signatures":[{"sig":"MEUCIQCFGr0I5/vkeyxutKa9as+I41IANP6yHMCbbddsT+3zWgIgRo++tUPM7a13sGmE2EBnYfD6NPJPm5RFd5fiW2+3NfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":350069},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"91999252bdea906775d64d2ee7a8505066fbcc32","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.12.1_1780434876331_0.6248726880803419","host":"s3://npm-registry-packages-npm-production"}},"0.12.3":{"name":"jump.sh","version":"0.12.3","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.12.3","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"f4c712e08c06fa83c7c28ae062f2c5799ca9e998","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.12.3.tgz","fileCount":55,"integrity":"sha512-Z1vTK9fSqe8sjRB2H5UC4cryU+Fdb0mOX8foNUkaECFa7EyDnslMFX3VLTd2THndmD5PPt6kt+q22hIPNCzyBg==","signatures":[{"sig":"MEQCIB3Fie1DKWgwoWMPh9uQOAxNM1NqT0arEz7qUjYhyjmOAiAuf9cqbCFAvznAHVMAaRE0G+kpSlnU6528yoYmWSr2sQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":354889},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"674aa0fdb15e267a4c2775c603b38157d4dc0a22","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.12.3_1780438381253_0.21306330582195798","host":"s3://npm-registry-packages-npm-production"}},"0.12.4":{"name":"jump.sh","version":"0.12.4","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.12.4","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"3e2ffe8dab539fb578d8c1b47a3150da8a64e6f1","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.12.4.tgz","fileCount":55,"integrity":"sha512-XtJmrSbMNYFr83luWoTninKXzo7xCcRf8wr89usNp+IA6pWb0xCLnxOCcuaC7JT5gBs3ap921UjaTEqxYCY/iA==","signatures":[{"sig":"MEUCIEddv7LzU3X4snZV+HFLm+Dv5sXf6oZH5zFxeVZoPGF/AiEArTywPDi81yH48BZA5jcGE1odB4pfQ8Z/YOf6mlyUfqI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":356649},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"db837c117bbd7fad22f457d0a8ed793c17a758c1","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.12.4_1780440860417_0.03236463523517963","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"jump.sh","version":"0.13.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.13.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"b53a209d681e7584841a95911c0da4d314b502a9","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.13.0.tgz","fileCount":56,"integrity":"sha512-1q2F6X/sXai0xDruowvkmBT+KAeQttbrDoncc/URQkhjtNkBuIcNsk7ManlzWiVy3d/WN2cSGf4vF5ohWq5VpQ==","signatures":[{"sig":"MEQCIBLgyZSriTgVcbzl9dvWhuQVC3cVPKL989nx8EqurtsiAiAH0QwUtoRgUs53uKR23jv3LQkQEMbiYvEOJJugQdVt3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":367491},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"af8ededce37014bf250bed0d5cc1655e6f3ca8ae","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.13.0_1781213556535_0.5314245609166879","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"jump.sh","version":"0.14.1","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.14.1","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"13441c377f494a917d4f6aa1b8bb5d66fb1595bf","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.14.1.tgz","fileCount":56,"integrity":"sha512-Yu4r18y7ZD+ArDS3wdpUEBknl1TCExVOG9MhTy5iSRGzPJiTl5u4hxTMHPpCm0KC6ocuB1lrI89FEgkfvJR7JA==","signatures":[{"sig":"MEYCIQC5dMOr36b3lI0fl2aatp88mt+k1lyUEa/tFFztsOjVggIhAPrCy/bVn9HpnHOPbDokKXXeueA0HcQ2Vlol5Gti8L3G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":396751},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"bf8e1f5258b0da95d07f2070a687ae479b09c501","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.14.1_1781305247655_0.013437534970023757","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"jump.sh","version":"0.15.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.15.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"faf7cbeb1a2df2befdad4f10e8609f4f86665e68","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.15.0.tgz","fileCount":58,"integrity":"sha512-kRbDq8ImxPgAa1373dFBTZIm9Hyuo21sSUiTFLB2FQ69Y000s3bJzeiAaprDqaBy9FG6K0KO19IESiVrMeegAw==","signatures":[{"sig":"MEUCIQC5Lvb+EbzrZkOLgocF6f7l/alr845vSk6mjzD0p/tlRAIgBQcBanoJELlG8053v/1Cli2HJffj1W3Igl+Yy9++JTY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":406087},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"136e724b38fc4680ebb8aca95dd4544d600286ad","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.15.0_1781306562626_0.204582487321193","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"jump.sh","version":"0.16.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.16.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"649591b99225f963659538af0796daab74b12e8f","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.16.0.tgz","fileCount":58,"integrity":"sha512-pHjOOivGIXdCMkGlo/YoAw+u2y2osfYnW3LPLobF5lOxRtQyd3a3MYMTYHsCK5pcITQguT0lOuS0WQAbAnBEbA==","signatures":[{"sig":"MEUCIARKYvNWKTemTbHQT073wSfIzstWDvV/pzKM9sM8KqrsAiEAx+cZ9jwF2gh3uRFHkCkiXdLDmjfxrwRJkUSAmNsJV1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408929},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"5ad4e9cacd2cb8b477d4c1234430a327abbfb094","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.16.0_1783957622769_0.4053854022490351","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"jump.sh","version":"0.16.1","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@0.16.1","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"645172bce19bc2192c34a257c0ac504a33f0f00e","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-0.16.1.tgz","fileCount":58,"integrity":"sha512-0zVZQ+STQkW2EGplmJOKD3+xDKk5AEhICNo0yrcFQ+vd1q5At8cIdmuolrV/RnV2zzC+u+QJ+dxKwOLLX8hpfg==","signatures":[{"sig":"MEYCIQDQF7xVvGJZhWKi1AwT5JWaKVmLTewlC1IhEMxHgLRWUgIhANZYslWrTojFlr4PxKuLSd4pBuDK+bGJz9TNXsz5DRkZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":412299},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"2d689daad807a1f96f39d58ccbda4d3b37270d5c","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.14.1","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_0.16.1_1784226754084_0.8992208629836409","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.0":{"name":"jump.sh","version":"1.0.0-rc.0","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@1.0.0-rc.0","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"045a8586a3cb9585d3ed2cece52de6e3305f8a2f","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-1.0.0-rc.0.tgz","fileCount":60,"integrity":"sha512-fEbdBEZ4vODHz7db0rG0YFGIdg9KzsGFsxC9g4PyTHKsWuotft+8TZkv9PXwx2pfjCm4eVj53uMhQ4Eo1pJsxg==","signatures":[{"sig":"MEUCIQDBH6jMhYPT3t8mAEDGPonrOqIu2NqMLL+00fVDaewleQIgB1zTSC2zrA5Xg05P9wo0l0n0XVSC3mSTdIc/afssTDw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCQtF0nCok5upnTTplX74N3MPZpIWXE5CMIqLX5htuhywIhAPjgyWI6admMyJcayQro1/o4/uLonH1ajQBEvuwZvnqZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":412728},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"ff0af804447da0ce2d3eac75d5a677b6798ee3da","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"dguttman","email":"david@davidguttman.com"},"_npmVersion":"11.6.2","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_1.0.0-rc.0_1790698194497_0.3423875113715298","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.1":{"name":"jump.sh","version":"1.0.0-rc.1","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"author":{"name":"David Guttman"},"license":"MIT","_id":"jump.sh@1.0.0-rc.1","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"homepage":"https://github.com/davidguttman/jumpsh#readme","bugs":{"url":"https://github.com/davidguttman/jumpsh/issues"},"os":["darwin","linux"],"bin":{"jump.sh":"bin/jumpsh.js"},"dist":{"shasum":"0fcf73490be1fc051bb0e86a109bd370cfb4e964","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-1.0.0-rc.1.tgz","fileCount":62,"integrity":"sha512-vIlZG/BbgSerwv8KPKSd4W/UCOB5Soz636HnJvi2ogA1opf+Tgo60Ogl65DRaDTTqKp8bcAlmWCCzt8GAYVk1g==","signatures":[{"sig":"MEUCIF5itSNjHMUQSmWuHkwOIz6Ag6KL3zHW6mB64YHynVsYAiEA7yp6s8P3pL52jONIDIiUAVzq+H2q9J9G8lvhUzltTyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDl/PCwHxmacUUIM1Bzk+AlSlMR7OeGoWPevoLqUNWgFgIhANuwJGXutWA/MxEC17WrpXvYgeA3n0h4HolAWK+12JRt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":437144},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"5421bd338ddd933e6d150ea2be9882b887000c52","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b30e2b7c-98ba-4d70-b1b7-5eb6ae7eac18"}},"repository":{"url":"git+https://github.com/davidguttman/jumpsh.git","type":"git"},"_npmVersion":"11.19.0","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"tmp":"tmp/jump.sh_1.0.0-rc.1_1790888502080_0.773133469479159","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"os":["darwin","linux"],"_id":"jump.sh@1.0.0","bin":{"jump.sh":"bin/jumpsh.js"},"bugs":{"url":"https://github.com/davidguttman/jumpsh/issues"},"dist":{"shasum":"339cb7b5337df6af91cc698b4e250195e68fc03f","tarball":"https://registry.npmjs.org/jump.sh/-/jump.sh-1.0.0.tgz","fileCount":62,"integrity":"sha512-dhBp0ar8VLn7JidyFmXqbwh0P2fZSuXmTUduDtlrLjbnO+2Pb6sGHmX5ORu4mSRDaMV+b86zV2rAdB4tSJOsbQ==","signatures":[{"sig":"MEUCIQDWVRcHakV3Y+BeUCgWyJdSDX/MhvwBL+RYFY4gIqyoGQIgOmrjBrYgS61tUREyrOTkdNGNuhlr2o6bpJrVDUSSDj8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCEGqJZk2kNYgs/5ZM4vVuR8UTqKuPfq4FbUL72soMreAIhAMYMxsKLYxIDWs++fYQ995lIS4bOVVz5cjhZILul6f+8"}],"unpackedSize":437139},"main":"server.js","name":"jump.sh","type":"module","author":{"name":"David Guttman"},"engines":{"node":">=18"},"gitHead":"459be4d772fd05827a1e362a646687f0d1f4285e","license":"MIT","scripts":{"dev":"nodemon server.js","lint":"eslint .","test":"node --test test/*.test.js","start":"node server.js","prepare":"scripts/install-hooks.sh","lint:fix":"eslint . --fix","test:all":"node --test test/*.test.js test/e2e/*.test.js","test:e2e":"node --test test/e2e/*.test.js","api:start":"node api/server.js","api:install":"cd api && npm install","api:cert:renew":"cd api && npm run cert:renew","test:lifecycle":"scripts/e2e-lifecycle.sh"},"version":"1.0.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b30e2b7c-98ba-4d70-b1b7-5eb6ae7eac18"}},"homepage":"https://github.com/davidguttman/jumpsh#readme","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"repository":{"url":"git+https://github.com/davidguttman/jumpsh.git","type":"git"},"_npmVersion":"11.19.0","description":"jump.sh — local dev server with Docker containers + subdomain routing","directories":{},"maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"_nodeVersion":"24.21.0","dependencies":{"ejs":"^3.1.9","lowdb":"^7.0.1","dotenv":"^17.0.0","express":"^4.18.2","slugify":"^1.6.6","get-port":"^7.1.0","http-proxy-middleware":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","eslint":"^10.1.0","nodemon":"^3.1.0","@eslint/js":"^10.0.1","@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jump.sh_1.0.0_1790957480538_0.5371106984399854"}}},"time":{"created":"2026-03-02T23:17:17.518Z","modified":"2026-10-02T16:11:20.860Z","0.0.1":"2026-03-02T23:17:17.663Z","0.1.0":"2026-03-03T22:22:05.535Z","0.2.0":"2026-03-03T22:41:51.809Z","0.3.0":"2026-03-03T23:14:32.002Z","0.4.0":"2026-03-03T23:21:08.468Z","0.5.0":"2026-03-03T23:40:21.890Z","0.5.1":"2026-03-04T00:12:58.155Z","0.6.0":"2026-03-04T01:03:46.734Z","0.6.1":"2026-03-04T01:16:15.915Z","0.7.0":"2026-03-04T23:16:30.465Z","0.8.0":"2026-03-05T01:16:54.202Z","0.9.0":"2026-03-06T06:45:18.466Z","0.9.1":"2026-03-06T15:44:27.092Z","0.10.0":"2026-03-11T18:11:02.099Z","0.10.1":"2026-03-31T17:12:41.030Z","0.10.2":"2026-03-31T17:38:25.910Z","0.11.0":"2026-04-25T18:00:12.750Z","0.11.1":"2026-04-30T16:34:19.998Z","0.11.2":"2026-06-02T18:36:21.286Z","0.11.3":"2026-06-02T18:59:46.992Z","0.12.0":"2026-06-02T19:03:28.097Z","0.12.1":"2026-06-02T21:14:36.534Z","0.12.3":"2026-06-02T22:13:01.448Z","0.12.4":"2026-06-02T22:54:20.560Z","0.13.0":"2026-06-11T21:32:36.707Z","0.14.1":"2026-06-12T23:00:47.815Z","0.15.0":"2026-06-12T23:22:42.766Z","0.16.0":"2026-07-13T15:47:02.915Z","0.16.1":"2026-07-16T18:32:34.231Z","1.0.0-rc.0":"2026-09-29T16:09:54.651Z","1.0.0-rc.1":"2026-10-01T21:01:42.159Z","1.0.0":"2026-10-02T16:11:20.666Z"},"author":{"name":"David Guttman"},"license":"MIT","keywords":["dev","local","docker","dashboard","proxy","subdomain"],"description":"jump.sh — local dev server with Docker containers + subdomain routing","maintainers":[{"name":"dguttman","email":"david@davidguttman.com"}],"readme":"# jump.sh\n\nLocal dev server with Docker containers + automatic subdomain routing.\n\n**No more remembering port numbers.** Just `my-project.jump.sh`.\n\n## Features\n\n- **Subdomain routing** — Access projects at `project-name.jump.sh` instead of `localhost:3847`\n- **Docker-based** — Reliable start/stop, no orphan processes\n- **Git worktree support** — Auto-discovers `.worktrees/`, creates `project--branch.jump.sh` URLs\n- **Live logs** — Stream container logs in the dashboard\n- **Zero config for projects** — Just point to a directory; jump.sh auto-detects the stack\n\n## Quick Start\n\n```bash\n# Install\nnpx jump.sh install\n\n# Add a project\ncd ~/my-project\nnpx jump.sh add .\n\n# Start it\nnpx jump.sh start my-project\n\n# Open in browser\nopen https://my-project.jump.sh\n```\n\n## Requirements\n\n- Node.js 18+\n- Docker + Docker Compose v2\n- macOS or Linux\n\n## CLI Commands\n\n```\njump.sh                    Run daemon in foreground\njump.sh add [path]         Register a project (default: current directory)\njump.sh remove <name>      Unregister a project\njump.sh install            Install daemon service + download certs\njump.sh uninstall          Remove daemon service (keeps ~/.jump.sh state)\njump.sh upgrade            Upgrade jump.sh itself (keeps ~/.jump.sh state)\njump.sh certs              Download TLS certificates\njump.sh ls                 List projects with status\njump.sh prune worktrees    Prune stale registered worktree records (dry-run by default)\njump.sh start [name]       Start project containers\njump.sh stop [name]        Stop project containers\njump.sh restart [name]     Restart project containers\njump.sh logs [name]        Tail project logs\njump.sh status             Show daemon and domain status\njump.sh ip                 Print LAN IP address\njump.sh register           Register machine for remote routing\n```\n\n### Agent / Scripting Mode\n\nMost commands accept `--json` for machine-readable output:\n\n```bash\njump.sh ls --json                       # all projects + status\njump.sh status --json                   # daemon and domain status\njump.sh start my-app --json             # start, JSON result\njump.sh stop my-app --json              # stop, JSON result\njump.sh restart my-app --json           # restart, JSON result\njump.sh add . --json                    # detection only (dry-run)\njump.sh add . --json --yes              # create project + JSON result\njump.sh prune worktrees --json          # preview stale worktree records\njump.sh prune worktrees --json --yes    # prune stale worktree DB records\n```\n\nWhen run inside a registered project's directory, `start`, `stop`, `restart`,\nand `logs` resolve the project from `cwd` automatically — no name required.\n\n## Configuration\n\nCopy `.env.example` to `.env`:\n\n```env\nJUMPSH_HTTPS=true\nJUMPSH_PORT=4443\nJUMPSH_DOMAIN=jump.sh\nJUMPSH_CERT_PATH=~/.jump.sh/certs\nJUMPSH_DASHBOARD_HOST=dash.jump.sh\n```\n\n### Management security\n\nThe dashboard, management APIs, static assets, logs, and event streams require authentication. `jump.sh install` creates a random token at `~/.jump.sh/management-token`; daemon startup creates it lazily for existing upgrades. The state directory uses mode `0700` and the token file uses `0600` where supported. Existing tokens are preserved, and CLI daemon requests send the token automatically as a bearer credential.\n\nBrowsers sign in on a jump.sh login page: paste the contents of `~/.jump.sh/management-token` into **Token** and press **Connect**. The browser then holds a signed session cookie (`__Host-jumpsh_session`: `Secure`, `HttpOnly`, `SameSite=Lax`, host-only, `Path=/`) — the token itself is never stored in the browser or placed in a URL. Leave **Remember this device** off for a browser-session cookie (also expired server-side after 24 hours); turn it on for a persistent cookie that expires after 30 days. **Log out** in the dashboard header clears the cookie and revokes that one session (other signed-in devices stay signed in). Each revocation is a separate marker file in `~/.jump.sh/revoked-sessions/` (directory `0700`, files `0600`, written atomically; named by the random session id and holding only its expiry time, no secrets). Every cookie-authenticated request checks for its marker, so revocations survive daemon restarts and are seen immediately by every daemon sharing the same home, with no shared file to overwrite. A marker is pruned only once its session would have expired anyway. If a marker cannot be written, browser sign-in fails closed in that daemon (existing browser sessions are refused and new ones are not issued) until it restarts. If the directory cannot be read, every daemon refuses browser sessions until it is fixed. A malformed or unreadable marker counts as revoked. The CLI keeps working throughout. Logout never discards an unexpired revocation to make room; if the store is full, logout is refused and asks you to rotate the token instead. Session cookies are signed with a key derived from the management token, so replacing `~/.jump.sh/management-token` and restarting the daemon signs out every browser. Unauthenticated page navigations redirect to `/login`; unauthenticated API, static, log, and event-stream requests receive `401` without a `WWW-Authenticate` challenge, so browsers never show a Basic-auth popup. HTTP Basic credentials are no longer accepted. Use HTTPS for the dashboard. Only the exact configured dashboard host is accepted, and `X-Forwarded-Host` is ignored, so reverse proxies must preserve the original `Host` header.\n\n`jump.sh open` (and `jump.sh open add`) signs the browser in for you. Using its existing bearer credential over HTTPS, the CLI asks the daemon for a disposable login code and opens `/login?next=<destination>#code=<code>`. The code lives only in the URL fragment, which browsers never send to the server or in `Referer`; the login page removes it from the address bar immediately and exchanges it with a same-origin `POST /login` for the same browser-session cookie as a manual login (Remember off). Codes expire after 60 seconds, are consumed once (a replay or an expired code is rejected), at most 16 can be outstanding, and only the bearer credential can request them (`POST /api/login-codes`). The reusable management token is never placed in a URL, browser storage, or command output, and the code itself is never printed. The browser is launched with the URL as a single argument, without a shell. If the daemon is unreachable, management is on plaintext HTTP, code issuance fails, or the browser cannot be opened, `jump.sh open` prints the dashboard URL and the token-file location for manual sign-in.\n\nCookie-authenticated mutations, login, and logout require an `Origin` (or, when absent, `Referer`) exactly matching the configured dashboard origin. Bearer-authenticated CLI requests are exempt. On the local HTTP fallback (direct loopback only), the browser session uses a non-`Secure` `jumpsh_session` cookie that is never honored over HTTPS.\n\nProject app subdomains remain public while running. Opening a stopped project returns `503` and never starts it or changes its desired state. jump.sh-owned published ports bind to `127.0.0.1` and are exposed publicly only through the hostname proxy.\n\nIf certificates are unavailable, automatic HTTP fallback still serves project apps, but remote management requests (including the login page) receive `403`. Never enter the dashboard token over remote HTTP. Management accepts HTTP only from a direct loopback socket (including IPv4-mapped loopback); forwarded headers cannot enable it. Management over loopback HTTP is local-only: it is for a browser on the same machine opening the dashboard's `http://` origin. Remote browser management requires the browser to reach the daemon's own HTTPS listener directly, or through a TCP/TLS passthrough proxy that does not terminate TLS. A TLS-terminating reverse proxy that forwards plain HTTP to the daemon, even over loopback, is not supported for browser management: jump.sh never trusts `X-Forwarded-Host`/`X-Forwarded-Proto`, so the browser's `https://` origin will not match the daemon's configured origin and sign-in and changes are refused. CLI management requires HTTPS even for local use: dashboard hostnames may resolve remotely, so an HTTP endpoint in `server.json` is rejected before reading or sending the token. CLI requests also refuse redirects. This intentionally removes plaintext CLI/remote management compatibility; restore certificates with `jump.sh certs` and restart the daemon. Browser mutation checks use the final configured dashboard origin, including any fallback port/protocol, never request-supplied host headers.\n\n### HTTPS Setup\n\nCertificates are downloaded from the jump.sh server:\n\n```bash\njump.sh certs\n```\n\nThis fetches `server.pem` and `server-key.pem` into `~/.jump.sh/certs/`.\n`jump.sh install` also downloads certs automatically when `JUMPSH_HTTPS=true`.\n\n### Upgrading jump.sh\n\nUse the first-class upgrade command:\n\n```bash\njump.sh upgrade\n```\n\n`jump.sh upgrade` preserves `~/.jump.sh`, projects, certificates, and registration. It removes only the current daemon service/wrapper, then reinstalls the daemon against the right package source:\n\n- npx/transient installs trampoline to `npx --yes jump.sh@latest install`\n- global npm installs run `npm install -g jump.sh@latest`, then `jump.sh install`\n- local checkouts reinstall the daemon from the checkout without mutating global npm\n\nUse `jump.sh upgrade --dry-run` to preview the daemon-only removal and reinstall plan.\n\nThe download endpoint is configurable via `JUMPSH_ORIGIN` (default: `https://jump.sh`).\n\n### API Certificate Renewal Scheduling\n\nThe hosted jump.sh API stores per-user wildcard certificates in DNS TXT records. The API server does **not** run renewal checks inside the web process; production deployments must schedule the renewal job explicitly.\n\nPreferred production setup is a Google Cloud Scheduler HTTP job that calls the API endpoint:\n\n```http\nPOST https://<api-host>/api/jobs/renew-certs\nAuthorization: Bearer <JUMPSH_RENEW_CERTS_SECRET>\n```\n\nConfigure the API with a strong shared secret:\n\n```env\nJUMPSH_RENEW_CERTS_SECRET=generate-a-long-random-value\n```\n\nThen configure Cloud Scheduler with the same value in the `Authorization` header. This endpoint intentionally uses the shared secret only; no OIDC setup is required. If the API secret is missing, the endpoint returns `503` and will not run publicly. A bad or missing request secret returns `401`.\n\nProduction checklist:\n\n- Schedule the HTTP job at least daily. Twice daily is preferred so certbot/GCP/transient failures have time to recover before the 30-day renewal window closes.\n- Run the API with the usual renewal credentials (`JUMP_DOMAIN`, `GCP_DNS_ZONE`, Google DNS credentials, and certbot DNS plugin access).\n- Alert on non-2xx scheduler responses. The endpoint returns `500` when the renewal summary has `failed > 0`, and `409` when a previous renewal is still running.\n- Confirm deployment platform scheduler config before shipping API changes; without this job, existing user certificates can expire even though registration continues to work.\n\nManual fallback commands are still available:\n\n```bash\nnpm run api:cert:renew      # from the repo root\nnpm run cert:renew          # from ./api\n```\n\n**Linux only:** To bind port 443, Node.js needs low-port capability:\n```bash\nscripts/enable-low-port-bind-linux.sh\n```\nmacOS does not need this step. If you prefer not to use a privileged port, set `JUMPSH_PORT=5050`.\n\n## Project Setup\n\nEach project needs a `docker-compose.yml`, or jump.sh will auto-generate one:\n\n- **Node.js** — detects `package.json`, package manager (npm/yarn/pnpm/bun), framework (vite/next/nuxt)\n- **Python** — detects `requirements.txt` or `pyproject.toml`, framework (FastAPI/Flask/Django)\n- **Manual** — provide your own `docker-compose.yml` for full control\n\nAuto-generated files live in `.jump.sh/` inside your project directory.\n\n## Worktrees\n\njump.sh auto-discovers git worktrees in `.worktrees/`:\n\n```\nmy-project/\n├── .worktrees/\n│   ├── feature-auth/     → my-project--feature-auth.jump.sh\n│   └── bugfix-login/     → my-project--bugfix-login.jump.sh\n├── docker-compose.yml\n└── ...\n```\n\nURLs use double-dash as separator: `my-project--feature-auth.jump.sh`\n\n## Log Locations\n\n- **Global daemon logs** — `~/.jump.sh/logs/daemon.log` and `daemon.err` (stdout/stderr from the daemon process)\n- **Per-project dev log** — `<project>/dev.log` (project-specific events: container start/stop/errors)\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────┐\n│                     jump.sh                          │\n│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  │\n│  │  Dashboard  │  │   Docker    │  │  Subdomain  │  │\n│  │     UI      │  │   Manager   │  │    Proxy    │  │\n│  └─────────────┘  └─────────────┘  └─────────────┘  │\n└─────────────────────────────────────────────────────┘\n         │                 │                 │\n         ▼                 ▼                 ▼\n    Project CRUD    docker compose     my-app.jump.sh\n    Start/Stop       up/down/logs      → container:port\n```\n\n## Reproducible Lifecycle Proof\n\nRun the full create → start → proxy → logs → stop → delete lifecycle in an isolated Docker environment:\n\n```bash\nnpm run test:lifecycle\n```\n\nRequires Docker with compose plugin. No other dependencies — the test builds its own localhaus image, starts a fixture container, runs 11 assertions, and cleans up.\n\n## License\n\nMIT\n","readmeFilename":"README.md","homepage":"https://github.com/davidguttman/jumpsh#readme","repository":{"url":"git+https://github.com/davidguttman/jumpsh.git","type":"git"},"bugs":{"url":"https://github.com/davidguttman/jumpsh/issues"}}