pi-codex-auto-review 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/NOTICE +10 -0
- package/README.md +77 -0
- package/dist/approvals.d.ts +72 -0
- package/dist/approvals.js +167 -0
- package/dist/approvals.js.map +1 -0
- package/dist/audit.d.ts +28 -0
- package/dist/audit.js +40 -0
- package/dist/audit.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +70 -0
- package/dist/cli.js.map +1 -0
- package/dist/context-files.d.ts +14 -0
- package/dist/context-files.js +113 -0
- package/dist/context-files.js.map +1 -0
- package/dist/contracts.d.ts +258 -0
- package/dist/contracts.js +102 -0
- package/dist/contracts.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +106 -0
- package/dist/index.js.map +1 -0
- package/dist/native/darwin-arm64/artifact.json +5 -0
- package/dist/native/darwin-arm64/pi-guard-execpolicy +0 -0
- package/dist/native/linux-x64/artifact.json +5 -0
- package/dist/native/linux-x64/pi-guard-execpolicy +0 -0
- package/dist/policy/domains.d.ts +5 -0
- package/dist/policy/domains.js +18 -0
- package/dist/policy/domains.js.map +1 -0
- package/dist/policy/index.d.ts +56 -0
- package/dist/policy/index.js +304 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/paths.d.ts +5 -0
- package/dist/policy/paths.js +54 -0
- package/dist/policy/paths.js.map +1 -0
- package/dist/policy/rules.d.ts +36 -0
- package/dist/policy/rules.js +61 -0
- package/dist/policy/rules.js.map +1 -0
- package/dist/policy/shell.d.ts +14 -0
- package/dist/policy/shell.js +122 -0
- package/dist/policy/shell.js.map +1 -0
- package/dist/reports.d.ts +21 -0
- package/dist/reports.js +42 -0
- package/dist/reports.js.map +1 -0
- package/dist/review/context.d.ts +25 -0
- package/dist/review/context.js +108 -0
- package/dist/review/context.js.map +1 -0
- package/dist/review/investigation.d.ts +39 -0
- package/dist/review/investigation.js +36 -0
- package/dist/review/investigation.js.map +1 -0
- package/dist/review/lifecycle.d.ts +29 -0
- package/dist/review/lifecycle.js +71 -0
- package/dist/review/lifecycle.js.map +1 -0
- package/dist/review/policy.d.ts +4 -0
- package/dist/review/policy.js +15 -0
- package/dist/review/policy.js.map +1 -0
- package/dist/review/upstream-policy.d.ts +2 -0
- package/dist/review/upstream-policy.js +210 -0
- package/dist/review/upstream-policy.js.map +1 -0
- package/dist/reviewer.d.ts +45 -0
- package/dist/reviewer.js +148 -0
- package/dist/reviewer.js.map +1 -0
- package/dist/sandbox/broker.d.ts +1 -0
- package/dist/sandbox/broker.js +135 -0
- package/dist/sandbox/broker.js.map +1 -0
- package/dist/sandbox/config.d.ts +5 -0
- package/dist/sandbox/config.js +91 -0
- package/dist/sandbox/config.js.map +1 -0
- package/dist/sandbox/executor.d.ts +20 -0
- package/dist/sandbox/executor.js +144 -0
- package/dist/sandbox/executor.js.map +1 -0
- package/dist/sandbox/hard-links.d.ts +4 -0
- package/dist/sandbox/hard-links.js +145 -0
- package/dist/sandbox/hard-links.js.map +1 -0
- package/dist/sandbox/linux-read-paths.d.ts +7 -0
- package/dist/sandbox/linux-read-paths.js +47 -0
- package/dist/sandbox/linux-read-paths.js.map +1 -0
- package/dist/sandbox/paths.d.ts +3 -0
- package/dist/sandbox/paths.js +10 -0
- package/dist/sandbox/paths.js.map +1 -0
- package/dist/sandbox/runtime-write-paths.d.ts +2 -0
- package/dist/sandbox/runtime-write-paths.js +8 -0
- package/dist/sandbox/runtime-write-paths.js.map +1 -0
- package/dist/sandbox/seccomp.d.ts +5 -0
- package/dist/sandbox/seccomp.js +16 -0
- package/dist/sandbox/seccomp.js.map +1 -0
- package/dist/sandbox/worker.d.ts +1 -0
- package/dist/sandbox/worker.js +73 -0
- package/dist/sandbox/worker.js.map +1 -0
- package/dist/signals.d.ts +10 -0
- package/dist/signals.js +21 -0
- package/dist/signals.js.map +1 -0
- package/dist/startup.d.ts +22 -0
- package/dist/startup.js +100 -0
- package/dist/startup.js.map +1 -0
- package/dist/tools/controller.d.ts +63 -0
- package/dist/tools/controller.js +286 -0
- package/dist/tools/controller.js.map +1 -0
- package/dist/tools/external.d.ts +30 -0
- package/dist/tools/external.js +24 -0
- package/dist/tools/external.js.map +1 -0
- package/dist/tools/mcp.d.ts +17 -0
- package/dist/tools/mcp.js +186 -0
- package/dist/tools/mcp.js.map +1 -0
- package/docs/publishing.md +73 -0
- package/docs/security/dependencies.md +43 -0
- package/docs/testing/auto-review-protection.md +130 -0
- package/docs/usage.md +217 -0
- package/native/execpolicy/LICENSE +201 -0
- package/native/execpolicy/NOTICE +6 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/LICENSE +201 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/README.md +901 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.d.ts +3 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.js +472 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.d.ts +19 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.js +17 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.d.ts +52 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.js +153 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.d.ts +164 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.js +246 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.d.ts +58 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.js +128 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.d.ts +124 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.js +258 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.d.ts +87 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.js +138 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.d.ts +67 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.js +113 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.d.ts +70 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.js +171 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.d.ts +120 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.js +281 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.d.ts +108 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.js +208 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.d.ts +82 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.js +155 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.d.ts +44 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.js +220 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.d.ts +150 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.js +678 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.d.ts +32 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.js +111 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.d.ts +305 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.js +2605 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.d.ts +55 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.js +152 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.d.ts +12 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.js +43 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.d.ts +116 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.js +1195 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.d.ts +200 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.js +443 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.d.ts +28 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.js +114 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.d.ts +59 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.js +159 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.d.ts +147 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.js +445 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.d.ts +17 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.js +163 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.d.ts +83 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.js +212 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.d.ts +76 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.js +221 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.d.ts +1691 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.js +1233 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.d.ts +97 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.js +1937 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.d.ts +113 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.js +3 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.d.ts +411 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.js +1408 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.d.ts +37 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.js +125 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.d.ts +57 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.js +332 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.d.ts +100 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.js +546 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.d.ts +923 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.js +1419 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.d.ts +31 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.js +69 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.d.ts +7 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.js +25 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.d.ts +15 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.js +49 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.d.ts +17 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.js +37 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.d.ts +27 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.js +47 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.d.ts +9 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.js +25 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/package.json +88 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/java-proxy-agent/build.ts +95 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/java-proxy-agent/srt-proxy-agent.jar +0 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/arm64/apply-seccomp +0 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/build.ts +69 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/x64/apply-seccomp +0 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/arm64/srt-win.exe +0 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/build.ts +28 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/x64/srt-win.exe +0 -0
- package/node_modules/@pondwader/socks5-server/.github/workflows/ci.yml +27 -0
- package/node_modules/@pondwader/socks5-server/LICENSE +20 -0
- package/node_modules/@pondwader/socks5-server/README.md +151 -0
- package/node_modules/@pondwader/socks5-server/dist/index.d.mts +87 -0
- package/node_modules/@pondwader/socks5-server/dist/index.d.ts +87 -0
- package/node_modules/@pondwader/socks5-server/dist/index.js +346 -0
- package/node_modules/@pondwader/socks5-server/dist/index.mjs +307 -0
- package/node_modules/@pondwader/socks5-server/package.json +31 -0
- package/node_modules/commander/LICENSE +22 -0
- package/node_modules/commander/Readme.md +1157 -0
- package/node_modules/commander/esm.mjs +16 -0
- package/node_modules/commander/index.js +24 -0
- package/node_modules/commander/lib/argument.js +149 -0
- package/node_modules/commander/lib/command.js +2509 -0
- package/node_modules/commander/lib/error.js +39 -0
- package/node_modules/commander/lib/help.js +520 -0
- package/node_modules/commander/lib/option.js +330 -0
- package/node_modules/commander/lib/suggestSimilar.js +101 -0
- package/node_modules/commander/package-support.json +16 -0
- package/node_modules/commander/package.json +84 -0
- package/node_modules/commander/typings/esm.d.mts +3 -0
- package/node_modules/commander/typings/index.d.ts +969 -0
- package/node_modules/node-forge/.editorconfig +17 -0
- package/node_modules/node-forge/.eslintrc.js +24 -0
- package/node_modules/node-forge/.github/workflows/main.yaml +96 -0
- package/node_modules/node-forge/.istanbul.yml +2 -0
- package/node_modules/node-forge/.npmignore +15 -0
- package/node_modules/node-forge/CHANGELOG.md +555 -0
- package/node_modules/node-forge/CONTRIBUTING.md +18 -0
- package/node_modules/node-forge/LICENSE +331 -0
- package/node_modules/node-forge/README.md +2071 -0
- package/node_modules/node-forge/RELEASE.md +19 -0
- package/node_modules/node-forge/SECURITY.md +5 -0
- package/node_modules/node-forge/examples/create-cert.js +110 -0
- package/node_modules/node-forge/examples/create-csr.js +66 -0
- package/node_modules/node-forge/examples/create-pkcs12.js +160 -0
- package/node_modules/node-forge/examples/imap.js +46 -0
- package/node_modules/node-forge/examples/sign-p7.js +115 -0
- package/node_modules/node-forge/examples/tls.js +189 -0
- package/node_modules/node-forge/flash/PooledSocket.as +18 -0
- package/node_modules/node-forge/flash/README.md +48 -0
- package/node_modules/node-forge/flash/SocketEvent.as +36 -0
- package/node_modules/node-forge/flash/SocketPool.as +754 -0
- package/node_modules/node-forge/flash/mod_fsp/README +135 -0
- package/node_modules/node-forge/flash/mod_fsp/mod_fsp.c +415 -0
- package/node_modules/node-forge/flash/package.json +28 -0
- package/node_modules/node-forge/flash/policyserver.js +65 -0
- package/node_modules/node-forge/flash/policyserver.py +112 -0
- package/node_modules/node-forge/flash/swf/SocketPool.swf +0 -0
- package/node_modules/node-forge/karma-sauce.conf.js +79 -0
- package/node_modules/node-forge/karma.conf.js +133 -0
- package/node_modules/node-forge/lib/aes.js +1091 -0
- package/node_modules/node-forge/lib/aesCipherSuites.js +282 -0
- package/node_modules/node-forge/lib/asn1-validator.js +91 -0
- package/node_modules/node-forge/lib/asn1.js +1503 -0
- package/node_modules/node-forge/lib/baseN.js +186 -0
- package/node_modules/node-forge/lib/cipher.js +230 -0
- package/node_modules/node-forge/lib/cipherModes.js +999 -0
- package/node_modules/node-forge/lib/des.js +496 -0
- package/node_modules/node-forge/lib/ed25519.js +1091 -0
- package/node_modules/node-forge/lib/forge.js +13 -0
- package/node_modules/node-forge/lib/form.js +149 -0
- package/node_modules/node-forge/lib/hmac.js +146 -0
- package/node_modules/node-forge/lib/http.js +1346 -0
- package/node_modules/node-forge/lib/index.all.js +16 -0
- package/node_modules/node-forge/lib/index.js +33 -0
- package/node_modules/node-forge/lib/jsbn.js +1294 -0
- package/node_modules/node-forge/lib/kem.js +168 -0
- package/node_modules/node-forge/lib/log.js +319 -0
- package/node_modules/node-forge/lib/md.all.js +13 -0
- package/node_modules/node-forge/lib/md.js +11 -0
- package/node_modules/node-forge/lib/md5.js +289 -0
- package/node_modules/node-forge/lib/mgf.js +12 -0
- package/node_modules/node-forge/lib/mgf1.js +57 -0
- package/node_modules/node-forge/lib/oids.js +180 -0
- package/node_modules/node-forge/lib/pbe.js +1023 -0
- package/node_modules/node-forge/lib/pbkdf2.js +211 -0
- package/node_modules/node-forge/lib/pem.js +237 -0
- package/node_modules/node-forge/lib/pkcs1.js +276 -0
- package/node_modules/node-forge/lib/pkcs12.js +1078 -0
- package/node_modules/node-forge/lib/pkcs7.js +1260 -0
- package/node_modules/node-forge/lib/pkcs7asn1.js +410 -0
- package/node_modules/node-forge/lib/pki.js +102 -0
- package/node_modules/node-forge/lib/prime.js +297 -0
- package/node_modules/node-forge/lib/prime.worker.js +168 -0
- package/node_modules/node-forge/lib/prng.js +419 -0
- package/node_modules/node-forge/lib/pss.js +241 -0
- package/node_modules/node-forge/lib/random.js +191 -0
- package/node_modules/node-forge/lib/rc2.js +410 -0
- package/node_modules/node-forge/lib/rsa.js +1973 -0
- package/node_modules/node-forge/lib/sha1.js +319 -0
- package/node_modules/node-forge/lib/sha256.js +327 -0
- package/node_modules/node-forge/lib/sha512.js +561 -0
- package/node_modules/node-forge/lib/socket.js +287 -0
- package/node_modules/node-forge/lib/ssh.js +236 -0
- package/node_modules/node-forge/lib/tls.js +4282 -0
- package/node_modules/node-forge/lib/tlssocket.js +249 -0
- package/node_modules/node-forge/lib/util.js +2652 -0
- package/node_modules/node-forge/lib/x509.js +3251 -0
- package/node_modules/node-forge/lib/xhr.js +738 -0
- package/node_modules/node-forge/package.json +123 -0
- package/node_modules/node-forge/tests/.eslintrc.js +5 -0
- package/node_modules/node-forge/tests/README.md +4 -0
- package/node_modules/node-forge/tests/benchmarks/aes-speed.js +62 -0
- package/node_modules/node-forge/tests/benchmarks/so-44303784.js +246 -0
- package/node_modules/node-forge/tests/flash/README.md +7 -0
- package/node_modules/node-forge/tests/flash/Test.as +96 -0
- package/node_modules/node-forge/tests/flash/build-flash.xml +7 -0
- package/node_modules/node-forge/tests/flash/index.html +28 -0
- package/node_modules/node-forge/tests/index.html +33 -0
- package/node_modules/node-forge/tests/issues/heartbleed.js +55 -0
- package/node_modules/node-forge/tests/issues/issue-428.html +95 -0
- package/node_modules/node-forge/tests/issues/issue-428.js +375 -0
- package/node_modules/node-forge/tests/karma/index.js +8 -0
- package/node_modules/node-forge/tests/karma/testWorker.js +65 -0
- package/node_modules/node-forge/tests/karma/web-worker-rsa.js +55 -0
- package/node_modules/node-forge/tests/legacy/common.html +65 -0
- package/node_modules/node-forge/tests/legacy/common.js +2199 -0
- package/node_modules/node-forge/tests/legacy/form.html +148 -0
- package/node_modules/node-forge/tests/legacy/form.js +40 -0
- package/node_modules/node-forge/tests/legacy/http.html +235 -0
- package/node_modules/node-forge/tests/legacy/index.html +70 -0
- package/node_modules/node-forge/tests/legacy/keygen.html +113 -0
- package/node_modules/node-forge/tests/legacy/login.css +26 -0
- package/node_modules/node-forge/tests/legacy/loginDemo.html +32 -0
- package/node_modules/node-forge/tests/legacy/loginDemo.js +149 -0
- package/node_modules/node-forge/tests/legacy/performance.html +533 -0
- package/node_modules/node-forge/tests/legacy/result.txt +1 -0
- package/node_modules/node-forge/tests/legacy/socketPool.html +302 -0
- package/node_modules/node-forge/tests/legacy/tasks.html +54 -0
- package/node_modules/node-forge/tests/legacy/tasks.js +378 -0
- package/node_modules/node-forge/tests/legacy/tls.html +389 -0
- package/node_modules/node-forge/tests/legacy/webid.html +89 -0
- package/node_modules/node-forge/tests/legacy/webid.js +313 -0
- package/node_modules/node-forge/tests/legacy/ws-webid.js +120 -0
- package/node_modules/node-forge/tests/legacy/xhr.html +67 -0
- package/node_modules/node-forge/tests/legacy/xhr.js +590 -0
- package/node_modules/node-forge/tests/pocs/ghsa-2328-f5f3-gj25.js +85 -0
- package/node_modules/node-forge/tests/pocs/ghsa-ppp5-5v6c-4jwp.js +166 -0
- package/node_modules/node-forge/tests/pocs/ghsa-q67f-28xg-22rw.js +103 -0
- package/node_modules/node-forge/tests/security/cve-2025-12816.js +75 -0
- package/node_modules/node-forge/tests/security/ghsa-554w-wpv2-vw27.js +81 -0
- package/node_modules/node-forge/tests/security/index.js +3 -0
- package/node_modules/node-forge/tests/server.crt +26 -0
- package/node_modules/node-forge/tests/server.js +87 -0
- package/node_modules/node-forge/tests/server.key +27 -0
- package/node_modules/node-forge/tests/support/task.js +718 -0
- package/node_modules/node-forge/tests/tests.css +61 -0
- package/node_modules/node-forge/tests/unit/aes.js +1498 -0
- package/node_modules/node-forge/tests/unit/asn1.js +1337 -0
- package/node_modules/node-forge/tests/unit/csr.js +129 -0
- package/node_modules/node-forge/tests/unit/des.js +231 -0
- package/node_modules/node-forge/tests/unit/ed25519.js +395 -0
- package/node_modules/node-forge/tests/unit/forge.js +2 -0
- package/node_modules/node-forge/tests/unit/hmac.js +64 -0
- package/node_modules/node-forge/tests/unit/index.html +20 -0
- package/node_modules/node-forge/tests/unit/index.js +27 -0
- package/node_modules/node-forge/tests/unit/jsbn.js +40 -0
- package/node_modules/node-forge/tests/unit/kem.js +167 -0
- package/node_modules/node-forge/tests/unit/md5.js +114 -0
- package/node_modules/node-forge/tests/unit/mgf1.js +16 -0
- package/node_modules/node-forge/tests/unit/pbkdf2.js +182 -0
- package/node_modules/node-forge/tests/unit/pem.js +159 -0
- package/node_modules/node-forge/tests/unit/pkcs1.js +1077 -0
- package/node_modules/node-forge/tests/unit/pkcs12.js +739 -0
- package/node_modules/node-forge/tests/unit/pkcs7.js +792 -0
- package/node_modules/node-forge/tests/unit/random.js +48 -0
- package/node_modules/node-forge/tests/unit/rc2.js +88 -0
- package/node_modules/node-forge/tests/unit/rsa.js +1278 -0
- package/node_modules/node-forge/tests/unit/sha1.js +72 -0
- package/node_modules/node-forge/tests/unit/sha256.js +79 -0
- package/node_modules/node-forge/tests/unit/sha512.js +200 -0
- package/node_modules/node-forge/tests/unit/ssh.js +175 -0
- package/node_modules/node-forge/tests/unit/tls.js +175 -0
- package/node_modules/node-forge/tests/unit/util.js +595 -0
- package/node_modules/node-forge/tests/unit/x509.js +1986 -0
- package/node_modules/node-forge/tests/websockets/server-webid.js +495 -0
- package/node_modules/node-forge/tests/websockets/server-ws.js +158 -0
- package/node_modules/node-forge/webpack-tests.config.js +26 -0
- package/node_modules/node-forge/webpack.config.js +130 -0
- package/node_modules/zod/LICENSE +21 -0
- package/node_modules/zod/README.md +208 -0
- package/node_modules/zod/index.cjs +33 -0
- package/node_modules/zod/index.d.cts +4 -0
- package/node_modules/zod/index.d.ts +4 -0
- package/node_modules/zod/index.js +4 -0
- package/node_modules/zod/package.json +118 -0
- package/node_modules/zod/src/index.ts +4 -0
- package/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/node_modules/zod/src/v3/errors.ts +13 -0
- package/node_modules/zod/src/v3/external.ts +6 -0
- package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/node_modules/zod/src/v3/index.ts +4 -0
- package/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/complex.test.ts +56 -0
- package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/function.test.ts +257 -0
- package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/node_modules/zod/src/v3/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/node_modules/zod/src/v3/types.ts +5136 -0
- package/node_modules/zod/src/v4/classic/checks.ts +30 -0
- package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/node_modules/zod/src/v4/classic/compat.ts +66 -0
- package/node_modules/zod/src/v4/classic/errors.ts +75 -0
- package/node_modules/zod/src/v4/classic/external.ts +50 -0
- package/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/node_modules/zod/src/v4/classic/parse.ts +33 -0
- package/node_modules/zod/src/v4/classic/schemas.ts +2054 -0
- package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
- package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/node_modules/zod/src/v4/classic/tests/brand.test.ts +63 -0
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +352 -0
- package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +31 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +296 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +313 -0
- package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +619 -0
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +527 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/node_modules/zod/src/v4/classic/tests/file.test.ts +91 -0
- package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +268 -0
- package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +829 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +34 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +171 -0
- package/node_modules/zod/src/v4/classic/tests/json.test.ts +108 -0
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +92 -0
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +196 -0
- package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +86 -0
- package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +247 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +563 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +123 -0
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +147 -0
- package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +127 -0
- package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +298 -0
- package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +342 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +356 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +532 -0
- package/node_modules/zod/src/v4/classic/tests/registries.test.ts +204 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +179 -0
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +57 -0
- package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +109 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +881 -0
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +66 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +758 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2314 -0
- package/node_modules/zod/src/v4/classic/tests/transform.test.ts +250 -0
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +163 -0
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +94 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/node_modules/zod/src/v4/core/api.ts +1594 -0
- package/node_modules/zod/src/v4/core/checks.ts +1283 -0
- package/node_modules/zod/src/v4/core/config.ts +15 -0
- package/node_modules/zod/src/v4/core/core.ts +134 -0
- package/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/node_modules/zod/src/v4/core/errors.ts +424 -0
- package/node_modules/zod/src/v4/core/function.ts +176 -0
- package/node_modules/zod/src/v4/core/index.ts +15 -0
- package/node_modules/zod/src/v4/core/json-schema.ts +143 -0
- package/node_modules/zod/src/v4/core/parse.ts +94 -0
- package/node_modules/zod/src/v4/core/regexes.ts +135 -0
- package/node_modules/zod/src/v4/core/registries.ts +96 -0
- package/node_modules/zod/src/v4/core/schemas.ts +3842 -0
- package/node_modules/zod/src/v4/core/standard-schema.ts +64 -0
- package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +977 -0
- package/node_modules/zod/src/v4/core/util.ts +775 -0
- package/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/node_modules/zod/src/v4/index.ts +4 -0
- package/node_modules/zod/src/v4/locales/ar.ts +125 -0
- package/node_modules/zod/src/v4/locales/az.ts +121 -0
- package/node_modules/zod/src/v4/locales/be.ts +184 -0
- package/node_modules/zod/src/v4/locales/ca.ts +127 -0
- package/node_modules/zod/src/v4/locales/cs.ts +142 -0
- package/node_modules/zod/src/v4/locales/de.ts +124 -0
- package/node_modules/zod/src/v4/locales/en.ts +127 -0
- package/node_modules/zod/src/v4/locales/eo.ts +125 -0
- package/node_modules/zod/src/v4/locales/es.ts +125 -0
- package/node_modules/zod/src/v4/locales/fa.ts +134 -0
- package/node_modules/zod/src/v4/locales/fi.ts +131 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +126 -0
- package/node_modules/zod/src/v4/locales/fr.ts +124 -0
- package/node_modules/zod/src/v4/locales/he.ts +125 -0
- package/node_modules/zod/src/v4/locales/hu.ts +126 -0
- package/node_modules/zod/src/v4/locales/id.ts +125 -0
- package/node_modules/zod/src/v4/locales/index.ts +39 -0
- package/node_modules/zod/src/v4/locales/it.ts +125 -0
- package/node_modules/zod/src/v4/locales/ja.ts +122 -0
- package/node_modules/zod/src/v4/locales/kh.ts +126 -0
- package/node_modules/zod/src/v4/locales/ko.ts +131 -0
- package/node_modules/zod/src/v4/locales/mk.ts +127 -0
- package/node_modules/zod/src/v4/locales/ms.ts +124 -0
- package/node_modules/zod/src/v4/locales/nl.ts +126 -0
- package/node_modules/zod/src/v4/locales/no.ts +124 -0
- package/node_modules/zod/src/v4/locales/ota.ts +125 -0
- package/node_modules/zod/src/v4/locales/pl.ts +126 -0
- package/node_modules/zod/src/v4/locales/ps.ts +133 -0
- package/node_modules/zod/src/v4/locales/pt.ts +123 -0
- package/node_modules/zod/src/v4/locales/ru.ts +184 -0
- package/node_modules/zod/src/v4/locales/sl.ts +126 -0
- package/node_modules/zod/src/v4/locales/sv.ts +127 -0
- package/node_modules/zod/src/v4/locales/ta.ts +125 -0
- package/node_modules/zod/src/v4/locales/th.ts +126 -0
- package/node_modules/zod/src/v4/locales/tr.ts +121 -0
- package/node_modules/zod/src/v4/locales/ua.ts +126 -0
- package/node_modules/zod/src/v4/locales/ur.ts +126 -0
- package/node_modules/zod/src/v4/locales/vi.ts +125 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +123 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +125 -0
- package/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/node_modules/zod/src/v4/mini/coerce.ts +22 -0
- package/node_modules/zod/src/v4/mini/external.ts +40 -0
- package/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/node_modules/zod/src/v4/mini/iso.ts +62 -0
- package/node_modules/zod/src/v4/mini/parse.ts +1 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +1579 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/node_modules/zod/src/v4/mini/tests/brand.test.ts +51 -0
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +871 -0
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +185 -0
- package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +299 -0
- package/node_modules/zod/src/v4-mini/index.ts +1 -0
- package/node_modules/zod/v3/ZodError.cjs +138 -0
- package/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/node_modules/zod/v3/ZodError.js +133 -0
- package/node_modules/zod/v3/errors.cjs +17 -0
- package/node_modules/zod/v3/errors.d.cts +5 -0
- package/node_modules/zod/v3/errors.d.ts +5 -0
- package/node_modules/zod/v3/errors.js +9 -0
- package/node_modules/zod/v3/external.cjs +22 -0
- package/node_modules/zod/v3/external.d.cts +6 -0
- package/node_modules/zod/v3/external.d.ts +6 -0
- package/node_modules/zod/v3/external.js +6 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/node_modules/zod/v3/helpers/util.js +133 -0
- package/node_modules/zod/v3/index.cjs +33 -0
- package/node_modules/zod/v3/index.d.cts +4 -0
- package/node_modules/zod/v3/index.d.ts +4 -0
- package/node_modules/zod/v3/index.js +4 -0
- package/node_modules/zod/v3/locales/en.cjs +111 -0
- package/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/node_modules/zod/v3/locales/en.js +109 -0
- package/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/node_modules/zod/v3/standard-schema.js +1 -0
- package/node_modules/zod/v3/types.cjs +3775 -0
- package/node_modules/zod/v3/types.d.cts +1031 -0
- package/node_modules/zod/v3/types.d.ts +1031 -0
- package/node_modules/zod/v3/types.js +3693 -0
- package/node_modules/zod/v4/classic/checks.cjs +32 -0
- package/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/node_modules/zod/v4/classic/checks.js +1 -0
- package/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/node_modules/zod/v4/classic/coerce.js +17 -0
- package/node_modules/zod/v4/classic/compat.cjs +57 -0
- package/node_modules/zod/v4/classic/compat.d.cts +46 -0
- package/node_modules/zod/v4/classic/compat.d.ts +46 -0
- package/node_modules/zod/v4/classic/compat.js +27 -0
- package/node_modules/zod/v4/classic/errors.cjs +67 -0
- package/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/node_modules/zod/v4/classic/errors.js +41 -0
- package/node_modules/zod/v4/classic/external.cjs +70 -0
- package/node_modules/zod/v4/classic/external.d.cts +13 -0
- package/node_modules/zod/v4/classic/external.d.ts +13 -0
- package/node_modules/zod/v4/classic/external.js +18 -0
- package/node_modules/zod/v4/classic/index.cjs +33 -0
- package/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/node_modules/zod/v4/classic/index.js +4 -0
- package/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/node_modules/zod/v4/classic/iso.js +30 -0
- package/node_modules/zod/v4/classic/parse.cjs +32 -0
- package/node_modules/zod/v4/classic/parse.d.cts +23 -0
- package/node_modules/zod/v4/classic/parse.d.ts +23 -0
- package/node_modules/zod/v4/classic/parse.js +6 -0
- package/node_modules/zod/v4/classic/schemas.cjs +1109 -0
- package/node_modules/zod/v4/classic/schemas.d.cts +630 -0
- package/node_modules/zod/v4/classic/schemas.d.ts +630 -0
- package/node_modules/zod/v4/classic/schemas.js +1006 -0
- package/node_modules/zod/v4/core/api.cjs +1039 -0
- package/node_modules/zod/v4/core/api.d.cts +284 -0
- package/node_modules/zod/v4/core/api.d.ts +284 -0
- package/node_modules/zod/v4/core/api.js +906 -0
- package/node_modules/zod/v4/core/checks.cjs +591 -0
- package/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/node_modules/zod/v4/core/checks.js +565 -0
- package/node_modules/zod/v4/core/core.cjs +67 -0
- package/node_modules/zod/v4/core/core.d.cts +49 -0
- package/node_modules/zod/v4/core/core.d.ts +49 -0
- package/node_modules/zod/v4/core/core.js +61 -0
- package/node_modules/zod/v4/core/doc.cjs +39 -0
- package/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/node_modules/zod/v4/core/doc.js +35 -0
- package/node_modules/zod/v4/core/errors.cjs +226 -0
- package/node_modules/zod/v4/core/errors.d.cts +208 -0
- package/node_modules/zod/v4/core/errors.d.ts +208 -0
- package/node_modules/zod/v4/core/errors.js +195 -0
- package/node_modules/zod/v4/core/function.cjs +102 -0
- package/node_modules/zod/v4/core/function.d.cts +52 -0
- package/node_modules/zod/v4/core/function.d.ts +52 -0
- package/node_modules/zod/v4/core/function.js +75 -0
- package/node_modules/zod/v4/core/index.cjs +44 -0
- package/node_modules/zod/v4/core/index.d.cts +15 -0
- package/node_modules/zod/v4/core/index.d.ts +15 -0
- package/node_modules/zod/v4/core/index.js +15 -0
- package/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/node_modules/zod/v4/core/json-schema.d.cts +87 -0
- package/node_modules/zod/v4/core/json-schema.d.ts +87 -0
- package/node_modules/zod/v4/core/json-schema.js +1 -0
- package/node_modules/zod/v4/core/parse.cjs +87 -0
- package/node_modules/zod/v4/core/parse.d.cts +25 -0
- package/node_modules/zod/v4/core/parse.d.ts +25 -0
- package/node_modules/zod/v4/core/parse.js +57 -0
- package/node_modules/zod/v4/core/regexes.cjs +103 -0
- package/node_modules/zod/v4/core/regexes.d.cts +62 -0
- package/node_modules/zod/v4/core/regexes.d.ts +62 -0
- package/node_modules/zod/v4/core/regexes.js +95 -0
- package/node_modules/zod/v4/core/registries.cjs +56 -0
- package/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/node_modules/zod/v4/core/registries.js +51 -0
- package/node_modules/zod/v4/core/schemas.cjs +1748 -0
- package/node_modules/zod/v4/core/schemas.d.cts +1041 -0
- package/node_modules/zod/v4/core/schemas.d.ts +1041 -0
- package/node_modules/zod/v4/core/schemas.js +1717 -0
- package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/node_modules/zod/v4/core/standard-schema.d.cts +55 -0
- package/node_modules/zod/v4/core/standard-schema.d.ts +55 -0
- package/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +854 -0
- package/node_modules/zod/v4/core/to-json-schema.d.cts +88 -0
- package/node_modules/zod/v4/core/to-json-schema.d.ts +88 -0
- package/node_modules/zod/v4/core/to-json-schema.js +849 -0
- package/node_modules/zod/v4/core/util.cjs +539 -0
- package/node_modules/zod/v4/core/util.d.cts +183 -0
- package/node_modules/zod/v4/core/util.d.ts +183 -0
- package/node_modules/zod/v4/core/util.js +493 -0
- package/node_modules/zod/v4/core/versions.cjs +8 -0
- package/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/node_modules/zod/v4/core/versions.js +5 -0
- package/node_modules/zod/v4/index.cjs +22 -0
- package/node_modules/zod/v4/index.d.cts +3 -0
- package/node_modules/zod/v4/index.d.ts +3 -0
- package/node_modules/zod/v4/index.js +3 -0
- package/node_modules/zod/v4/locales/ar.cjs +142 -0
- package/node_modules/zod/v4/locales/ar.d.cts +4 -0
- package/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/node_modules/zod/v4/locales/ar.js +116 -0
- package/node_modules/zod/v4/locales/az.cjs +141 -0
- package/node_modules/zod/v4/locales/az.d.cts +4 -0
- package/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/node_modules/zod/v4/locales/az.js +115 -0
- package/node_modules/zod/v4/locales/be.cjs +190 -0
- package/node_modules/zod/v4/locales/be.d.cts +4 -0
- package/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/node_modules/zod/v4/locales/be.js +164 -0
- package/node_modules/zod/v4/locales/ca.cjs +144 -0
- package/node_modules/zod/v4/locales/ca.d.cts +4 -0
- package/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/node_modules/zod/v4/locales/ca.js +118 -0
- package/node_modules/zod/v4/locales/cs.cjs +161 -0
- package/node_modules/zod/v4/locales/cs.d.cts +4 -0
- package/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/node_modules/zod/v4/locales/cs.js +135 -0
- package/node_modules/zod/v4/locales/de.cjs +142 -0
- package/node_modules/zod/v4/locales/de.d.cts +4 -0
- package/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/node_modules/zod/v4/locales/de.js +116 -0
- package/node_modules/zod/v4/locales/en.cjs +145 -0
- package/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/node_modules/zod/v4/locales/en.d.ts +5 -0
- package/node_modules/zod/v4/locales/en.js +117 -0
- package/node_modules/zod/v4/locales/eo.cjs +144 -0
- package/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/node_modules/zod/v4/locales/eo.d.ts +5 -0
- package/node_modules/zod/v4/locales/eo.js +116 -0
- package/node_modules/zod/v4/locales/es.cjs +143 -0
- package/node_modules/zod/v4/locales/es.d.cts +4 -0
- package/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/node_modules/zod/v4/locales/es.js +117 -0
- package/node_modules/zod/v4/locales/fa.cjs +148 -0
- package/node_modules/zod/v4/locales/fa.d.cts +4 -0
- package/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/node_modules/zod/v4/locales/fa.js +122 -0
- package/node_modules/zod/v4/locales/fi.cjs +148 -0
- package/node_modules/zod/v4/locales/fi.d.cts +4 -0
- package/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/node_modules/zod/v4/locales/fi.js +122 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +143 -0
- package/node_modules/zod/v4/locales/fr-CA.d.cts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.js +117 -0
- package/node_modules/zod/v4/locales/fr.cjs +142 -0
- package/node_modules/zod/v4/locales/fr.d.cts +4 -0
- package/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr.js +116 -0
- package/node_modules/zod/v4/locales/he.cjs +143 -0
- package/node_modules/zod/v4/locales/he.d.cts +4 -0
- package/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/node_modules/zod/v4/locales/he.js +117 -0
- package/node_modules/zod/v4/locales/hu.cjs +143 -0
- package/node_modules/zod/v4/locales/hu.d.cts +4 -0
- package/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/node_modules/zod/v4/locales/hu.js +117 -0
- package/node_modules/zod/v4/locales/id.cjs +142 -0
- package/node_modules/zod/v4/locales/id.d.cts +4 -0
- package/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/node_modules/zod/v4/locales/id.js +116 -0
- package/node_modules/zod/v4/locales/index.cjs +84 -0
- package/node_modules/zod/v4/locales/index.d.cts +39 -0
- package/node_modules/zod/v4/locales/index.d.ts +39 -0
- package/node_modules/zod/v4/locales/index.js +39 -0
- package/node_modules/zod/v4/locales/it.cjs +143 -0
- package/node_modules/zod/v4/locales/it.d.cts +4 -0
- package/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/node_modules/zod/v4/locales/it.js +117 -0
- package/node_modules/zod/v4/locales/ja.cjs +141 -0
- package/node_modules/zod/v4/locales/ja.d.cts +4 -0
- package/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/node_modules/zod/v4/locales/ja.js +115 -0
- package/node_modules/zod/v4/locales/kh.cjs +143 -0
- package/node_modules/zod/v4/locales/kh.d.cts +4 -0
- package/node_modules/zod/v4/locales/kh.d.ts +4 -0
- package/node_modules/zod/v4/locales/kh.js +117 -0
- package/node_modules/zod/v4/locales/ko.cjs +147 -0
- package/node_modules/zod/v4/locales/ko.d.cts +4 -0
- package/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/node_modules/zod/v4/locales/ko.js +121 -0
- package/node_modules/zod/v4/locales/mk.cjs +144 -0
- package/node_modules/zod/v4/locales/mk.d.cts +4 -0
- package/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/node_modules/zod/v4/locales/mk.js +118 -0
- package/node_modules/zod/v4/locales/ms.cjs +142 -0
- package/node_modules/zod/v4/locales/ms.d.cts +4 -0
- package/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/node_modules/zod/v4/locales/ms.js +116 -0
- package/node_modules/zod/v4/locales/nl.cjs +143 -0
- package/node_modules/zod/v4/locales/nl.d.cts +4 -0
- package/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/node_modules/zod/v4/locales/nl.js +117 -0
- package/node_modules/zod/v4/locales/no.cjs +142 -0
- package/node_modules/zod/v4/locales/no.d.cts +4 -0
- package/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/node_modules/zod/v4/locales/no.js +116 -0
- package/node_modules/zod/v4/locales/ota.cjs +143 -0
- package/node_modules/zod/v4/locales/ota.d.cts +4 -0
- package/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/node_modules/zod/v4/locales/ota.js +117 -0
- package/node_modules/zod/v4/locales/pl.cjs +143 -0
- package/node_modules/zod/v4/locales/pl.d.cts +4 -0
- package/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/node_modules/zod/v4/locales/pl.js +117 -0
- package/node_modules/zod/v4/locales/ps.cjs +148 -0
- package/node_modules/zod/v4/locales/ps.d.cts +4 -0
- package/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/node_modules/zod/v4/locales/ps.js +122 -0
- package/node_modules/zod/v4/locales/pt.cjs +142 -0
- package/node_modules/zod/v4/locales/pt.d.cts +4 -0
- package/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt.js +116 -0
- package/node_modules/zod/v4/locales/ru.cjs +190 -0
- package/node_modules/zod/v4/locales/ru.d.cts +4 -0
- package/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/node_modules/zod/v4/locales/ru.js +164 -0
- package/node_modules/zod/v4/locales/sl.cjs +143 -0
- package/node_modules/zod/v4/locales/sl.d.cts +4 -0
- package/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/node_modules/zod/v4/locales/sl.js +117 -0
- package/node_modules/zod/v4/locales/sv.cjs +144 -0
- package/node_modules/zod/v4/locales/sv.d.cts +4 -0
- package/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/node_modules/zod/v4/locales/sv.js +118 -0
- package/node_modules/zod/v4/locales/ta.cjs +143 -0
- package/node_modules/zod/v4/locales/ta.d.cts +4 -0
- package/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/node_modules/zod/v4/locales/ta.js +117 -0
- package/node_modules/zod/v4/locales/th.cjs +143 -0
- package/node_modules/zod/v4/locales/th.d.cts +4 -0
- package/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/node_modules/zod/v4/locales/th.js +117 -0
- package/node_modules/zod/v4/locales/tr.cjs +143 -0
- package/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/node_modules/zod/v4/locales/tr.d.ts +5 -0
- package/node_modules/zod/v4/locales/tr.js +115 -0
- package/node_modules/zod/v4/locales/ua.cjs +143 -0
- package/node_modules/zod/v4/locales/ua.d.cts +4 -0
- package/node_modules/zod/v4/locales/ua.d.ts +4 -0
- package/node_modules/zod/v4/locales/ua.js +117 -0
- package/node_modules/zod/v4/locales/ur.cjs +143 -0
- package/node_modules/zod/v4/locales/ur.d.cts +4 -0
- package/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/node_modules/zod/v4/locales/ur.js +117 -0
- package/node_modules/zod/v4/locales/vi.cjs +142 -0
- package/node_modules/zod/v4/locales/vi.d.cts +4 -0
- package/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/node_modules/zod/v4/locales/vi.js +116 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +142 -0
- package/node_modules/zod/v4/locales/zh-CN.d.cts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.js +116 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +143 -0
- package/node_modules/zod/v4/locales/zh-TW.d.cts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.js +117 -0
- package/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/node_modules/zod/v4/mini/checks.js +1 -0
- package/node_modules/zod/v4/mini/coerce.cjs +47 -0
- package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/node_modules/zod/v4/mini/coerce.js +17 -0
- package/node_modules/zod/v4/mini/external.cjs +62 -0
- package/node_modules/zod/v4/mini/external.d.cts +11 -0
- package/node_modules/zod/v4/mini/external.d.ts +11 -0
- package/node_modules/zod/v4/mini/external.js +13 -0
- package/node_modules/zod/v4/mini/index.cjs +32 -0
- package/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/node_modules/zod/v4/mini/index.js +3 -0
- package/node_modules/zod/v4/mini/iso.cjs +60 -0
- package/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/node_modules/zod/v4/mini/iso.js +30 -0
- package/node_modules/zod/v4/mini/parse.cjs +8 -0
- package/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/node_modules/zod/v4/mini/parse.js +1 -0
- package/node_modules/zod/v4/mini/schemas.cjs +839 -0
- package/node_modules/zod/v4/mini/schemas.d.cts +356 -0
- package/node_modules/zod/v4/mini/schemas.d.ts +356 -0
- package/node_modules/zod/v4/mini/schemas.js +732 -0
- package/node_modules/zod/v4-mini/index.cjs +17 -0
- package/node_modules/zod/v4-mini/index.d.cts +1 -0
- package/node_modules/zod/v4-mini/index.d.ts +1 -0
- package/node_modules/zod/v4-mini/index.js +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socks-proxy.js","sourceRoot":"","sources":["../../src/sandbox/socks-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process TLS termination for HTTPS traffic through the forward proxy.
|
|
3
|
+
*
|
|
4
|
+
* When a MitmCA is configured, the forward proxy hands CONNECT requests here
|
|
5
|
+
* instead of opening an opaque byte tunnel. We terminate the client's TLS
|
|
6
|
+
* with a per-host leaf cert (see mitm-leaf.ts), parse the decrypted stream
|
|
7
|
+
* as HTTP/1.1, and re-issue each request upstream over a real TLS
|
|
8
|
+
* connection. The optional `filterRequest` callback runs on each parsed
|
|
9
|
+
* request before it is forwarded.
|
|
10
|
+
*/
|
|
11
|
+
import type { LookupFunction } from 'node:net';
|
|
12
|
+
import type { Duplex } from 'node:stream';
|
|
13
|
+
import type { MitmCA } from './mitm-ca.js';
|
|
14
|
+
import { type FilterRequestCallback, type MutateForwardedHeaders } from './request-filter.js';
|
|
15
|
+
import { type GetBodySubstitutions } from './body-substitution.js';
|
|
16
|
+
import type { PlanSigv4 } from './credential-aws-pairs.js';
|
|
17
|
+
/**
|
|
18
|
+
* Upper bound on the request body the proxy will buffer to recompute a
|
|
19
|
+
* literal SigV4 body hash. The signature must cover the exact bytes sent
|
|
20
|
+
* upstream, so buffering is unavoidable for that shape — but without a
|
|
21
|
+
* cap a sandboxed client could pin arbitrary host memory with one large
|
|
22
|
+
* signed upload (awslabs/aws-sigv4-proxy buffers with no limit; we fail
|
|
23
|
+
* closed instead). Bodies over the cap are denied with a 403; clients
|
|
24
|
+
* with larger payloads should sign UNSIGNED-PAYLOAD, which streams.
|
|
25
|
+
*/
|
|
26
|
+
export declare const MAX_SIGV4_RESIGN_BODY_BYTES: number;
|
|
27
|
+
/**
|
|
28
|
+
* True if `buf` starts with a TLS Handshake record header.
|
|
29
|
+
*
|
|
30
|
+
* Three bytes: content type 0x16 (Handshake) + legacy_record_version
|
|
31
|
+
* 0x03,0x00–0x03. RFC 8446 §5.1 froze the record-layer version (TLS 1.3+
|
|
32
|
+
* negotiate via the supported_versions extension, the wire header stays
|
|
33
|
+
* ≤0x0303), so this holds for current and future TLS. Same predicate as
|
|
34
|
+
* mitmproxy `starts_like_tls_record`; nginx `ssl_preread` routes on byte 0
|
|
35
|
+
* alone and HAProxy `req.ssl_hello_type` reads 9 bytes to also extract the
|
|
36
|
+
* handshake type — 3 is the established middle ground for "is this TLS".
|
|
37
|
+
*
|
|
38
|
+
* Routing heuristic, not a security check: a non-TLS stream that happens to
|
|
39
|
+
* start 16 03 0x is handed to the TLS server, which then rejects it properly.
|
|
40
|
+
*/
|
|
41
|
+
export declare function looksLikeClientHello(buf: Buffer): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Wait for the client's first post-CONNECT bytes and report whether they look
|
|
44
|
+
* like a TLS ClientHello. The caller must already have written the
|
|
45
|
+
* `200 Connection Established` line — clients don't send until they see it.
|
|
46
|
+
*
|
|
47
|
+
* Any bytes consumed here are returned in `.head` so the caller can forward
|
|
48
|
+
* them to whichever downstream (terminate or opaque tunnel) it picks. The
|
|
49
|
+
* socket is left paused so further bytes buffer until the downstream
|
|
50
|
+
* `pipe()` resumes it.
|
|
51
|
+
*/
|
|
52
|
+
export declare function peekForClientHello(socket: Duplex, head: Buffer): Promise<{
|
|
53
|
+
isTLS: boolean;
|
|
54
|
+
head: Buffer;
|
|
55
|
+
}>;
|
|
56
|
+
export type TerminateTarget = {
|
|
57
|
+
/**
|
|
58
|
+
* Canonical (see canonicalizeHost) CONNECT target: what the allowlist
|
|
59
|
+
* evaluated. Used verbatim for the minted leaf, the filterRequest URL,
|
|
60
|
+
* the credential hooks' destHost, and the upstream host/SNI, so all of
|
|
61
|
+
* them agree with the policy decision regardless of how the client
|
|
62
|
+
* spelled the name.
|
|
63
|
+
*/
|
|
64
|
+
hostname: string;
|
|
65
|
+
port: number;
|
|
66
|
+
/**
|
|
67
|
+
* Additional trusted CA(s) for the proxy's outbound TLS leg. Unset → system
|
|
68
|
+
* roots + NODE_EXTRA_CA_CERTS. Primarily a test seam (NODE_EXTRA_CA_CERTS
|
|
69
|
+
* is read at process start, so tests can't set it from inside the suite).
|
|
70
|
+
*/
|
|
71
|
+
upstreamCA?: string | Buffer | Array<string | Buffer>;
|
|
72
|
+
/** Upstream-leg name resolution, already bound for this target (see HttpProxyServerOptions.lookupFor). */
|
|
73
|
+
lookup?: LookupFunction;
|
|
74
|
+
/**
|
|
75
|
+
* Called when filterRequest denies a parsed request, with the verified
|
|
76
|
+
* method/URL and the decision reason. Carried on the target so the
|
|
77
|
+
* per-connection request handler (which closes over `target`) can reach
|
|
78
|
+
* it without an extra parameter on every layer.
|
|
79
|
+
*/
|
|
80
|
+
onFilterRequestDeny?: (method: string, url: string, reason: string) => void;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Terminate the client's TLS on `socket`, parse the decrypted HTTP/1.1
|
|
84
|
+
* stream, and forward each request to `target` over an upstream TLS
|
|
85
|
+
* connection kept alive for the life of the client's connection (see
|
|
86
|
+
* {@link createUpstreamLeg}).
|
|
87
|
+
*
|
|
88
|
+
* Preconditions: the caller has already validated `target` against the
|
|
89
|
+
* domain allowlist; this function does not re-check it.
|
|
90
|
+
*
|
|
91
|
+
* Implementation: we stand up a short-lived https.Server on a unix socket
|
|
92
|
+
* and pipe the client socket through it. The Node-idiomatic alternative —
|
|
93
|
+
* feeding the raw socket to a non-listening server via
|
|
94
|
+
* `emit('connection', socket)` — is not implemented by Bun's https.Server,
|
|
95
|
+
* and SRT runs under both runtimes. A per-connection server lets the
|
|
96
|
+
* request handler close over `target` (which carries the originally-
|
|
97
|
+
* requested host:port) without socket-keyed lookups.
|
|
98
|
+
*/
|
|
99
|
+
export declare function terminateAndForward(ca: MitmCA, filterRequest: FilterRequestCallback | undefined, mutateHeaders: MutateForwardedHeaders | undefined, getBodySubstitutions: GetBodySubstitutions | undefined, socket: Duplex, head: Buffer, target: TerminateTarget, planSigv4?: PlanSigv4, maxSigv4BodyBytes?: number): void;
|
|
100
|
+
//# sourceMappingURL=tls-terminate-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tls-terminate-proxy.d.ts","sourceRoot":"","sources":["../../src/sandbox/tls-terminate-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAK9C,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,aAAa,CAAA;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAA;AAS/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAE1D;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,QAAmB,CAAA;AAK3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB3C;AAgCD,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACrD,0GAA0G;IAC1G,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5E,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,qBAAqB,GAAG,SAAS,EAChD,aAAa,EAAE,sBAAsB,GAAG,SAAS,EACjD,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,EACtD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,SAAS,CAAC,EAAE,SAAS,EACrB,iBAAiB,GAAE,MAAoC,GACtD,IAAI,CA6GN"}
|
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process TLS termination for HTTPS traffic through the forward proxy.
|
|
3
|
+
*
|
|
4
|
+
* When a MitmCA is configured, the forward proxy hands CONNECT requests here
|
|
5
|
+
* instead of opening an opaque byte tunnel. We terminate the client's TLS
|
|
6
|
+
* with a per-host leaf cert (see mitm-leaf.ts), parse the decrypted stream
|
|
7
|
+
* as HTTP/1.1, and re-issue each request upstream over a real TLS
|
|
8
|
+
* connection. The optional `filterRequest` callback runs on each parsed
|
|
9
|
+
* request before it is forwarded.
|
|
10
|
+
*/
|
|
11
|
+
import { Agent as HttpsAgent, createServer as createHttpsServer, request as httpsRequest, } from 'node:https';
|
|
12
|
+
import { connect } from 'node:net';
|
|
13
|
+
import { checkServerIdentity } from 'node:tls';
|
|
14
|
+
import { unlink } from 'node:fs';
|
|
15
|
+
import { tmpdir } from 'node:os';
|
|
16
|
+
import { join } from 'node:path';
|
|
17
|
+
import { logForDebugging } from '../utils/debug.js';
|
|
18
|
+
import { decideAndRespond, respondDenied, respondUpstreamError, } from './request-filter.js';
|
|
19
|
+
import { prepareBodySubstitution, } from './body-substitution.js';
|
|
20
|
+
import { mintLeafCert, secureContextFor } from './mitm-leaf.js';
|
|
21
|
+
import { directRequestOptions, formatAuthority, stripHopByHop, } from './parent-proxy.js';
|
|
22
|
+
import { sha256Hex } from './aws-sigv4.js';
|
|
23
|
+
/**
|
|
24
|
+
* Upper bound on the request body the proxy will buffer to recompute a
|
|
25
|
+
* literal SigV4 body hash. The signature must cover the exact bytes sent
|
|
26
|
+
* upstream, so buffering is unavoidable for that shape — but without a
|
|
27
|
+
* cap a sandboxed client could pin arbitrary host memory with one large
|
|
28
|
+
* signed upload (awslabs/aws-sigv4-proxy buffers with no limit; we fail
|
|
29
|
+
* closed instead). Bodies over the cap are denied with a 403; clients
|
|
30
|
+
* with larger payloads should sign UNSIGNED-PAYLOAD, which streams.
|
|
31
|
+
*/
|
|
32
|
+
export const MAX_SIGV4_RESIGN_BODY_BYTES = 64 * 1024 * 1024;
|
|
33
|
+
/** Rejection cause when a body exceeds {@link MAX_SIGV4_RESIGN_BODY_BYTES}. */
|
|
34
|
+
class BodyTooLargeError extends Error {
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* True if `buf` starts with a TLS Handshake record header.
|
|
38
|
+
*
|
|
39
|
+
* Three bytes: content type 0x16 (Handshake) + legacy_record_version
|
|
40
|
+
* 0x03,0x00–0x03. RFC 8446 §5.1 froze the record-layer version (TLS 1.3+
|
|
41
|
+
* negotiate via the supported_versions extension, the wire header stays
|
|
42
|
+
* ≤0x0303), so this holds for current and future TLS. Same predicate as
|
|
43
|
+
* mitmproxy `starts_like_tls_record`; nginx `ssl_preread` routes on byte 0
|
|
44
|
+
* alone and HAProxy `req.ssl_hello_type` reads 9 bytes to also extract the
|
|
45
|
+
* handshake type — 3 is the established middle ground for "is this TLS".
|
|
46
|
+
*
|
|
47
|
+
* Routing heuristic, not a security check: a non-TLS stream that happens to
|
|
48
|
+
* start 16 03 0x is handed to the TLS server, which then rejects it properly.
|
|
49
|
+
*/
|
|
50
|
+
export function looksLikeClientHello(buf) {
|
|
51
|
+
return (buf.length >= 3 && buf[0] === 0x16 && buf[1] === 0x03 && buf[2] <= 0x03);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Wait for the client's first post-CONNECT bytes and report whether they look
|
|
55
|
+
* like a TLS ClientHello. The caller must already have written the
|
|
56
|
+
* `200 Connection Established` line — clients don't send until they see it.
|
|
57
|
+
*
|
|
58
|
+
* Any bytes consumed here are returned in `.head` so the caller can forward
|
|
59
|
+
* them to whichever downstream (terminate or opaque tunnel) it picks. The
|
|
60
|
+
* socket is left paused so further bytes buffer until the downstream
|
|
61
|
+
* `pipe()` resumes it.
|
|
62
|
+
*/
|
|
63
|
+
export function peekForClientHello(socket, head) {
|
|
64
|
+
if (head.length >= 3) {
|
|
65
|
+
return Promise.resolve({ isTLS: looksLikeClientHello(head), head });
|
|
66
|
+
}
|
|
67
|
+
return new Promise(resolve => {
|
|
68
|
+
let buf = head;
|
|
69
|
+
const done = () => {
|
|
70
|
+
socket.removeListener('data', onData);
|
|
71
|
+
socket.removeListener('close', done);
|
|
72
|
+
resolve({ isTLS: looksLikeClientHello(buf), head: buf });
|
|
73
|
+
};
|
|
74
|
+
const onData = (chunk) => {
|
|
75
|
+
// Pause synchronously so anything after this chunk buffers for the
|
|
76
|
+
// downstream pipe() rather than being dropped in flowing mode.
|
|
77
|
+
socket.pause();
|
|
78
|
+
buf = buf.length ? Buffer.concat([buf, chunk]) : chunk;
|
|
79
|
+
if (buf.length >= 3)
|
|
80
|
+
return done();
|
|
81
|
+
socket.resume();
|
|
82
|
+
};
|
|
83
|
+
socket.on('data', onData);
|
|
84
|
+
socket.once('close', done);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Relay `src` into `dst` with paused-mode reads (`'readable'` + `read()`)
|
|
89
|
+
* instead of `src.pipe(dst)`.
|
|
90
|
+
*
|
|
91
|
+
* `pipe()` throttles a flowing source with `pause()`/`resume()`, and under
|
|
92
|
+
* Bun a socket delivered by an http server's `'connect'` event corrupts its
|
|
93
|
+
* byte stream across those pause/resume cycles once writes queue (reliably
|
|
94
|
+
* reproducible with multi-megabyte uploads; the TLS server behind the relay
|
|
95
|
+
* then fails record MAC verification and the client sees `bad_record_mac` /
|
|
96
|
+
* a mid-upload reset). Pull-mode reads never call `pause()` and provide the
|
|
97
|
+
* same flow control: `read()` is only called while `dst` has buffer space,
|
|
98
|
+
* so the kernel backpressures the peer identically. Do not replace this
|
|
99
|
+
* with `pipe()` — under Node both are equivalent, but under Bun only this
|
|
100
|
+
* form is safe for CONNECT-upgraded sockets.
|
|
101
|
+
*/
|
|
102
|
+
function relayPullMode(src, dst) {
|
|
103
|
+
const pump = () => {
|
|
104
|
+
let chunk;
|
|
105
|
+
while ((chunk = src.read()) !== null) {
|
|
106
|
+
if (!dst.write(chunk)) {
|
|
107
|
+
dst.once('drain', pump);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
src.once('readable', pump);
|
|
112
|
+
};
|
|
113
|
+
pump();
|
|
114
|
+
src.once('end', () => dst.end());
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Terminate the client's TLS on `socket`, parse the decrypted HTTP/1.1
|
|
118
|
+
* stream, and forward each request to `target` over an upstream TLS
|
|
119
|
+
* connection kept alive for the life of the client's connection (see
|
|
120
|
+
* {@link createUpstreamLeg}).
|
|
121
|
+
*
|
|
122
|
+
* Preconditions: the caller has already validated `target` against the
|
|
123
|
+
* domain allowlist; this function does not re-check it.
|
|
124
|
+
*
|
|
125
|
+
* Implementation: we stand up a short-lived https.Server on a unix socket
|
|
126
|
+
* and pipe the client socket through it. The Node-idiomatic alternative —
|
|
127
|
+
* feeding the raw socket to a non-listening server via
|
|
128
|
+
* `emit('connection', socket)` — is not implemented by Bun's https.Server,
|
|
129
|
+
* and SRT runs under both runtimes. A per-connection server lets the
|
|
130
|
+
* request handler close over `target` (which carries the originally-
|
|
131
|
+
* requested host:port) without socket-keyed lookups.
|
|
132
|
+
*/
|
|
133
|
+
export function terminateAndForward(ca, filterRequest, mutateHeaders, getBodySubstitutions, socket, head, target, planSigv4, maxSigv4BodyBytes = MAX_SIGV4_RESIGN_BODY_BYTES) {
|
|
134
|
+
// ALPN advertises HTTP/1.1 only — terminating HTTP/2 would require a frame
|
|
135
|
+
// parser; clients negotiate down. The base secureContext covers clients
|
|
136
|
+
// that don't send SNI; SNICallback covers everyone else.
|
|
137
|
+
const baseLeaf = mintLeafCert(ca, target.hostname);
|
|
138
|
+
const inner = createHttpsServer({
|
|
139
|
+
ALPNProtocols: ['http/1.1'],
|
|
140
|
+
cert: baseLeaf.certPem,
|
|
141
|
+
key: baseLeaf.keyPem,
|
|
142
|
+
SNICallback: (servername, cb) => {
|
|
143
|
+
try {
|
|
144
|
+
cb(null, secureContextFor(ca, servername || target.hostname));
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
cb(err);
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
const leg = createUpstreamLeg(target);
|
|
152
|
+
inner.on('request', (req, res) => {
|
|
153
|
+
// A client abort mid-request destroys req/res with an error; with no
|
|
154
|
+
// listener it escapes as an uncaughtException (the runtime emits it
|
|
155
|
+
// from node:_http_server).
|
|
156
|
+
req.on('error', err => {
|
|
157
|
+
logForDebugging(`[tls-terminate] client request error: ${err.message}`, {
|
|
158
|
+
level: 'error',
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
res.on('error', err => {
|
|
162
|
+
logForDebugging(`[tls-terminate] client response error: ${err.message}`, {
|
|
163
|
+
level: 'error',
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
forwardUpstreamGuarded(filterRequest, mutateHeaders, getBodySubstitutions, req, res, target, leg, planSigv4, maxSigv4BodyBytes);
|
|
167
|
+
});
|
|
168
|
+
inner.on('clientError', (err, sock) => {
|
|
169
|
+
// Post-handshake parse errors / resets on the loopback leg would
|
|
170
|
+
// otherwise escalate to an uncaughtException, same class as the
|
|
171
|
+
// request-stream errors handled above.
|
|
172
|
+
logForDebugging(`[tls-terminate] client connection error for ${target.hostname}: ${err.message}`, { level: 'error' });
|
|
173
|
+
sock.destroy();
|
|
174
|
+
});
|
|
175
|
+
inner.on('tlsClientError', (err, sock) => {
|
|
176
|
+
logForDebugging(`[tls-terminate] client TLS error for ${target.hostname}: ${err.message}`, { level: 'error' });
|
|
177
|
+
sock.destroy();
|
|
178
|
+
});
|
|
179
|
+
inner.on('upgrade', (_req, sock) => {
|
|
180
|
+
// WebSocket / non-HTTP over TLS — out of scope for now.
|
|
181
|
+
logForDebugging('[tls-terminate] upgrade request refused', {
|
|
182
|
+
level: 'warn',
|
|
183
|
+
});
|
|
184
|
+
sock.destroy();
|
|
185
|
+
});
|
|
186
|
+
const sockPath = innerSocketPath();
|
|
187
|
+
const cleanup = () => {
|
|
188
|
+
inner.close();
|
|
189
|
+
leg.agent.destroy();
|
|
190
|
+
unlink(sockPath, () => { });
|
|
191
|
+
};
|
|
192
|
+
inner.on('error', err => {
|
|
193
|
+
logForDebugging(`[tls-terminate] inner server listen failed: ${err.message}`, { level: 'error' });
|
|
194
|
+
socket.destroy();
|
|
195
|
+
cleanup();
|
|
196
|
+
});
|
|
197
|
+
inner.listen(sockPath, () => {
|
|
198
|
+
const loop = connect({ path: sockPath });
|
|
199
|
+
loop.on('error', err => {
|
|
200
|
+
logForDebugging(`[tls-terminate] inner loopback failed: ${err.message}`, {
|
|
201
|
+
level: 'error',
|
|
202
|
+
});
|
|
203
|
+
socket.destroy();
|
|
204
|
+
cleanup();
|
|
205
|
+
});
|
|
206
|
+
loop.once('connect', () => {
|
|
207
|
+
// The caller wrote `200 Connection Established` before sniffing for the
|
|
208
|
+
// ClientHello; `head` holds whatever the sniff consumed.
|
|
209
|
+
if (head.length)
|
|
210
|
+
loop.write(head);
|
|
211
|
+
relayPullMode(socket, loop);
|
|
212
|
+
loop.pipe(socket);
|
|
213
|
+
});
|
|
214
|
+
socket.on('error', () => loop.destroy());
|
|
215
|
+
socket.once('close', () => {
|
|
216
|
+
loop.destroy();
|
|
217
|
+
cleanup();
|
|
218
|
+
});
|
|
219
|
+
loop.once('close', () => socket.destroy());
|
|
220
|
+
});
|
|
221
|
+
inner.unref();
|
|
222
|
+
}
|
|
223
|
+
function createUpstreamLeg(target) {
|
|
224
|
+
const agent = new HttpsAgent({
|
|
225
|
+
keepAlive: true,
|
|
226
|
+
maxSockets: 1,
|
|
227
|
+
// We're a TLS-terminating proxy, not a trust boundary for the upstream
|
|
228
|
+
// server's identity — the runtime verifies it normally (system roots and
|
|
229
|
+
// NODE_EXTRA_CA_CERTS). Pin the identity to the tunnel's target so the
|
|
230
|
+
// check does not depend on how a runtime derives it from the Host header
|
|
231
|
+
// (some verify against `Host` verbatim, so a non-default port would
|
|
232
|
+
// never match a SAN); `servername` still carries the name for SNI.
|
|
233
|
+
checkServerIdentity: (_host, cert) => checkServerIdentity(target.hostname, cert),
|
|
234
|
+
...(target.upstreamCA ? { ca: target.upstreamCA } : {}),
|
|
235
|
+
});
|
|
236
|
+
let vetted;
|
|
237
|
+
return {
|
|
238
|
+
agent,
|
|
239
|
+
address() {
|
|
240
|
+
if (!vetted) {
|
|
241
|
+
const probe = directRequestOptions(target.hostname, target.port, target.lookup, true);
|
|
242
|
+
vetted = probe;
|
|
243
|
+
probe.catch(() => {
|
|
244
|
+
if (vetted === probe)
|
|
245
|
+
vetted = undefined;
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
return vetted;
|
|
249
|
+
},
|
|
250
|
+
forgetAddress() {
|
|
251
|
+
vetted = undefined;
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* True for the failure a reused keep-alive socket produces when the upstream
|
|
257
|
+
* closed it while the request was on its way.
|
|
258
|
+
*/
|
|
259
|
+
function isStaleSocketError(err) {
|
|
260
|
+
const code = err.code;
|
|
261
|
+
return code === 'ECONNRESET' || code === 'EPIPE';
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Destroy a denied client's request only after the 403 has flushed —
|
|
265
|
+
* destroying the shared socket in the same tick can RST the response away.
|
|
266
|
+
*/
|
|
267
|
+
function destroyAfterDenial(req, res) {
|
|
268
|
+
if (res.writableFinished || res.destroyed) {
|
|
269
|
+
req.destroy();
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
res.once('finish', () => req.destroy());
|
|
273
|
+
res.once('close', () => req.destroy());
|
|
274
|
+
}
|
|
275
|
+
function forwardUpstreamGuarded(...args) {
|
|
276
|
+
// Fire-and-forget from the request handler: a rejection (e.g. a
|
|
277
|
+
// synchronous throw writing a denial to a client that already reset)
|
|
278
|
+
// must not become an unhandledRejection.
|
|
279
|
+
forwardUpstream(...args).catch(err => {
|
|
280
|
+
logForDebugging(`[tls-terminate] forwardUpstream failed: ${err.message}`, { level: 'error' });
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
async function forwardUpstream(filterRequest, mutateHeaders, getBodySubstitutions, req, res, target, leg, planSigv4, maxSigv4BodyBytes = MAX_SIGV4_RESIGN_BODY_BYTES) {
|
|
284
|
+
// req.url is the request-target verbatim. Inside a CONNECT tunnel almost
|
|
285
|
+
// every client sends origin-form (`/path?q`), but RFC 7230 §5.3.2 also
|
|
286
|
+
// permits absolute-form (`https://host/path`) and servers MUST accept it.
|
|
287
|
+
// Normalize to origin-form so concatenating onto `https://${host}` below
|
|
288
|
+
// yields a well-formed URL, and discard any client-supplied authority so
|
|
289
|
+
// the CONNECT-verified target stays authoritative (same rationale as the
|
|
290
|
+
// Host-header note below).
|
|
291
|
+
const path = originFormPath(req.url);
|
|
292
|
+
// The tunnel target as it goes on the wire: filterRequest URL, Host, SigV4.
|
|
293
|
+
const authority = formatAuthority(target.hostname, target.port, 443);
|
|
294
|
+
let body = req;
|
|
295
|
+
if (filterRequest) {
|
|
296
|
+
const ac = new AbortController();
|
|
297
|
+
res.once('close', () => ac.abort());
|
|
298
|
+
// Build the URL passed to filterRequest from the CONNECT target,
|
|
299
|
+
// NOT from `req.headers.host`. The Host header is supplied by the
|
|
300
|
+
// sandboxed client and can be spoofed: a sandboxed process can
|
|
301
|
+
// CONNECT to allowlisted host A and then send a decrypted request
|
|
302
|
+
// with `Host: B` (where B is some other allowlisted host). If we
|
|
303
|
+
// built the filterRequest URL from req.headers.host the callback
|
|
304
|
+
// would see "host=B" while the request is actually delivered to A.
|
|
305
|
+
// A consumer using filterRequest for per-host method gating (e.g.
|
|
306
|
+
// "POST allowed only to inference endpoints") would be bypassed —
|
|
307
|
+
// the agent could spoof Host: api.example.com on a CONNECT to a
|
|
308
|
+
// different allowlisted host, get the POST allowed, and have it
|
|
309
|
+
// delivered to the CONNECT target instead.
|
|
310
|
+
//
|
|
311
|
+
// Always derive the URL from the verified CONNECT target so
|
|
312
|
+
// filterRequest sees the actual upstream destination.
|
|
313
|
+
const out = await decideAndRespond(filterRequest, req, res, `https://${authority}${path}`, ac.signal, target.onFilterRequestDeny);
|
|
314
|
+
if (out === null)
|
|
315
|
+
return;
|
|
316
|
+
body = out;
|
|
317
|
+
// The client may have aborted during the filterRequest await — the tee
|
|
318
|
+
// branch is already destroyed and res 'close' already fired, so the
|
|
319
|
+
// teardown listeners attached below would never run. Don't dial an
|
|
320
|
+
// upstream for a dead client. A COMPLETED request is also
|
|
321
|
+
// destroyed=true (normal stream lifecycle after 'end'); only a
|
|
322
|
+
// destroy without a clean end is an abort.
|
|
323
|
+
if ((req.destroyed && !req.readableEnded) ||
|
|
324
|
+
res.destroyed ||
|
|
325
|
+
req.socket.destroyed ||
|
|
326
|
+
body.destroyed) {
|
|
327
|
+
body.destroy();
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
// The upstream is dialed by vetted address (below), so Host and SNI are
|
|
332
|
+
// what carry the name: rebuild Host from the tunnel's target — the name the
|
|
333
|
+
// allowlist saw — rather than forwarding the client's spelling.
|
|
334
|
+
const fwdHeaders = stripHopByHop(req.headers);
|
|
335
|
+
fwdHeaders.host = authority;
|
|
336
|
+
// SigV4 planning runs on the PRE-substitution headers (the trigger is
|
|
337
|
+
// the fake access key id in the credential scope, which the header
|
|
338
|
+
// substitution below replaces) but on the POST-strip view: the plan's
|
|
339
|
+
// signed-header presence check must see exactly the set that will be
|
|
340
|
+
// signed and forwarded, or a signed hop-by-hop header would pass the
|
|
341
|
+
// check and then blow up inside the signer.
|
|
342
|
+
const sigv4Plan = planSigv4?.(req.method ?? 'GET', path, fwdHeaders, target.hostname);
|
|
343
|
+
// Header mutation runs after the allow decision and before httpsRequest.
|
|
344
|
+
// The upstream TLS handshake (rejectUnauthorized defaults to true)
|
|
345
|
+
// completes before any HTTP bytes are written, so mutated headers never
|
|
346
|
+
// reach an unverified server.
|
|
347
|
+
mutateHeaders?.(fwdHeaders, target.hostname);
|
|
348
|
+
// Masked-credential substitution in the request body, mirroring the
|
|
349
|
+
// header substitution above. undefined → the bare pipe below, exactly as
|
|
350
|
+
// before. May delete content-length from fwdHeaders (chunked fallback).
|
|
351
|
+
const bodyTransform = prepareBodySubstitution(getBodySubstitutions, req, fwdHeaders, target.hostname);
|
|
352
|
+
// SigV4 re-signing runs after substitution so the new signature covers
|
|
353
|
+
// the headers as they actually go upstream (real access key id, real
|
|
354
|
+
// session token). Same denial surface as filterRequest.
|
|
355
|
+
let bufferedBody;
|
|
356
|
+
if (sigv4Plan?.action === 'deny') {
|
|
357
|
+
respondDenied(res, sigv4Plan.reason);
|
|
358
|
+
body.destroy();
|
|
359
|
+
if (body !== req)
|
|
360
|
+
destroyAfterDenial(req, res);
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
if (sigv4Plan?.action === 'resign') {
|
|
364
|
+
let payloadHash = sigv4Plan.payloadHash;
|
|
365
|
+
if (payloadHash === undefined) {
|
|
366
|
+
// The client signed a literal body hash: buffer the body and
|
|
367
|
+
// recompute so the signature covers the bytes actually sent. Body
|
|
368
|
+
// substitution runs FIRST — the buffered bytes (and therefore the
|
|
369
|
+
// hash and signature) must be the substituted body, not the
|
|
370
|
+
// sentinel-bearing one the client wrote.
|
|
371
|
+
const bodySource = bodyTransform ? body.pipe(bodyTransform) : body;
|
|
372
|
+
if (bodyTransform) {
|
|
373
|
+
body.on('error', err => bodyTransform.destroy(err));
|
|
374
|
+
}
|
|
375
|
+
try {
|
|
376
|
+
bufferedBody = await collectBody(bodySource, maxSigv4BodyBytes);
|
|
377
|
+
}
|
|
378
|
+
catch (err) {
|
|
379
|
+
if (err instanceof BodyTooLargeError) {
|
|
380
|
+
respondDenied(res, `AWS SigV4 request uses a masked credential and signs a ` +
|
|
381
|
+
`literal body hash, so the proxy must buffer the body to ` +
|
|
382
|
+
`re-sign it, but the body exceeds the ` +
|
|
383
|
+
`${maxSigv4BodyBytes}-byte buffering limit; denied. Sign ` +
|
|
384
|
+
`the payload as UNSIGNED-PAYLOAD to stream it without ` +
|
|
385
|
+
`buffering, or use an unmasked credential to have the ` +
|
|
386
|
+
`request forwarded untouched.`);
|
|
387
|
+
// Drain (discarding) whatever the client is still sending so it
|
|
388
|
+
// can read the 403 instead of seeing a reset mid-upload.
|
|
389
|
+
bodySource.resume();
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
logForDebugging(`[tls-terminate] failed to buffer body for SigV4 re-sign: ${err.message}`, { level: 'error' });
|
|
393
|
+
res.destroy();
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
payloadHash = sha256Hex(bufferedBody);
|
|
397
|
+
// The body is fully buffered so its exact length is known — set the
|
|
398
|
+
// header unconditionally. end(Buffer) only auto-computes a
|
|
399
|
+
// content-length for methods that default to chunked encoding; on
|
|
400
|
+
// bodyless-default methods it would raw-append the buffer unframed.
|
|
401
|
+
fwdHeaders['content-length'] = String(bufferedBody.length);
|
|
402
|
+
}
|
|
403
|
+
try {
|
|
404
|
+
sigv4Plan.apply(fwdHeaders, authority, payloadHash);
|
|
405
|
+
}
|
|
406
|
+
catch (err) {
|
|
407
|
+
// Fail closed on any signer error — a request the proxy claimed to
|
|
408
|
+
// handle must not go upstream half-rewritten, and a client-crafted
|
|
409
|
+
// header set must not become an unhandled rejection.
|
|
410
|
+
respondDenied(res, `AWS SigV4 re-signing failed: ${err.message}`);
|
|
411
|
+
body.destroy();
|
|
412
|
+
if (body !== req)
|
|
413
|
+
destroyAfterDenial(req, res);
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
// When the client declared a body but the forwarded headers carry no
|
|
418
|
+
// framing (chunked TE stripped as hop-by-hop, or a body transform
|
|
419
|
+
// deleted content-length), the upstream leg must re-frame explicitly:
|
|
420
|
+
// for bodyless-method requests the runtime would otherwise write the
|
|
421
|
+
// piped body bytes raw after complete-framed headers — a
|
|
422
|
+
// request-smuggling primitive. The SigV4 buffered path is exempt:
|
|
423
|
+
// end(bufferedBody) computes its own content-length.
|
|
424
|
+
const clientDeclaredBody = Boolean(req.headers['content-length'] || req.headers['transfer-encoding']);
|
|
425
|
+
if (clientDeclaredBody &&
|
|
426
|
+
bufferedBody === undefined &&
|
|
427
|
+
fwdHeaders['content-length'] === undefined &&
|
|
428
|
+
fwdHeaders['transfer-encoding'] === undefined) {
|
|
429
|
+
fwdHeaders['transfer-encoding'] = 'chunked';
|
|
430
|
+
}
|
|
431
|
+
const failUpstream = (err, sent) => {
|
|
432
|
+
logForDebugging(`[tls-terminate] upstream ${target.hostname}:${target.port} failed: ${err.message}`, { level: 'error' });
|
|
433
|
+
leg.forgetAddress();
|
|
434
|
+
if (sent?.reusedSocket && !res.headersSent && isStaleSocketError(err)) {
|
|
435
|
+
// The upstream closed the kept-alive socket as this request went out.
|
|
436
|
+
// Close the client's connection rather than answer 502: that is what
|
|
437
|
+
// the client would see on a direct keep-alive connection, and what its
|
|
438
|
+
// own retry policy is written for. Destroy the socket, not `res`: with
|
|
439
|
+
// no headers sent yet, Bun's res.destroy() answers `200 OK` with an
|
|
440
|
+
// empty body before closing, which would hand the client a fabricated
|
|
441
|
+
// success.
|
|
442
|
+
req.socket.destroy();
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
respondUpstreamError(res, err);
|
|
446
|
+
};
|
|
447
|
+
// Vet and pick the upstream address first (see createUpstreamLeg); the
|
|
448
|
+
// name stays in Host and SNI.
|
|
449
|
+
let direct;
|
|
450
|
+
try {
|
|
451
|
+
direct = await leg.address();
|
|
452
|
+
}
|
|
453
|
+
catch (err) {
|
|
454
|
+
failUpstream(err);
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
if (res.destroyed || req.socket.destroyed) {
|
|
458
|
+
// Client went away during the dial.
|
|
459
|
+
body.destroy();
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
// TODO(terminating-tls): honour parentProxy for the upstream leg.
|
|
463
|
+
const upstream = httpsRequest({
|
|
464
|
+
...direct,
|
|
465
|
+
agent: leg.agent,
|
|
466
|
+
path,
|
|
467
|
+
method: req.method,
|
|
468
|
+
headers: fwdHeaders,
|
|
469
|
+
}, upRes => {
|
|
470
|
+
// The response stream errors independently of the ClientRequest;
|
|
471
|
+
// pipe() does not handle source errors.
|
|
472
|
+
upRes.on('error', err => {
|
|
473
|
+
logForDebugging(`[tls-terminate] upstream response error: ${err.message}`, { level: 'error' });
|
|
474
|
+
res.destroy();
|
|
475
|
+
});
|
|
476
|
+
res.writeHead(upRes.statusCode ?? 502, stripHopByHop(upRes.headers));
|
|
477
|
+
upRes.pipe(res);
|
|
478
|
+
});
|
|
479
|
+
upstream.on('error', err => failUpstream(err, upstream));
|
|
480
|
+
res.on('close', () => upstream.destroy());
|
|
481
|
+
if (bufferedBody !== undefined) {
|
|
482
|
+
// SigV4 literal-hash path: the buffered body already went through
|
|
483
|
+
// bodyTransform above (when one applied), so send it verbatim.
|
|
484
|
+
upstream.end(bufferedBody);
|
|
485
|
+
}
|
|
486
|
+
else if (bodyTransform) {
|
|
487
|
+
// Errors on either side of the extra pipe stage tear the chain down —
|
|
488
|
+
// a stalled half-open upstream would otherwise wait for the client.
|
|
489
|
+
bodyTransform.on('error', err => upstream.destroy(err));
|
|
490
|
+
body.on('error', err => bodyTransform.destroy(err));
|
|
491
|
+
res.on('close', () => bodyTransform.destroy());
|
|
492
|
+
body.pipe(bodyTransform).pipe(upstream);
|
|
493
|
+
}
|
|
494
|
+
else {
|
|
495
|
+
// pipe() does not handle source errors. `body` may be a tee branch
|
|
496
|
+
// from decideAndRespond (not `req` itself), so a client abort surfaces
|
|
497
|
+
// here as an 'error' that would otherwise escape as an
|
|
498
|
+
// uncaughtException.
|
|
499
|
+
body.on('error', err => upstream.destroy(err));
|
|
500
|
+
body.pipe(upstream);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Read a request body fully into memory (for SigV4 body-hash re-signing).
|
|
505
|
+
* Rejects with {@link BodyTooLargeError} once more than `maxBytes` have
|
|
506
|
+
* arrived, discarding everything buffered so far — the caller denies the
|
|
507
|
+
* request, so holding the partial body would defeat the cap.
|
|
508
|
+
*/
|
|
509
|
+
function collectBody(body, maxBytes) {
|
|
510
|
+
return new Promise((resolve, reject) => {
|
|
511
|
+
const chunks = [];
|
|
512
|
+
let total = 0;
|
|
513
|
+
const onData = (c) => {
|
|
514
|
+
total += c.length;
|
|
515
|
+
if (total > maxBytes) {
|
|
516
|
+
chunks.length = 0;
|
|
517
|
+
body.removeListener('data', onData);
|
|
518
|
+
reject(new BodyTooLargeError(`request body exceeds ${maxBytes} bytes`));
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
chunks.push(c);
|
|
522
|
+
};
|
|
523
|
+
body.on('data', onData);
|
|
524
|
+
body.once('end', () => resolve(Buffer.concat(chunks)));
|
|
525
|
+
body.once('error', reject);
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
function originFormPath(reqUrl) {
|
|
529
|
+
const raw = reqUrl ?? '/';
|
|
530
|
+
if (raw.startsWith('/'))
|
|
531
|
+
return raw;
|
|
532
|
+
try {
|
|
533
|
+
const u = new URL(raw);
|
|
534
|
+
return `${u.pathname}${u.search}` || '/';
|
|
535
|
+
}
|
|
536
|
+
catch {
|
|
537
|
+
// asterisk-form (`OPTIONS *`) or anything else non-absolute — pass through.
|
|
538
|
+
return raw;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
let sockSeq = 0;
|
|
542
|
+
function innerSocketPath() {
|
|
543
|
+
// Keep it short — macOS sun_path is 104 bytes.
|
|
544
|
+
return join(tmpdir(), `srt-tt-${process.pid}-${(sockSeq++).toString(36)}.sock`);
|
|
545
|
+
}
|
|
546
|
+
//# sourceMappingURL=tls-terminate-proxy.js.map
|