{"_id":"env-runner","_rev":"33-687be7e5a53d4726262c52c32bb802c9","name":"env-runner","dist-tags":{"latest":"0.3.10"},"versions":{"0.0.0":{"name":"env-runner","version":"0.0.0","_id":"env-runner@0.0.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"dist":{"shasum":"440cec0fc52a78b76147c8ac0e9973a429c4d83c","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.0.0.tgz","fileCount":1,"integrity":"sha512-n6WLgb7INo3voYvw0UeSyVKIo96Z9k9K3UcxfC6pmpHTvNKU+0SuFa+l22mkgdXJE5XqwP/oVPx7/QjZJpirgw==","signatures":[{"sig":"MEUCIQDbes9mTK4Kqxc5vVGSPlcb6WUr+M5l22XPnxj1DnKf8AIgcHTTMeMT7vadg9Gy9tWIBCPAPL/BIdAniEjFOYpSCUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"_npmVersion":"11.6.2","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.0.0_1767394505640_0.4521937270408607","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"env-runner","version":"0.1.0","license":"MIT","_id":"env-runner@0.1.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"5191334203c52a79e2504825f94c79a6a27cf2ac","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.0.tgz","fileCount":37,"integrity":"sha512-pQc3NRqRx0S3p4Yzhp+ccVBGnfnq4n4mFf/gCa9yAQrUKw/PTqm6uyQYfhjFKUX0vgbr/+WvQVhtjskDx/oPRA==","signatures":[{"sig":"MEUCIAKKJnOlU4w2oin4jClC6KZ1Cg5c+EXbUcCiIwtRNKGYAiEA8J8GtTAUiP/tODTNZuUEfT3JhmA8jv6ennq1jlluXYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59582},"type":"module","exports":{".":"./dist/index.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"gitHead":"db831d4368472137f16d8ddfabd0a19eaa0a1185","scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.6.2","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"srvx":"^0.11.9","httpxy":"^0.3.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"latest","automd":"latest","obuild":"latest","oxlint":"latest","vitest":"latest","std-env":"4.0.0-rc.1","miniflare":"^4.20260301.1","typescript":"latest","@types/node":"latest","changelogen":"latest","env-runner-fixture":"link:.","@vitest/coverage-v8":"latest","@typescript/native-preview":"latest"},"peerDependencies":{"miniflare":"^4.0.0"},"peerDependenciesMeta":{"miniflare":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.0_1773107057325_0.43726910173506717","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"env-runner","version":"0.1.1","license":"MIT","_id":"env-runner@0.1.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"3253a5b199f7e6d83040cdf9257300c4968dad64","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.1.tgz","fileCount":37,"integrity":"sha512-lZVDWCorbgyd+uKaBn1LvKiyG5S6tjmsennfsoV6VKJ9AFGPpDk+HS7SAcQ812H0hty1Vq9q4AB22KXFItDFQA==","signatures":[{"sig":"MEUCIFJTB7UcYcQ+0uWox6OvROyaLsd8i7B0JdPhUL6xlqqCAiEA6jtZdZWWNNyphif0XfCMEKy+w1gGNrvPSMC1NMugh80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60505},"type":"module","exports":{".":"./dist/index.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"gitHead":"4d0d2458b455f855187973b025ba0c6db83426cc","scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.6.2","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"srvx":"^0.11.9","httpxy":"^0.3.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"latest","automd":"latest","obuild":"latest","oxlint":"latest","vitest":"latest","std-env":"4.0.0-rc.1","miniflare":"^4.20260301.1","typescript":"latest","@types/node":"latest","changelogen":"latest","env-runner-fixture":"link:.","@vitest/coverage-v8":"latest","@typescript/native-preview":"latest"},"peerDependencies":{"miniflare":"^4.0.0"},"peerDependenciesMeta":{"miniflare":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.1_1773109217364_0.1105311725797209","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"env-runner","version":"0.1.2","license":"MIT","_id":"env-runner@0.1.2","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"4c47cacea3f330793ea388da037e2cf53258de5e","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.2.tgz","fileCount":40,"integrity":"sha512-iIYPasK31WS9aR39NYyfknhb743WmWmEQ861GnEVSC451GdG3kZJsS4uM7obSEDFvMEpz5CPI2GOxBSYONGJKA==","signatures":[{"sig":"MEUCIHMbgx/uW0TlNrDLJh9+hmvvCPRmdLbTe2P4YGGwea6KAiEA1dWSWBzS/4+58z6vBIkZBpEc+xXrWlaozSYBGeaTR5s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90882},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"gitHead":"666978e633b343dbb7d7d9d699c9d91917aaf82e","scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.6.2","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"srvx":"^0.11.9","httpxy":"^0.3.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"latest","automd":"latest","obuild":"latest","oxlint":"latest","vitest":"latest","std-env":"4.0.0-rc.1","miniflare":"^4.20260301.1","typescript":"latest","@types/node":"latest","changelogen":"latest","env-runner-fixture":"link:.","@vitest/coverage-v8":"latest","@typescript/native-preview":"latest"},"peerDependencies":{"miniflare":"^4.0.0"},"peerDependenciesMeta":{"miniflare":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.2_1773141039628_0.3485048000374684","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"env-runner","version":"0.1.3","license":"MIT","_id":"env-runner@0.1.3","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"c43bec300c1a386f6b57555d4d6e14e487a497dd","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.3.tgz","fileCount":40,"integrity":"sha512-N6r19wUw6G6SvqmQy62DYstLAlaUNpTnkPiL5zMWcduZh1fxP01A49NcQLhd/5NgieuVNQ9ilIyp7P0149E8wg==","signatures":[{"sig":"MEUCIFXL09wIZC7uet+mIjpHfi2ZxI7r886wARcSCh2nIoc9AiEAqCR7fc84rzUTQjVv33+dvsChudDCYCxviEFvOypXuDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94103},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"gitHead":"88249b099cda53773f7d0bc8bbf836391bafffd6","scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.6.2","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"srvx":"^0.11.9","httpxy":"^0.3.1","crossws":"^0.4.4"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"latest","automd":"latest","obuild":"latest","oxlint":"latest","vitest":"latest","std-env":"4.0.0-rc.1","miniflare":"^4.20260301.1","typescript":"latest","@types/node":"latest","changelogen":"latest","env-runner-fixture":"link:.","@vitest/coverage-v8":"latest","@typescript/native-preview":"latest"},"peerDependencies":{"miniflare":"^4.0.0"},"peerDependenciesMeta":{"miniflare":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.3_1773146469814_0.7973367540643821","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"env-runner","version":"0.1.4","license":"MIT","_id":"env-runner@0.1.4","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"540abe112afd79f028344578f8befc8de420b5cb","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.4.tgz","fileCount":40,"integrity":"sha512-S8Zq/sjSqHxDKZBwqcJ89fEDpxGcwXms9JAW38fwegDlKphgbrroUhBwaiup68RmZnx5v2174eY4A0fJ/BbKDw==","signatures":[{"sig":"MEYCIQDVR8OfHD/twosUfw2RTalrV6ZDrOfQKR5yLT1ULfjGigIhAOEDqmsGOBhvtUL38SGkWwZ26dV9/rmEA/RXZgMGeOMy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95487},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"gitHead":"002ec9abedcaf9d6dcce4cdb161f3361c487cfba","scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.6.2","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"srvx":"^0.11.9","httpxy":"^0.3.1","crossws":"^0.4.4"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"latest","automd":"latest","obuild":"latest","oxlint":"latest","vitest":"latest","std-env":"4.0.0-rc.1","miniflare":"^4.20260301.1","typescript":"latest","@types/node":"latest","changelogen":"latest","env-runner-fixture":"link:.","@vitest/coverage-v8":"latest","@typescript/native-preview":"latest"},"peerDependencies":{"miniflare":"^4.0.0"},"peerDependenciesMeta":{"miniflare":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.4_1773148101026_0.5713903696713769","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"env-runner","version":"0.1.5","license":"MIT","_id":"env-runner@0.1.5","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"12b8957c4933104c5d351aa4ddb6a0c07d6a7ad9","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.5.tgz","fileCount":41,"integrity":"sha512-MmYNXgEcTO3scohItjQ8CZ+UK/Spfj+v8NN3ptGBNZZOswbhOdcILAu04i9j8J5fQuaduqk3+xwxS7wxSOlKQw==","signatures":[{"sig":"MEQCIHCTAN9Uce7IHIl6kaeGaQAaTSxzQWiFazqSgS+KwozbAiA4HWqMGZW33LciXWD5dbmcfG+QkmXDHtmgYd5hb/c0+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131424},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"gitHead":"067ef44f0c14b77f9215e0f93a236582c597aeb4","scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.6.2","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"srvx":"^0.11.9","httpxy":"^0.3.1","crossws":"^0.4.4"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"latest","automd":"latest","obuild":"latest","oxlint":"latest","vitest":"latest","std-env":"4.0.0-rc.1","miniflare":"^4.20260301.1","typescript":"latest","@types/node":"latest","changelogen":"latest","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:.","@vitest/coverage-v8":"latest","@typescript/native-preview":"latest"},"peerDependencies":{"miniflare":"^4.0.0"},"peerDependenciesMeta":{"miniflare":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.5_1773156097070_0.8022581274769931","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"env-runner","version":"0.1.6","license":"MIT","_id":"env-runner@0.1.6","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"b2acc95c00bc9a00457d7ad5220f10bd75595b2d","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.6.tgz","fileCount":40,"integrity":"sha512-fSb7X1zdda8k6611a6/SdSQpDe7a/bqMz2UWdbHjk9YWzpUR4/fn9YtE/hqgGQ2nhvVN0zUtcL1SRMKwIsDbAA==","signatures":[{"sig":"MEUCIQDUv7P4dDPKHVdUk7nOeCEacKDKOulPu1f49EZ7wGryLwIgPNVFaPwyn6Y7xGtxtEuaP2M93yk7HQfJFL6qROqphCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125258},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"gitHead":"722245f933ecec225c56bc972f15d3eb18361181","scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.6.2","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"srvx":"^0.11.9","httpxy":"^0.3.1","crossws":"^0.4.4"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"latest","automd":"latest","obuild":"latest","oxlint":"latest","vitest":"latest","miniflare":"^4.20260301.1","typescript":"latest","@types/node":"latest","changelogen":"latest","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:.","@vitest/coverage-v8":"latest","@typescript/native-preview":"latest"},"peerDependencies":{"miniflare":"^4.0.0"},"peerDependenciesMeta":{"miniflare":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.6_1773157893979_0.13542386695396513","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"env-runner","version":"0.1.7","license":"MIT","_id":"env-runner@0.1.7","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"ab26aa711cf195c9d8e158b6e864291fbd8d202e","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.7.tgz","fileCount":54,"integrity":"sha512-i7h96jxETJYhXy5grgHNJ9xNzCzWIn9Ck/VkkYgOlE4gOqknsLX3CmlVb5LmwNex8sOoLFVZLz+TIw/+b5rktA==","signatures":[{"sig":"MEQCIAERkwJUYG3OqE2+WqH3SXZSKtj9Thf7fh5rTAfOUqb8AiBxLlK72dfoFv9DDmSso4ap8iWYAr2rF1uKUBwT3sIzOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137390},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"gitHead":"e0c1a145b4ae7e2bea97bb66a446cf031203461d","scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.6.1","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.10.0","dependencies":{"srvx":"^0.11.13","httpxy":"^0.5.0","crossws":"^0.4.4","exsolve":"^1.0.8"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"oxfmt":"^0.42.0","automd":"^0.4.3","obuild":"^0.4.32","oxlint":"^1.57.0","vitest":"^4.1.2","miniflare":"^4.20260317.3","typescript":"^6.0.2","@types/node":"^25.5.0","changelogen":"^0.6.2","@netlify/runtime":"^4.1.20","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.2","@typescript/native-preview":"^7.0.0-dev.20260327.2"},"peerDependencies":{"miniflare":"^4.20260317.3","@netlify/runtime":"^4"},"peerDependenciesMeta":{"miniflare":{"optional":true},"@netlify/runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.7_1774660674809_0.48949500091903464","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"env-runner","version":"0.1.8","license":"MIT","_id":"env-runner@0.1.8","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"a07a8b0cbaef13f57fcab337e6b0678c9cbfaf9b","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.8.tgz","integrity":"sha512-xl/4V//2wJ07QXcwnYxnz/G6+v1BgFc0cj6qNZLA8XtXw3R0kEx+U6jJ/G4glXMhbTAK2zXWhKkcHZ4UYtkCxQ==","signatures":[{"sig":"MEUCID1eNfQVXm8m2GVzcOB4fXOIWr0DNLNkEYMMy7d+JuEVAiEAliyWuLFo8IfLYPlV5ruap/OpJ43WFAYuyPMSx+QktVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}]},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.15.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"srvx":"^0.11.15","httpxy":"^0.5.3","crossws":"^0.4.5","exsolve":"^1.0.8"},"packageManager":"pnpm@11.2.2","devDependencies":{"oxfmt":"^0.51.0","automd":"^0.4.3","obuild":"^0.4.35","oxlint":"^1.66.0","vitest":"^4.1.7","miniflare":"^4.20260520.0","typescript":"^6.0.3","@types/node":"^25.9.1","changelogen":"^0.6.2","@vercel/queue":"^0.2.0","@netlify/runtime":"^4.1.24","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.7","@typescript/native-preview":"7.0.0-dev.20260521.1"},"peerDependencies":{"miniflare":"^4.20260515.0","@vercel/queue":"^0.2.0","@netlify/runtime":"^4.1.23"},"peerDependenciesMeta":{"miniflare":{"optional":true},"@vercel/queue":{"optional":true},"@netlify/runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.8_1779456131048_0.5812673014947332","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"env-runner","version":"0.1.9","license":"MIT","_id":"env-runner@0.1.9","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"9a76cad11da6ca461b12b078d52c8acc48432be6","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.9.tgz","fileCount":56,"integrity":"sha512-W9AiZlPx0uXtghAJiTBkeZOgyQdecVvoln3cHoOEZswPq0cVMi+WBhUQjdUn+JcZFAFgOt+i5fcO7C2zniZoCg==","signatures":[{"sig":"MEYCIQDV3KbtS3H1DXoMlrzOqOZgPy94a4/GyZZs7nMotR5b8AIhAIeudcVKErUh231ozBiNrCH7eIslYgqLgYjjU3m5sZ8/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138441},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.15.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"srvx":"^0.11.15","httpxy":"^0.5.3","crossws":"^0.4.5","exsolve":"^1.0.8"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.2.2","devDependencies":{"oxfmt":"^0.51.0","automd":"^0.4.3","obuild":"^0.4.35","oxlint":"^1.66.0","vitest":"^4.1.7","miniflare":"^4.20260520.0","typescript":"^6.0.3","@types/node":"^25.9.1","changelogen":"^0.6.2","@vercel/queue":"^0.2.0","@netlify/runtime":"^4.1.24","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.7","@typescript/native-preview":"7.0.0-dev.20260521.1"},"peerDependencies":{"miniflare":"^4.20260515.0","@vercel/queue":"^0.2.0","@netlify/runtime":"^4.1.23"},"peerDependenciesMeta":{"miniflare":{"optional":true},"@vercel/queue":{"optional":true},"@netlify/runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.9_1779458298124_0.8555228159988744","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"env-runner","version":"0.1.10","license":"MIT","_id":"env-runner@0.1.10","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"b3aec5e3a63970771151d9c5af144ac9eddd304e","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.10.tgz","fileCount":57,"integrity":"sha512-3Q8BN6NuZ5XsSGs+URKoy5tq4bx4a7HYDoZ3MIp5iXJColHrnZoIhWcCRfb0hUVIdkt1JiBww4YRHR7Ea24m6w==","signatures":[{"sig":"MEUCIHeKdWeR2KiFLObinvO0c+/kBr7fcA3e4Fqy7AoqNW3DAiEA9afjQB+BSYcc53dvCyUdDlSXmJ6nJlltGA4itfZhRUw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157954},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.15.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"srvx":"^0.11.16","httpxy":"^0.5.3","crossws":"^0.4.5","exsolve":"^1.0.8"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"oxfmt":"^0.51.0","automd":"^0.4.3","obuild":"^0.4.36","oxlint":"^1.69.0","vitest":"^4.1.8","miniflare":"^4.20260603.0","typescript":"^6.0.3","@types/node":"^25.9.2","changelogen":"^0.6.2","@vercel/queue":"^0.2.1","@netlify/runtime":"^4.1.25","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.8","@typescript/native-preview":"7.0.0-dev.20260521.1"},"peerDependencies":{"miniflare":"^4.20260515.0","@vercel/queue":"^0.2.0","@netlify/runtime":"^4.1.23"},"peerDependenciesMeta":{"miniflare":{"optional":true},"@vercel/queue":{"optional":true},"@netlify/runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.10_1781089284828_0.3099184699148272","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"env-runner","version":"0.1.11","license":"MIT","_id":"env-runner@0.1.11","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"fb053d213ad17b6d3aac14031abae28032bd1302","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.11.tgz","fileCount":58,"integrity":"sha512-fJfI87qPE7DxBD4EwYUuAlokWBOj9AnE6BmQxezCIQGBge/D7rp0kNTuOzSyJyjiQSGvFdpv/SPrOokPlTfA4Q==","signatures":[{"sig":"MEUCICzkhD529OwEKYEqIbUKL8FPCJ3Rna6iXg2KA+kPShOwAiEA4xCbcLVirqwsQaZG9ad+iBhVcZRDkimOeSJnknt6FbU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187556},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.13.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"srvx":"^0.11.16","httpxy":"^0.5.3","crossws":"^0.4.5","exsolve":"^1.0.8"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"oxfmt":"^0.51.0","automd":"^0.4.3","obuild":"^0.4.36","oxlint":"^1.69.0","vitest":"^4.1.8","miniflare":"^4.20260603.0","typescript":"^6.0.3","@types/node":"^25.9.2","changelogen":"^0.6.2","@vercel/queue":"^0.2.1","es-module-lexer":"^2.1.0","@netlify/runtime":"^4.1.25","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.8","@typescript/native-preview":"7.0.0-dev.20260521.1"},"peerDependencies":{"miniflare":"^4.20260515.0","@vercel/queue":"^0.2.0","@netlify/runtime":"^4.1.23"},"peerDependenciesMeta":{"miniflare":{"optional":true},"@vercel/queue":{"optional":true},"@netlify/runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.11_1781109110861_0.49390557100335575","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"env-runner","version":"0.1.12","license":"MIT","_id":"env-runner@0.1.12","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"3c5fb5a3b6c1a578b7c916a62379d09ecbffb628","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.12.tgz","fileCount":58,"integrity":"sha512-pHBoUIdcYeDUDzLDcsTydFxCVn/rtyQqwcPktpD1VElFEZ58udPfk3NrVxF2MG/sxj8yxGbwbTI7Pqh73u/isA==","signatures":[{"sig":"MEYCIQCvMJATNbiiyiciOYF7DQQ6za/BAxmL/scJXoWw7P60GAIhAKBb78hk5RvXFRkK6ryc3mUfbsLP44Fp8win3QsDzfp2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188227},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.13.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"srvx":"^0.11.16","httpxy":"^0.5.3","crossws":"^0.4.5","exsolve":"^1.0.8"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"oxfmt":"^0.51.0","automd":"^0.4.3","obuild":"^0.4.36","oxlint":"^1.69.0","vitest":"^4.1.8","miniflare":"^4.20260603.0","typescript":"^6.0.3","@types/node":"^25.9.2","changelogen":"^0.6.2","@vercel/queue":"^0.2.1","es-module-lexer":"^2.1.0","@netlify/runtime":"^4.1.25","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.8","@typescript/native-preview":"7.0.0-dev.20260521.1"},"peerDependencies":{"miniflare":"^4.20260515.0","@vercel/queue":"^0.2.0","@netlify/runtime":"^4.1.23"},"peerDependenciesMeta":{"miniflare":{"optional":true},"@vercel/queue":{"optional":true},"@netlify/runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.12_1781117773838_0.005675305346366288","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"env-runner","version":"0.1.13","license":"MIT","_id":"env-runner@0.1.13","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"66ebffa2d14d37e4a543267acfefdaf57892272d","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.13.tgz","fileCount":58,"integrity":"sha512-zRQU0NpfOU1NYg8TslQQgDZYZg6Cfx6vfsc9Zzv+vDMzWgtXqSURzfW9GFEbsuIpplOnF41T8VLoy9h8TNMDnw==","signatures":[{"sig":"MEYCIQDiMg7n/uNjp8jqhS1Jijkylp0r+w893icfxX3hDaE1XQIhANeifKeA2hKYcIeBjOPu/9Ne36EifiFOtSQiEyE5m1PQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188373},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.13.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"srvx":"^0.11.16","httpxy":"^0.5.3","crossws":"^0.4.5","exsolve":"^1.0.8"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"oxfmt":"^0.51.0","automd":"^0.4.3","obuild":"^0.4.36","oxlint":"^1.69.0","vitest":"^4.1.8","miniflare":"^4.20260603.0","typescript":"^6.0.3","@types/node":"^25.9.2","changelogen":"^0.6.2","@vercel/queue":"^0.2.1","es-module-lexer":"^2.1.0","@netlify/runtime":"^4.1.25","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.8","@typescript/native-preview":"7.0.0-dev.20260521.1"},"peerDependencies":{"miniflare":"^4.20260515.0","@vercel/queue":"^0.2.0","@netlify/runtime":"^4.1.23"},"peerDependenciesMeta":{"miniflare":{"optional":true},"@vercel/queue":{"optional":true},"@netlify/runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.13_1781131446684_0.5759537273533555","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"env-runner","version":"0.1.14","license":"MIT","_id":"env-runner@0.1.14","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"fb37baee6cbc344a5e688de89379b78409549d2b","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.14.tgz","fileCount":58,"integrity":"sha512-qdk5mmgFsd+zPg3r1bkZ+IbvpfUfypyDvNhMGypSMRpz7kOa/kI6SpW8fgyukuEM4Lo24M65r+1Ne0DtT7vFBA==","signatures":[{"sig":"MEUCIAiyX1anG2tqYOTAiN9ew9AXtpz0aTwSeqeBXT5ekF6AAiEAwBKcGWJEydA77rphcNmKaKPtuaVL/CM6HflwHerVmRA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199821},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.13.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"srvx":"^0.11.16","httpxy":"^0.5.3","crossws":"^0.4.5","exsolve":"^1.0.8"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"oxfmt":"^0.51.0","automd":"^0.4.3","obuild":"^0.4.36","oxlint":"^1.69.0","vitest":"^4.1.8","wrangler":"^4.99.0","miniflare":"^4.20260603.0","typescript":"^6.0.3","@types/node":"^25.9.2","changelogen":"^0.6.2","@vercel/queue":"^0.2.1","es-module-lexer":"^2.1.0","@netlify/runtime":"^4.1.25","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.8","@typescript/native-preview":"7.0.0-dev.20260521.1"},"peerDependencies":{"wrangler":"^4.0.0","miniflare":"^4.20260515.0","@vercel/queue":"^0.2.0","@netlify/runtime":"^4.1.23"},"peerDependenciesMeta":{"wrangler":{"optional":true},"miniflare":{"optional":true},"@vercel/queue":{"optional":true},"@netlify/runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.14_1781175309337_0.02652394667227953","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"env-runner","version":"0.1.15","license":"MIT","_id":"env-runner@0.1.15","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"52e34c01ae753684a3bc6626c776c4b3777fb0a1","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.15.tgz","fileCount":58,"integrity":"sha512-Xiu7VUW1jlwEiZSGWJ5Wuv9D4iSC2JwIB3Bb/RI+1DBSCeCrCpdAwRvsi3e52wETPUBkV61b0Ixfi593hQmQ6w==","signatures":[{"sig":"MEYCIQDeTQwYuEGiG/VNRUG/E3OKU+N15qPZr04d0SNMVpApCAIhAMVnS4MXK9tJdqknyr0dn1lWaLTKf4zKiR2h5F+BcGiV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201900},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.16.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"srvx":"^0.11.17","httpxy":"^0.5.3","crossws":"^0.4.6","exsolve":"^1.1.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"oxfmt":"^0.56.0","automd":"^0.4.3","obuild":"^0.4.37","oxlint":"^1.71.0","vitest":"^4.1.9","wrangler":"^4.105.0","miniflare":"^4.20260625.0","typescript":"^6.0.3","@types/node":"^26.0.1","changelogen":"^0.6.2","@vercel/queue":"^0.3.1","es-module-lexer":"^2.2.0","@netlify/runtime":"^4.1.25","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.9","@typescript/native-preview":"7.0.0-dev.20260629.1"},"peerDependencies":{"wrangler":"^4.0.0","miniflare":"^4.20260515.0","@vercel/queue":">=0.2.0","@netlify/runtime":"^4.1.23"},"peerDependenciesMeta":{"wrangler":{"optional":true},"miniflare":{"optional":true},"@vercel/queue":{"optional":true},"@netlify/runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.15_1782829304384_0.6825494363794056","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"env-runner","version":"0.1.16","license":"MIT","_id":"env-runner@0.1.16","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"9090bbeaab904ac7b5f3d42cf515d65de054fe8a","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.1.16.tgz","fileCount":58,"integrity":"sha512-2LRJM4P2KLX6J83QZZrMqvgCDt/D5ea7wPcI3yYiy5cG/9rX5QwdwZFx0D7ktWnjdRyZxYjttGGorb5nFqb1CA==","signatures":[{"sig":"MEUCIQCzgZ7tQJEUYuUZ5poJ7v3J9s+41twqNXs3g2/GTig77wIgXFD5leIA3F6T38i7J5E/VmcOxfdwQrl44JZqytPoI+o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205908},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsgo --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.16.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"srvx":"^0.11.19","httpxy":"^0.5.4","crossws":"^0.4.8","exsolve":"^1.1.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"oxfmt":"^0.56.0","automd":"^0.4.3","obuild":"^0.4.37","oxlint":"^1.71.0","vitest":"^4.1.9","wrangler":"^4.105.0","miniflare":"^4.20260625.0","typescript":"^6.0.3","@types/node":"^26.0.1","changelogen":"^0.6.2","@vercel/queue":"^0.3.1","es-module-lexer":"^2.2.0","@netlify/runtime":"^4.1.25","cjs-module-lexer":"^2.2.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.9","@typescript/native-preview":"7.0.0-dev.20260629.1"},"peerDependencies":{"wrangler":"^4.0.0","miniflare":"^4.20260515.0","@vercel/queue":">=0.2.0","@netlify/runtime":"^4.1.23"},"peerDependenciesMeta":{"wrangler":{"optional":true},"miniflare":{"optional":true},"@vercel/queue":{"optional":true},"@netlify/runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.1.16_1783016455457_0.38171797073878766","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"env-runner","version":"0.2.0","license":"MIT","_id":"env-runner@0.2.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"0ed6e865cf95e465741d90725e353319165f93de","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.2.0.tgz","fileCount":60,"integrity":"sha512-Q3tjjDWxHyRFhkA4w9uZaIpdjxGosDqQ5YNSvGksumiX6q0pgk69g9koNdskTUE7tUrPFmOGMX5uPamiBQXKqg==","signatures":[{"sig":"MEUCIEPF4FbDmo9S589t8nwHsaNfOtBRYfuMKmPl+3kdzlM9AiEAkASnnP+S5bcmXbwilEXEP3dUOk+kbkc+eHaZt0N90fw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDoqpwvp595g1+qsn7Q4EJqIf8+BRP6zPXeegtQE8VYiAIhALelACRFghe9YGTLFauq8gHA/ywG5dfdvA+EHQZ5Kx2s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223737},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && npm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"11.17.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"srvx":"^0.12.7","httpxy":"^0.5.5","crossws":"^0.4.11","exsolve":"^1.1.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.22.0","devDependencies":{"oxfmt":">=0.64.0","automd":"^0.4.3","obuild":"^0.4.38","oxlint":"^1.79.0","vitest":"^4.1.11","wrangler":"^4.124.0","miniflare":"^4","typescript":"^7","@types/node":"^26.2.0","changelogen":"^0.6.2","@vercel/queue":"^0.4","es-module-lexer":"^2.3.2","@netlify/runtime":"^5","cjs-module-lexer":"^2.2.1","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.2.0_1787227528631_0.9773981119545119","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"env-runner","version":"0.2.1","license":"MIT","_id":"env-runner@0.2.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"6ab688ddc366e1a61cd737e095ec537996d5482f","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.2.1.tgz","fileCount":61,"integrity":"sha512-2iDP2DfheAMMAKeXBggEuFmpSq+1Xs6wQoHba1g65pZFXlC3VHD1O6/tgVzS6GQLv+P2koPKZPKgKhXkigNBdg==","signatures":[{"sig":"MEUCIQCR/VMofdWM30DSG0cDKCBm1TIu6aczQ9xvmoCnJK8XPAIgVokFRYveTwkX6KDvZUwFlf8WXcBcp/V8nNXTOHaSif4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCnHR6Sbvdo17ztk64+Kz56FJJFrW0cHstH9nJsSfmvSgIgH4oajr7GmaEpxtYttyFvDcMS2M9dUxVsCZ8EPkw1g/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224218},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"srvx":"^1.0.0","httpxy":"^0.5.5","crossws":"^0.4.12","exsolve":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.65.0","automd":"^0.4.3","obuild":"^0.4.38","oxlint":"^1.80.0","vitest":"^4.1.11","wrangler":"^4.127.1","miniflare":"^4.20260730.0","typescript":"^7.0.2","@types/node":"^26.4.0","changelogen":"^0.6.2","@vercel/queue":"^0.5.1","es-module-lexer":"^2.3.2","@netlify/runtime":"^5.0.2","cjs-module-lexer":"^2.2.1","env-runner-fixture":"link:","@vitest/coverage-v8":"^4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.2.1_1788356916494_0.5828770311239528","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"env-runner","version":"0.2.2","license":"MIT","_id":"env-runner@0.2.2","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"38d1b26fcdf65302c97a31d3562b011ae1bbb7bf","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.2.2.tgz","fileCount":61,"integrity":"sha512-Mg9MqUq6fMe6Smd4x/bXJJTavobIXlPsJ+/ePWkoLSVTrGmQ+1YrzwjoCn1Bl7tMD9aNqB7c5NIWKRAIl3l7hw==","signatures":[{"sig":"MEUCIFfJ7yqNhytSav7fXjd5CpZA8N511ONBCYWEvDfHOtF1AiEAiJQSiQLSrxJhVMv67J8VXVu4Q5NtdjX9Izhbd61XTe4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDFPxkeZsIpk8pPgmXCEfKiwAxbI8hHD5lwsVdayMOFRQIgboxYfKoCOIAfCRsuIwgbs2lArS5R1zhqbbQoqQ5Ih1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":255505},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"srvx":"^1.0.3","httpxy":"^0.5.5","crossws":"^0.4.12","exsolve":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.67.0","automd":"^0.4.3","obuild":"^0.4.39","oxlint":"^1.81.0","vitest":"^5.0.0","wrangler":"^4.129.0","miniflare":"^4.20260730.0","typescript":"^7.0.2","@types/node":"^26.4.1","changelogen":"^0.6.2","@vercel/queue":"^0.5.1","es-module-lexer":"^3.0.1","@netlify/runtime":"^5.0.3","cjs-module-lexer":"^2.2.1","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.2.2_1789375281073_0.7641527305706337","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"env-runner","version":"0.2.3","license":"MIT","_id":"env-runner@0.2.3","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"124be946c3dcc4cc0db856ec144dceb4426f46fc","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.2.3.tgz","fileCount":61,"integrity":"sha512-S8EFBKyznRwPVwayK187cYjvnpgC92xy+q0BIF++V965pfjMVVRbQ/HoTYGA/1EHmZ7E68k6Heq+4WnvVhOL5w==","signatures":[{"sig":"MEQCIEgm3Cq24x572UX6jvoG4lfr68jyMB/Wae+W4xicKR/yAiARjIBBpQc1atuPMRbII5OdIJwZdluirociO+n+KvKG3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE37ya8ttRFOrYr1PsfUzSuqQJaugX1W0pICpnT2cCCYAiBjpJGbEcNPG2V3EQJBk2fWONn0crn0COQk5rFKpFWYEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269521},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"srvx":"^1.0.5","httpxy":"^0.5.5","crossws":"^0.4.12","exsolve":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.67.0","automd":"^0.4.3","obuild":"^0.4.39","oxlint":"^1.82.0","vitest":"^5.0.0","wrangler":"^4.131.0","miniflare":"^4.20260730.0","typescript":"^7.0.2","@types/node":"^26.5.1","changelogen":"^0.6.2","@vercel/queue":"^0.5.1","es-module-lexer":"^3.0.2","@netlify/runtime":"^5.0.3","cjs-module-lexer":"^2.2.1","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.2.3_1789411749263_0.17694718791015562","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"env-runner","version":"0.3.0","license":"MIT","_id":"env-runner@0.3.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"1ca0d21e018f1ce3db61016a3d81b9741a216ad3","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.0.tgz","fileCount":62,"integrity":"sha512-w9R/zLUwt8a2LC6GIMs6ehLYFqcvIUzvkrUAixu7xVuzsfX8HBse9gOnoolPvtUUzKTEz8wkFber7fPF1QpsHA==","signatures":[{"sig":"MEYCIQDtnTlkidNEFYsUzKfMG/uS/VEl60ubs1x8TZ+465HjqwIhALCQ49cPEvQ7Mh5pTUp9wMCOqzTM7D/3Pf0CXozFr+Lk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDjf9jue7iFDGeEPe36vJZ3MNZI3DFRc8/xTcSqWSpq/gIgOciHOeTwmbZYWJF/3A5D/NCu8DWjW8XMYyG1p1phf/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":325762},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"dependencies":{"srvx":"^1.0.5","httpxy":"^0.5.5","crossws":"^0.4.12","exsolve":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.70.0","automd":"^0.4.3","obuild":"^0.4.40","oxlint":"^1.85.0","vitest":"^5.0.1","wrangler":"^4.138.0","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.2","changelogen":"^0.6.2","@vercel/queue":"^0.6.0","es-module-lexer":"^3.0.2","@netlify/runtime":"^5.0.5","cjs-module-lexer":"^2.2.1","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.3.0_1790371271301_0.5485741681461864","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"env-runner","version":"0.3.1","license":"MIT","_id":"env-runner@0.3.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/env-runner#readme","bugs":{"url":"https://github.com/unjs/env-runner/issues"},"bin":{"env-runner":"dist/cli.mjs"},"dist":{"shasum":"30476d357b3466dda6d82f58ca5292cf50b95267","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.1.tgz","fileCount":62,"integrity":"sha512-RNB3kk70G12a18RTSCJ10QhXbnS6ZscpOfsvQbkmRFd3DK6A1eHPufJWIPTFyJ4TfsndaLflE2opZCRbUfXfFw==","signatures":[{"sig":"MEYCIQCbLEYkBsIeDXiMqRtJYQuziSlRP6+/aYfp+SkTMv8dIQIhAOXv+gODmT0F2LiDKe75lgT4ZcTzxFqMBJNMPYSkl8ZR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDgDj6gQJ7fu28H06O6ruRsSDIrQAjjFoSvhmIhlsdybQIhAPiKqHrx0hUkbETVCFa8XKH9hKM/+8Dns2RCJONg2F0z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":427524},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","prepack":"pnpm build","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/env-runner.git","type":"git"},"_npmVersion":"12.1.0","description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"srvx":"^1.0.5","httpxy":"^0.5.5","crossws":"^0.4.12","exsolve":"^1.1.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@12.6.0","devDependencies":{"oxfmt":">=0.70.0","automd":"^0.4.3","obuild":"^0.4.40","oxlint":"^1.85.0","vitest":"^5.0.1","wrangler":"^4.140.0","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.2","changelogen":"^0.6.2","@vercel/queue":"^0.7.0","oxc-transform":"^0.151.0","es-module-lexer":"^3.0.2","@netlify/runtime":"^5.0.5","cjs-module-lexer":"^2.2.1","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.3.1_1790638259776_0.6314035646225002","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"env-runner","version":"0.3.2","license":"MIT","_id":"env-runner@0.3.2","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"5dfdc7e49de99cce7d948cbfaabdd50c41c90ad3","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.2.tgz","fileCount":62,"integrity":"sha512-rbkutrFr0NWfka7ot4/KyN5YKKDfvxqX1JaaEEC/8SMvxX+LcDfvXBvGDAfkhBbCpYGTWjveegnJiOUYoLFV8g==","signatures":[{"sig":"MEQCIBF+JU3U7/TwwCOJWQ7oILoihXYgolIwEobj11PQ5Mm1AiA0RdyFwbiaazl0uhoqsxycw7iAufCSzrNiZ/SMwHg+Vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEboThW7ilxdbG26dNisdEsVk29+naTWaQeWRBu8PBSbAiEAr2nYR/jofOFjwLkDIjbG6dIwAf5bSHZQN/jp8hct7fk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":427495},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"dependencies":{"srvx":"^1.0.5","httpxy":"^0.5.5","crossws":"^0.4.12","exsolve":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.70.0","automd":"^0.4.3","obuild":"^0.4.40","oxlint":"^1.85.0","vitest":"^5.0.2","wrangler":"^4.141.0","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.3","changelogen":"^0.6.2","@vercel/queue":"^0.7.0","oxc-transform":"^0.151.0","es-module-lexer":"^3.0.2","@netlify/runtime":"^5.0.5","cjs-module-lexer":"^2.2.1","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.2"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.3.2_1790680969708_0.18001784408071364","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"env-runner","version":"0.3.3","license":"MIT","_id":"env-runner@0.3.3","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"8b7075ce2d3267d8d09cf543b1d8bea5c49e2df8","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.3.tgz","fileCount":62,"integrity":"sha512-Nmz9+nA6Wnk3211bXJJiucO399xvrGTfG6GoY+0k4AwptX1MXuxZxcktdFZ0XLXf2i89RlA4uUxfczqOpOMXnA==","signatures":[{"sig":"MEUCIQCmH0RYNtn3HaYY66dJwtK+Y1ZE4TeCz20dl9bRLQ1SXgIgOW9omLEEVn+ACYmzYPB1eAwXq1NtH4bOcLq606eKB2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB4/tEFphyucxbRbVAUP8UvXZvy5T/u/btDqzc2NVQPpAiEA4cvp0Jr49V27a4+NHWyyZGU8G2iMXqbYay7v03RkHb8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":429288},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"dependencies":{"srvx":"^1.0.5","httpxy":"^0.5.5","crossws":"^0.4.12","exsolve":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.70.0","automd":"^0.4.3","obuild":"^0.4.40","oxlint":"^1.85.0","vitest":"^5.0.2","wrangler":"^4.141.0","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.3","changelogen":"^0.6.2","@vercel/queue":"^0.7.0","oxc-transform":"^0.151.0","es-module-lexer":"^3.0.2","@netlify/runtime":"^5.0.5","cjs-module-lexer":"^2.2.1","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.2"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.3.3_1790700231026_0.8820720387095091","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"env-runner","version":"0.3.4","license":"MIT","_id":"env-runner@0.3.4","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"f64394ab1ca0c403830b0128847820811e988df8","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.4.tgz","fileCount":64,"integrity":"sha512-zP3dtlJZUn++g7N/rL2aiWkzqxsqCNCRTt8d3Gf3+iSCCIoSgBdWMSY1fz+dQ4+kH37kJ5etnEeJ4BouqIS1yQ==","signatures":[{"sig":"MEUCIBEtWRzzIV0ciDongzm4uiIrQPEAZ/91ziwpB9m4qgHIAiEA0JbWA9jK3lAB7dNR8e0jGYtglgNBd9kvAASRBXqVhsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBrEheksPI8u3GlQBb9akgJxG6h/KcYLjcPekemmdkrYAiEApbc/d6aqxEa831NJKMJAkfofL1wTZuKQYu4acQ9DSF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":385358},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"dependencies":{"srvx":"^1.0.5","crossws":"^0.4.15"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.72.0","automd":"^0.4.3","httpxy":"^0.5.5","obuild":"^0.4.44","oxlint":"^1.87.0","vitest":"^5.0.3","exsolve":"^1.1.3","wrangler":"^4.149.0","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.4","changelogen":"^0.6.2","@vercel/queue":"^0.8.0","oxc-transform":"^0.153.0","es-module-lexer":"^3.0.3","@netlify/runtime":"^5.0.8","cjs-module-lexer":"^2.3.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.3.4_1791810755939_0.39917435566822546","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"env-runner","version":"0.3.5","license":"MIT","_id":"env-runner@0.3.5","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"ab0ec6eedd2c9112bee3eeeec80132dfbf35a69f","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.5.tgz","fileCount":63,"integrity":"sha512-CGlZFtUPSJr0E2hUcaC24EbpJMSt83oZYY54UB5Uf66h2g0FzGsDq5zDlr2z6iS7Tqi2Xq+zpWu0IIQgAgBP8w==","signatures":[{"sig":"MEUCIAIlOZQFn6FmlqWeCAk9eBK7Os6sjsjgHKyeDyf0TWFVAiEAg1SPpJKd2U6LlERrkkhH42sc2u1oTJdRhMyX7IbyKGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHVFGhWEtE8j9iRtdzXHJSjXy96p+2VreSTTlqoly8c1AiBHFcPWA7bHi6u/bAeE2kD/UVDrr+4LuViDT/1WdPsXEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":398301},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"dependencies":{"srvx":"^1.0.5","crossws":"^0.4.15"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.73.0","automd":"^0.4.3","httpxy":"^0.5.5","obuild":"^0.4.45","oxlint":"^1.88.0","vitest":"^5.0.5","exsolve":"^1.1.3","wrangler":"^4.151.0","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.5","changelogen":"^0.6.2","@vercel/queue":"^0.8.0","oxc-transform":"^0.154.0","es-module-lexer":"^3.0.4","@netlify/runtime":"^5.0.8","cjs-module-lexer":"^2.3.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.5"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.3.5_1792338302829_0.14427714557550364","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"env-runner","version":"0.3.6","license":"MIT","_id":"env-runner@0.3.6","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"719333d9629aaeb5ce95de54357a8a3510948a5f","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.6.tgz","fileCount":63,"integrity":"sha512-2peJPuinI46B3zeHyTjVhiK+LGb53M2vmM4tGIwPYfPZ+/FBfPOsaCYawLoc+9GTa/y/fYhhtZh8obPZAmHUCQ==","signatures":[{"sig":"MEUCIQDmicqOoxKQnzi/l/ZR8y8Vw848CCmEK9tDi5Mt6l/9KQIgWgxUuv2RC4EkybqPHkbgUWIKXJ79FxmZNuYIljjVpvo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD4xG4ii7Ko8m3VoKSwSCNYDm1G1bQqi0TKcHBaRV3PLQIhAL/uRTiHsTqbnNwnADKhqhy9k0tL4skf0w9bVSmxqjm0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400298},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"dependencies":{"srvx":"^1.0.5","crossws":"^0.4.15"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.73.0","automd":"^0.4.3","httpxy":"^0.5.5","obuild":"^0.4.45","oxlint":"^1.88.0","vitest":"^5.0.5","exsolve":"^1.1.3","wrangler":"^4.151.0","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.5","changelogen":"^0.6.2","@vercel/queue":"^0.8.0","oxc-transform":"^0.154.0","es-module-lexer":"^3.0.4","@netlify/runtime":"^5.0.8","cjs-module-lexer":"^2.3.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.5"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.3.6_1792460441357_0.997632779909142","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"env-runner","version":"0.3.7","license":"MIT","_id":"env-runner@0.3.7","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"ca5a4a3f6dead9ba8efd788ca8bb18dc4119579e","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.7.tgz","fileCount":63,"integrity":"sha512-Fcv10GJOlfwP4mD6g05mTtZ1/YrmJGAFIRDYfJwXAhl4xyZCX5O2LsJVTSDctK2jUjzIrNCSk3IkHKvoOqfzHA==","signatures":[{"sig":"MEUCIHkSoAf5LcvZfhb6+zy1W9ErIICOpmw2yUSuPRVJxZ45AiEA9kHsZKYnYlRHlv2BiE/B4bDCx1RMztVkZbHSZww7tJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBP6HzlLQFIF2Gc1UB2B78phsYnKWaegLknjM9K7sFkPAiEA6eJmy3m+gRhqi3yIurhk7hoqyAyW5fAAGFVayUFD2EQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402475},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"dependencies":{"srvx":"^1.0.6","crossws":"^0.4.15"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.73.0","automd":"^0.4.3","httpxy":"^0.5.5","obuild":"^0.4.45","oxlint":"^1.88.0","vitest":"^5.0.5","exsolve":"^1.1.3","wrangler":"^4.151.1","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.5","changelogen":"^0.6.2","@vercel/queue":"^0.8.0","oxc-transform":"^0.154.0","es-module-lexer":"^3.0.4","@netlify/runtime":"^5.0.8","cjs-module-lexer":"^2.3.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.5"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.3.7_1792544363229_0.3503865031148652","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"env-runner","version":"0.3.8","license":"MIT","_id":"env-runner@0.3.8","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"055a2447db213bb7bacd9f559e58f7c31f3d3b25","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.8.tgz","fileCount":63,"integrity":"sha512-WF/tEXA/LSE7na7k2T6STXw8aEOAt1tqxextaJH7RZnqZzqSrFVCyFKEU3r0dLgqgu55Kswo5TvkOLuGxz72VQ==","signatures":[{"sig":"MEQCIFGrbtIsUZpr6OwlFj+KksOAazZTN6ixA9+W3yIgsEfIAiAIC/kySBjSMJlonrUuiHMZW+R6WTcA9tfVTD7rJ4BAmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDBm61ykXSKTGC5OmmXQCWmwyCdy/VRgp8G46vpYuep7wIhAML2iOBol7VkvoiSAW01kB2sYPZsPLa/3nMhsPlxAS03","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":411395},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"dependencies":{"srvx":"^1.0.7","crossws":"^0.4.16"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.74.0","automd":"^0.4.3","httpxy":"^0.5.6","obuild":"^0.4.45","oxlint":"^1.89.0","vitest":"^5.0.5","exsolve":"^1.1.3","wrangler":"^4.152.0","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.5","changelogen":"^0.6.2","@vercel/queue":"^0.9.0","oxc-transform":"^0.155.0","es-module-lexer":"^3.0.4","@netlify/runtime":"^5.0.10","cjs-module-lexer":"^2.3.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.5"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.3.8_1792805939452_0.5162568163155861","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"env-runner","version":"0.3.9","license":"MIT","_id":"env-runner@0.3.9","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"0554b333e9a2622115c2ae883bdca6a48a4e4bb3","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.9.tgz","fileCount":63,"integrity":"sha512-LuiXQeYSOQFXYUJoPGBoz6Ai/RAjkIhYMI3f+QseFpl5HmSOcP+mlspZ01e8MpUbZhSJgI7NX0df3HKarqO9wQ==","signatures":[{"sig":"MEUCIFLrQ+fm56yhchPnLyUOzYAO5uF5q9HjpKnFZF8TmEM7AiEA7i3Nh54IPwtb9WrheIQhu+G4u+AqlvBUPRMtoq1/WKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCNTXajL7odazw3rFjbYaYZmuTDxrwJfoVChogq0iwaNAIgG9uTfKcuuw7O48nMHSfSPA0ix3NRV2ll712A1hjM9FM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":411516},"type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"sideEffects":false,"dependencies":{"srvx":"^1.0.7","crossws":"^0.4.16"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.74.0","automd":"^0.4.3","httpxy":"^0.5.6","obuild":"^0.4.45","oxlint":"^1.89.0","vitest":"^5.0.5","exsolve":"^1.1.3","wrangler":"^4.152.0","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.5","changelogen":"^0.6.2","@vercel/queue":"^0.10.0","oxc-transform":"^0.155.0","es-module-lexer":"^3.0.4","@netlify/runtime":"^5.0.10","cjs-module-lexer":"^2.3.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.5"},"_npmOperationalInternal":{"tmp":"tmp/env-runner_0.3.9_1793117834351_0.6677966597570458","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"_id":"env-runner@0.3.10","bin":{"env-runner":"./dist/cli.mjs"},"dist":{"shasum":"09fa643fee84b2b2671d46a4bbb39da327110bd8","tarball":"https://registry.npmjs.org/env-runner/-/env-runner-0.3.10.tgz","fileCount":63,"integrity":"sha512-DOmiJsUH4gUIdLIvTZhO0UmXSPTM6pQbU7hdBt9rfHZQuUaXtGrGOXyL+zfCWuV972q1eF0wjiaVbCjhRM3WeQ==","signatures":[{"sig":"MEUCIAmRUN3zdUxhzANEi3fsra8V2Ez4P+0VOAOFs5loIXUAAiEAgB+nSnMiSGM+Qi2INvUSunXVldPGf0ueUCOY3MiWGaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDTAVcxfT3+JkBWSjjxHLmP56PSQis/cJ4yUMk3v1CzYgIhANaEg8kIrSBBhvUHVulfBefwuqJR+X7VMO20yf2s4jBZ"}],"unpackedSize":411988},"name":"env-runner","type":"module","exports":{".":"./dist/index.mjs","./vite":"./dist/vite.mjs","./runners/self":"./dist/runners/self/runner.mjs","./runners/vercel":"./dist/runners/vercel/runner.mjs","./runners/netlify":"./dist/runners/netlify/runner.mjs","./runners/miniflare":"./dist/runners/miniflare/runner.mjs","./runners/bun-process":"./dist/runners/bun-process/runner.mjs","./runners/node-worker":"./dist/runners/node-worker/runner.mjs","./runners/deno-process":"./dist/runners/deno-process/runner.mjs","./runners/node-process":"./dist/runners/node-process/runner.mjs","./runners/vercel/worker":"./dist/runners/vercel/worker.mjs","./runners/netlify/worker":"./dist/runners/netlify/worker.mjs","./runners/vercel/queue-dev":"./dist/runners/vercel/queue-dev.mjs","./runners/bun-process/worker":"./dist/runners/bun-process/worker.mjs","./runners/node-worker/worker":"./dist/runners/node-worker/worker.mjs","./runners/deno-process/worker":"./dist/runners/deno-process/worker.mjs","./runners/node-process/worker":"./dist/runners/node-process/worker.mjs"},"license":"MIT","scripts":{"dev":"vitest dev","fmt":"automd && oxlint . --fix && oxfmt .","lint":"oxlint . && oxfmt --check .","test":"pnpm lint && pnpm typecheck && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags","typecheck":"tsc --noEmit --skipLibCheck","env-runner":"node ./src/cli.ts"},"version":"0.3.10","_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","directories":{},"maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"sideEffects":false,"dependencies":{"srvx":"^1.0.7","crossws":"^0.4.16"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":">=0.74.0","automd":"^0.4.3","httpxy":"^0.5.6","obuild":"^0.4.45","oxlint":"^1.89.0","vitest":"^5.0.5","exsolve":"^1.1.3","wrangler":"^4.152.0","miniflare":"^5.20260921.1-alpha","typescript":"^7.0.2","@types/node":"^26.6.5","changelogen":"^0.6.2","@vercel/queue":"^0.10.0","oxc-transform":"^0.155.0","es-module-lexer":"^3.0.4","@netlify/runtime":"^5.0.10","cjs-module-lexer":"^2.3.0","env-runner-fixture":"link:","@vitest/coverage-v8":"^5.0.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/env-runner_0.3.10_1793120674901_0.8015820850586918"}}},"time":{"created":"2026-01-02T22:55:05.639Z","modified":"2026-10-27T17:04:35.262Z","0.0.0":"2026-01-02T22:55:05.773Z","0.1.0":"2026-03-10T01:44:17.515Z","0.1.1":"2026-03-10T02:20:17.532Z","0.1.2":"2026-03-10T11:10:39.809Z","0.1.3":"2026-03-10T12:41:09.966Z","0.1.4":"2026-03-10T13:08:21.181Z","0.1.5":"2026-03-10T15:21:37.223Z","0.1.6":"2026-03-10T15:51:34.124Z","0.1.7":"2026-03-28T01:17:54.950Z","0.1.8":"2026-05-22T13:22:11.130Z","0.1.9":"2026-05-22T13:58:18.330Z","0.1.10":"2026-06-10T11:01:24.996Z","0.1.11":"2026-06-10T16:31:51.008Z","0.1.12":"2026-06-10T18:56:14.013Z","0.1.13":"2026-06-10T22:44:06.849Z","0.1.14":"2026-06-11T10:55:09.535Z","0.1.15":"2026-06-30T14:21:44.535Z","0.1.16":"2026-07-02T18:20:55.602Z","0.2.0":"2026-08-20T12:05:28.749Z","0.2.1":"2026-09-02T13:48:36.603Z","0.2.2":"2026-09-14T08:41:21.172Z","0.2.3":"2026-09-14T18:49:09.350Z","0.3.0":"2026-09-25T21:21:11.422Z","0.3.1":"2026-09-28T23:30:59.876Z","0.3.2":"2026-09-29T11:22:49.809Z","0.3.3":"2026-09-29T16:43:51.130Z","0.3.4":"2026-10-12T13:12:36.088Z","0.3.5":"2026-10-18T15:45:02.913Z","0.3.6":"2026-10-20T01:40:41.501Z","0.3.7":"2026-10-21T00:59:23.334Z","0.3.8":"2026-10-24T01:38:59.535Z","0.3.9":"2026-10-27T16:17:14.502Z","0.3.10":"2026-10-27T17:04:35.057Z"},"license":"MIT","repository":{"url":"unjs/env-runner","type":"git"},"description":"Generic environment runner for JavaScript runtimes.","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"readme":"# env-runner\n\n<!-- automd:badges color=yellow -->\n\n[![npm version](https://img.shields.io/npm/v/env-runner?color=yellow)](https://npmjs.com/package/env-runner)\n[![npm downloads](https://img.shields.io/npm/dm/env-runner?color=yellow)](https://npm.chart.dev/env-runner)\n\n<!-- /automd -->\n\nGeneric environment runner for JavaScript runtimes. Run your server apps across Node.js worker threads, child processes, Bun, Deno, Cloudflare Workers (via miniflare), Vercel, Netlify, or in-process — with hot-reload, WebSocket proxying, and bidirectional messaging.\n\n## Usage\n\n### App Entry\n\nCreate a server entry module that exports a `fetch` handler:\n\n```ts\n// app.ts\nexport default {\n  fetch(request: Request) {\n    return new Response(\"Hello!\");\n  },\n};\n```\n\n### CLI\n\nThe quickest way to run your app:\n\n```bash\nnpx env-runner app.ts\n```\n\n**Flags:**\n\n| Flag              | Description                                                                                       | Default        |\n| ----------------- | ------------------------------------------------------------------------------------------------- | -------------- |\n| `--runner <name>` | Runner to use (`node-worker`, `node-process`, `bun-process`, `deno-process`, `self`, `miniflare`) | `node-process` |\n| `--port <port>`   | Port to listen on                                                                                 | `3000`         |\n| `--host <host>`   | Host to bind to                                                                                   | `localhost`    |\n| `-w, --watch`     | Watch entry file for changes and auto-reload                                                      |                |\n\n`--runner miniflare` needs `miniflare` installed in your project — the runner imports it optionally when no module is passed.\n\n### Server (`EnvServer`)\n\nHigh-level API that combines runner loading, file watching, and auto-reload:\n\n```ts\nimport { serve } from \"srvx\";\nimport { EnvServer } from \"env-runner\";\n\nconst envServer = new EnvServer({\n  runner: \"node-process\", // optional, defaults to \"node-worker\"\n  entry: \"./app.ts\",\n  watch: true,\n  watchPaths: [\"./src\"],\n  // Let the previous runner finish in-flight requests on reloads (see \"Drained reload\")\n  drain: true,\n  // Runner-specific constructor options, e.g. `{ miniflare }` for `runner: \"miniflare\"`\n  runnerOptions: {},\n});\n\nenvServer.onReady((_runner, address) => {\n  console.log(`Worker ready on ${address?.host}:${address?.port}`);\n});\n\nenvServer.onReload(() => {\n  console.log(\"Reloaded!\");\n});\n\n// Optional — the server auto-starts on first fetch()\nawait envServer.start();\n\n// Restart with a fresh runner created from the server options\nawait envServer.reload();\n\n// Use with any HTTP server\nconst server = serve({\n  fetch: (request) => envServer.fetch(request),\n  // Proxy WebSocket upgrades to the worker (see \"WebSocket proxying\" below)\n  plugins: [await envServer.wsSrvxPlugin()],\n});\n```\n\n#### WebSocket proxying\n\nTo proxy WebSocket upgrades to the worker, attach the plugin returned by\n`wsSrvxPlugin()` (available on both `RunnerManager` and `EnvServer`) to your\n[srvx](https://srvx.h3.dev) server:\n\n```ts\nconst server = serve({\n  fetch: (request) => envServer.fetch(request),\n  plugins: [await envServer.wsSrvxPlugin()],\n});\n```\n\nThe plugin picks the proxy strategy by **host** runtime:\n\n- **Node** — proxies the raw upgrade socket to the worker (transparent\n  passthrough; subprotocol/extension negotiation stays end-to-end).\n- **Bun/Deno** — those runtimes serve natively and expose no Node upgrade\n  socket, so the client WebSocket is terminated with [crossws](https://crossws.h3.dev)\n  and bridged to the worker over a standard `WebSocket` client.\n\nIt reads the active runner lazily, so it keeps working across hot-reloads, and\nwaits for the worker to become ready before proxying. Your entry module should\nexpose WebSocket hooks via the `websocket` field (see [Workers](#workers)).\n\n### Manager (`RunnerManager`)\n\nProxy manager for hot-reload with message queueing and listener forwarding:\n\n```ts\nimport { RunnerManager } from \"env-runner\";\nimport { NodeProcessEnvRunner } from \"env-runner/runners/node-process\";\n\nawait using manager = new RunnerManager();\n\nmanager.onReady((_runner, address) => {\n  console.log(\"Ready:\", address);\n});\n\n// Load initial runner\nconst runner = new NodeProcessEnvRunner({\n  name: \"my-app\",\n  data: { entry: \"./app.ts\" },\n});\nawait manager.reload(runner);\n\n// Proxy requests\nconst response = await manager.fetch(\"http://localhost/hello\");\n\n// Hot-reload with a new runner\nconst newRunner = new NodeProcessEnvRunner({\n  name: \"my-app\",\n  data: { entry: \"./app.ts\" },\n});\nawait manager.reload(newRunner); // old runner is closed automatically\n\n// Bidirectional messaging (queued until runner is ready)\nmanager.sendMessage({ type: \"config\", value: 42 });\nmanager.onMessage((msg) => console.log(\"From worker:\", msg));\n\n// manager.close() is awaited automatically at the end of the scope (`await using`)\n```\n\n#### Drained reload\n\nBy default, `reload()` closes the previous runner right away, cutting off its in-flight requests, streamed responses and WebSockets. With `drain`, new requests and upgrades go to the new runner while the previous one keeps serving what it already accepted, and shuts down (`shutdown()`) once they settle. After the drain timeout (default 60s, also used for `NaN`), it is closed with whatever is still open:\n\n```ts\nawait manager.reload(newRunner, { drain: true });\n\n// Close it after 10 minutes at the latest (e.g. for long streamed responses)\nawait manager.reload(newRunner, { drain: { timeout: 600_000 } });\n\n// No limit\nawait manager.reload(newRunner, { drain: { timeout: Infinity } });\n```\n\n`reload()` resolves once the new runner is attached, without waiting for the drain. A request counts until its response body is read to the end, fails or is canceled (a `HEAD` request until its response arrives), and a WebSocket until it closes (through `manager.fetch()`, `manager.upgrade()` and `manager.wsSrvxPlugin()`). A client that disconnects (aborting `request.signal`) also aborts the worker request, so it doesn't hold the previous runner either; the runner's `fetch()` then resolves with an empty `499` response instead of rejecting. Until the timeout, a response body that is never consumed or a WebSocket that stays open (such as an open browser tab's) keeps the previous runner alive, so with `timeout: Infinity` frequent reloads can pile up workers. `close()` and `shutdown()` of the manager also close draining runners. `EnvServer` takes a `drain` option for its reloads (watch mode included).\n\nAll runners, `RunnerManager`, and `EnvServer` implement `AsyncDisposable`, so they can be auto-closed with [explicit resource management](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/await_using) (`await using`) — or closed manually with `await runner.close()`.\n\n### Runners\n\nUse runners directly for lower-level control:\n\n```ts\nimport { NodeWorkerEnvRunner } from \"env-runner/runners/node-worker\";\nimport { NodeProcessEnvRunner } from \"env-runner/runners/node-process\";\nimport { BunProcessEnvRunner } from \"env-runner/runners/bun-process\";\nimport { DenoProcessEnvRunner } from \"env-runner/runners/deno-process\";\nimport { SelfEnvRunner } from \"env-runner/runners/self\";\nimport { MiniflareEnvRunner } from \"env-runner/runners/miniflare\";\nimport { VercelEnvRunner } from \"env-runner/runners/vercel\";\nimport { NetlifyEnvRunner } from \"env-runner/runners/netlify\";\n```\n\n#### Runtime dependencies\n\n`env-runner` declares **no peer dependencies**. Runners that build on external packages take them as explicit options instead, and every such option accepts the **same three shapes**:\n\n| Value                                                                       | Meaning                                                                                                     |\n| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |\n| the imported module (`import * as miniflare from \"miniflare\"`)              | the version you installed is the version that runs                                                          |\n| a specifier — `\"miniflare\"`, `import.meta.resolve(\"miniflare\")`, or a `URL` | resolved from the current working directory, so bare specifiers hit your `node_modules`, not `env-runner`'s |\n| `false`                                                                     | opt out of the package entirely                                                                             |\n\nOmitting the option falls back to an optional dynamic import of the package; only then does the runner error (`miniflare`) or degrade (minimal wrangler reader, Netlify shim, queue no-op).\n\n| Runner      | Package            | Option                                   | Without it                            |\n| ----------- | ------------------ | ---------------------------------------- | ------------------------------------- |\n| `miniflare` | `miniflare`        | `miniflare`                              | throws — the runner cannot run        |\n| `miniflare` | `wrangler`         | `wranglerModule`                         | built-in minimal JSON reader          |\n| `vercel`    | `@vercel/queue`    | `sdk` (on `registerVercelQueueConsumer`) | warn-once no-op                       |\n| `netlify`   | `@netlify/runtime` | `netlifyRuntime`                         | lightweight `globalThis.Netlify` shim |\n\n`netlifyRuntime` is the one exception to the table above: the runtime has to start **inside** the worker thread, where a live module instance cannot be handed over, so it accepts a specifier (or `false`) only.\n\nThe shared resolver is exported as `resolveRuntimeDep()` (type `RuntimeDep<T>`) if you build runners of your own.\n\nAll runners implement the [`EnvRunner`](./src/types.ts) interface:\n\n```ts\nawait using runner = new NodeProcessEnvRunner({\n  name: \"my-app\",\n  data: { entry: \"./app.ts\" },\n  hooks: {\n    onReady: (runner, address) => console.log(\"Listening on\", address),\n    onClose: (runner, cause) => console.log(\"Closed\", cause),\n  },\n  execArgv: [\"--inspect\"], // Node.js flags (process-based runners)\n});\n\n// Proxy HTTP requests (retries with exponential backoff)\n// Relative URLs are resolved against a placeholder origin\nconst response = await runner.fetch(\"/api\");\n\n// Proxy a raw WebSocket upgrade to the worker (Node host only — low-level;\n// prefer `manager.wsSrvxPlugin()` for cross-runtime proxying)\nrunner.upgrade?.({ node: { req, socket, head } });\n\n// Wait for runner to be ready (rejects as soon as it closes, with the close\n// reason as `error.cause`)\nawait runner.waitForReady();\n\n// Bidirectional messaging\nrunner.sendMessage({ type: \"ping\" });\nrunner.onMessage((msg) => console.log(msg));\n\n// Request-response RPC\nconst result = await runner.rpc<string>(\"transformHTML\", \"<html>...</html>\");\n\n// Hot-reload entry module without restarting the worker (the entry is\n// re-read under its own URL; modules it imports stay cached)\nawait runner.reloadModule();\n\n// Add, replace or remove (`null`) virtual modules in one round trip, then reload\nawait runner.updateVirtualModules({ \"#routes\": `export default []`, \"#old\": null });\nawait runner.reloadModule();\n\n// Invalidate a virtual module (re-runs a factory source), then reload\nawait runner.invalidateModule(\"#config.json\");\nawait runner.reloadModule();\n\n// Graceful shutdown: the worker stops accepting connections, waits for\n// in-flight requests (half the timeout at most: open WebSockets would keep it\n// waiting) and runs `ipc.onClose`, then the runner closes (after the timeout\n// at the latest)\nawait runner.shutdown(5000);\n\n// Or close right away (the worker is terminated); also what happens at the\n// end of the scope (`await using`)\nawait runner.close();\n```\n\n**Available runners:**\n\n| Runner                 | Isolation                       | IPC mechanism                      |\n| ---------------------- | ------------------------------- | ---------------------------------- |\n| `NodeWorkerEnvRunner`  | Worker thread                   | `workerData` / `parentPort`        |\n| `NodeProcessEnvRunner` | Child process (`fork`)          | `process.send` IPC channel         |\n| `BunProcessEnvRunner`  | Bun or Node.js process          | `Bun.spawn` IPC or `fork()`        |\n| `DenoProcessEnvRunner` | Deno process                    | `deno run` with IPC channel        |\n| `SelfEnvRunner`        | In-process                      | In-memory channel                  |\n| `MiniflareEnvRunner`   | Cloudflare Workers (miniflare)  | WebSocket pair via `dispatchFetch` |\n| `VercelEnvRunner`      | Worker thread (Vercel context)  | `workerData` / `parentPort`        |\n| `NetlifyEnvRunner`     | Worker thread (Netlify context) | `workerData` / `parentPort`        |\n\n#### Public listener (`listen`)\n\nBy default the worker's server listens on a random loopback port, and the host proxies requests to it (`runner.fetch()`, `manager.wsSrvxPlugin()`). In production, that means two HTTP servers per request. With the `listen` option, the worker's server binds the public address instead, and clients (WebSockets included) reach it directly. The host only supervises it: readiness, `shutdown()`, and restarting it when it crashes (`onClose`). Supported by `NodeWorkerEnvRunner`, `NodeProcessEnvRunner`, `BunProcessEnvRunner`, `DenoProcessEnvRunner` and `SelfEnvRunner`; `MiniflareEnvRunner` closes with an error when it is set.\n\n```ts\nimport { RunnerManager } from \"env-runner\";\nimport { NodeProcessEnvRunner } from \"env-runner/runners/node-process\";\n\nconst manager = new RunnerManager();\n\nconst start = () =>\n  manager.reload(\n    new NodeProcessEnvRunner({\n      name: \"my-app\",\n      data: { entry: \"./server.ts\" },\n      listen: {\n        port: 3000, // default: `PORT`, then 3000 (`0`: a free port)\n        // hostname: \"localhost\", // default: `HOST`, then all interfaces\n        // tls: { cert: \"./cert.pem\", key: \"./key.pem\" }, // PEM contents or paths: HTTPS\n        // reusePort: true,\n        // silent: false, // print the listening address from the worker\n      },\n    }),\n  );\n\nmanager.onReady((_runner, address) => console.log(\"Listening on\", address));\n// Restart a worker that crashed (add a backoff for one failing to start).\n// Not called for runners the manager closes itself (`reload()`, `shutdown()`).\nmanager.onClose(() => start());\nawait start();\n\nfor (const signal of [\"SIGINT\", \"SIGTERM\"]) {\n  process.once(signal, () => manager.shutdown());\n}\n```\n\nThe options are the srvx ones of the same names (the entry's own listener options stay ignored; its `reusePort` applies unless `listen` sets it). `address` is where the host reaches the worker: a wildcard hostname is reported as loopback (`127.0.0.1` or `::1`), and `protocol` is `\"https\"` with `tls`. `runner.fetch()` and `runner.upgrade()` keep working for internal requests (over HTTPS without verifying the certificate, which is for the public hostname). A failure to listen (e.g. the port is taken) closes the runner with the error as cause. The worker never handles signals itself: shut it down from the host with `shutdown()`.\n\n`SelfEnvRunner` starts the server in the host process instead, with the same options: no worker startup and no round trips (to the worker, or for plugin hooks). The entry's srvx options (`middleware`, `plugins`, `error`, `trustProxy`, ...) then also apply to `runner.fetch()`, which calls the server's handler directly, and `reloadModule()` swaps the `fetch` it serves (as on the other runners, the other options are read once at start). `shutdown()` stops accepting connections and waits for in-flight requests (for half the timeout at most) before `ipc.onClose`; `close()` also drops open connections, WebSockets included.\n\n#### Virtual Modules\n\nAll runners (the Node.js runners `NodeWorkerEnvRunner`, `NodeProcessEnvRunner` and the runners built on top of them, `BunProcessEnvRunner`, `DenoProcessEnvRunner` (Deno >= 2.8), `MiniflareEnvRunner` and `SelfEnvRunner`) can serve **virtual modules** from an in-memory `specifier => source` map passed via `data.virtual`. The entry (and its dependencies) can then `import` them as if they were real files:\n\n```ts\nimport { NodeWorkerEnvRunner } from \"env-runner/runners/node-worker\";\n\nawait using runner = new NodeWorkerEnvRunner({\n  name: \"my-app\",\n  data: {\n    entry: \"./app.ts\",\n    virtual: {\n      \"#config\": `export const apiBase = \"https://api.example.com\";`,\n      \"#banner\": `export default \"Hello from a virtual module!\";`,\n    },\n  },\n});\n```\n\n```ts\n// app.ts\nimport banner from \"#banner\";\nimport { apiBase } from \"#config\";\n\nexport default {\n  fetch: () => new Response(`${banner} (${apiBase})`),\n};\n```\n\nThe **entry itself can be virtual** — set `data.entry` to one of the `data.virtual` keys (exactly as written in the map) to run an entry whose source lives in memory (it may import other virtual modules too):\n\n```ts\nawait using runner = new NodeWorkerEnvRunner({\n  name: \"my-app\",\n  data: {\n    entry: \"#entry\",\n    virtual: {\n      \"#entry\": `import { body } from \"#dep\";\n        export default { fetch: () => new Response(body) };`,\n      \"#dep\": `export const body = \"Hello from a virtual entry!\";`,\n    },\n  },\n});\n```\n\nKeys can also be **file paths**: absolute paths (including Windows `C:\\...`) or `file://` URLs. Such a module behaves like a file at that path, whether or not its directory exists on disk:\n\n- it is matched by resolved URL, so any relative or absolute import that resolves to it is served from the map, whether the importer is a virtual module or a real file. A key equal to a real file's path therefore **overrides that file** for every importer.\n- it runs under its real `file:` URL, so `import.meta.url`, `import.meta.dirname` and `import.meta.filename` point at the key.\n- its own imports (relative files, bare packages) resolve from the key's directory.\n- as `data.entry`, it may be written either way (`/app/x.mjs` for a `file:///app/x.mjs` key, or the reverse). It is still run from the map on load and across `reloadModule()`, even when a real file exists there.\n\n```ts\nimport { join, resolve } from \"node:path\";\n\nconst dir = resolve(\"src/generated\"); // doesn't need to exist\n\nawait using runner = new NodeWorkerEnvRunner({\n  name: \"my-app\",\n  data: {\n    entry: join(dir, \"entry.mjs\"),\n    virtual: {\n      [join(dir, \"entry.mjs\")]: `import { body } from \"./body.mjs\";\n        export default { fetch: () => new Response(body) };`,\n      [join(dir, \"body.mjs\")]: `export const body = \"Hello from \" + import.meta.filename;`,\n      // Overrides the real `src/config.mjs` for all of its importers\n      [resolve(\"src/config.mjs\")]: `export default { mode: \"virtual\" };`,\n    },\n  },\n});\n```\n\nOther keys (`#name`, bare names) only match an import specifier equal to the key, and relative imports inside them resolve from the working directory. Having no file, they get a runtime-specific id, shown by `import.meta.url` and stack traces: `virtual:#config` on Node.js and Deno, `file:///%23config` on Bun (`file:///env-runner-virtual:%23util.mjs` for keys with an extension), while on miniflare `import.meta.url` is undefined and stack traces show the key itself. A `?query` appended to an import is ignored for matching (`#config.json?raw` matches `#config.json`), but gives a separate module instance. Path keys are fully supported on the Node.js, Bun and Deno runners, with these exceptions:\n\n- On Bun (`BunProcessEnvRunner`, and the Node.js runners when the host runtime is Bun), runtime plugins only see a specifier whose last `.` is followed by a letter, typically a file extension. A key without an extension (`#config`, `/app/entry`) therefore only matches an import spelled exactly like the key: no appended `?query`, and no relative or `file://` import of an extensionless path key.\n- `MiniflareEnvRunner` supports relative imports and overrides, and treats `file://` keys and imports like their path, but `import.meta.url` is undefined.\n\nOn both, a virtual `data.entry` must be written exactly like its key.\n\n`SelfEnvRunner` registers the loader hooks in the **host process**, which suits a one-time server start. They apply to every import in the process (host code included; between live self runners, the latest one wins a key), they stay loaded on Bun (its plugins can't be removed), and the module cache only grows with updates and reloads. Path keys run under their `file:` URL plus a `?v=<n>` query there (also in `import.meta.url`), so the real file's URL never holds a virtual instance. When the host itself runs under a module runner that handles `import()` (such as Vitest's), its imports don't reach the hooks.\n\nTwo path keys naming the same file (`/app/x.mjs` and `file:///app/x.mjs`) can't both be served, so the runner logs a warning naming both. Keep a single key per file.\n\nKeys match **every importer** in the worker, dependencies included, like an import map entry. A bare key such as `react` replaces that package everywhere (useful to alias or stub it), and a `#name` key also replaces a dependency's own `#name` [subpath import](https://nodejs.org/api/packages.html#subpath-imports). There is no warning for this, since overriding a package is often the point, so give your own modules distinctive names (`#app/config` rather than `#utils`).\n\nEach source may also be a **factory** returning a source (or a promise of one) — useful for lazily computed or asynchronously loaded sources:\n\n```ts\nawait using runner = new NodeWorkerEnvRunner({\n  name: \"my-app\",\n  data: {\n    entry: \"./app.ts\",\n    virtual: {\n      \"#config\": () => `export const apiBase = ${JSON.stringify(getApiBase())};`,\n      \"#schema\": async () => `export default ${await loadSchemaJson()};`,\n    },\n  },\n});\n```\n\nFactories are invoked once on the host (before the worker is spawned), so the worker always receives resolved sources — functions can't cross the `workerData`/`JSON` boundary, and Node's synchronous load hook can't await. For the same reason, **all** factories are resolved eagerly at startup (in parallel), not lazily on first import — so keep them cheap, or use plain sources for modules that don't need computation. Maps without factories skip this step entirely.\n\nTo refresh a single virtual module without restarting the worker, call `invalidateModule(specifier)`: a factory-valued source is re-run on the host and the module is invalidated in the worker so its **next import evaluates fresh**. Virtual modules that import the invalidated one (directly or transitively) are invalidated along with it, so the fresh module is picked up even through intermediate virtual importers. On Node.js, Bun and Deno this follows the imports that were actually resolved, and on miniflare the import specifiers of the virtual sources, including relative ones between path keys. On Node.js and Deno it also covers **real files** on the way from the entry, such as a `./lib.mjs` importing `#config`: they are re-evaluated on the next reload too, while files that don't depend on the module stay cached. CommonJS files are never re-evaluated. On Bun and miniflare, a real file other than the entry keeps the old module. Already-imported modules keep their instances, so pair it with `reloadModule()` to re-import the entry graph:\n\n```ts\nawait runner.invalidateModule(\"#config\"); // re-runs the factory, busts the module\nawait runner.reloadModule(); // re-imports the entry, picking up the fresh module\n```\n\nWhen fetching through `RunnerManager` or `EnvServer`, the reload is automatic: `invalidateModule()` marks the manager dirty and the next `fetch()` reloads the entry once before serving (concurrent fetches share the reload), so no explicit `reloadModule()` call is needed.\n\nTo change the map itself while the runner is running, call `updateVirtualModules(changes)`. A source (string or factory) **adds or replaces** a key, and `null` **removes** it. All changes of one call are applied together in a single round trip to the worker:\n\n```ts\nawait runner.updateVirtualModules({\n  \"#routes\": `export default [\"/\", \"/about\"]`, // add or replace\n  [resolve(\"src/generated/api.mjs\")]: () => generateApi(), // factories run on the host\n  \"#legacy\": null, // remove\n});\nawait runner.reloadModule(); // or let RunnerManager/EnvServer reload on the next fetch\n```\n\nChanged and removed keys are invalidated like `invalidateModule()` does, together with the modules importing them, so the next `reloadModule()` sees the new map:\n\n- An **added** key resolves from then on, path keys included. An importer that failed to import it, or that loaded the real file it now overrides, picks it up once it is re-evaluated: the reloaded entry, virtual importers, and on Node.js and Deno also real files between them. A runner started without `data.virtual` registers its virtual modules on the first update, and real files it loaded before aren't tracked as importers.\n- A **removed** key falls through to normal resolution: the real file it overrode, or a \"not found\" error. On Bun, a removed key without a file extension (see the Bun notes above) fails to load instead of falling through, and on miniflare an unresolvable bare specifier gets an empty module, as usual there.\n\nCalls are applied one at a time in call order (a later call never loses to a slower factory of an earlier one), and `reloadModule()` waits for pending ones. A call made before the runner is ready waits for it. `invalidateModule(specifier)` is the same as updating the key with its current source. The runner keeps its own copy of the map, never changing your `data.virtual`. `RunnerManager.updateVirtualModules()` marks the manager dirty like `invalidateModule()`, and `EnvServer` also keeps the changes for the runners it creates later (`reload()`, watch mode). Changes made before the server started are only recorded, and the first runner starts with them.\n\nEach module has a **format**. By default it follows the key's extension, like Node.js does for files: `.cjs` is CommonJS, `.ts`/`.mts` TypeScript, `.cts` CommonJS TypeScript, `.json` JSON, `.jsx`/`.tsx` JSX and `.wasm` WebAssembly. Any other string is an ES module, and any other `Uint8Array` raw bytes. To set the format explicitly, for example on a key without an extension, pass `{ source, format }`:\n\n```ts\nimport { readFileSync } from \"node:fs\";\n\nawait using runner = new NodeWorkerEnvRunner({\n  name: \"my-app\",\n  data: {\n    entry: \"#entry.ts\",\n    virtual: {\n      \"#entry.ts\": `\n        import { getGreeting } from \"#util.ts\";\n        import config from \"#config\";\n        import legacy from \"#legacy.cjs\";\n        import logo from \"#logo\";\n        import add from \"#add.wasm\";\n        const { exports } = await WebAssembly.instantiate(add);\n        const handler: () => Response = () =>\n          new Response(\\`\\${getGreeting(config.name)} \\${legacy.answer} \\${logo.length} \\${exports.add(1, 2)}\\`);\n        export default { fetch: handler };\n      `,\n      \"#util.ts\": `export function getGreeting(name: string): string {\n        return \\`Hello, \\${name}!\\`;\n      }`,\n      \"#config\": { source: JSON.stringify({ name: \"virtual\" }), format: \"json\" },\n      \"#legacy.cjs\": `module.exports = { answer: 42 };`,\n      \"#logo\": readFileSync(\"logo.png\"), // a Uint8Array: `bytes`\n      \"#add.wasm\": readFileSync(\"add.wasm\"),\n    },\n  },\n});\n```\n\n| Format                | Default for                | Source       | Importing it gives                                |\n| --------------------- | -------------------------- | ------------ | ------------------------------------------------- |\n| `module`              | other string sources       | string       | the ES module                                     |\n| `commonjs`            | `.cjs`                     | string       | `module.exports` as default export, named exports |\n| `module-typescript`   | `.ts`, `.mts`              | string       | the ES module, types stripped                     |\n| `commonjs-typescript` | `.cts`                     | string       | like `commonjs`, types stripped                   |\n| `json`                | `.json`                    | string       | the parsed value as default export                |\n| `jsx`, `tsx`          | `.jsx`, `.tsx`             | string       | the ES module (Bun only)                          |\n| `text`                | —                          | string       | the string as default export                      |\n| `bytes`               | other `Uint8Array` sources | `Uint8Array` | a `Uint8Array` as default export                  |\n| `wasm`                | `.wasm`                    | `Uint8Array` | a compiled `WebAssembly.Module` as default export |\n\nThe code formats are named like Node's [load formats](https://nodejs.org/api/module.html#loadurl-context-nextload), and `text` and `bytes` like the `with { type }` import attributes proposed for them (import them without attributes, though). An unknown format, or a source that doesn't fit its format (a `Uint8Array` for `json`, a string for `wasm`, bytes that aren't valid WebAssembly), closes the runner at startup with an error naming the key, or rejects `updateVirtualModules()` before anything changes.\n\n- **TypeScript** is type-stripped by Node's native [type stripping](https://nodejs.org/api/typescript.html#type-stripping) (Node.js >= 22.18 / 23.6 — erasable syntax only) and by Bun's `ts` loader. On Deno, custom load hooks bypass its native type stripping, so sources are pre-stripped with [`module.stripTypeScriptTypes`](https://docs.deno.com/api/node/module/~/Module.stripTypeScriptTypes) (Deno >= 2.8.2); on older Deno without it, virtual TypeScript sources **throw at registration** — pass pre-transpiled JavaScript instead. On miniflare, sources are likewise pre-stripped with `module.stripTypeScriptTypes` on the host (workerd does not parse TypeScript).\n- **JSON** sources expose the parsed value as the default export on all runtimes. The `with { type: \"json\" }` import attribute is optional on Node.js and Bun; on Deno and miniflare it must be **omitted** (static imports carrying an import attribute bypass `registerHooks` resolution on Deno, and workerd rejects import attributes outright).\n- **CommonJS** is loaded natively by Node.js and workerd (miniflare). Bun and Deno only parse in-memory sources as ES modules, so there the source runs inside an ES module wrapper, as strict-mode code. Named exports are detected like Node.js does ([cjs-module-lexer](https://github.com/nodejs/cjs-module-lexer)), but re-exports (`module.exports = require(\"./other.cjs\")`) only add named exports on Node.js. `require()` resolves packages, real files and other virtual modules, with these exceptions:\n  - On Deno, `require()` only reaches real files and packages, not virtual modules (Deno reads required files from disk), and requiring an ES module crashes Deno 2.9 while module hooks are registered (a Deno bug).\n  - On miniflare, a virtual module that is `require()`d keeps its first instance when it changes (`invalidateModule()`, updates): only `import` specifiers are rewritten. Import it instead, or restart the runner.\n  - On Node.js, after a module re-exported by CommonJS (`module.exports = require(\"./dep.cjs\")`) changes, Node reads it as an empty, circular module (this happens with real files too after deleting them from `require.cache`). Assign it first (`const dep = require(\"./dep.cjs\"); module.exports = dep;`).\n- **Text and bytes** can't be imported from memory natively on every runtime, so they are served as ES modules where needed. `bytes` gives each module instance its own `Uint8Array`. Bytes survive every transport, including the process runners' JSON IPC (as base64) and `updateVirtualModules()`.\n- **WebAssembly** default-exports a compiled [`WebAssembly.Module`](https://developer.mozilla.org/docs/WebAssembly/Reference/JavaScript_interface/Module) on every runtime, so instantiate it yourself with `WebAssembly.instantiate(module, imports)`. This follows workerd, which compiles `.wasm` modules ahead of time and disallows compiling Wasm at runtime. Node.js and Deno's own `.wasm` imports instantiate the module instead ([Wasm ESM integration](https://github.com/WebAssembly/esm-integration)), and Bun's give a file path, so those aren't used.\n- **JSX** is only supported on Bun, by its `jsx`/`tsx` loaders (configure the JSX runtime with `tsconfig.json` or pragma comments like `/** @jsxImportSource preact */`). Node.js, Deno and miniflare can't load JSX from memory and fail with an error naming the key: pre-transpile it to JavaScript, and pass `{ source, format: \"module\" }` to keep a `.jsx`/`.tsx` key, or compile it with [plugins](#plugins-plugins).\n\nVirtual modules are registered inside the worker, before the entry is imported. On Node.js (>= 22.15 / 23.5) and Deno (>= 2.8) this uses [ESM customization hooks](https://nodejs.org/api/module.html#moduleregisterhooksoptions) (`module.registerHooks`); on Bun (which does not implement `registerHooks`) it uses a [`Bun.plugin()`](https://bun.com/docs/runtime/plugins) runtime plugin instead, also for the Node.js runners when the host runtime is Bun. Each source is served in its format, and virtual specifiers (including a virtual entry) resolve across `reloadModule()`. On runtimes supporting neither mechanism, a warning is logged and registration is skipped. When the worker shuts down gracefully the registration is unregistered again (the `registerHooks` registration is deregistered; on Bun, which has no plugin-removal API, the registration is detached so fresh loads and reloads stop resolving, and an overridden real file loads from disk again).\n\nOn `MiniflareEnvRunner` there is no in-worker registration: the runner's module fallback service serves virtual specifiers to workerd directly (taking precedence over disk files and the `transformRequest` pipeline, so a virtual key overrides a real file with the same path). Named `exports` (Durable Objects / WorkerEntrypoints / Workflows) also work with virtual entries.\n\n#### Plugins (`plugins`)\n\nPass the `plugins` runner option to resolve, load and transform the entry, its imports and virtual modules with **plugins that run on the host**. While resolving an import or loading a module, the worker sends it to the runner, the runner runs the plugins' `resolveId`, `load` and `transform` handlers and sends the result back, and the worker uses that result. Plugins are plain objects in the host process, so handlers can be async, close over host state and share work with the rest of your tooling. It works on every runner (an empty list, or plugins without these hooks, count as no `plugins`); on `SelfEnvRunner`, handlers must be synchronous (see below). `loadRunner()` and `EnvServer` take the same `plugins` option (`EnvServer` passes it to every runner it creates).\n\n> The runner `plugins` option is unrelated to the srvx server `plugins` of your [app entry](#app-entry): those stay on the entry's default export.\n\n**`SelfEnvRunner`:** there is no worker to wait while the host runs a handler, so the plugins run inside the host process's own loader hooks (`module.registerHooks` on Node.js and Deno, `Bun.plugin` on Bun), which are synchronous. Handlers for imports and disk modules must return their result directly: one returning a Promise fails that import with an error naming the plugin, hook and module (the `oxc` plugin below works as is, the async `version` one doesn't). Virtual modules are transformed before they are registered, so async handlers still work for them. In synchronous hooks, `this.resolve()` returns the result itself instead of a Promise (`await` works for both). The hooks apply to every import in the host process until the runner closes, and modules the process already loaded stay cached as they were.\n\nTypeScript enums, namespaces and JSX need a compiler. A plugin with [`oxc-transform`](https://oxc.rs/docs/guide/usage/transformer) (`npm i -D oxc-transform`) covers them:\n\n```js\nimport { transformSync } from \"oxc-transform\";\nimport { NodeProcessEnvRunner } from \"env-runner/runners/node-process\";\n\nconst oxc = {\n  name: \"oxc\",\n  transform: {\n    filter: { moduleType: [\"ts\", \"tsx\", \"jsx\"], id: { exclude: \"**/generated/**\" } },\n    handler(code, id, { moduleType }) {\n      const result = transformSync(id, code, { sourcemap: true, lang: moduleType });\n      // `errors` also holds warnings: only fail on errors.\n      const errors = result.errors.filter((error) => error.severity === \"Error\");\n      if (errors.length > 0) this.error(errors.map((error) => error.message).join(\"\\n\"));\n      return { code: result.code, map: result.map, moduleType: \"js\" };\n    },\n  },\n};\n\nconst version = {\n  name: \"version\",\n  transform: {\n    order: \"pre\", // \"pre\" | \"post\" (default: unordered)\n    filter: { id: \"src/**\", moduleType: [\"ts\", \"tsx\"], code: \"__VERSION__\" },\n    async handler(code) {\n      // Any async work on the host (`readVersion()` is your own).\n      return code.replaceAll(\"__VERSION__\", JSON.stringify(await readVersion()));\n    },\n  },\n};\n\nconst runner = new NodeProcessEnvRunner({\n  name: \"my-app\",\n  plugins: [oxc, version],\n  data: { entry: \"./src/server.tsx\" },\n});\n```\n\n`transform` can also be a plain function. Handlers get `(code, id, { moduleType })` and return a string, `{ code, map, moduleType }`, or nothing to keep the code (`moduleSideEffects` and `meta` in a result are ignored). Nested arrays in `plugins` are flattened and falsy entries skipped, so a plugin can be added conditionally (`isDev && plugin`).\n\nIn every handler, `this` has:\n\n- `this.warn(message)` and `this.info(message)` log, and `this.error(message)` throws, all prefixed with the plugin name and module id. `message` can also be a log object, `{ message, loc?, pos?, frame? }`. A position (a second argument, else the log's `loc` `{ line, column }` or `pos` offset) is appended to the id as `:line:column`, and a `frame` goes below the message. `this.debug()` is ignored.\n- `this.resolve(source, importer?, { skipSelf?, isEntry?, attributes? })` resolves an import on the host as the runner would. It runs the `resolveId` hooks, then Node.js ESM resolution from `importer` (or the working directory) with the runner's export conditions, then the `fallback` hooks (below). It returns `{ id, external }`, with builtins (`node:fs`) as external, or `null` when nothing resolves it; like Node.js, it tries no extensions or directory indexes. Called from a `resolveId` handler, it skips that plugin's own hook (`skipSelf: false` keeps it), also when another plugin asks again for the same source and importer.\n- `this.addWatchFile()` is accepted and ignored (`this.getWatchFiles()` is empty), and `this.meta.watchMode` is `false`.\n\nErrors a handler throws are reported the same way, with the plugin name and module id, and a `loc`/`pos` and `frame` of the error: `[env-runner] plugin \"version\" failed on \"/app/src/index.ts:3:10\": ...`. Positions are in the code the hook got (after earlier hooks changed it). Other hooks (`buildStart`, `renderChunk`, ...) are ignored, and handlers find no other context methods (`this.emitFile`, `this.parse`, ...): calling one fails with a `TypeError`.\n\n**Resolving and loading modules:** `resolveId` and `load` hooks serve modules that aren't files, redirect imports, or load files the runtime can't:\n\n```js\nconst virtual = {\n  name: \"virtual\",\n  resolveId: {\n    filter: { id: /^virtual:/ },\n    handler(source, importer) {\n      // `\\0` marks an id that isn't a file.\n      if (source === \"virtual:routes\") return \"\\0virtual:routes\";\n    },\n  },\n  load: {\n    filter: { id: /^\\0virtual:/ },\n    async handler(id) {\n      if (id === \"\\0virtual:routes\") return `export default ${JSON.stringify(await scanRoutes())};`;\n    },\n  },\n};\n\nconst alias = {\n  name: \"alias\",\n  resolveId: {\n    filter: { id: \"@/**\" },\n    handler: (source) => resolve(\"src\", source.slice(2)), // an absolute path loads that file\n  },\n};\n\nconst yaml = {\n  name: \"yaml\",\n  transform: {\n    filter: { id: /\\.ya?ml$/ },\n    handler: (code) => `export default ${JSON.stringify(parseYAML(code))};`,\n  },\n};\n\n// `import svg from \"./logo.svg?raw\"`: the file's text as the default export.\nconst raw = {\n  name: \"raw\",\n  load: {\n    filter: [{ kind: \"include\", expr: { kind: \"query\", key: \"raw\", pattern: true } }],\n    handler(id) {\n      const code = readFileSync(id.slice(0, id.indexOf(\"?\")), \"utf8\");\n      return { code: `export default ${JSON.stringify(code)};`, moduleType: \"js\" };\n    },\n  },\n};\n```\n\n- `resolveId(source, importer, { isEntry, attributes })` runs for the imports its filter matches, with the specifier as written, query included (`file:` URLs as paths). `importer` is the importing module's id (a path with its query, or an id a `resolveId` hook returned), and `undefined` for the entry. The first handler returning a result wins. Returning nothing leaves the import to the next plugin, then to the runtime.\n- A resolved absolute path (a query is kept) loads that file, through `load` hooks and then from disk. A path that is a key of `data.virtual` loads that virtual module, also without a file on disk. Any other id, like `\\0virtual:routes`, must be returned by a `load` hook, and relative imports inside such a module resolve from the working directory.\n- **`fallback: true`** makes a `resolveId` hook run only for imports the runtime fails to resolve, after the runtime tried. The worker tries first, so imports it resolves take no round trip, unlike other `resolveId` hooks, which run before the runtime for every import their filter matches. Use it for imports the runtime can't resolve itself, like extensionless relative imports (`./utils`), which Bun resolves itself:\n\n  ```js\n  const extensionless = {\n    name: \"extensionless\",\n    resolveId: {\n      fallback: true,\n      filter: { id: /^\\.\\.?\\// },\n      handler: (source, importer) =>\n        [\".ts\", \".mts\", \"/index.ts\"]\n          .map((ext) => join(dirname(importer), source + ext))\n          .find((path) => existsSync(path)),\n    },\n  };\n  ```\n\n`false` or `{ id, external: true }` leaves the import (or the returned id) to the runtime. Only Node.js and Deno import a different non-path id returned with `external`; Bun and miniflare keep the original specifier, so return an unchanged id or a path for portable externals.\n\n- `load(id)` returns the module's code, or `{ code, map, moduleType }`. The first handler returning code wins, and `transform` hooks run on the result. Without a `moduleType`, it is the id's type (`js` for other extensions). When no `load` hook returns code, the file is read from disk (without the id's query).\n- **Queries:** ids keep the import's query (`/app/logo.svg?raw`), in `load`, `transform` and filters, and the query is part of the module's identity: `./dep.ts` and `./dep.ts?raw` are separate modules on every runner. The module type comes from the path (`svg` there). Query params env-runner adds itself (reload cache-busting, virtual module versions, Bun and miniflare markers) are removed from the ids plugins see, and the import's own params are kept as written.\n- `resolveId` and `load` filters take only `id` (or filter expressions without `code` and `moduleType`). For `resolveId`, `id` matches the specifier with its query, and globs aren't resolved from the working directory (`virtual:*`, `@/**`).\n- Error messages name the hook: `[env-runner] plugin \"virtual\" failed to load \"\\0virtual:routes\": ...`.\n- **`.wasm`**: a `load` hook (an `id` filter like `/\\.wasm$/` names the type) returns an ES module wrapper around the file. On Node.js, Deno and Bun it can inline the bytes and compile them. workerd can't compile bytes at runtime, so on miniflare the wrapper imports the file as a compiled module (with a query the hook's filter leaves out, served by the runner as a WebAssembly module) and instantiates it:\n\n  ```js\n  const wasm = (workerd = false) => ({\n    name: \"wasm\",\n    load: {\n      filter: { id: /\\.wasm$/ },\n      handler(id) {\n        const bytes = readFileSync(id);\n        const names = WebAssembly.Module.exports(new WebAssembly.Module(bytes)).map((e) => e.name);\n        return [\n          workerd\n            ? `import module from ${JSON.stringify(`${id}?module`)};`\n            : `const module = new WebAssembly.Module(Uint8Array.from(atob(\"${bytes.toString(\"base64\")}\"), (c) => c.charCodeAt(0)));`,\n          \"const { exports } = new WebAssembly.Instance(module);\",\n          ...names.map((name) => `export const ${name} = exports.${name};`),\n        ].join(\"\\n\");\n      },\n    },\n  });\n  ```\n\n**Which modules are sent:**\n\n- Candidates are files outside `/node_modules/`, modules a `resolveId` hook resolved, and virtual modules with a code format.\n- Files under `/node_modules/` only go to hooks with a matching `id` include that names `node_modules` (like `**/node_modules/my-pkg/**`, or an include filter expression with such an `id`), or to every matching hook when a `resolveId` hook returned their path.\n- The worker gets each `load` and `transform` hook's `id` and `moduleType` filters (or its filter expressions). It only sends a candidate that one of them may match. A hook without these filters matches every script. The code isn't known in the worker, so `code` filters are checked on the host. Anything else loads without a round trip, so **give every plugin a `moduleType` filter, and an `id` filter where you can**.\n- Scripts (module types `js`, `jsx`, `ts`, `tsx`) go to every hook whose filter matches. Other files only go to hooks whose filter names them:\n  - an `id` include that matches (like `/\\.ya?ml$/`, or `src/**`), or, in filter expressions, an include that matches through an `id` (or a present `query` param), not only through `code` or `not`;\n  - for `.json`, `.node` and `.wasm`, which runtimes load themselves, a `moduleType` filter listing the type (`[\"json\"]`, or a `moduleType` expression in the matching include) or a `load` hook's `id` include.\n- Only imports that some `resolveId` filter matches are sent, so give `resolveId` hooks an `id` filter: without one, every import goes to the runner. Imports matching only `fallback` hooks' filters are sent only when the runtime fails to resolve them.\n- On the host, each handler runs only when its whole filter matches the current code.\n\n**Filters**: all given properties must match, and empty ones (`\"\"`, `null`, `[]`) are ignored. Ids are matched with their path `/`-separated and **with their query string**, by globs and RegExps alike: `**/*.svg` and `/\\.svg$/` don't match `/app/logo.svg?raw`, while `/\\.svg(\\?.*)?$/` and `**/*.svg{?*,}` match it with or without a query. A `query` filter expression (below) matches the params.\n\n- `id`: RegExps are tested, strings are globs: `*` (within a path segment), `?`, `**` (any number of segments, so `src/**` matches below `src/`), `[abc]`, `[a-z]`, `[!abc]`, `{a,b}` (also nested) and `\\` escapes. Globs are case-sensitive, have no extglobs, and `*`/`**` also match dot files and directories (`**/*.ts` includes `.nitro/`). Globs not starting with `**` and not absolute are resolved from the working directory when the runner is created (`src/**`, `*.ts`); characters like `[` or `{` in that directory match literally. On Windows, an absolute glob written with `\\` separators only (`C:\\app\\*.ts`) treats them as separators, so use `/` to escape characters there.\n- `code`: strings are substrings, RegExps are tested.\n- `moduleType`: a non-empty list, or `{ include }`. It starts as the module's language: `js`, `jsx`, `ts`, `tsx` or `json` from the extension (or a virtual module's format), and the extension itself for other files (`vue`, `yaml`).\n- Values can be arrays or `{ include, exclude }`, and exclude wins. RegExp `g`/`y` flags are ignored (every test matches anywhere in the value).\n- Invalid values (a pattern that is neither a string nor a RegExp, an empty `moduleType` list) throw a `TypeError` when the runner is created.\n\n`filter` can also be a list of **filter expressions**, objects with a `kind`:\n\n```js\nconst filter = [\n  { kind: \"exclude\", expr: { kind: \"id\", pattern: \"**/vendor/**\" } },\n  {\n    kind: \"include\",\n    expr: {\n      kind: \"and\",\n      args: [\n        { kind: \"moduleType\", pattern: \"ts\" },\n        { kind: \"not\", expr: { kind: \"code\", pattern: /@generated/ } },\n      ],\n    },\n  },\n];\n```\n\n- The list holds `include` and `exclude` entries, and the first one whose `expr` matches decides. If none matches, the module matches only when there are no `include` entries.\n- `expr` combines `and` / `or` (`args`) and `not` (`expr`) over `id`, `code` and `moduleType` (`pattern`), matched like the properties above.\n- `query` (`key`, `pattern`) matches the id's query, parsed with `URLSearchParams` (decoded, without a `#` fragment): `pattern: true` matches when `key` is present (`?raw`, `?raw=0`), `false` when it's absent, a string equals its value (`\"\"` for `?raw`), and a RegExp tests it (`\"\"` when absent). `importerId` is rejected.\n- The worker sends a module unless its expressions can't match whatever the code is.\n\n**Rules:**\n\n- **Order:** `pre` handlers, then unordered ones, then `post` ones. Within each group, plugins are sorted by their `enforce` (`\"pre\"` plugins first, `\"post\"` last), then `plugins` order is kept, so list a compiling plugin before plugins that expect JavaScript.\n- **Output:** a compiling handler returns `moduleType: \"js\"`, and later handlers see it. If no handler changed a module, it loads as if unmatched. Output still typed as `ts` is left to the runtime's type stripping, like an untransformed file (on miniflare, the host strips it), so a code-only plugin doesn't need a compiler before it. Output still typed as `jsx`/`tsx` fails to load.\n- **Other file types:** a handler that turns another file type (`yaml`) into code without returning a `moduleType` makes it `js`. JSON stays JSON while it parses as JSON, and is served as a JSON module: with `with { type: \"json\" }` (or `require()`) where the runtime expects one, else as an ES module with the value as default export and its top-level keys as named exports.\n- **Source maps are not composed:** the first returned `map` is appended inline, and a second one drops both (with a warning, once per pair of plugins). Code-only results keep the current map, so keep such changes line-preserving.\n- **Errors** from a handler fail the import of that module in the worker, as the error message (with its position and frame). At startup, the runner closes with it as the cause (`waitForReady()` rejects, and `RunnerManager.onClose()` listeners get it). On `reloadModule()`, the reload rejects with it and the previous entry keeps serving. On miniflare, a named import of the failing module can fail to link first, so the error is also logged on the host.\n- **Order with virtual modules and other hooks:** virtual modules come first. An import of a `data.virtual` key never reaches `resolveId` hooks (virtual modules are transformed on the host before they are sent), and a path a `resolveId` hook returns that is a virtual key loads that virtual module. On Node.js and Deno, a `module.registerHooks()` call in the entry registers hooks that run before env-runner's, for imports after it (hooks registered later run first; their `nextResolve()`/`nextLoad()` reach env-runner's). On Bun, env-runner's callbacks run before those of a `Bun.plugin()` in the entry, which only get what env-runner's leave. On miniflare, the order is virtual modules, `resolveId` hooks, resolution on the host, `fallback` hooks, `transformRequest`, then `load` and `transform` hooks.\n- **Cost:** each module sent is one blocking round trip. Measured on an app of 400 small modules (Node.js 24, Bun 1.4, Deno 2.9, one desktop machine): about 50 µs per module with `NodeWorkerEnvRunner`, and 150 to 330 µs per module with the process runners, which also pay a fixed 10 to 30 ms at startup. A `resolveId` hook costs about the same per import it matches. A plugin whose filters match no module still runs the load hook for every module: about 20 µs per module with `NodeWorkerEnvRunner`, 50 µs on Bun and 115 µs on Deno. Nothing is cached on the host: `reloadModule()` sends only the entry again, since the runtime keeps its imports cached.\n- **Don't wait on the same runner** in a handler (`runner.fetch()`, `rpc()`, ...): its worker is blocked until the handler returns. A transform taking over 10 seconds logs a warning in the worker.\n\nHow it works:\n\n- **Transport:** module loader hooks are synchronous, so the worker blocks until the runner replies. `NodeWorkerEnvRunner` (and the Vercel and Netlify runners) pass the worker a `MessagePort`. The process runners listen on a local socket (a unix socket in a private temporary directory, or a named pipe on Windows), which a helper thread in the worker connects to. CI runs the `NodeProcessEnvRunner` plugin tests on Windows, over the named pipe; Bun and Deno plugins on Windows are untested. If the runner goes away, a pending load throws instead of hanging.\n- **Node.js** and **Deno**: a `module.registerHooks` load hook. The output is ESM or CommonJS: by the package `\"type\"` when Node.js reports it, else `.mts`/`.cts`, else CommonJS only for output with CommonJS markers (`require()`, `module.exports`) and no ESM syntax. Deno evaluates hook output as plain ESM, so it gets TypeScript stripped and CommonJS wrapped as an ES module. Deno reads `require()`d files from disk, untransformed, and untouched CommonJS files load natively (CommonJS `.ts`/`.js` there needs `--unstable-detect-cjs` in the runner's `execArgv`). With that flag, Deno skips load hooks for `.ts` files in packages without `\"type\": \"module\"`, so plugins don't see them: add `\"type\": \"module\"` to that `package.json`, or use `.mts`.\n- **Node.js** and **Deno** resolve imports with a `module.registerHooks` resolve hook, which sees every import. `fallback` hooks get an import when the default resolution throws, or (Deno) resolves to a path without a file.\n- **Bun**: a `Bun.plugin()` `onLoad` with one filter RegExp built from the plugins' `moduleType` filters (implied extensions) and `id` filters (globs match either path separator; on Windows, `id` RegExps are left to the per-module check), not from filter expressions. Bun evaluates plugin output as ESM and can't decline a load, so CommonJS is wrapped as an ES module, also in files the RegExp covers but no plugin matches. `.cjs`/`.cts` never reach it. Other file types are sent while their import is resolved, so a file no plugin changes still loads with Bun's own loader (`.txt`, `.toml`, a path for unknown extensions). Virtual modules are registered first, so a virtual key overriding a file wins, like on Node.js.\n- **Bun imports** go through `onResolve`, which Bun only calls for some specifiers. Bare specifiers without an extension (`~icons/home`, `@/utils`) never reach it, while `@/utils.ts` does. A `scheme:rest` specifier only reaches the callbacks of its scheme, so the runner adds one for each scheme its `resolveId` filters start with (`/^virtual:/`, `\"virtual:*\"`). `onResolve` runs before Bun resolves, so for `fallback` hooks the runner asks `Bun.resolveSync()` first.\n- **Miniflare**: no worker round trip. Imports workerd can't resolve itself, and disk modules, go through the plugins in the module fallback service. Modules that `transformRequest` returns code for are served as is. A plugin error is logged on the host and thrown from the failing module. A persistent instance runs the plugins of the runner currently using it. A `resolveId` result that is a virtual path key is redirected to that key, and `.wasm` files no plugin loads are served as WebAssembly modules.\n- **Virtual modules** are transformed on the host before they are sent, also on `updateVirtualModules()`/`invalidateModule()` (a source that fails to transform rejects the update and changes nothing). This makes JSX work on every runner (e.g. `#entry.tsx`, or `{ source, format: \"tsx\" }`). The output stays in its format's module system.\n- `reloadModule()` sends the entry again; already-imported modules stay cached.\n\n#### Miniflare Runner\n\nRun your app in the Cloudflare Workers runtime using [miniflare](https://github.com/cloudflare/workers-sdk/tree/main/packages/miniflare).\n\n`env-runner` declares no peer dependencies — install `miniflare` (v4 or v5) yourself and pass it to the runner (see [Runtime dependencies](#runtime-dependencies)):\n\n```bash\nnpm install miniflare\n```\n\n```ts\nimport * as miniflare from \"miniflare\";\nimport { MiniflareEnvRunner } from \"env-runner/runners/miniflare\";\n\nawait using runner = new MiniflareEnvRunner({\n  miniflare,\n  name: \"my-worker\",\n  data: { entry: \"./worker.ts\" },\n  miniflareOptions: {\n    compatibilityDate: \"2024-01-01\",\n    kvNamespaces: [\"MY_KV\"],\n  },\n});\n\nconst response = await runner.fetch(\"http://localhost/api\");\n// Request inputs also preserve methods, headers, streaming bodies and cancellation.\n// An optional RequestInit overrides the corresponding Request properties.\n```\n\nPassing `miniflare` explicitly is preferred — the version you install is then the version that runs. A specifier works too (`miniflare: \"miniflare\"`). If you omit it, the runner imports `miniflare` itself and only fails (with an actionable error) when the package isn't installed either. The `miniflareOptions` object is passed directly to the [Miniflare constructor](https://developers.cloudflare.com/workers/testing/miniflare/) — you can configure bindings, KV, D1, Durable Objects, and any other Miniflare option.\n\nThe entry uses the same `AppEntry` format as the other runners, plus an optional `resolveExports()` hook (see [Worker exports](#worker-exports)). Requests are handled like srvx's Cloudflare adapter (`srvx/cloudflare`): the entry's `plugins`, `middleware` and `error` handler are applied, and the request carries `request.runtime` (`{ name: \"cloudflare\", cloudflare: { env, context } }`), `request.ip` (from `cf-connecting-ip`) and `request.waitUntil()`. For Workers-style entries, `fetch` still receives `(request, env, ctx)`. env-runner's internal bindings are never exposed on `env`. Listener-level srvx options (`maxRequestBodySize`, `trustProxy`, `node`/`bun`/`deno`, ...) do not apply to miniflare.\n\nWhen you don't set a compatibility date, it defaults to the date supported by the installed `workerd` binary rather than today's date — the binary always lags the calendar slightly, and pinning a future date makes `workerd` refuse to start. Set the runner's `compatibilityDate` option to pin one, or to `\"latest\"` to use the installed `workerd`'s supported date explicitly (no need to import `miniflare` for `supportedCompatibilityDate`). Precedence: `miniflareOptions.compatibilityDate` > `compatibilityDate` > the wrangler config's `compatibility_date` > the supported date. Whatever the source, a date newer than the installed `workerd` supports falls back to the supported date with a warning (like `wrangler dev`).\n\nAn entry's `websocket` is served with crossws's Cloudflare adapter, which hands upgrades to a Durable Object (by default the `crossws` instance of the `$DurableObject` binding, when it exists). Set the runner's `crossws` option to choose them without adding Cloudflare-specific options to the entry; values the entry sets (not `undefined`) in its own `websocket.options.cloudflare` take precedence:\n\n```ts\nawait using runner = new MiniflareEnvRunner({\n  miniflare,\n  name: \"my-worker\",\n  data: { entry: \"./worker.ts\" },\n  crossws: { bindingName: \"$DurableObject\", instanceName: \"server\" },\n});\n```\n\nThe runner enables the `nodejs_compat` compatibility flag by default. Set `no_nodejs_compat` (in the wrangler config's `compatibility_flags` or in `miniflareOptions.compatibilityFlags`) to opt out; the generated wrapper then avoids Node.js built-ins. If the two sources disagree, `miniflareOptions` wins.\n\n#### Wrangler Config\n\nSet the `wrangler` option to load a Cloudflare [Wrangler config](https://developers.cloudflare.com/workers/wrangler/configuration/) (`wrangler.json` / `wrangler.jsonc` / `wrangler.toml`) into the Miniflare options — compatibility date/flags and bindings (`vars`, KV, R2, D1, Durable Objects, queues):\n\n```ts\nimport { MiniflareEnvRunner } from \"env-runner/runners/miniflare\";\n\nawait using runner = new MiniflareEnvRunner({\n  miniflare,\n  name: \"my-worker\",\n  data: { entry: \"./worker.ts\" },\n  wrangler: true, // auto-discover wrangler.{json,jsonc,toml} (see below)\n  // wrangler: \"./config/wrangler.toml\", // or an explicit path\n  // wranglerEnv: \"production\",          // select a `[env.production]` block\n  // compatibilityDate: \"latest\",        // override the config's compatibility_date\n});\n```\n\nAuto-discovery searches parent directories: when the entry file is inside the current working directory, it walks up from the entry's directory to the filesystem root (so a config at a monorepo root is found for an entry in `apps/web/src/`); when the entry lives elsewhere (e.g. a framework entry hoisted under `node_modules/.pnpm`), only the entry's own directory is checked before walking up from the cwd, so the cwd's config is never shadowed by one above the entry. The nearest directory wins; within one directory `wrangler.json` is preferred over `wrangler.jsonc`, then `wrangler.toml` (unlike `wrangler`, which looks for each filename all the way up before trying the next). A config found in a parent directory is logged once.\n\n`wranglerEnv` selects a named Wrangler environment (`--env`). When omitted, it defaults to the `CLOUDFLARE_ENV` environment variable, so `CLOUDFLARE_ENV=production` selects the `production` env without passing the option.\n\nYou can also pass an **inline** config object (raw `wrangler.json` shape) instead of (or in addition to) a file — handy for programmatic setups:\n\n```ts\nawait using runner = new MiniflareEnvRunner({\n  miniflare,\n  name: \"my-worker\",\n  data: { entry: \"./worker.ts\" },\n  wrangler: {\n    compatibility_date: \"2024-09-01\",\n    compatibility_flags: [\"nodejs_compat\"],\n    vars: { GREETING: \"hello\" },\n    kv_namespaces: [{ binding: \"MY_KV\", id: \"...\" }],\n  },\n});\n```\n\nWhen an inline config is passed, a `wrangler.{json,jsonc,toml}` file is still auto-discovered (as above) and loaded, and the inline config is **merged on top of it** — inline values win per key, binding records (e.g. `vars`) merge, and `compatibilityFlags` are unioned. This lets you keep a committed `wrangler` file and override a few fields programmatically. If the inline config doesn't define the selected `wranglerEnv`, its top level is used as-is (the file's env still applies), and a config that fails to load only warns without discarding the other one.\n\nSet `wranglerConfigPath` to load a specific config file instead of auto-discovering one — with `wrangler: true` or an inline config (which still merges on top), and without changing the working directory:\n\n```ts\nawait using runner = new MiniflareEnvRunner({\n  miniflare,\n  name: \"my-worker\",\n  data: { entry: \"./.nitro/dev/index.mjs\" },\n  wrangler: { vars: { GREETING: \"hello\" } },\n  wranglerConfigPath: \"./wrangler.jsonc\", // relative to cwd\n});\n```\n\nA missing `wranglerConfigPath` file warns (an inline config is still applied). When `wrangler` is itself a string path, that path wins and `wranglerConfigPath` is ignored.\n\nThe runner hosts a single worker, so config entries it can't run are **dropped**: `assets`, `services`, `queues.consumers`, `tail_consumers`/`streaming_tail_consumers`, and Durable Object and Workflow bindings to another script (`script_name`). Durable Object and Workflow bindings to local classes (exported by your entry or an [exports module](#exports-module)) are kept — including bindings whose `script_name` is the worker's own `name` (the inline config's `name` when set, else the file's; with `wranglerEnv` suffixed `-<env>` unless the env section sets a `name`, e.g. `my-worker-staging`), which are local in `wrangler dev` too — and merged with [auto-detected exports](#auto-detected-exports). Pass any of the dropped options via `miniflareOptions` to opt back in.\n\nWhenever `wrangler` is enabled (`true`, a path, or an inline config), local state (KV, D1, R2, Durable Objects, ...) persists under `<dir>/.wrangler/state/v3` — the same place `wrangler dev` uses, so both share data. `<dir>` is the directory of the loaded config file, else of the requested config path (`wrangler` string or `wranglerConfigPath`, even if the file is missing), else the current working directory (e.g. inline-only configs, or `wrangler: true` with no file found). Set `miniflareOptions.defaultPersistRoot` (or any `*Persist` option, e.g. `kvPersist: false`; on miniflare v5, `resourcePersistencePath`) to opt out.\n\nPass the [`wrangler`](https://www.npmjs.com/package/wrangler) package as `wranglerModule` — the imported module or a specifier — for full fidelity: TOML, config validation, and every binding type.\n\n```ts\nimport * as miniflare from \"miniflare\";\nimport * as wrangler from \"wrangler\";\n\nawait using runner = new MiniflareEnvRunner({\n  miniflare,\n  wranglerModule: wrangler,\n  name: \"my-worker\",\n  data: { entry: \"./worker.ts\" },\n  wrangler: true,\n});\n```\n\nWith the `wrangler` package, wrangler's own config warnings (e.g. unexpected/misspelled keys, or a `wranglerEnv` the config doesn't define) are printed for a config file — once per file version and env, so hot reloads don't repeat them. Inline configs are validated without printing wrangler's warnings (load errors still warn). A","readmeFilename":""}