{"_id":"@absolutejs/deploy","_rev":"47-48a93e6e1aa157f46b238e70d3baeda0","name":"@absolutejs/deploy","dist-tags":{"latest":"0.25.14"},"versions":{"0.0.1":{"name":"@absolutejs/deploy","version":"0.0.1","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.0.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"4fc72816b90a8cd190ac5a46b58b71f7d2a18a67","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.0.1.tgz","fileCount":9,"integrity":"sha512-+/Vde92a1c/G0Tsn2nxHHm0+s4R8VWAohgKZvIw1i9aAHH7zAvJ1opE6ImWwfvy9HIYweVaWGxiyHMO9zmjHqw==","signatures":[{"sig":"MEYCIQCIM/YSmld21LLhiyR1/5iuuNouq1xbiJ+m9zzMKIZ6AgIhAP9IIfoygQtmMSCUO5kYy6Snwn8aumr/QibdEcVSY6Uy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91739},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"4fc72816b90a8cd190ac5a46b58b71f7d2a18a67","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-+/Vde92a1c/G0Tsn2nxHHm0+s4R8VWAohgKZvIw1i9aAHH7zAvJ1opE6ImWwfvy9HIYweVaWGxiyHMO9zmjHqw==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.0.1_1780083816228_0.2715237765674867","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@absolutejs/deploy","version":"0.1.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"3577c6b7cce330dd804a0ef5b0c9b3093b036f37","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.1.0.tgz","fileCount":9,"integrity":"sha512-T4diqbl/hunuaFfgigxM4mR69/UsyNgzRwaCSYRgyXXEHH+GrVZHg5pj2d4mpnDvZxzjiRA6Hd2s4js+WVSA6w==","signatures":[{"sig":"MEQCIDAykFUWT1gl75CWPIesq/oqaKstmmEDbDVmV1sUPl2JAiAQELeHxCh9LcBrqekR5j70KK01YGZu8txToC4ygZWu6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106560},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"3577c6b7cce330dd804a0ef5b0c9b3093b036f37","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-T4diqbl/hunuaFfgigxM4mR69/UsyNgzRwaCSYRgyXXEHH+GrVZHg5pj2d4mpnDvZxzjiRA6Hd2s4js+WVSA6w==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.1.0_1780090114014_0.7460330995196482","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/deploy","version":"0.2.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"cf296ba052439d539206f11d8f336b098f9635ff","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.2.0.tgz","fileCount":12,"integrity":"sha512-WPtz0mx6tdEJ2OkfwpvSn7xsRkqHvzv28ObQ4jrCcWRd3RsGkniYkb2nx0y20QMzSEeG/BQQ2mPkd50idPpdeg==","signatures":[{"sig":"MEUCIQCokFv69W0J5aH4KnFOxX0YBV/CKdHMi11YV3pKEJCNNAIgW2nvpgkgvK+3HQyU9uS2yoI0Ckmd9Ep+Iru556dMLx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162016},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"cf296ba052439d539206f11d8f336b098f9635ff","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-WPtz0mx6tdEJ2OkfwpvSn7xsRkqHvzv28ObQ4jrCcWRd3RsGkniYkb2nx0y20QMzSEeG/BQQ2mPkd50idPpdeg==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.2.0_1780216067537_0.018433220352582547","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@absolutejs/deploy","version":"0.3.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.3.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"e11269ae7f66dd53835ff59f3f60f5206357e54c","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.3.0.tgz","fileCount":15,"integrity":"sha512-AR9j9ThtdqB+VujTO2SSw2yGkCoEwSWQt/j3aYqd6xODJZZWz5JBTF8x2vRz04x3FxHvjHwGVqnSwY18++vKeQ==","signatures":[{"sig":"MEUCIBPN5G0/4uM9lfT9jtEXH5AMycOARitsgFhlIXwWrtxUAiEA++eai8YwKp2Ev7p76fP5JjSersrPJ8ECnOl3inbqc1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217296},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"e11269ae7f66dd53835ff59f3f60f5206357e54c","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-AR9j9ThtdqB+VujTO2SSw2yGkCoEwSWQt/j3aYqd6xODJZZWz5JBTF8x2vRz04x3FxHvjHwGVqnSwY18++vKeQ==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.3.0_1780216360505_0.6471447385979527","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@absolutejs/deploy","version":"0.3.1","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.3.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"4f343a75ff2da7b0a3e258176d4c4939b37ab27e","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.3.1.tgz","fileCount":16,"integrity":"sha512-P1yPNxsXdCzyY7b9DhK5QLq/UXS+W43nyJx8q1KWXe8P9/5m4vabyppLOcJ4anDjipDpAIdEUt8ACvlka0+IBA==","signatures":[{"sig":"MEUCIQDahrPSYvkZbVfB4Hi5BMJeVaS/9qOewpGFgk+cHBeOdgIgGCwRlAIzvKplWJp+iRnNLxOWiQSNT2CW+3CoWitmNAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240730},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"4f343a75ff2da7b0a3e258176d4c4939b37ab27e","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-P1yPNxsXdCzyY7b9DhK5QLq/UXS+W43nyJx8q1KWXe8P9/5m4vabyppLOcJ4anDjipDpAIdEUt8ACvlka0+IBA==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.3.1_1780216656503_0.09017392614148623","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@absolutejs/deploy","version":"0.4.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.4.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"13f15524a135ab807234b60161bfe068a32c86c4","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.4.0.tgz","fileCount":22,"integrity":"sha512-6nt+LbayRtUa3FNRVKsEVMJmQUx+oKR46R+DJHwMVXfcO1EmVdXWx4a05IbJivr8cfPJx4BHw+WKylqjsV61xw==","signatures":[{"sig":"MEQCIF0qnAHe2Q43WNlB3FIosMs9TMbiayk2TCVU6AOMts03AiASqbkkFlEe99Z2j+sK/pFXj9l49Pz8L+FSLiggBeVYvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":270370},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"13f15524a135ab807234b60161bfe068a32c86c4","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/dns.ts src/cloudflare.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-6nt+LbayRtUa3FNRVKsEVMJmQUx+oKR46R+DJHwMVXfcO1EmVdXWx4a05IbJivr8cfPJx4BHw+WKylqjsV61xw==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.4.0_1780216923991_0.16021658088451884","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@absolutejs/deploy","version":"0.5.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.5.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"5a5d2f10e9a9d9b4075022186f997b63e70f2e39","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.5.0.tgz","fileCount":25,"integrity":"sha512-yWG+KS4MokjlaNKxN/Br9Z25uRCQopvk0+ypTcyM4rff22E+8pxSLNzwMsXzpUw0K3Y6OTGYgnqPkxbvMmhk5w==","signatures":[{"sig":"MEYCIQCjlP2Mk4vreJwq/DRh+6NxfkrvlKFugIonHo919qrC7wIhALfw+bXKy41Ajp9Af9SeUwGPt/nVOG1WkZVUYeaf2pvn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334041},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"5a5d2f10e9a9d9b4075022186f997b63e70f2e39","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/dns.ts src/cloudflare.ts src/tls.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-yWG+KS4MokjlaNKxN/Br9Z25uRCQopvk0+ypTcyM4rff22E+8pxSLNzwMsXzpUw0K3Y6OTGYgnqPkxbvMmhk5w==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.5.0_1780217536764_0.3502690906942849","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@absolutejs/deploy","version":"0.5.1","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.5.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"fe0499a91ef0b8dd53734cf1091435d7f8a9cf18","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.5.1.tgz","fileCount":25,"integrity":"sha512-6SeVFAsAycBeJ1ySNKWF/YjQ6ZHc/QFJeP9/Do1X7PB4HFH24ISgEThDiD/gpX+tSTRoNkinXdiD8uxGA9eBVA==","signatures":[{"sig":"MEUCIDIngiMZ1EqC3DXoLVNP4SU08ooa/Y2ApvLY8hoE9ddtAiEApcIqmObn1bSc+mNXkSYeKEg5i09S3MMF3Tbts9aNLx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":336933},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"fe0499a91ef0b8dd53734cf1091435d7f8a9cf18","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/dns.ts src/cloudflare.ts src/tls.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-6SeVFAsAycBeJ1ySNKWF/YjQ6ZHc/QFJeP9/Do1X7PB4HFH24ISgEThDiD/gpX+tSTRoNkinXdiD8uxGA9eBVA==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.5.1_1780218359338_0.265203132698278","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@absolutejs/deploy","version":"0.6.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.6.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"122303c0249fc02f5bf950390d8c6def40f292f1","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.6.0.tgz","fileCount":25,"integrity":"sha512-/IuKUaE+gCJrA10QHWnsRWKEAUH3DTdrKIBI6CtJQcXsJcv7Gpd5PTgJQ+Ei/6xRi9SNnMKXZzUW8b0MmzK9BA==","signatures":[{"sig":"MEUCIQCytG5MMBQzcEWkAECx26dTQVqMUQA7OIhXkzxFcCNIIQIgdwEb1v0rx68Kaz36qgcz5koZO4pFKL14VxbBsN7JiM8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":349641},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"122303c0249fc02f5bf950390d8c6def40f292f1","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/dns.ts src/cloudflare.ts src/tls.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-/IuKUaE+gCJrA10QHWnsRWKEAUH3DTdrKIBI6CtJQcXsJcv7Gpd5PTgJQ+Ei/6xRi9SNnMKXZzUW8b0MmzK9BA==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.6.0_1780218626061_0.9002585683769342","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@absolutejs/deploy","version":"0.7.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.7.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"ea74cd8f9b533419bd48b280d26d17097b585c6d","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.7.0.tgz","fileCount":28,"integrity":"sha512-vEjCp9sFCmUXEscMaRbbbca0XzSZy6fe7gVSlBjDSC7kIBo8HscmYrK1mvZkpEshL9XSlzJoJeKegsiu51V/6w==","signatures":[{"sig":"MEUCIEQeq86uAwylHwPr9is/0es7Nntp6jUt/CUfc/s7dtk7AiEA+yimzpEeORPq4rp3w38/yXh41ln25/yVCS1f+JE5Wbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383247},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"ea74cd8f9b533419bd48b280d26d17097b585c6d","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/dns.ts src/cloudflare.ts src/tls.ts src/env.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-vEjCp9sFCmUXEscMaRbbbca0XzSZy6fe7gVSlBjDSC7kIBo8HscmYrK1mvZkpEshL9XSlzJoJeKegsiu51V/6w==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.7.0_1780219084548_0.7341541069516939","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@absolutejs/deploy","version":"0.8.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.8.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"1ee2fc7e41b4dc29d86a0e2732d9519833145e8c","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.8.0.tgz","fileCount":40,"integrity":"sha512-Cxcclg8ue4Kf1Wh4eFVD9pAEZxFvTOJv/Tp6hLOXBik71LYg1fivSfqCtB3BianNAHxKoN/9HwFWALYz5/QN+Q==","signatures":[{"sig":"MEQCIG6LBm7NsTO++rO2NyI6wBhHPJP4TGUOYfq7DF4DCdl8AiAd0eYU0fw4H2Qm6zxKs8gfmVbOvljzxCwT+UUO1YSwVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":594303},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"1ee2fc7e41b4dc29d86a0e2732d9519833145e8c","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/linode.ts src/vultr.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/tls.ts src/env.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-Cxcclg8ue4Kf1Wh4eFVD9pAEZxFvTOJv/Tp6hLOXBik71LYg1fivSfqCtB3BianNAHxKoN/9HwFWALYz5/QN+Q==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.8.0_1780220474511_0.7472340794192838","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@absolutejs/deploy","version":"0.9.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.9.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"7af6b1e239bf7aefbc251c6134e0d135a64b6df8","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.9.0.tgz","fileCount":43,"integrity":"sha512-NRXS/zAznOo4xqyrA3OMFMNd7X0xw4+CK/725iUQ+xI6GcQstCxWKSUinqvYj/ZjeHpPUxyMx4X+5PTP+XqqMQ==","signatures":[{"sig":"MEYCIQCNE/0nxdvvua/2TOPMqoyLTNG9ZXktgIBY5JRyVVgPfQIhAOp8e8dahDwuDkuBBw8v1vgdbvdbPzKe4UCzcrNKoGkd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":619847},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"7af6b1e239bf7aefbc251c6134e0d135a64b6df8","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/linode.ts src/vultr.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-NRXS/zAznOo4xqyrA3OMFMNd7X0xw4+CK/725iUQ+xI6GcQstCxWKSUinqvYj/ZjeHpPUxyMx4X+5PTP+XqqMQ==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.9.0_1780220776217_0.3658525091319511","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@absolutejs/deploy","version":"0.10.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.10.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"02c5fc0751ff5054b2949c44533b53483545b8bb","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.10.0.tgz","fileCount":46,"integrity":"sha512-1rvDj0OQC+He/K1y/s5h4j+eTgUxO+4cjGQN4aEYkMsPSM0Q31OrxZhWD11cEhad1se2KtYEXJUKyOlgBO4Ibw==","signatures":[{"sig":"MEQCID0EktEy42++zYzcxUnSB5BAWMkYA+W+8IqjhiF8BvM7AiB/VjpuxkWfTFxuwEipxwaKUP21EJPprR9rlLe7m2Gvlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":652694},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"02c5fc0751ff5054b2949c44533b53483545b8bb","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/linode.ts src/vultr.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-1rvDj0OQC+He/K1y/s5h4j+eTgUxO+4cjGQN4aEYkMsPSM0Q31OrxZhWD11cEhad1se2KtYEXJUKyOlgBO4Ibw==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.10.0_1780227678166_0.6735761148307069","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@absolutejs/deploy","version":"0.11.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.11.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"fa4f2faaf91f8334a96ebb6e60b4fc4aedf3396b","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.11.0.tgz","fileCount":46,"integrity":"sha512-BXZS3tc1sm+ZYd9/hK/4J8cW9L917cn7BKhBvKbTDEkHiX7pdgKEhZ8x5olH3OiDVnPG2DWVeTYEyp62FvB1Aw==","signatures":[{"sig":"MEUCIQC7+fRoFlai2L0BHxPFyMddKPskShZOCgTnBHGF/YtFTAIgNhRbyYkq/EebBmwm+6+sExm4jWF26muR2+I7NaaYsO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":655292},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"}},"gitHead":"bda8dc665dde29932ac925e0f44d9f1bd18a41b7","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/linode.ts src/vultr.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.11.0_1784055483879_0.09889079260562594","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@absolutejs/deploy","version":"0.12.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.12.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"fd621fa5ad9f6d19c09c44293ed06fa37e6eee8e","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.12.0.tgz","fileCount":46,"integrity":"sha512-dVSFVMPyV4Ls0H3HZq3kbdlcrY8bKHWRskkOeHxByQecHpCZpw45if9TM2WEvnxc/1l1RAxR3hA/iFJuGZ9i7w==","signatures":[{"sig":"MEYCIQCCiL0UAaTM//PWPXKUto1TActXnu+wZXmruPfuHsIV7QIhAKbSz7Efrmh0jYulxQnnLjcOF3GfqisO6QhzvAh5Xo8I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":656579},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"}},"gitHead":"818d42e2abf857dc589da13f5e1c145e8fa64a9f","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/linode.ts src/vultr.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.12.0_1784055586725_0.7505078002068424","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@absolutejs/deploy","version":"0.13.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.13.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"5b65d1033660cc6c2a00b2ea197c9d0a4d757681","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.13.0.tgz","fileCount":46,"integrity":"sha512-PjZXIcMqC8Bjhpmx7pYbii6lBkAWMu/Pq4B3lOK4kSJeA/znej23qIkgsfVaqEBvm+Rd0q8aUe2nSWGf/U5RaA==","signatures":[{"sig":"MEUCIDOfLwQrij0mSE+yPhW9gfPCocf43+Ibr2Ks63o4pE97AiEA3goGQOhPF7GVD7tz+fvqy8U+hAFAyAqItYR7WnnhE+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":659310},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"}},"gitHead":"b2c84de38a2ecfc9b702288ef37fdc34da91fdd9","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/digitalocean.ts src/hetzner.ts src/linode.ts src/vultr.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.13.0_1784064174821_0.7837227597817689","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@absolutejs/deploy","version":"0.14.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.14.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"1005855b4c0ddbdf2a463848f8579a3aa9edddbe","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.14.0.tgz","fileCount":55,"integrity":"sha512-Ogzv5H89ts15qvCHn4WCmNvFYTRGoSAVglM0iIfrxNuTb4G2LqQhFgiqkXJY3yzvus9ZCf4OIWqZNtYbivFSrQ==","signatures":[{"sig":"MEQCIE7qTV3q+vWlu5Dssee6354srob1Tr+JyZq0gEZNBm/bAiBaPhjsJowmPodjeAj3c3jylgc/WDkT4l3w49L/1T0Qzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2012440},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"}},"gitHead":"819411948e36f7e522b5f9fe2a99a92d62f17ee4","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/infrastructure.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/gcp.ts src/hetzner.ts src/linode.ts src/vultr.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.14.0_1784079929483_0.3009632290118598","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"@absolutejs/deploy","version":"0.14.1","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.14.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"a5fd35c05e3b46f943ad5b5b7316bac15567600f","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.14.1.tgz","fileCount":55,"integrity":"sha512-dIM/WOzPdQTL3JNTSW7H1vgVqoUNHbpLP1xpnBOmgpL8VcHJ51gG9/aVhp8MrJNg1OQKELEk1sZgElvcJ34qmA==","signatures":[{"sig":"MEYCIQDivLPAucDTaFFAUVkbamvJXa6S1AavvPYO46Y5aNSdZgIhAJUiFm7A3yst/1F1edgwcUvX3vqcudzrMAez9TpeeN1I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2014635},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"}},"gitHead":"0f0056dfef924d005aeab9e94ea0c9bd6fb7c965","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/infrastructure.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/gcp.ts src/hetzner.ts src/linode.ts src/vultr.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.14.1_1784080013740_0.26743606264633746","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@absolutejs/deploy","version":"0.15.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.15.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"42d8f84537cb76bbb7879e5f3aa9d0987472b692","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.15.0.tgz","fileCount":65,"integrity":"sha512-/G4ASUzT5s8ViVzQnT4iyLPnEtcm5RfmHBUVzk0XxunmtURZRDCdEx5Jz1pdwb9N+/89IjoU+Yi+dxwvXSPbmw==","signatures":[{"sig":"MEUCIETzd9B1iH5dClbuAb7cKxiiKHrvXBKItutXDdsbPh20AiEAolqfPo/vi/rCovkQZSUQEERYhvQCvB4avF/pswrfGCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2231792},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"}},"gitHead":"820b36563edbd3ea5804c458ca3966bd291d0745","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/infrastructure.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/gcp.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.15.0_1784080986672_0.13247105883187094","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@absolutejs/deploy","version":"0.16.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.16.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"8501a24f3742cd73566243f626ce853bf279f2cf","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.16.0.tgz","fileCount":65,"integrity":"sha512-Cd3TujQmkDX2A7l1VBV89ffES9hZPwJe1M/uvdIxJ/dDUshy6JS5S32t9QmJcOtjvfMCcWVL1pRjdkFI7q2zfQ==","signatures":[{"sig":"MEYCIQDTXEH/r/HFYx90WmvSzIDrc8STU0slZsqnE9l89tdjqwIhAKD1Md4mrtKgsxv88WwGqFNXcN/KIUWuaQ5KtKJc4gy7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2232766},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"8501a24f3742cd73566243f626ce853bf279f2cf","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/infrastructure.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/gcp.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-Cd3TujQmkDX2A7l1VBV89ffES9hZPwJe1M/uvdIxJ/dDUshy6JS5S32t9QmJcOtjvfMCcWVL1pRjdkFI7q2zfQ==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.16.0_1784082429807_0.9990927056632857","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"@absolutejs/deploy","version":"0.16.1","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.16.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"167992c3251669c274b0d8d906d164aac900df74","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.16.1.tgz","fileCount":65,"integrity":"sha512-IBU4KuXiz67zFIuUXWRPgQIcVqrUpjuDkS0Ddmnu49HaO/zhPpZBX+cg20/hrQTiL1Dw9P/OGO6C5R5Dwk5JLw==","signatures":[{"sig":"MEUCIQDtv6MX/f3qTFDp/ROAZKFq4m3zSwggrvjzU8PnaS+TxAIgb2Hayo5g6vApZhUMC+LJKXA/2LKERewphXpAYvJyRZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2232754},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"167992c3251669c274b0d8d906d164aac900df74","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/infrastructure.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/gcp.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-IBU4KuXiz67zFIuUXWRPgQIcVqrUpjuDkS0Ddmnu49HaO/zhPpZBX+cg20/hrQTiL1Dw9P/OGO6C5R5Dwk5JLw==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.16.1_1784083913606_0.49715459200493894","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@absolutejs/deploy","version":"0.17.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.17.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"418ad196117fc9d80454dcd8779ce94dae22ef11","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.17.0.tgz","fileCount":74,"integrity":"sha512-1KJ9TVxInxX7yuYBDjBR5RDfnYgOLKOrdP/RuEo9ySDLPN2KzMd4bAfm3nt4HM/0nq81QKe2pp4L8Av/sftJOg==","signatures":[{"sig":"MEUCIQDoPOfNr2UKQhRMs6jNLqe0qqR+XHGqLNS3yuVPks3hYAIgdFgyqL7DF4YmZ3hAMMkScT7+/4xeW3o5kX/eGHEkOog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3601351},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"418ad196117fc9d80454dcd8779ce94dae22ef11","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/infrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-1KJ9TVxInxX7yuYBDjBR5RDfnYgOLKOrdP/RuEo9ySDLPN2KzMd4bAfm3nt4HM/0nq81QKe2pp4L8Av/sftJOg==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.17.0_1784087268286_0.370510368769827","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@absolutejs/deploy","version":"0.18.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.18.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"bb159f3b1374bf08345be384604ec8f861861faa","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.18.0.tgz","fileCount":77,"integrity":"sha512-rFTswye37eaioC0mRo8h1a7Ggra4t9cA8MjQcGKr8t7diUtttgsbUWAFXrOAAymyHVqznHS5UsXgXZ7MmG1vtg==","signatures":[{"sig":"MEUCIExzc5yLETSjkhQFLyZ3iuuPnLmk/pmaAn9gSX9vMQMzAiEAqONWXkRe45sLKtGQP9PS01L4Q8nkbJtEplzRKWuem1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3634691},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"bb159f3b1374bf08345be384604ec8f861861faa","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/infrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-rFTswye37eaioC0mRo8h1a7Ggra4t9cA8MjQcGKr8t7diUtttgsbUWAFXrOAAymyHVqznHS5UsXgXZ7MmG1vtg==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.18.0_1784089766658_0.23055843812969012","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@absolutejs/deploy","version":"0.19.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.19.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"0fc417b4f959c5e6a9c76b0872c3fed60a9d3a04","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.19.0.tgz","fileCount":80,"integrity":"sha512-SFziygNz4sGfhYRGOmikNBodDv+LjXbYyRCRWA0ezSJvmx2t+dABF+XMXwKnqFzOH0/8LtyW5a8yQqQS6fIaVQ==","signatures":[{"sig":"MEQCIE0F9B8UrxBrofeJNhbKO7U8xQcW3elO6RuzzKV0EGvvAiAUEPgnale/YJwOMyXGqpv3pVcTsrjN985VpUzCWc7hcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3653705},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"0fc417b4f959c5e6a9c76b0872c3fed60a9d3a04","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/infrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-SFziygNz4sGfhYRGOmikNBodDv+LjXbYyRCRWA0ezSJvmx2t+dABF+XMXwKnqFzOH0/8LtyW5a8yQqQS6fIaVQ==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.19.0_1784119026959_0.22989321185999678","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@absolutejs/deploy","version":"0.20.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.20.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"bce7101bc6525ee24752c150452c9cbb1d9e1935","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.20.0.tgz","fileCount":80,"integrity":"sha512-pmaIsI4wBmF2A403LTsimv1/AA9kLgIC3+G901v13ZLljIvQvt+3ZbwzK9UiakhPqSoabvZQa+NyrdyMTGO+4Q==","signatures":[{"sig":"MEUCIDW/Kp1lTQfIkf4YX5jWTD4/pGp0ER6nf5lO1KMucxBCAiEAvq9hDn5y13RCADXKmCLl98XXV+kIUI6iiuIl18NWP6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3663165},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"bce7101bc6525ee24752c150452c9cbb1d9e1935","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/infrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-pmaIsI4wBmF2A403LTsimv1/AA9kLgIC3+G901v13ZLljIvQvt+3ZbwzK9UiakhPqSoabvZQa+NyrdyMTGO+4Q==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"peerDependencies":{"bun-types":"^1.3.14"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.20.0_1784242645860_0.8566297537126819","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"@absolutejs/deploy","version":"0.20.1","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.20.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"a062ee710bc20cf9c026b648eb9ee6f88eeba6a7","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.20.1.tgz","fileCount":80,"integrity":"sha512-txu15rMuPX7GPJmx554vEZlzjCcjX5phiLV6nWBXuAUb7l1Onbh2/UnpatByTn3PL2g5tby7ftTRl0YZFNrPDA==","signatures":[{"sig":"MEYCIQDk7UQGJzvw730LJHZBaxBhGY/eePJ4id6obXnaoDiymAIhAKU7G4MvSsU72e6wGK+GcKaszvVWIGba5w8WkzCDW7RJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3653936},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"a062ee710bc20cf9c026b648eb9ee6f88eeba6a7","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/infrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-txu15rMuPX7GPJmx554vEZlzjCcjX5phiLV6nWBXuAUb7l1Onbh2/UnpatByTn3PL2g5tby7ftTRl0YZFNrPDA==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.20.1_1784916407108_0.36157594303041796","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@absolutejs/deploy","version":"0.21.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.21.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"e2dfa3fd69cf5a615bf77cb53107369769d7bbad","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.21.0.tgz","fileCount":86,"integrity":"sha512-m/8+FggH0jBl2cNCLdnb+7gM2B2NXeWV1K7T5Onw114UsGzwUf6Xymz/CdYmBtGfBuwgjHjqOlEe+BxbLswQSw==","signatures":[{"sig":"MEYCIQCxJDHOKK65NysvJXVvcXj+GdxTRCYSjEDmGqPkhl0/0QIhALubas1zZOiq9VSMvbWJdOsu+JrtLnxcksGtr5AgAs4D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3736397},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"e2dfa3fd69cf5a615bf77cb53107369769d7bbad","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-m/8+FggH0jBl2cNCLdnb+7gM2B2NXeWV1K7T5Onw114UsGzwUf6Xymz/CdYmBtGfBuwgjHjqOlEe+BxbLswQSw==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"24.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.21.0_1784922463301_0.8568689884882192","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"@absolutejs/deploy","version":"0.21.1","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.21.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"bec4783a6d9a1a5cda420ae7fbb967ef6c21e63d","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.21.1.tgz","fileCount":86,"integrity":"sha512-Sbqpfy/1+pb9t0xJwRwR/avY1K7hJWEw/qhmuxpjiRhfVzR3Aj7OlMvICp/mAhS+BN6ZIG/PR8cztnV2b+7/KA==","signatures":[{"sig":"MEUCICWFEn1xyw/TLDnF83zv+78HEyAeSUFy9GOMRzuQStu6AiEAznZmbggaV+M/Vs2pj/JhOnSAZQNMt4hLdRNAGB9Q16k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3737143},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"gitHead":"37e93c871af2a161314a156d46028e1d847a6726","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.21.1_1786373015214_0.252781630847678","host":"s3://npm-registry-packages-npm-production"}},"0.21.2":{"name":"@absolutejs/deploy","version":"0.21.2","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.21.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"9db655d778e7c827e59a8c8c5b7d4b23a340aed1","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.21.2.tgz","fileCount":86,"integrity":"sha512-C1B4XHjsndJxbNmZNki7BIlEC/aLX0+NqH/w6z3QlQb19UQpyK6B0jP23ZEHn74waeH+dR9F74LcR0OO2AVJ6Q==","signatures":[{"sig":"MEUCIQDM2SCnSv2Wah6Bg7gVw7CdNX0lrY3acuIHhgRB70eyOAIgN/l41EI+To77j+FtJ2izN5aPAQK1WTtZiY6uizsYBnM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3736995},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"gitHead":"1233b4d8372043de57ebe8de93f964ae6a4ab2ae","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.21.2_1786382144679_0.7575397418238938","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@absolutejs/deploy","version":"0.22.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.22.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"7bba1b94fa735d58e07b60294d421ce50a2cb0a8","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.22.0.tgz","fileCount":89,"integrity":"sha512-h9agOLHjkrtax5zSIgu8k1nUCBZoXpq4BMHCNirb8/zPEf1uOMjjl9PBoJU9Kcx2zdWReEaUfMzy5YNIzfT6pA==","signatures":[{"sig":"MEUCIQDDX7ZIyPTrUS4q58ZJCIJGGrMDVdEHcoe1eHCwS1NTAAIgPCvwmyqlYkEjqks6Cb2KS79RxKTlOWcb8p8J8XRnnmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3825817},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"gitHead":"4d4df3970ec7363378deded87c3b25d42b84de2c","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.22.0_1787409065266_0.4335813125511214","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@absolutejs/deploy","version":"0.23.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.23.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"f9b128eaab740500d5bb36e3ff7e02c1194094e9","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.23.0.tgz","fileCount":92,"integrity":"sha512-4COqMUWA9fvZAIjb5fS/VfeBGzOHqrk4lsBR426lRYwDxEAOzYPWDxCCu7RyisRrWxS3FylOWxIqDRWAeMwz6g==","signatures":[{"sig":"MEUCIQCc0we41HYBGY8ebm0tp0wTV2doileS0ezRGznacVoBngIgUHMYbhVSRZ+AzkX3acTx7toJool0S8ZljJbu2/OmT7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6466783},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"gitHead":"a74dcc78f3ee8475617d6cb49235ed0ca9eafaed","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/googlePlay.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.23.0_1787412823053_0.16629440864731215","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@absolutejs/deploy","version":"0.24.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.24.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"54d994db3f25ab8a816318c2275fb30b40f17f53","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.24.0.tgz","fileCount":95,"integrity":"sha512-uCoB/XSjtb6tINI57IQr2FVyPO0S5+x5ZOWFus+IiZIJR+afc54Q1Pak1rqDxuUfH0nroFS5ymdT9UrGOyPqbg==","signatures":[{"sig":"MEUCIAwXC3qiuRklwjkv1A15AV+Mi3u27ZirN4O6Co3KLrHdAiEAlHDKxkPaKx1tIuWeIdiRUzKyHVViggL7bRK+QFOeO0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6632630},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"gitHead":"a5f4e30e1cdc3c192e8b403d6b0e4b8d765fcc80","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.24.0_1787430340666_0.31250371408283395","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@absolutejs/deploy","version":"0.25.0","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"55ad5847222bb9068bbb510d8c217cca20b606b8","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.0.tgz","fileCount":98,"integrity":"sha512-hOJV0Bu4gLdGy5eE8DkvyFOV5FnY530K+1mC7H1JWykUAlnx9bxnPygB0IbUj3rjyQVaPLFWg8myPlFAJofWMQ==","signatures":[{"sig":"MEQCIFWtogC6HLiDPTarpxfICahIoMHOlGmJzmzExmWLXLW8AiB29KRzrD1M9lHb9kuKfSP0t4vnqETuzCiFI14pPoZjWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6771374},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"gitHead":"fda5320b81a93555da74afd50ddf42fbed928886","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.0_1788320843799_0.22391851553923137","host":"s3://npm-registry-packages-npm-production"}},"0.25.1":{"name":"@absolutejs/deploy","version":"0.25.1","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"c5ce6add4d238f04ee7a91371119dd1d08533769","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.1.tgz","fileCount":98,"integrity":"sha512-afSHq+8RY3ZTPzu5atE242Lg8cj6UivQuTlZCfhLT9J8CQbq8eAbgqVd9U3FD7vrZu9o2arkYhIxiqH+ek565w==","signatures":[{"sig":"MEQCIHzJB7tkKgQwDLvvwjTf0pIg/GhW8fi6E/YnxNKtI6nrAiAuL1ZCCPU6qhYdFPQMoqs5iUuvJ498f4SYJxBpWfKWJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6802007},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"c5ce6add4d238f04ee7a91371119dd1d08533769","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-afSHq+8RY3ZTPzu5atE242Lg8cj6UivQuTlZCfhLT9J8CQbq8eAbgqVd9U3FD7vrZu9o2arkYhIxiqH+ek565w==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"26.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.1_1788375671718_0.7007929659518493","host":"s3://npm-registry-packages-npm-production"}},"0.25.2":{"name":"@absolutejs/deploy","version":"0.25.2","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"ee4b5b5ff22ff9b2ef323b4e0f313838b4d39e18","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.2.tgz","fileCount":98,"integrity":"sha512-LIk1M/h++AaIx3Y4kQ/yiVCtEwaaWEuvnFSkcdyNtWM6x4ncP7JLWsB2t+4BgcwuCEtqkTlCCSPE5j23iqawQQ==","signatures":[{"sig":"MEQCIDLQOWPTOE9NChk0dGwV2pTN0b986yf/qXL+JjPoAmLmAiA4Du32KESPtdOAFJj4Bx/XJU5gQ10lS0G59ClsV/+qLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6828356},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"ee4b5b5ff22ff9b2ef323b4e0f313838b4d39e18","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-LIk1M/h++AaIx3Y4kQ/yiVCtEwaaWEuvnFSkcdyNtWM6x4ncP7JLWsB2t+4BgcwuCEtqkTlCCSPE5j23iqawQQ==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"26.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.2_1788384393123_0.2324357318697161","host":"s3://npm-registry-packages-npm-production"}},"0.25.3":{"name":"@absolutejs/deploy","version":"0.25.3","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.3","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"0524c345b40cb596aa1785a3366a113b7fe860f1","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.3.tgz","fileCount":98,"integrity":"sha512-9AgJkIgtb9Ub2E3CKfMW3+3uhSblY2PUb1F4a12NYxEqhcxE+hb7KcUl89PDi61Ys3PRipPQZXSdiAiewG8sPQ==","signatures":[{"sig":"MEUCIEgpfdV0ThZSuNyQ4lLF/jhpXjEkYMYPw638CKrVCjRVAiEA/rm8flLdDiuO/wTDOvI1jz4Jp+H2j6FoJA47jMOJBl8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6837222},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"gitHead":"683cb581439a513d88433366f59d1f925c0615d1","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.3_1788469750613_0.48529473494918185","host":"s3://npm-registry-packages-npm-production"}},"0.25.4":{"name":"@absolutejs/deploy","version":"0.25.4","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.4","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"e1961857488c289e2d19d673f01e175db64e857d","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.4.tgz","fileCount":98,"integrity":"sha512-N2rolTpdqnD2iiREIGIutB09WvSWQhQU/1ZzLs5jjzpY5IOvITnmi8KWR13kLli0vYn6sTd8rOI1GhPK4jflkg==","signatures":[{"sig":"MEUCIDPV/57Uocg13zRThFLEaXsoLP0SsogB6xlyJuettg8DAiEAiJ8SqADOOf7Qhz+jc61NhSL4HiLRS3YaylDYqUm8eLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6840518},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"gitHead":"1e5e2b2d1dcba24b89c7473b5c237d2373a8dce0","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.4_1788694128009_0.6394560179228226","host":"s3://npm-registry-packages-npm-production"}},"0.25.5":{"name":"@absolutejs/deploy","version":"0.25.5","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.5","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"6d013e27f2c12001a4b3dcb0e61ca1597367a12f","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.5.tgz","fileCount":98,"integrity":"sha512-A7nrw3KgcWrqnHTlz6eZ/ULaNhs+cP6cWYYDY1AJxwW4K30dBAZ7JY5OLmrzK2cQNwFyx6oMlMapz3TrJ1qAUw==","signatures":[{"sig":"MEUCIA+nwUFab6Td7wME6fh7pJbck0MHMRVqUWZfJpn4q/2yAiEAjRi755Vv2flKOgjEuCtcj+77gV6TOgA3ADqtoBQpWA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6852758},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"gitHead":"dc786e9f3c9ae7968a443e5eb26911d07819df75","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.5_1788694956856_0.15999406200339972","host":"s3://npm-registry-packages-npm-production"}},"0.25.6":{"name":"@absolutejs/deploy","version":"0.25.6","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.6","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"4ae28c94bdba35077256c74ebba779e83f0218c7","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.6.tgz","fileCount":98,"integrity":"sha512-n65+3Ntb8TgVNeEWnqYZvhvToqni0fsM++EJFo6b/UH1MRFID8L5ySWDfi/hpUfrfC6XwP1ktX6gd0grD+x/KQ==","signatures":[{"sig":"MEYCIQC+98noRwjIz8n72BWE32B/mTIbUuEB9PO/mx9GrvqW/QIhAPcqjQORJx+Oss3o8kFuttcdNPMIT4wIx613PRhT75Ht","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6853120},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"4ae28c94bdba35077256c74ebba779e83f0218c7","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-n65+3Ntb8TgVNeEWnqYZvhvToqni0fsM++EJFo6b/UH1MRFID8L5ySWDfi/hpUfrfC6XwP1ktX6gd0grD+x/KQ==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"26.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.6_1788816179749_0.12631726145544842","host":"s3://npm-registry-packages-npm-production"}},"0.25.7":{"name":"@absolutejs/deploy","version":"0.25.7","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.7","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"a0c7097e6ed206e1d948c7732e7a024e6d90cb3d","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.7.tgz","fileCount":98,"integrity":"sha512-Z3qHXm2vGxypRCZfXjp36H0QicFqd/yGWLHI011uta/JoVW4lJavM+v8t3uJm8pT1cyDa4xN7h933J03F74RVg==","signatures":[{"sig":"MEUCIDv/3AzQj5sK0p4j0C1hH3KFFFD0qcNfwoEzP90llmp7AiEAs7HqQ3l6lCvj/KDl48a+i8YwbQi+hldDZCo140AjSlQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6915294},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"a0c7097e6ed206e1d948c7732e7a024e6d90cb3d","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-Z3qHXm2vGxypRCZfXjp36H0QicFqd/yGWLHI011uta/JoVW4lJavM+v8t3uJm8pT1cyDa4xN7h933J03F74RVg==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"26.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.7_1788822627257_0.6128025824609185","host":"s3://npm-registry-packages-npm-production"}},"0.25.8":{"name":"@absolutejs/deploy","version":"0.25.8","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.8","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"20a1538316e2dc082ffcaaa768521f8f1c084be7","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.8.tgz","fileCount":98,"integrity":"sha512-P+SjfXWrJtJgreniCJRHynvg6u3VZ1RQnMFZokqcEGqJw17fhbJEcA811AJUTrhflaV5nLy7TgK3Jed2IZIOmw==","signatures":[{"sig":"MEUCIAbagQW6k6UIE7jMwXOxftosyMCjsCLgyGLPImzwAMiDAiEArDophtKahtA0+gZUnlX6MkxSwGQT3z/JYb7xQr/2px0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6930949},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"gitHead":"eaad2ffc99de2630e8e5c49759c5eb863e1a3472","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.9.2","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"22.14.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.8_1788830210304_0.7028298871244887","host":"s3://npm-registry-packages-npm-production"}},"0.25.9":{"name":"@absolutejs/deploy","version":"0.25.9","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.9","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"c87afdac1f76e811064b1b2ccfafbe0574a733e0","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.9.tgz","fileCount":98,"integrity":"sha512-whjTHXWFIUJ2bpMd5OJdxPXC37LdrL2Ih9n9HvTWfVss5XaXJnzbh9zjPNqyY1o7dJdKeJCqLP9CR16EeEfq3g==","signatures":[{"sig":"MEUCICY48OFciCgHwINsG5sU1cx+L+B0NwRlSCdAP1mlk4cWAiEApBXFrJ3WuCoJss/EIW2NeUrcXwtrJv44jlYv7rnOwEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6938996},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"c87afdac1f76e811064b1b2ccfafbe0574a733e0","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-whjTHXWFIUJ2bpMd5OJdxPXC37LdrL2Ih9n9HvTWfVss5XaXJnzbh9zjPNqyY1o7dJdKeJCqLP9CR16EeEfq3g==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"26.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.9_1788836673380_0.9439847124870053","host":"s3://npm-registry-packages-npm-production"}},"0.25.10":{"name":"@absolutejs/deploy","version":"0.25.10","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.10","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"6e0753d3a32f903774850756abea47b832b5ddc3","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.10.tgz","fileCount":98,"integrity":"sha512-cm2VVkB3a7NZFyCeVOCBHcT9txPIgVq3qrlzMQAksqQDgy68e1srOi8hv3iaUkxB4D7eq+2SAophpAyMSIXPkg==","signatures":[{"sig":"MEUCIQDp+1yFZV2UBmIP6WQu5+oYh5bw5mgY7D5VM94ySJGO4QIgcPdDb1BzX/XWEhmXyrGTaFWhcYEuWzVRQy69eYfw3go=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7020779},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"6e0753d3a32f903774850756abea47b832b5ddc3","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-cm2VVkB3a7NZFyCeVOCBHcT9txPIgVq3qrlzMQAksqQDgy68e1srOi8hv3iaUkxB4D7eq+2SAophpAyMSIXPkg==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"26.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.10_1788840240805_0.91625209871558","host":"s3://npm-registry-packages-npm-production"}},"0.25.11":{"name":"@absolutejs/deploy","version":"0.25.11","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.11","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"f7ae9f667634571c28a899fe46427b4f2ae5ba29","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.11.tgz","fileCount":98,"integrity":"sha512-m5ydZ3sTMNBP1zt9+mDQH+MtMBKkwuZghROZCSt4yZEDzx5cCcXxRgrAO1icm7drEtdGM8jSeYxAiQwPeRH09A==","signatures":[{"sig":"MEYCIQCsp5AtkaQKmTiXT5kIHuX4RRrZcf4EQRUOSfgXq6+1XwIhAJHDM5JiwBc27aNlZkIXYlcGVkBnrBGLkOJPdgpNm/Wq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7024057},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"f7ae9f667634571c28a899fe46427b4f2ae5ba29","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-m5ydZ3sTMNBP1zt9+mDQH+MtMBKkwuZghROZCSt4yZEDzx5cCcXxRgrAO1icm7drEtdGM8jSeYxAiQwPeRH09A==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"26.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.11_1788842070471_0.9373079345718407","host":"s3://npm-registry-packages-npm-production"}},"0.25.12":{"name":"@absolutejs/deploy","version":"0.25.12","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.12","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"146437a49538b98fbae3eda8ad762f2c478182f8","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.12.tgz","fileCount":98,"integrity":"sha512-Xz2614u3qvvfYk3L7/01OfHUOk8EIt1H47znAARhm/t9TVk4N5HkngOkHF4Pq4A5vcBt7SVzynk1YinAiEfcgg==","signatures":[{"sig":"MEQCIGV/8NaErnIs7S7aHykqxPdS1PzEkQmk6Ueq7ToH67o0AiA+2C6/xceiXt6Iv8sJ21vkSkSo9gCwzU7ot9YGY3mKxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7113384},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"146437a49538b98fbae3eda8ad762f2c478182f8","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-Xz2614u3qvvfYk3L7/01OfHUOk8EIt1H47znAARhm/t9TVk4N5HkngOkHF4Pq4A5vcBt7SVzynk1YinAiEfcgg==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"26.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.12_1788846028948_0.2519487905329687","host":"s3://npm-registry-packages-npm-production"}},"0.25.13":{"name":"@absolutejs/deploy","version":"0.25.13","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/deploy@0.25.13","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/deploy","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"ba2dba3a269fa6be87b6e2fc0f89abcddec626e6","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.13.tgz","fileCount":98,"integrity":"sha512-XG4/3YWiddFHuTkk7w6ByqWWhyyEXulNZ85UF323B8j0Yllg1G1UvjIgQfuxn/AFPVviSHEZFJUpuMeAOUXLxg==","signatures":[{"sig":"MEUCIDrolS0L1SFXUSfmk69o2XJo3ExIUd27dgdwoNdqsqDhAiEAqb7asFrUIp3KGyXL0ODu+R+fN8ZoMmVeTt5V9C192Ao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7113448},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"ba2dba3a269fa6be87b6e2fc0f89abcddec626e6","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-XG4/3YWiddFHuTkk7w6ByqWWhyyEXulNZ85UF323B8j0Yllg1G1UvjIgQfuxn/AFPVviSHEZFJUpuMeAOUXLxg==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"_nodeVersion":"26.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/deploy_0.25.13_1788847327715_0.7205999312043161","host":"s3://npm-registry-packages-npm-production"}},"0.25.14":{"_id":"@absolutejs/deploy@0.25.14","bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"dist":{"shasum":"37cc5f09d71388fe27bf1090363a3ff67208ec95","tarball":"https://registry.npmjs.org/@absolutejs/deploy/-/deploy-0.25.14.tgz","fileCount":100,"integrity":"sha512-DEipjSgz5EL1GUVcLVtAtSsxO2RS9NI18v5cjjCPc1G3YrC2tj9MouTcuttZmokPHVg+z7icfFGkn3ta3nsAMA==","signatures":[{"sig":"MEUCIE2D/s3vuCXK+XN5u0fOEzC3MRcQS8PpaCLLybZGDM6ZAiEArk0VyHGaXDturXjLZWuB5GVr7TSg6F5/M39imCp/xzo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA9khAwnSpWwLFCWgHKLQD8IiO0FtYrBxfsQEAlvopYrAiAxahKDheSDi+WEzZ2Wyf8bH+45374SmPDqqEp1Lq+tuw=="}],"unpackedSize":7168625},"main":"./dist/index.js","name":"@absolutejs/deploy","type":"module","types":"./dist/index.d.ts","author":"Alex Kahn","module":"./dist/index.js","shasum":"37cc5f09d71388fe27bf1090363a3ff67208ec95","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dns":{"types":"./dist/dns.d.ts","import":"./dist/dns.js","default":"./dist/dns.js"},"./env":{"types":"./dist/env.d.ts","import":"./dist/env.js","default":"./dist/env.js"},"./gcp":{"types":"./dist/gcp.d.ts","import":"./dist/gcp.js","default":"./dist/gcp.js"},"./tls":{"types":"./dist/tls.d.ts","import":"./dist/tls.js","default":"./dist/tls.js"},"./vultr":{"types":"./dist/vultr.d.ts","import":"./dist/vultr.js","default":"./dist/vultr.js"},"./linode":{"types":"./dist/linode.d.ts","import":"./dist/linode.js","default":"./dist/linode.js"},"./hetzner":{"types":"./dist/hetzner.d.ts","import":"./dist/hetzner.js","default":"./dist/hetzner.js"},"./preview":{"types":"./dist/preview.d.ts","import":"./dist/preview.js","default":"./dist/preview.js"},"./route53":{"types":"./dist/route53.d.ts","import":"./dist/route53.js","default":"./dist/route53.js"},"./cloudflare":{"types":"./dist/cloudflare.d.ts","import":"./dist/cloudflare.js","default":"./dist/cloudflare.js"},"./gcp-ingress":{"types":"./dist/gcpIngress.d.ts","import":"./dist/gcpIngress.js","default":"./dist/gcpIngress.js"},"./google-play":{"types":"./dist/googlePlay.d.ts","import":"./dist/googlePlay.js","default":"./dist/googlePlay.js"},"./hetzner-dns":{"types":"./dist/hetznerDns.d.ts","import":"./dist/hetznerDns.js","default":"./dist/hetznerDns.js"},"./digitalocean":{"types":"./dist/digitalocean.d.ts","import":"./dist/digitalocean.js","default":"./dist/digitalocean.js"},"./edge-ingress":{"types":"./dist/edgeIngress.d.ts","import":"./dist/edgeIngress.js","default":"./dist/edgeIngress.js"},"./mobile-update":{"types":"./dist/mobileUpdate.d.ts","import":"./dist/mobileUpdate.js","default":"./dist/mobileUpdate.js"},"./infrastructure":{"types":"./dist/infrastructure.d.ts","import":"./dist/infrastructure.js","default":"./dist/infrastructure.js"},"./native-release":{"types":"./dist/nativeRelease.d.ts","import":"./dist/nativeRelease.js","default":"./dist/nativeRelease.js"},"./managed-preview":{"types":"./dist/managedPreview.d.ts","import":"./dist/managedPreview.js","default":"./dist/managedPreview.js"},"./digitalocean-dns":{"types":"./dist/digitaloceanDns.d.ts","import":"./dist/digitaloceanDns.js","default":"./dist/digitaloceanDns.js"},"./release-artifact":{"types":"./dist/releaseArtifact.d.ts","import":"./dist/releaseArtifact.js","default":"./dist/releaseArtifact.js"},"./app-store-connect":{"types":"./dist/appStoreConnect.d.ts","import":"./dist/appStoreConnect.js","default":"./dist/appStoreConnect.js"},"./digitalocean-ingress":{"types":"./dist/digitaloceanIngress.d.ts","import":"./dist/digitaloceanIngress.js","default":"./dist/digitaloceanIngress.js"},"./vultr-infrastructure":{"types":"./dist/vultrInfrastructure.d.ts","import":"./dist/vultrInfrastructure.js","default":"./dist/vultrInfrastructure.js"},"./linode-infrastructure":{"types":"./dist/linodeInfrastructure.d.ts","import":"./dist/linodeInfrastructure.js","default":"./dist/linodeInfrastructure.js"},"./hetzner-infrastructure":{"types":"./dist/hetznerInfrastructure.d.ts","import":"./dist/hetznerInfrastructure.js","default":"./dist/hetznerInfrastructure.js"},"./ephemeral-infrastructure":{"types":"./dist/ephemeralInfrastructure.d.ts","import":"./dist/ephemeralInfrastructure.js","default":"./dist/ephemeralInfrastructure.js"},"./digitalocean-infrastructure":{"types":"./dist/digitaloceanInfrastructure.d.ts","import":"./dist/digitaloceanInfrastructure.js","default":"./dist/digitaloceanInfrastructure.js"},"./digitalocean-ephemeral-infrastructure":{"types":"./dist/digitaloceanEphemeralInfrastructure.d.ts","import":"./dist/digitaloceanEphemeralInfrastructure.js","default":"./dist/digitaloceanEphemeralInfrastructure.js"}},"license":"BSL-1.1","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/releaseArtifact.ts src/nativeRelease.ts src/mobileUpdate.ts src/googlePlay.ts src/appStoreConnect.ts src/infrastructure.ts src/ephemeralInfrastructure.ts src/edgeIngress.ts src/digitalocean.ts src/digitaloceanInfrastructure.ts src/digitaloceanEphemeralInfrastructure.ts src/digitaloceanIngress.ts src/gcp.ts src/gcpIngress.ts src/hetzner.ts src/hetznerInfrastructure.ts src/linode.ts src/linodeInfrastructure.ts src/vultr.ts src/vultrInfrastructure.ts src/dns.ts src/cloudflare.ts src/digitaloceanDns.ts src/hetznerDns.ts src/route53.ts src/tls.ts src/env.ts src/preview.ts src/managedPreview.ts --outdir dist --root src --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run build && bun run test && absolute-changelog check","prepublishOnly":"bun run check:package"},"version":"0.25.14","_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"homepage":"https://github.com/absolutejs/deploy","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"_integrity":"sha512-DEipjSgz5EL1GUVcLVtAtSsxO2RS9NI18v5cjjCPc1G3YrC2tj9MouTcuttZmokPHVg+z7icfFGkn3ta3nsAMA==","repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"_npmVersion":"10.8.3","description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_nodeVersion":"26.3.0","dependencies":{"google-auth-library":"10.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.3","@types/bun":"^1.3.14","typescript":"^6.0.3","@absolutejs/changelog":"^0.6.0","@expo/code-signing-certificates":"0.0.6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/deploy_0.25.14_1789307444270_0.678807980983374"}}},"time":{"created":"2026-05-29T19:43:36.060Z","modified":"2026-09-13T13:50:44.546Z","0.0.1":"2026-05-29T19:43:36.366Z","0.1.0":"2026-05-29T21:28:34.165Z","0.2.0":"2026-05-31T08:27:47.667Z","0.3.0":"2026-05-31T08:32:40.689Z","0.3.1":"2026-05-31T08:37:36.675Z","0.4.0":"2026-05-31T08:42:04.151Z","0.5.0":"2026-05-31T08:52:16.898Z","0.5.1":"2026-05-31T09:05:59.485Z","0.6.0":"2026-05-31T09:10:26.222Z","0.7.0":"2026-05-31T09:18:04.736Z","0.8.0":"2026-05-31T09:41:14.653Z","0.9.0":"2026-05-31T09:46:16.360Z","0.10.0":"2026-05-31T11:41:18.339Z","0.11.0":"2026-07-14T18:58:04.021Z","0.12.0":"2026-07-14T18:59:46.873Z","0.13.0":"2026-07-14T21:22:54.997Z","0.14.0":"2026-07-15T01:45:29.647Z","0.14.1":"2026-07-15T01:46:53.971Z","0.15.0":"2026-07-15T02:03:06.907Z","0.16.0":"2026-07-15T02:27:09.973Z","0.16.1":"2026-07-15T02:51:53.748Z","0.17.0":"2026-07-15T03:47:48.501Z","0.18.0":"2026-07-15T04:29:26.819Z","0.19.0":"2026-07-15T12:37:07.158Z","0.20.0":"2026-07-16T22:57:26.057Z","0.20.1":"2026-07-24T18:06:47.357Z","0.21.0":"2026-07-24T19:47:43.535Z","0.21.1":"2026-08-10T14:43:35.416Z","0.21.2":"2026-08-10T17:15:44.932Z","0.22.0":"2026-08-22T14:31:05.462Z","0.23.0":"2026-08-22T15:33:43.221Z","0.24.0":"2026-08-22T20:25:40.889Z","0.25.0":"2026-09-02T03:47:23.999Z","0.25.1":"2026-09-02T19:01:11.957Z","0.25.2":"2026-09-02T21:26:33.318Z","0.25.3":"2026-09-03T21:09:10.876Z","0.25.4":"2026-09-06T11:28:48.218Z","0.25.5":"2026-09-06T11:42:37.058Z","0.25.6":"2026-09-07T21:22:59.958Z","0.25.7":"2026-09-07T23:10:27.454Z","0.25.8":"2026-09-08T01:16:50.478Z","0.25.9":"2026-09-08T03:04:33.576Z","0.25.10":"2026-09-08T04:04:01.003Z","0.25.11":"2026-09-08T04:34:30.672Z","0.25.12":"2026-09-08T05:40:29.128Z","0.25.13":"2026-09-08T06:02:07.923Z","0.25.14":"2026-09-13T13:50:44.398Z"},"bugs":{"url":"https://github.com/absolutejs/deploy/issues"},"author":"Alex Kahn","license":"BSL-1.1","homepage":"https://github.com/absolutejs/deploy","keywords":["absolutejs","bun","deploy","ssh","droplet","vps","rsync","release"],"repository":{"url":"git+https://github.com/absolutejs/deploy.git","type":"git"},"description":"Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atom","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# @absolutejs/deploy\n\nGeneric Bun-project deploy pipeline. A `Target` is anywhere you can run a\ncommand and copy a file — a DigitalOcean Droplet over SSH, a Linode box,\nyour own laptop. Two ops, four words: **exec and upload**.\n\nThe bundled `defaultBunPipeline()` covers the case that matters most for\nBun apps on Linux: `prepare → upload → install → build → link → restart\n→ verify`. Releases live in `releases/<id>/`, a `current` symlink swaps\natomically, `rollback(releaseId)` re-points the symlink and restarts.\n\nZero `ssh2` / `node-ssh` dependency — `sshTarget` shells out to the system\n`ssh` / `rsync` binaries that already ship on Mac, Linux, and WSL.\n\n## Native application releases (0.22.0)\n\n`@absolutejs/deploy/native-release` publishes the immutable release directory\ncreated by `absolute mobile build android` or `absolute mobile build ios` through\nany `@absolutejs/blob` adapter. It verifies the local AAB/IPA's declared size and SHA-256 digest again,\nrequires a signed build by default, and writes the binary only once under its\ncontent-derived release identity.\n\n```ts\nimport { createNativeReleaseRegistry } from \"@absolutejs/deploy/native-release\";\nimport { s3BlobStore } from \"@absolutejs/blob/s3\";\n\nconst store = s3BlobStore({ client, bucket: \"absolute-releases\" });\nconst releases = createNativeReleaseRegistry({ store });\n\nconst published = await releases.publish({\n  releaseRoot: \".absolutejs/mobile/releases/android/amobile_android_<sha256>\",\n  channel: \"internal\",\n});\n\nawait releases.promote({\n  appId: published.record.metadata.appId,\n  platform: \"android\",\n  releaseId: published.record.metadata.releaseId,\n  channel: \"production\",\n});\n```\n\nChannels are small mutable pointers; release records and AAB bytes are\nimmutable. Promoting an older retained release is therefore a rollback without\nrebuilding or copying the binary. Passing `allowUnsigned: true` is required on\nboth publication and promotion for intentionally non-publishable local-testing\nartifacts. The registry uses the structural BlobStore shape, so Deploy does not\ntake a runtime dependency on `@absolutejs/blob` or a cloud SDK.\n\n### Google Play distribution (0.23.0)\n\n`@absolutejs/deploy/google-play` composes the native registry with Google Play.\nThe same BlobStore persists stage receipts before external effects, allowing a\nretry to reuse an unexpired edit or resumable upload and to reconcile a commit\nwhose successful response was lost.\n\n```ts\nimport { createGooglePlayReleasePublisher } from \"@absolutejs/deploy/google-play\";\n\nexport default createGooglePlayReleasePublisher({\n  receiptStore: store,\n  registry: releases,\n});\n```\n\nAbsoluteJS supplies the requested track and rollout intent when the developer\nruns `absolute mobile publish android --play-track internal`. Google\nApplication Default Credentials must have Android Publisher access to the app.\nBefore Gradle runs, the publisher inspects Play's existing bundles and returns\nthe next version code. It persists that allocation by application and complete\nbuild identity, so retries and promotion to another track reuse the same code.\nAbsoluteJS injects it into the AAB and the publisher verifies the upload response\nreturned that exact code. Serialize publication jobs for one application because\nGoogle Play provides monotonic version codes but no reservation operation.\nThe default commit behavior is `ERROR_IF_IN_REVIEW`; opting into cancellation\nof an existing review must therefore be explicit. Production staged rollouts\nuse `status: 'inProgress'` with `0 < userFraction < 1`; subsequent calls for the\nsame release can increase the fraction, halt or resume it, or mark it completed\nwithout uploading the AAB again.\n\n### App Store Connect and TestFlight distribution (0.24.0)\n\n`@absolutejs/deploy/app-store-connect` uses Apple's current Build Upload API,\nthen waits for the processed build and assigns it to named or ID-addressed\nTestFlight groups. It stores only durable Apple resource IDs in retry receipts;\ntime-limited upload URLs and API credentials are never persisted.\n\n```ts\nimport { createAppStoreConnectReleasePublisher } from \"@absolutejs/deploy/app-store-connect\";\nimport { createGooglePlayReleasePublisher } from \"@absolutejs/deploy/google-play\";\n\nconst google = createGooglePlayReleasePublisher({\n  receiptStore: store,\n  registry: releases,\n});\n\nexport default createAppStoreConnectReleasePublisher({\n  auth: {\n    issuerId: process.env.APP_STORE_CONNECT_ISSUER_ID!,\n    keyId: process.env.APP_STORE_CONNECT_KEY_ID!,\n    privateKey: process.env.APP_STORE_CONNECT_PRIVATE_KEY!,\n  },\n  receiptStore: store,\n  registry: google,\n});\n```\n\nProvider wrappers compose, so this one module serves Android and iOS. AbsoluteJS\nasks the adapter for a stable next integer build number before Xcode archives;\nthe allocation is tied to the web build, native-source fingerprint, and marketing\nversion. Serialize release jobs for one Apple app because App Store Connect has\nno build-number reservation operation. Internal groups need no review. External\nreview is submitted only when explicitly requested.\n\n### Signed mobile web-bundle updates (0.25.13)\n\n`@absolutejs/deploy/mobile-update` publishes the signed immutable update\ndirectory created by `absolute mobile update build`. The trusted server verifies\nthe ECDSA P-256 signature and every file digest before storing anything, then\nselects staged-rollout cohorts from an anonymous installation ID. Native runtime\nfingerprints prevent a web bundle from crossing a plugin, permission, Auth, or\nlocal-data ABI boundary.\n\nImmutable assets advertise byte-range support with stable digest ETags. A\nconditional `Range`/`If-Range` request receives an exact `206 Content-Range`,\nan unsatisfiable range receives `416`, and a stale validator receives the full\nasset. This lets native clients resume interrupted transfers without weakening\nfile-level signature and digest verification.\n\nExpo clients can additionally verify the exact manifest or rollback directive\nend-to-end with an X.509 certificate embedded in the native binary. Keep every\nstill-supported rotation key on the trusted server; the installed binary's\nrequested key ID selects it.\n\n```ts\nimport {\n  createMobileUpdateHandler,\n  createMobileUpdateRegistry,\n} from \"@absolutejs/deploy/mobile-update\";\n\nconst updates = createMobileUpdateRegistry({\n  health: {\n    autoPause: { failureRate: 0.2, minimumReports: 20 },\n    secret: process.env.ABSOLUTE_MOBILE_UPDATE_HEALTH_SECRET!,\n  },\n  publicKeys: { \"production-2026\": process.env.MOBILE_UPDATE_PUBLIC_KEY! },\n  rollout: {\n    // Manual advancement is the safe default. Set automatic: true only when a\n    // trusted scheduler should advance as qualifying reports arrive.\n    stages: [\n      {\n        rollout: 0.05,\n        minimumReports: 20,\n        observationMs: 3_600_000,\n        maximumFailureRate: 0.05,\n      },\n      {\n        rollout: 0.25,\n        minimumReports: 100,\n        observationMs: 21_600_000,\n        maximumFailureRate: 0.05,\n      },\n      {\n        rollout: 1,\n        minimumReports: 100,\n        observationMs: 0,\n        maximumFailureRate: 0.05,\n      },\n    ],\n  },\n  store,\n});\nconst handleUpdate = createMobileUpdateHandler({\n  appId: \"com.example.product\",\n  channel: \"production\",\n  expoCodeSigning: {\n    keys: {\n      main: {\n        certificate: process.env.EXPO_UPDATE_CERTIFICATE!,\n        privateKey: process.env.EXPO_UPDATE_PRIVATE_KEY!,\n      },\n    },\n  },\n  registry: updates,\n});\n\nexport default updates;\n```\n\nMount `handleUpdate` at\n`/__absolute/mobile/updates/production/*`. Manifests are served without caching;\nrelease assets are content-verified and immutable. Files are stored once by\ntheir signed SHA-256 digest across releases; legacy release-scoped objects and\nURLs remain readable. Publication results report newly stored and reused file\nand byte counts. Promotion only changes a\nsmall channel pointer, and rollback can select a prior release or the embedded\nstore build without copying bundle bytes.\n\nWhen `rollout` is configured, the initial publication fraction must match one\nof its strictly increasing stages. `advanceUpdateRollout()` retains the exact\npromotion generation and advances only after the current stage has enough\nterminal health reports, remains below its failure ceiling, and completes its\nobservation window. `reconcileUpdateRollout()` performs the same transition only\nfor plans with `automatic: true`. Immutable advancement and operator-control\nevents make repeated or concurrent evaluation safe. A cancelled rollout is\nterminal; an operator pause can be resumed, while an automatic fleet-health\npause requires an explicit re-promotion.\n\nThe same registry exposes `inspectUpdateStorage()` and `pruneUpdates()` for\nper-application accounting and retention. Pruning is a dry run unless\n`apply: true` is explicit. Applied collection first marks eligible releases,\nwaits a seven-day grace period by default, rechecks every active and fallback\nchannel reference, and only then deletes immutable objects. Five recent\nreleases per channel and releases younger than 30 days are retained by default.\nChanging the policy to protect a marked release automatically restores it.\nShared content is deleted only when no retained manifest references its digest.\nSerialize publication and pruning for each app when using a custom scheduler.\n\nWhen `health` is configured, selected clients receive a promotion-scoped HMAC\ncapability and may submit only bounded update outcomes. The registry stores an\nHMAC pseudonym instead of the installation ID, deduplicates each outcome, and\nexposes `inspectUpdateHealth()`. Download failures are diagnostic only. Once the\nconfigured minimum terminal sample and rollback/quarantine rate are reached, an\nimmutable marker pauses that exact promotion generation and resolution falls\nback to the prior release. Re-promoting creates a fresh generation. Keep the\nhealth secret server-only and apply ordinary ingress rate limits: capabilities\nprevent forged or cross-installation evidence, but anonymous installations are\nnot hardware attestation and cannot prevent a Sybil client from requesting many\nidentities.\n\n## Infrastructure providers (0.14.0)\n\nControl planes use the normalized `InfrastructureProvider` contract from\n`@absolutejs/deploy/infrastructure`. Cloud inventory and lifecycle adapters\nlive in this package beside their deploy targets so providers never become\nscattered across host applications.\n\n```ts\nimport { createDigitalOceanInfrastructureProvider } from \"@absolutejs/deploy/digitalocean-infrastructure\";\n\nconst provider = createDigitalOceanInfrastructureProvider({\n  token: process.env.DIGITALOCEAN_TOKEN!,\n  tag: \"absolutejs-paas-node\",\n  regions: [\n    {\n      region: \"nyc3\",\n      size: \"s-2vcpu-4gb\",\n      image: \"ubuntu-24-04-x64\",\n      sshKeys: [process.env.DIGITALOCEAN_SSH_KEY!],\n      userData: process.env.ABSOLUTEJS_NODE_CLOUD_INIT,\n    },\n  ],\n  agent: { preferPrivateNetwork: true, port: 8081 },\n});\n\nawait provider.listNodes();\nawait provider.provisionNode({\n  idempotencyKey: crypto.randomUUID(),\n  name: \"absolutejs-node-01\",\n});\n```\n\nThe same contract is implemented by GCP, Hetzner, Linode, and Vultr adapters:\n\n- `@absolutejs/deploy/gcp`\n- `@absolutejs/deploy/hetzner-infrastructure`\n- `@absolutejs/deploy/linode-infrastructure`\n- `@absolutejs/deploy/vultr-infrastructure`\n\nGCP uses Application Default Credentials and an immutable instance template.\nEvery adapter exposes declared capabilities, normalized node identity/state/\naddress data, list/get/provision/terminate, and regional placement. Application\ndeployment, draining, migration, and edge cutover remain higher-level\norchestration concerns.\n\n## Global edge ingress (0.17.0)\n\n`EdgeIngressProvider` is the shared lifecycle for a public global ingress over\nregional edge pools. It normalizes the listener, backend health check, ordered\nregional failover priority, provider resource references, addresses, state,\nand idempotent removal. Provider resource construction stays here instead of\nleaking DigitalOcean or GCP APIs into a control plane.\n\n```ts\nimport { createDigitalOceanIngressProvider } from \"@absolutejs/deploy/digitalocean-ingress\";\n\nconst ingress = createDigitalOceanIngressProvider({\n  token: process.env.DIGITALOCEAN_TOKEN!,\n});\n\nawait ingress.reconcileIngress({\n  name: \"absolutejs-edge\",\n  idempotencyKey: crypto.randomUUID(),\n  backends: [\n    { region: \"nyc3\", resourceId: \"regional-lb-east\", priority: 1 },\n    { region: \"sfo3\", resourceId: \"regional-lb-west\", priority: 2 },\n  ],\n  listener: {\n    port: 443,\n    protocol: \"https\",\n    targetPort: 443,\n    tlsPassthrough: true,\n  },\n  healthCheck: { protocol: \"tcp\", port: 443 },\n});\n```\n\nDigitalOcean uses a Global Load Balancer whose backends are regional load\nbalancer UUIDs. GCP uses a global external TCP proxy whose backends are\nprovider-native instance-group or NEG self-links; the adapter also owns its\nhealth check, backend service, proxy, Premium address, and forwarding rule.\nBoth preserve TLS termination at the regional edge and wait for provider\noperations before advancing dependent resources. Creating an adapter does not\nprovision anything; only `reconcileIngress()` mutates provider state.\n\n```ts\nimport { createDeployer, sshTarget, systemdManager } from \"@absolutejs/deploy\";\n\nconst deployer = createDeployer({\n  appName: \"my-app\",\n  target: sshTarget({\n    host: \"droplet-1.example.com\",\n    user: \"deploy\",\n    identity: \"~/.ssh/id_ed25519\",\n  }),\n  source: { kind: \"directory\", root: \"./\" },\n  env: { PORT: \"3000\", DATABASE_URL: process.env.DATABASE_URL! },\n  processManager: systemdManager({ user: \"deploy\" }),\n  verify: { kind: \"http\", url: \"http://localhost:3000/health\" },\n  hooks: {\n    onStepStart: ({ name, releaseId }) => console.log(`▸ ${releaseId} ${name}`),\n    onLog: (line, stream, step) =>\n      process[stream === \"stderr\" ? \"stderr\" : \"stdout\"].write(\n        `[${step}] ${line}\\n`,\n      ),\n  },\n});\n\nconst release = await deployer.deploy();\nconsole.log(`Deployed ${release.releaseId} in ${release.durationMs}ms`);\n\nconsole.log(await deployer.status());\n\n// later — atomic rollback\nconst previous = (await deployer.listReleases()).at(-2);\nif (previous) await deployer.rollback(previous);\n\n// optional housekeeping\nawait deployer.prune({ keep: 5 });\n\n// sunset the active process through the same process-manager contract\nawait deployer.stop();\n\n// control planes can make teardown win a publish/unpublish race\nconst controller = new AbortController();\nconst pending = deployer.deploy({ signal: controller.signal });\ncontroller.abort();\nawait pending.catch(() => undefined);\nawait deployer.stop();\n```\n\n## v0.0.1 surface\n\n### Targets\n\n| Adapter                                                           | Use                                                                                                                         |\n| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |\n| `localTarget({ root, env? })`                                     | Tests, local-dev, and \"deploy to the same box\" workflows.                                                                   |\n| `sshTarget({ host, user?, port?, identity?, sshFlags?, rsync? })` | Any VPS — DigitalOcean Droplets, Linode, Hetzner, Vultr, Lightsail, Scaleway. Uses the system `ssh` / `rsync` — no npm dep. |\n\nA `Target` is just:\n\n```ts\ntype Target = {\n  description: string;\n  exec(\n    cmd: string,\n    opts?: { cwd?; env?; timeoutMs?; onLog?; stdin? },\n  ): Promise<{ stdout; stderr; exitCode }>;\n  upload(\n    local: string,\n    remote: string,\n    opts?: { exclude?; deleteOrphans? },\n  ): Promise<void>;\n  close?(): Promise<void>;\n};\n```\n\nIf you can implement those two methods, you can deploy through `@absolutejs/deploy`. Provider-specific adapters that don't fit this shape (Cloudflare Workers API, Fly Machines API, AWS Fargate task-run) ship later as sibling packages.\n\n### Process managers\n\n| Manager                                                        | What it does                                                                                                                   |\n| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |\n| `bareManager({ command? })`                                    | Default. `nohup bun run start &`, pid file under `/var/lib/<appName>/`, logs to `/var/log/<appName>/`. Zero remote dependency. |\n| `systemdManager({ user?, group?, execStart?, restart?, ... })` | Templated systemd unit pointing at `current/`, `daemon-reload` + `restart`. The production answer for VMs.                     |\n\nA `ProcessManager` is just `{ reload, stop?, status? }`. Wrap PM2, supervisord, runit, or even `@absolutejs/runtime` — whatever your remote uses.\n\n### Pipeline\n\nThe default Bun pipeline:\n\n1. **prepare** — `mkdir -p releases/<id>/`\n2. **upload** — `rsync` source → release dir (excludes `node_modules`, `dist`, `build`, `.git`, `*.log`, `.DS_Store` by default)\n3. **install** — `bun install --production` in the release dir\n4. **build** — if `package.json` has a `build` script, `bun run build`\n5. **link** — `ln -sfn release current.next && mv -Tf current.next current` (atomic-ish swap)\n6. **restart** — delegate to the configured `ProcessManager`\n7. **verify** — HTTP / TCP / custom probe (when `verify` is set)\n\nReplace any step by passing `steps: [...]` — the default is a normal array you can splice into.\n\n### Verify\n\n```ts\n{ kind: 'http', url: 'http://localhost:3000/health', retries: 30, intervalMs: 1000, expectStatus: 200 }\n{ kind: 'tcp',  host: 'localhost', port: 3000, retries: 30, intervalMs: 1000 }\n{ kind: 'custom', check: async (ctx) => ctx.target.exec('myhealthcheck').then((r) => r.exitCode === 0) }\n```\n\nDefault is `null` (no verify). Recommend always wiring one — a green deploy that nobody can reach is a yellow deploy.\n\n### Release model\n\n- Every `deploy()` mints a new `releases/<YYYYMMDD-HHMMSS>/`.\n- `current` symlink → newest release.\n- `rollback(releaseId)` re-points the symlink and restarts. No re-upload, no re-build. Fast.\n- `listReleases()` returns the sorted list.\n- `prune({ keep: N })` removes the N oldest.\n\n## `@absolutejs/deploy/digitalocean` — provision-or-reuse from code (0.2.0)\n\nSkip the click-through DO dashboard. `digitalOceanTarget(options)` looks\nup a droplet by name; creates it via the v2 API if absent; waits for\n`status === 'active'` + IPv4; waits for SSH; returns a `Target` ready to\nhand to `createDeployer`.\n\n```ts\nimport { createDeployer } from \"@absolutejs/deploy\";\nimport { digitalOceanTarget } from \"@absolutejs/deploy/digitalocean\";\n\nconst target = await digitalOceanTarget({\n  token: process.env.DO_TOKEN!,\n  name: \"absolutejs-prod-1\", // idempotency key\n  region: \"nyc3\",\n  size: \"s-1vcpu-1gb\",\n  image: \"ubuntu-22-04-x64\",\n  sshKeys: [process.env.DO_KEY_FINGERPRINT!],\n  tags: [\"absolutejs\"],\n  userData: \"#!/bin/bash\\ncurl -fsSL https://bun.sh/install | bash\",\n  onLog: (line) => console.log(line),\n});\n\nconsole.log(`droplet ${target.dropletId} at ${target.ipv4}`);\n\nconst deployer = createDeployer({ appName: \"my-app\", target });\nawait deployer.deploy({ source: { kind: \"directory\", path: \"./build\" } });\n\n// Tear it down when you're done:\nawait target.destroy();\n```\n\nIdempotent by `name` — calling twice returns the same droplet, no\nduplicates created. Pair with `cloud-init` user data to install Bun /\nconfigure the deploy user / set up firewall rules on first boot, then\nthe deploy pipeline runs against an SSH-ready box.\n\nAdmin helpers: `listDigitalOceanDroplets({ token, tag? })` for\ninventory; `destroyDigitalOceanDroplet({ token, id })` for cleanup\n(404 is treated as idempotent success). Narrow `DigitalOceanClientLike`\ninterface so you can BYO `request(method, path, body?)` for retry /\nobservability — the bundled `createDigitalOceanClient(token)` is just\na sensible default.\n\n## `@absolutejs/deploy/hetzner` — provision-or-reuse from code (0.3.0)\n\nSame shape as the DigitalOcean adapter, Hetzner Cloud v1 API\nmappings underneath. Hetzner-specific differences: locations\n(`nbg1` / `fsn1` / `hel1` / `ash` / `hil`), server types\n(`cx22` / `cpx11` / `ccx13` / …), labels (key-value, not array),\nand public-net IPv4/IPv6 are independently toggleable.\n\n```ts\nimport { createDeployer } from \"@absolutejs/deploy\";\nimport { hetznerTarget } from \"@absolutejs/deploy/hetzner\";\n\nconst target = await hetznerTarget({\n  token: process.env.HETZNER_TOKEN!,\n  name: \"absolutejs-prod-1\",\n  location: \"nbg1\",\n  serverType: \"cx22\",\n  image: \"ubuntu-22.04\",\n  sshKeys: [process.env.HETZNER_KEY_FINGERPRINT!],\n  labels: { env: \"prod\", team: \"platform\" },\n  userData: \"#!/bin/bash\\ncurl -fsSL https://bun.sh/install | bash\",\n});\n\nconst deployer = createDeployer({ appName: \"my-app\", target });\nawait deployer.deploy({ source: { kind: \"directory\", path: \"./build\" } });\nawait target.destroy();\n```\n\nHetzner enforces unique server names per project, so the\nidempotency contract is structural — `name` collisions never\nhappen. Admin helpers: `listHetznerServers({ token, labelSelector?\n})` (Hetzner's `'env=prod'` / `'env in (prod,staging)'` syntax);\n`destroyHetznerServer({ token, id })` (404 idempotent success).\n\n## `@absolutejs/deploy/cloudflare` — DNS automation (0.4.0)\n\nAfter provisioning a Target, point a hostname at its IP without\nleaving the deploy script. `cloudflareProvider({ token, zoneId })`\nimplements the shared `DnsProvider` contract from\n`@absolutejs/deploy/dns`.\n\n```ts\nimport { hetznerTarget } from \"@absolutejs/deploy/hetzner\";\nimport { cloudflareProvider } from \"@absolutejs/deploy/cloudflare\";\nimport { ensureDnsForTarget } from \"@absolutejs/deploy/dns\";\n\nconst target = await hetznerTarget({\n  /* … */\n});\nconst dns = cloudflareProvider({\n  token: process.env.CLOUDFLARE_TOKEN!,\n  zoneId: process.env.CLOUDFLARE_ZONE_ID!,\n});\n\n// Idempotent — create or update so the A record points at target.ipv4.\nawait ensureDnsForTarget(dns, {\n  name: \"api.example.com\",\n  target,\n  ttl: 60,\n  proxied: false,\n});\n```\n\n`upsert` is the canonical entry: finds by exact (name, type); skips\nthe API call entirely when the existing record already matches the\nspec (no churn on TTL / proxied / comment agreement). Multiple\nrecords sharing the same (name, type) throw with a \"resolve\nmanually\" message instead of silently picking one.\n\nAuth uses Cloudflare API tokens with `Zone:DNS:Edit` scope (global\nkeys not supported). Pair with `provider.list({ name?, type? })`\nfor inventory, `provider.delete(id)` for tear-down (404 idempotent\nsuccess).\n\nThe same `DnsProvider` contract applies to other providers — Route\n53 / DigitalOcean DNS / etc. follow next.\n\n## `@absolutejs/deploy/tls` — Let's Encrypt automation (0.5.0)\n\nThe last step. After provisioning a Target and pointing DNS at it,\n`issueCertificate(...)` drives the full ACME-DNS-01 flow against\nLet's Encrypt: account registration, new order, DNS-01 challenge\nvia the same `DnsProvider` you used for DNS, polling, CSR\nfinalize, cert download. Then `installCertificateOnTarget(...)`\nuploads the PEM files to the box.\n\nZero third-party ACME / JOSE deps — RFC 8555 implemented directly\nagainst Bun's `crypto.subtle`. The audit surface stays in this\nrepo.\n\n```ts\nimport { hetznerTarget } from \"@absolutejs/deploy/hetzner\";\nimport { cloudflareProvider } from \"@absolutejs/deploy/cloudflare\";\nimport { ensureDnsForTarget } from \"@absolutejs/deploy/dns\";\nimport {\n  issueCertificate,\n  installCertificateOnTarget,\n  LETSENCRYPT_PRODUCTION,\n} from \"@absolutejs/deploy/tls\";\n\nconst target = await hetznerTarget({\n  /* … */\n});\nconst dns = cloudflareProvider({\n  token: process.env.CLOUDFLARE_TOKEN!,\n  zoneId: process.env.CLOUDFLARE_ZONE_ID!,\n});\n\n// 1. Point DNS at the box.\nawait ensureDnsForTarget(dns, { name: \"api.example.com\", target, ttl: 60 });\n\n// 2. Issue a cert via DNS-01.\nconst cert = await issueCertificate({\n  domains: [\"api.example.com\"],\n  dnsProvider: dns,\n  email: \"ops@example.com\",\n  directoryUrl: LETSENCRYPT_PRODUCTION,\n  onLog: (line) => console.log(line),\n});\n\n// 3. Install on the box.\nawait installCertificateOnTarget(target, cert, {\n  reload: \"systemctl reload nginx\",\n});\n```\n\nFor hosted platforms, customers can delegate only the ACME challenge instead\nof granting access to their DNS account. Ask them to CNAME\n`_acme-challenge.app.customer.com` into a validation zone you control, then\nmap the provider write while leaving propagation checks on the public name:\n\n```ts\nconst cert = await issueCertificate({\n  domains: [\"app.customer.com\"],\n  dnsProvider: platformValidationDns,\n  email: \"ops@platform.example\",\n  mapDnsChallengeRecord: ({ domain }) =>\n    `${stableDomainToken(domain)}.acme.platform.example`,\n});\n```\n\n`generateAccountKey()` / `exportAccount()` / `importAccount()`\nround-trip the ECDSA P-256 keypair + `kid` so cert renewals reuse\nthe same account (avoids Let's Encrypt's account-creation rate\nlimit). Persist the JSON; pass `account` back to subsequent\n`issueCertificate` calls.\n\n`installCertificateOnTarget`'s defaults:\n`/etc/ssl/<domain>/fullchain.pem` + `/etc/ssl/<domain>/privkey.pem`,\nmode `600`. Override `certPath` / `keyPath` / `mode` / `owner` /\n`reload` as needed.\n\n## `@absolutejs/deploy/env` — env-file sync + secret propagation (0.7.0)\n\nThe \"universal place to rotate a key across the myriad of services\"\nloop. Composes with `@absolutejs/secrets`: that library handles the\nin-process side (resolve, rotate, redact, in-process listeners);\nthis module handles the deploy-side (push values to remote env\nfiles, atomic swap, conditional service reload).\n\n```ts\nimport { createSecretBroker, inMemoryAdapter } from \"@absolutejs/secrets\";\nimport { hetznerTarget } from \"@absolutejs/deploy/hetzner\";\nimport {\n  syncSecretsToDeployments,\n  deploymentsUsing,\n  type EnvDeployment,\n} from \"@absolutejs/deploy/env\";\n\n// One source of truth — the SecretBroker. Swap in whatever adapter\n// (env, file, vault, etc.) makes sense for your team.\nconst broker = createSecretBroker({\n  adapter: inMemoryAdapter({\n    initial: {\n      DATABASE_URL: \"postgres://prod-db\",\n      STRIPE_KEY: \"sk_live_old\",\n    },\n  }),\n});\n\n// Each deployed service is one EnvDeployment.\nconst api = await hetznerTarget({ name: \"api-1\" /* … */ });\nconst worker = await hetznerTarget({ name: \"worker-1\" /* … */ });\n\nconst deployments: EnvDeployment[] = [\n  {\n    target: api,\n    remotePath: \"/etc/api.env\",\n    secretNames: [\"STRIPE_KEY\", \"DATABASE_URL\"],\n    extras: { NODE_ENV: \"production\", PORT: \"3000\" },\n    reload: \"systemctl reload api\",\n  },\n  {\n    target: worker,\n    remotePath: \"/etc/worker.env\",\n    secretNames: [\"DATABASE_URL\"],\n    extras: { NODE_ENV: \"production\" },\n    reload: \"systemctl restart worker\",\n  },\n];\n\n// First-time push (and every subsequent re-sync — idempotent).\nawait syncSecretsToDeployments(broker, deployments);\n\n// Rotate STRIPE_KEY everywhere it's used:\nawait broker.rotate(\"STRIPE_KEY\");\nawait syncSecretsToDeployments(\n  broker,\n  deploymentsUsing(\"STRIPE_KEY\", deployments),\n);\n```\n\n`broker.rotate()` updates the broker's underlying store + fires the\nexisting `onRotate` listeners (long-lived DB clients swap creds in\nplace). `syncSecretsToDeployments` propagates to every deployed box\nthat uses the secret, atomically rewrites the env file, runs the\nreload command only if the diff was non-empty.\n\nFormat: standard `KEY=value` per line, sorted alphabetically (stable\ndiffs), values double-quoted when needed. systemd reads it via\n`EnvironmentFile=`; Docker via `--env-file`; most shell start\nscripts source it. The serializer rejects newlines in values + keys\nthat don't match `[A-Z_][A-Z0-9_]*`.\n\nBest-effort fan-out: one broken target doesn't stop the rest. Each\nresult carries either `result: EnvSyncResult` or `error: Error`.\nThe operator inspects the array, fixes the broken target, re-runs —\nre-runs are idempotent.\n\n## Renewals — `renewCertificate` (0.6.0)\n\n`issueCertificate` is one-shot; `renewCertificate` is the conditional\ndriver you wire to a cron / scheduled function. Reads the current\ncert PEM, parses its `validTo`, and either returns `{ renewed: false\n}` (cheap, no network IO) or runs the full issuance flow.\n\n```ts\nimport {\n  renewCertificate,\n  installCertificateOnTarget,\n  importAccount,\n} from \"@absolutejs/deploy/tls\";\nimport { readFile, writeFile } from \"node:fs/promises\";\n\nconst currentCertificatePem = await readFile(\"./cert.pem\", \"utf8\").catch(\n  () => undefined,\n);\nconst account = await importAccount(\n  JSON.parse(await readFile(\"./account.json\", \"utf8\")),\n);\n\nconst result = await renewCertificate({\n  currentCertificatePem,\n  domains: [\"api.example.com\"],\n  dnsProvider: dns,\n  email: \"ops@example.com\",\n  account,\n  renewWhenDaysRemaining: 30, // default\n});\n\nif (result.renewed) {\n  console.log(`renewed (${result.reason})`);\n  await installCertificateOnTarget(target, result.certificate, {\n    reload: \"systemctl reload nginx\",\n  });\n  await writeFile(\"./cert.pem\", result.certificate.certificatePem);\n  await writeFile(\"./key.pem\", result.certificate.privateKeyPem);\n} else {\n  console.log(\n    `still fresh — ${result.inspection.daysRemaining} days remaining`,\n  );\n}\n```\n\nPair with `inspectCertificate(pem)` for status pages, expiry\nalerts, and observability:\n\n```ts\nconst info = inspectCertificate(certificatePem);\n// { subjects, validFrom, validTo, daysRemaining, expired, issuer }\n```\n\n## DigitalOcean Droplet — first deploy (manual)\n\nAssuming a fresh Ubuntu/Debian Droplet:\n\n```bash\n# 1. Install Bun on the Droplet (one-time):\nssh root@<droplet> 'curl -fsSL https://bun.sh/install | bash && ln -sf $HOME/.bun/bin/bun /usr/local/bin/bun'\n\n# 2. Create a deploy user with sudo for systemctl (one-time):\nssh root@<droplet> 'adduser --disabled-password --gecos \"\" deploy && mkdir -p /home/deploy/.ssh'\nssh root@<droplet> 'cat >> /home/deploy/.ssh/authorized_keys' < ~/.ssh/id_ed25519.pub\nssh root@<droplet> 'chown -R deploy:deploy /home/deploy/.ssh && chmod 700 /home/deploy/.ssh && chmod 600 /home/deploy/.ssh/authorized_keys'\n\n# 3. Now deploy:\nbun run my-deploy-script.ts\n```\n\nThe first run creates `/srv/<appName>/releases/<id>/`, drops a systemd unit at `/etc/systemd/system/<appName>.service` (if you're using `systemdManager`), starts the service, and probes. Subsequent runs just add a new release dir and swap the symlink.\n\n## Streamed release artifacts\n\nControl planes that activate a release through a remote host agent can use the\n`@absolutejs/deploy/release-artifact` boundary instead of inventing archive and\nintegrity handling:\n\n```ts\nconst artifact = await createReleaseArtifact({\n  sourceRoot: workspace,\n  exclude: [\"node_modules\", \"build\", \".git\"],\n});\n\nawait upload(artifact.file.stream(), artifact.metadata);\nawait artifact.dispose();\n```\n\n`receiveReleaseArtifact` streams a bounded body to disk and verifies its exact\nbyte count and SHA-256 digest. `extractReleaseArtifact` rejects traversal,\nlinks, and special entries before extracting a project with a root\n`package.json`. Authorization, durable state, target selection, activation,\nand traffic cutover remain control-plane responsibilities.\n\n## Provider adapters (0.8.0)\n\nCompute (`Target` via `createCloudTarget`):\n\n- `@absolutejs/deploy/digitalocean` — droplets\n- `@absolutejs/deploy/hetzner` — Hetzner Cloud servers\n- `@absolutejs/deploy/linode` — Linode instances\n- `@absolutejs/deploy/vultr` — Vultr instances\n\nDNS (`DnsProvider`):\n\n- `@absolutejs/deploy/cloudflare`\n- `@absolutejs/deploy/digitalocean-dns`\n- `@absolutejs/deploy/hetzner-dns`\n- `@absolutejs/deploy/route53` — narrow client interface; BYO `@aws-sdk/client-route-53` via a 4-line shim, or hand-roll a SigV4 fetch client.\n\nAll compute adapters share the same `createCloudTarget` machinery\n(find-or-create + wait-for-ready + wait-for-SSH + sshTarget wrap)\nso adding a fifth provider is ~80 lines of glue. All DNS providers\nimplement the same `DnsProvider` contract (`list / find / create /\nupdate / delete / upsert`) so swapping providers is a one-line\nconstructor change.\n\n## What v0.9.0 does NOT include\n\n- Fly Machines compute (different abstraction — ephemeral machines\n  with app-scoped naming).\n- A CLI front-end. Library is complete; the CLI is sugar.\n- Bun installation on the remote — caller does it once, out of band.\n- Multi-target / fan-out deploys (caller iterates).\n- Zero-downtime port-swap (start new release on a fresh port, then nginx-reload). The default pipeline does stop-then-start; for true zero-downtime, replace the `restart` step.\n- Secrets injection (use `@absolutejs/secrets` alongside, or set them as systemd `Environment=` lines).\n\n## Architectural role\n\n- **`@absolutejs/runtime`** — in-process child-spawning. Use it INSIDE the deployed app for multi-tenant work; `@absolutejs/deploy` is what gets the app onto the box.\n- **`@absolutejs/secrets`** — resolves credentials at request time. `deploy`'s `env` option is fine for boot-time config; secrets that rotate live in the secrets broker.\n- **`@absolutejs/metering` + `/router`** — operate on the running app inside the deployed process; `deploy` doesn't touch them.\n\n## License\n\nBSL 1.1 with a named carveout for the hosted application-deploy / git-push-deploy / repo-to-URL category (Vercel, Render, Railway, Fly.io's deploy half, Netlify, Heroku, Cloud66, Coolify, Cloudflare Pages, Cloudflare Workers deploy, DigitalOcean App Platform, Azure App Service deploy, AWS Amplify Hosting, AWS Elastic Beanstalk, GCP Cloud Run deploy). See [LICENSE](./LICENSE). Change Date: 4 years from first release; Change License: Apache 2.0.\n","readmeFilename":"README.md"}