nitro 3.0.1-alpha.0 → 3.0.1-alpha.2
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/README.md +2 -0
- package/dist/_build/common.mjs +24940 -0
- package/dist/_build/rolldown.mjs +172 -0
- package/dist/_build/rollup.mjs +201 -0
- package/dist/_build/vite.build.mjs +16 -0
- package/dist/_chunks/dev.mjs +707 -0
- package/dist/_chunks/nitro.mjs +1191 -0
- package/dist/_chunks/nitro2.mjs +101 -0
- package/dist/_chunks/utils.mjs +254 -0
- package/dist/_common.mjs +45 -0
- package/dist/_dev.d.mts +12 -0
- package/dist/_libs/c12+giget+readdirp+chokidar.d.mts +214 -0
- package/dist/_libs/citty.mjs +363 -0
- package/dist/_libs/commondir+is-reference.mjs +1300 -0
- package/dist/_libs/compatx.d.mts +47 -0
- package/dist/_libs/compatx.mjs +46 -0
- package/dist/_libs/confbox.mjs +2509 -0
- package/dist/_libs/esbuild.d.mts +20 -0
- package/dist/_libs/escape-string-regexp.mjs +8 -0
- package/dist/_libs/estree-walker.mjs +187 -0
- package/dist/_libs/hasown+resolve+deepmerge.mjs +1972 -0
- package/dist/_libs/httpxy.d.mts +79 -0
- package/dist/_libs/httpxy.mjs +415 -0
- package/dist/_libs/klona.mjs +38 -0
- package/dist/_libs/magic-string.d.mts +220 -0
- package/dist/_libs/mlly.d.mts +57 -0
- package/dist/_libs/nypm+giget+tinyexec.mjs +3603 -0
- package/dist/_libs/pkg-types.d.mts +23 -0
- package/dist/_libs/plugin-alias.mjs +66 -0
- package/dist/_libs/plugin-inject.mjs +135 -0
- package/dist/_libs/plugin-json.mjs +36 -0
- package/dist/_libs/pluginutils+plugin-commonjs.d.mts +241 -0
- package/dist/_libs/pluginutils.mjs +652 -0
- package/dist/_libs/rc9+c12+dotenv.mjs +972 -0
- package/dist/_libs/readdirp+chokidar.mjs +1611 -0
- package/dist/_libs/remapping.mjs +117 -0
- package/dist/_libs/resolve-uri+gen-mapping.mjs +448 -0
- package/dist/_libs/rou3.d.mts +43 -0
- package/dist/_libs/rou3.mjs +322 -0
- package/dist/_libs/std-env.d.mts +4 -0
- package/dist/_libs/tsconfck.mjs +832 -0
- package/dist/_libs/ultrahtml.mjs +138 -0
- package/dist/_libs/unimport+unplugin.mjs +1785 -0
- package/dist/_libs/unplugin+unimport.d.mts +426 -0
- package/dist/_libs/unwasm.d.mts +29 -0
- package/dist/_presets.mjs +1802 -0
- package/dist/builder.d.mts +63 -0
- package/dist/builder.mjs +9 -0
- package/dist/cli/_chunks/build.mjs +48 -0
- package/dist/cli/_chunks/common.mjs +15 -0
- package/dist/cli/_chunks/dev.mjs +62 -0
- package/dist/cli/_chunks/list.mjs +27 -0
- package/dist/cli/_chunks/prepare.mjs +19 -0
- package/dist/cli/_chunks/run.mjs +55 -0
- package/dist/cli/_chunks/task.mjs +16 -0
- package/dist/cli/index.d.mts +1 -1
- package/dist/cli/index.mjs +20 -476
- package/dist/node_modules/@poppinss/colors/build/index.js +130 -160
- package/dist/node_modules/@poppinss/colors/package.json +20 -18
- package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +1 -1
- package/dist/node_modules/@poppinss/dumper/package.json +1 -1
- package/dist/node_modules/@poppinss/exception/build/index.js +36 -55
- package/dist/node_modules/@poppinss/exception/package.json +19 -16
- package/dist/node_modules/@sindresorhus/is/distribution/index.js +47 -6
- package/dist/node_modules/@sindresorhus/is/package.json +1 -1
- package/dist/node_modules/@speed-highlight/core/dist/index.js +2 -2
- package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
- package/dist/node_modules/@speed-highlight/core/package.json +8 -4
- package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
- package/dist/node_modules/cookie-es/package.json +37 -0
- package/dist/node_modules/hookable/dist/index.mjs +244 -268
- package/dist/node_modules/hookable/package.json +29 -26
- package/dist/node_modules/rendu/dist/index.mjs +380 -0
- package/dist/node_modules/rendu/package.json +47 -0
- package/dist/node_modules/ufo/dist/index.mjs +16 -9
- package/dist/node_modules/ufo/package.json +15 -14
- package/dist/node_modules/unctx/package.json +16 -16
- package/dist/node_modules/youch/build/{chunk-4XB2BYKC.js → chunk-7QV3D5YX.js} +2 -4
- package/dist/node_modules/youch/build/{chunk-PUHGL6HA.js → chunk-AUGPHE32.js} +2 -4
- package/dist/node_modules/youch/build/{chunk-VE4LENUR.js → chunk-CM7DWJNZ.js} +4 -5
- package/dist/node_modules/youch/build/{chunk-JAN2TFI2.js → chunk-EJH674NB.js} +6 -5
- package/dist/node_modules/youch/build/{chunk-EUJBVOYB.js → chunk-OIJ3WD7L.js} +2 -4
- package/dist/node_modules/youch/build/{chunk-HFSXRSKS.js → chunk-P36L72PL.js} +5 -3
- package/dist/node_modules/youch/build/{chunk-4YEN7HVQ.js → chunk-PE3GG3TN.js} +5 -1
- package/dist/node_modules/youch/build/{chunk-PINJDICN.js → chunk-X53OIOJH.js} +2 -4
- package/dist/node_modules/youch/build/index.js +22 -15
- package/dist/node_modules/youch/build/public/error_info/style.css +1 -0
- package/dist/node_modules/youch/build/public/error_metadata/style.css +3 -0
- package/dist/node_modules/youch/build/public/error_stack/script.js +20 -22
- package/dist/node_modules/youch/build/public/error_stack/style.css +2 -3
- package/dist/node_modules/youch/build/public/header/script.js +0 -2
- package/dist/node_modules/youch/build/public/layout/script.js +0 -8
- package/dist/node_modules/youch/build/public/layout/style.css +4 -0
- package/dist/node_modules/youch/package.json +16 -17
- package/dist/presets/_nitro/runtime/nitro-dev.d.mts +2 -1
- package/dist/presets/_nitro/runtime/nitro-dev.mjs +47 -42
- package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +3 -3
- package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +11 -15
- package/dist/presets/_nitro/runtime/service-worker.d.mts +2 -1
- package/dist/presets/_nitro/runtime/service-worker.mjs +17 -14
- package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +2 -1
- package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +8 -7
- package/dist/presets/aws-lambda/runtime/_utils.d.mts +3 -13
- package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +2 -3
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -29
- package/dist/presets/aws-lambda/runtime/aws-lambda.d.mts +1 -1
- package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +9 -9
- package/dist/presets/azure/runtime/_utils.mjs +43 -43
- package/dist/presets/azure/runtime/azure-swa.d.mts +3 -3
- package/dist/presets/azure/runtime/azure-swa.mjs +25 -23
- package/dist/presets/bun/runtime/bun.d.mts +3 -1
- package/dist/presets/bun/runtime/bun.mjs +34 -22
- package/dist/presets/cloudflare/runtime/_module-handler.d.mts +12 -9
- package/dist/presets/cloudflare/runtime/_module-handler.mjs +84 -90
- package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +7 -15
- package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +62 -64
- package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +2 -8
- package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +15 -18
- package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +13 -13
- package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -43
- package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
- package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
- package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
- package/dist/presets/deno/runtime/deno-deploy.d.mts +5 -1
- package/dist/presets/deno/runtime/deno-deploy.mjs +15 -13
- package/dist/presets/deno/runtime/deno-server.d.mts +1 -4
- package/dist/presets/deno/runtime/deno-server.mjs +32 -53
- package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -2
- package/dist/presets/netlify/runtime/netlify-edge.mjs +18 -14
- package/dist/presets/netlify/runtime/netlify.d.mts +3 -2
- package/dist/presets/netlify/runtime/netlify.mjs +15 -19
- package/dist/presets/node/runtime/node-cluster.d.mts +3 -1
- package/dist/presets/node/runtime/node-cluster.mjs +49 -54
- package/dist/presets/node/runtime/node-middleware.d.mts +3 -4
- package/dist/presets/node/runtime/node-middleware.mjs +9 -9
- package/dist/presets/node/runtime/node-server.d.mts +1 -1
- package/dist/presets/node/runtime/node-server.mjs +36 -34
- package/dist/presets/standard/runtime/server.d.mts +2 -4
- package/dist/presets/standard/runtime/server.mjs +3 -5
- package/dist/presets/stormkit/runtime/stormkit.d.mts +14 -14
- package/dist/presets/stormkit/runtime/stormkit.mjs +22 -22
- package/dist/presets/vercel/runtime/isr.d.mts +2 -0
- package/dist/presets/vercel/runtime/isr.mjs +19 -0
- package/dist/presets/vercel/runtime/vercel.node.d.mts +3 -0
- package/dist/presets/vercel/runtime/vercel.node.mjs +24 -0
- package/dist/presets/vercel/runtime/vercel.web.d.mts +8 -0
- package/dist/presets/vercel/runtime/vercel.web.mjs +25 -0
- package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -1
- package/dist/presets/winterjs/runtime/winterjs.mjs +74 -70
- package/dist/presets/zeabur/runtime/zeabur.d.mts +2 -2
- package/dist/presets/zeabur/runtime/zeabur.mjs +2 -2
- package/dist/runtime/app.d.mts +1 -0
- package/dist/runtime/app.mjs +1 -0
- package/dist/runtime/cache.d.mts +1 -0
- package/dist/runtime/cache.mjs +1 -0
- package/dist/runtime/config.d.mts +3 -0
- package/dist/runtime/config.mjs +4 -0
- package/dist/runtime/context.d.mts +1 -0
- package/dist/runtime/context.mjs +1 -0
- package/dist/runtime/database.d.mts +1 -0
- package/dist/runtime/database.mjs +1 -0
- package/dist/runtime/internal/app.d.mts +15 -1
- package/dist/runtime/internal/app.mjs +199 -144
- package/dist/runtime/internal/cache.d.mts +9 -5
- package/dist/runtime/internal/cache.mjs +248 -219
- package/dist/runtime/internal/context.d.mts +9 -9
- package/dist/runtime/internal/context.mjs +17 -10
- package/dist/runtime/internal/database.mjs +9 -11
- package/dist/runtime/internal/error/dev.d.mts +4 -4
- package/dist/runtime/internal/error/dev.mjs +106 -105
- package/dist/runtime/internal/error/hooks.d.mts +1 -0
- package/dist/runtime/internal/error/hooks.mjs +9 -0
- package/dist/runtime/internal/error/prod.d.mts +5 -4
- package/dist/runtime/internal/error/prod.mjs +51 -59
- package/dist/runtime/internal/error/utils.d.mts +4 -4
- package/dist/runtime/internal/error/utils.mjs +1 -1
- package/dist/runtime/internal/meta.d.mts +1 -1
- package/dist/runtime/internal/meta.mjs +1 -1
- package/dist/runtime/internal/plugin.d.mts +2 -2
- package/dist/runtime/internal/plugin.mjs +1 -1
- package/dist/runtime/internal/route-rules.d.mts +4 -8
- package/dist/runtime/internal/route-rules.mjs +54 -52
- package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
- package/dist/runtime/internal/routes/dev-tasks.mjs +17 -19
- package/dist/runtime/internal/routes/openapi.mjs +82 -88
- package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
- package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
- package/dist/runtime/internal/routes/renderer-template.dev.mjs +15 -17
- package/dist/runtime/internal/routes/renderer-template.mjs +2 -2
- package/dist/runtime/internal/routes/scalar.mjs +22 -23
- package/dist/runtime/internal/routes/swagger.mjs +9 -11
- package/dist/runtime/internal/runtime-config.d.mts +4 -4
- package/dist/runtime/internal/runtime-config.mjs +44 -39
- package/dist/runtime/internal/static.mjs +63 -74
- package/dist/runtime/internal/storage.mjs +3 -3
- package/dist/runtime/internal/task.d.mts +6 -6
- package/dist/runtime/internal/task.mjs +57 -61
- package/dist/runtime/internal/vite/dev-entry.mjs +11 -2
- package/dist/runtime/internal/vite/{dev-worker.mjs → node-runner.mjs} +54 -57
- package/dist/runtime/internal/vite/ssr-renderer.mjs +3 -1
- package/{lib/runtime-meta.d.mts → dist/runtime/meta.d.mts} +2 -2
- package/dist/runtime/meta.mjs +26 -0
- package/dist/runtime/nitro.d.mts +9 -0
- package/dist/runtime/nitro.mjs +32 -0
- package/dist/runtime/runtime-config.d.mts +1 -0
- package/dist/runtime/runtime-config.mjs +1 -0
- package/dist/runtime/storage.d.mts +1 -0
- package/dist/runtime/storage.mjs +1 -0
- package/dist/runtime/task.d.mts +1 -0
- package/dist/runtime/task.mjs +1 -0
- package/dist/runtime/virtual/_runtime_warn.mjs +5 -0
- package/dist/runtime/virtual/database.d.mts +8 -0
- package/dist/runtime/virtual/database.mjs +2 -0
- package/dist/runtime/virtual/error-handler.d.mts +6 -0
- package/dist/runtime/virtual/error-handler.mjs +9 -0
- package/dist/runtime/virtual/feature-flags.d.mts +7 -0
- package/dist/runtime/virtual/feature-flags.mjs +7 -0
- package/dist/runtime/virtual/plugins.d.mts +3 -0
- package/dist/runtime/virtual/plugins.mjs +2 -0
- package/dist/runtime/virtual/polyfills.d.mts +3 -0
- package/dist/runtime/virtual/polyfills.mjs +2 -0
- package/dist/runtime/virtual/public-assets.d.mts +9 -0
- package/dist/runtime/virtual/public-assets.mjs +8 -0
- package/dist/runtime/virtual/renderer-template.d.mts +4 -0
- package/dist/runtime/virtual/renderer-template.mjs +7 -0
- package/dist/runtime/virtual/routing-meta.d.mts +7 -0
- package/dist/runtime/virtual/routing-meta.mjs +2 -0
- package/dist/runtime/virtual/routing.d.mts +8 -0
- package/dist/runtime/virtual/routing.mjs +11 -0
- package/dist/runtime/virtual/runtime-config.d.mts +3 -0
- package/dist/runtime/virtual/runtime-config.mjs +5 -0
- package/dist/runtime/virtual/server-assets.d.mts +6 -0
- package/dist/runtime/virtual/server-assets.mjs +12 -0
- package/dist/runtime/virtual/storage.d.mts +3 -0
- package/dist/runtime/virtual/storage.mjs +5 -0
- package/dist/runtime/virtual/tasks.d.mts +10 -0
- package/dist/runtime/virtual/tasks.mjs +3 -0
- package/dist/runtime/vite.d.mts +8 -0
- package/dist/runtime/vite.mjs +9 -0
- package/dist/types/index.d.mts +2561 -2312
- package/dist/types/index.mjs +10 -0
- package/dist/vite.d.mts +44 -51
- package/dist/vite.mjs +737 -68
- package/lib/tsconfig.json +27 -0
- package/lib/vite.types.d.mts +26 -0
- package/lib/vite.types.mjs +2 -0
- package/package.json +118 -101
- package/dist/_chunks/app.mjs +0 -19797
- package/dist/_chunks/build.mjs +0 -84
- package/dist/_chunks/build2.mjs +0 -318
- package/dist/_chunks/build3.mjs +0 -6452
- package/dist/_chunks/detect-acorn.mjs +0 -503
- package/dist/_chunks/index.mjs +0 -22242
- package/dist/_chunks/index2.mjs +0 -297
- package/dist/_chunks/index3.mjs +0 -1058
- package/dist/_chunks/index4.mjs +0 -1206
- package/dist/_chunks/info.mjs +0 -11157
- package/dist/_chunks/json5.mjs +0 -68
- package/dist/_chunks/jsonc.mjs +0 -51
- package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
- package/dist/_chunks/plugin.mjs +0 -960
- package/dist/_chunks/server.mjs +0 -254
- package/dist/_chunks/snapshot.mjs +0 -284
- package/dist/_chunks/toml.mjs +0 -259
- package/dist/_chunks/yaml.mjs +0 -86
- package/dist/cli/build.mjs +0 -54
- package/dist/cli/common.mjs +0 -13
- package/dist/cli/dev.mjs +0 -95
- package/dist/cli/index2.mjs +0 -17
- package/dist/cli/list.mjs +0 -34
- package/dist/cli/prepare.mjs +0 -24
- package/dist/cli/run.mjs +0 -60
- package/dist/index.d.mts +0 -52
- package/dist/index.mjs +0 -55
- package/dist/node_modules/cookie/dist/index.js +0 -239
- package/dist/node_modules/cookie/package.json +0 -42
- package/dist/node_modules/kleur/index.js +0 -110
- package/dist/node_modules/klona/dist/index.mjs +0 -81
- package/dist/node_modules/klona/full/index.mjs +0 -53
- package/dist/node_modules/klona/package.json +0 -74
- package/dist/node_modules/std-env/dist/index.mjs +0 -1
- package/dist/node_modules/std-env/package.json +0 -46
- package/dist/node_modules/youch/build/chunk-OSUFJZHZ.js +0 -6
- package/dist/presets/vercel/runtime/vercel.d.mts +0 -8
- package/dist/presets/vercel/runtime/vercel.mjs +0 -17
- package/dist/presets.mjs +0 -2460
- package/dist/runtime/index.d.mts +0 -11
- package/dist/runtime/index.mjs +0 -17
- package/dist/runtime/internal/debug.d.mts +0 -2
- package/dist/runtime/internal/debug.mjs +0 -5
- package/dist/runtime/internal/empty.d.mts +0 -0
- package/dist/runtime/internal/index.d.mts +0 -3
- package/dist/runtime/internal/index.mjs +0 -3
- package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +0 -16
- package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +0 -213
- package/dist/runtime/internal/renderer.d.mts +0 -3
- package/dist/runtime/internal/renderer.mjs +0 -36
- package/dist/runtime/internal/shutdown.d.mts +0 -9
- package/dist/runtime/internal/shutdown.mjs +0 -34
- package/dist/runtime/internal/utils.d.mts +0 -1
- package/dist/runtime/internal/utils.mjs +0 -15
- package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
- package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
- package/dist/runtime/internal/vite/prod-setup.mjs +0 -55
- package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
- package/lib/config.d.mts +0 -9
- package/lib/config.mjs +0 -5
- package/lib/deps/ofetch.mjs +0 -1
- package/lib/deps/ofetch.mts +0 -1
- package/lib/meta.d.mts +0 -5
- package/lib/meta.mjs +0 -21
- package/lib/runtime-meta.mjs +0 -38
- /package/dist/runtime/{internal/vite/dev-worker.d.mts → virtual/_runtime_warn.d.mts} +0 -0
- /package/lib/{deps/h3.d.mts → h3.d.mts} +0 -0
- /package/lib/{deps/h3.mjs → h3.mjs} +0 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import http, { IncomingMessage, OutgoingMessage } from "node:http";
|
|
2
|
+
import { EventEmitter } from "node:events";
|
|
3
|
+
import * as stream from "node:stream";
|
|
4
|
+
|
|
5
|
+
//#region node_modules/.pnpm/httpxy@0.1.7/node_modules/httpxy/dist/index.d.ts
|
|
6
|
+
interface ProxyTargetDetailed {
|
|
7
|
+
host: string;
|
|
8
|
+
port: number;
|
|
9
|
+
protocol?: string;
|
|
10
|
+
hostname?: string;
|
|
11
|
+
socketPath?: string;
|
|
12
|
+
key?: string;
|
|
13
|
+
passphrase?: string;
|
|
14
|
+
pfx?: Buffer | string;
|
|
15
|
+
cert?: string;
|
|
16
|
+
ca?: string;
|
|
17
|
+
ciphers?: string;
|
|
18
|
+
secureProtocol?: string;
|
|
19
|
+
}
|
|
20
|
+
type ProxyTarget = ProxyTargetUrl | ProxyTargetDetailed;
|
|
21
|
+
type ProxyTargetUrl = string | Partial<URL>;
|
|
22
|
+
interface ProxyServerOptions {
|
|
23
|
+
/** URL string to be parsed with the url module. */
|
|
24
|
+
target?: ProxyTarget;
|
|
25
|
+
/** URL string to be parsed with the url module. */
|
|
26
|
+
forward?: ProxyTargetUrl;
|
|
27
|
+
/** Object to be passed to http(s).request. */
|
|
28
|
+
agent?: any;
|
|
29
|
+
/** Object to be passed to https.createServer(). */
|
|
30
|
+
ssl?: any;
|
|
31
|
+
/** If you want to proxy websockets. */
|
|
32
|
+
ws?: boolean;
|
|
33
|
+
/** Adds x- forward headers. */
|
|
34
|
+
xfwd?: boolean;
|
|
35
|
+
/** Verify SSL certificate. */
|
|
36
|
+
secure?: boolean;
|
|
37
|
+
/** Explicitly specify if we are proxying to another proxy. */
|
|
38
|
+
toProxy?: boolean;
|
|
39
|
+
/** Specify whether you want to prepend the target's path to the proxy path. */
|
|
40
|
+
prependPath?: boolean;
|
|
41
|
+
/** Specify whether you want to ignore the proxy path of the incoming request. */
|
|
42
|
+
ignorePath?: boolean;
|
|
43
|
+
/** Local interface string to bind for outgoing connections. */
|
|
44
|
+
localAddress?: string;
|
|
45
|
+
/** Changes the origin of the host header to the target URL. */
|
|
46
|
+
changeOrigin?: boolean;
|
|
47
|
+
/** specify whether you want to keep letter case of response header key */
|
|
48
|
+
preserveHeaderKeyCase?: boolean;
|
|
49
|
+
/** Basic authentication i.e. 'user:password' to compute an Authorization header. */
|
|
50
|
+
auth?: string;
|
|
51
|
+
/** Rewrites the location hostname on (301 / 302 / 307 / 308) redirects, Default: null. */
|
|
52
|
+
hostRewrite?: string;
|
|
53
|
+
/** Rewrites the location host/ port on (301 / 302 / 307 / 308) redirects based on requested host/ port.Default: false. */
|
|
54
|
+
autoRewrite?: boolean;
|
|
55
|
+
/** Rewrites the location protocol on (301 / 302 / 307 / 308) redirects to 'http' or 'https'.Default: null. */
|
|
56
|
+
protocolRewrite?: string;
|
|
57
|
+
/** Rewrites domain of set-cookie headers. */
|
|
58
|
+
cookieDomainRewrite?: false | string | {
|
|
59
|
+
[oldDomain: string]: string;
|
|
60
|
+
};
|
|
61
|
+
/** Rewrites path of set-cookie headers. Default: false */
|
|
62
|
+
cookiePathRewrite?: false | string | {
|
|
63
|
+
[oldPath: string]: string;
|
|
64
|
+
};
|
|
65
|
+
/** Object with extra headers to be added to target requests. */
|
|
66
|
+
headers?: {
|
|
67
|
+
[header: string]: string;
|
|
68
|
+
};
|
|
69
|
+
/** Timeout (in milliseconds) when proxy receives no response from target. Default: 120000 (2 minutes) */
|
|
70
|
+
proxyTimeout?: number;
|
|
71
|
+
/** Timeout (in milliseconds) for incoming requests */
|
|
72
|
+
timeout?: number;
|
|
73
|
+
/** If set to true, none of the webOutgoing passes are called and it's your responsibility to appropriately return the response by listening and acting on the proxyRes event */
|
|
74
|
+
selfHandleResponse?: boolean;
|
|
75
|
+
/** Buffer */
|
|
76
|
+
buffer?: stream.Stream;
|
|
77
|
+
}
|
|
78
|
+
//#endregion
|
|
79
|
+
export { ProxyServerOptions as t };
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
import { n as __exportAll } from "../_common.mjs";
|
|
2
|
+
import http from "node:http";
|
|
3
|
+
import https from "node:https";
|
|
4
|
+
import { EventEmitter } from "node:events";
|
|
5
|
+
|
|
6
|
+
//#region node_modules/.pnpm/httpxy@0.1.7/node_modules/httpxy/dist/index.mjs
|
|
7
|
+
var dist_exports = /* @__PURE__ */ __exportAll({
|
|
8
|
+
ProxyServer: () => ProxyServer,
|
|
9
|
+
createProxyServer: () => createProxyServer
|
|
10
|
+
});
|
|
11
|
+
const upgradeHeader = /(^|,)\s*upgrade\s*($|,)/i;
|
|
12
|
+
const isSSL = /^https|wss/;
|
|
13
|
+
function setupOutgoing(outgoing, options, req, forward) {
|
|
14
|
+
outgoing.port = options[forward || "target"].port || (isSSL.test(options[forward || "target"].protocol) ? 443 : 80);
|
|
15
|
+
for (const e of [
|
|
16
|
+
"host",
|
|
17
|
+
"hostname",
|
|
18
|
+
"socketPath",
|
|
19
|
+
"pfx",
|
|
20
|
+
"key",
|
|
21
|
+
"passphrase",
|
|
22
|
+
"cert",
|
|
23
|
+
"ca",
|
|
24
|
+
"ciphers",
|
|
25
|
+
"secureProtocol"
|
|
26
|
+
]) outgoing[e] = options[forward || "target"][e];
|
|
27
|
+
outgoing.method = options.method || req.method;
|
|
28
|
+
outgoing.headers = { ...req.headers };
|
|
29
|
+
if (options.headers) outgoing.headers = {
|
|
30
|
+
...outgoing.headers,
|
|
31
|
+
...options.headers
|
|
32
|
+
};
|
|
33
|
+
if (options.auth) outgoing.auth = options.auth;
|
|
34
|
+
if (options.ca) outgoing.ca = options.ca;
|
|
35
|
+
if (isSSL.test(options[forward || "target"].protocol)) outgoing.rejectUnauthorized = options.secure === void 0 ? true : options.secure;
|
|
36
|
+
outgoing.agent = options.agent || false;
|
|
37
|
+
outgoing.localAddress = options.localAddress;
|
|
38
|
+
if (!outgoing.agent) {
|
|
39
|
+
outgoing.headers = outgoing.headers || {};
|
|
40
|
+
if (typeof outgoing.headers.connection !== "string" || !upgradeHeader.test(outgoing.headers.connection)) outgoing.headers.connection = "close";
|
|
41
|
+
}
|
|
42
|
+
const target = options[forward || "target"];
|
|
43
|
+
const targetPath = target && options.prependPath !== false ? target.pathname || target.path || "" : "";
|
|
44
|
+
const parsed = new URL(req.url, "http://localhost");
|
|
45
|
+
let outgoingPath = options.toProxy ? req.url : parsed.pathname + parsed.search || "";
|
|
46
|
+
outgoingPath = options.ignorePath ? "" : outgoingPath;
|
|
47
|
+
outgoing.path = joinURL(targetPath, outgoingPath);
|
|
48
|
+
if (options.changeOrigin) outgoing.headers.host = requiresPort(outgoing.port, options[forward || "target"].protocol) && !hasPort(outgoing.host) ? outgoing.host + ":" + outgoing.port : outgoing.host;
|
|
49
|
+
return outgoing;
|
|
50
|
+
}
|
|
51
|
+
function joinURL(base, path) {
|
|
52
|
+
if (!base || base === "/") return path || "/";
|
|
53
|
+
if (!path || path === "/") return base || "/";
|
|
54
|
+
const baseHasTrailing = base[base.length - 1] === "/";
|
|
55
|
+
const pathHasLeading = path[0] === "/";
|
|
56
|
+
if (baseHasTrailing && pathHasLeading) return base + path.slice(1);
|
|
57
|
+
if (!baseHasTrailing && !pathHasLeading) return base + "/" + path;
|
|
58
|
+
return base + path;
|
|
59
|
+
}
|
|
60
|
+
function setupSocket(socket) {
|
|
61
|
+
socket.setTimeout(0);
|
|
62
|
+
socket.setNoDelay(true);
|
|
63
|
+
socket.setKeepAlive(true, 0);
|
|
64
|
+
return socket;
|
|
65
|
+
}
|
|
66
|
+
function getPort(req) {
|
|
67
|
+
const res = req.headers.host ? req.headers.host.match(/:(\d+)/) : "";
|
|
68
|
+
if (res) return res[1];
|
|
69
|
+
return hasEncryptedConnection(req) ? "443" : "80";
|
|
70
|
+
}
|
|
71
|
+
function hasEncryptedConnection(req) {
|
|
72
|
+
return Boolean(req.connection.encrypted || req.connection.pair);
|
|
73
|
+
}
|
|
74
|
+
function rewriteCookieProperty(header, config, property) {
|
|
75
|
+
if (Array.isArray(header)) return header.map(function(headerElement) {
|
|
76
|
+
return rewriteCookieProperty(headerElement, config, property);
|
|
77
|
+
});
|
|
78
|
+
return header.replace(new RegExp(String.raw`(;\s*` + property + "=)([^;]+)", "i"), function(match, prefix, previousValue) {
|
|
79
|
+
let newValue;
|
|
80
|
+
if (previousValue in config) newValue = config[previousValue];
|
|
81
|
+
else if ("*" in config) newValue = config["*"];
|
|
82
|
+
else return match;
|
|
83
|
+
return newValue ? prefix + newValue : "";
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function hasPort(host) {
|
|
87
|
+
return !!~host.indexOf(":");
|
|
88
|
+
}
|
|
89
|
+
function requiresPort(_port, _protocol) {
|
|
90
|
+
const protocol = _protocol.split(":")[0];
|
|
91
|
+
const port = +_port;
|
|
92
|
+
if (!port) return false;
|
|
93
|
+
switch (protocol) {
|
|
94
|
+
case "http":
|
|
95
|
+
case "ws": return port !== 80;
|
|
96
|
+
case "https":
|
|
97
|
+
case "wss": return port !== 443;
|
|
98
|
+
case "ftp": return port !== 21;
|
|
99
|
+
case "gopher": return port !== 70;
|
|
100
|
+
case "file": return false;
|
|
101
|
+
}
|
|
102
|
+
return port !== 0;
|
|
103
|
+
}
|
|
104
|
+
function defineProxyMiddleware(m) {
|
|
105
|
+
return m;
|
|
106
|
+
}
|
|
107
|
+
function defineProxyOutgoingMiddleware(m) {
|
|
108
|
+
return m;
|
|
109
|
+
}
|
|
110
|
+
const redirectRegex = /^201|30([1278])$/;
|
|
111
|
+
const webOutgoingMiddleware = [
|
|
112
|
+
defineProxyOutgoingMiddleware((req, res, proxyRes) => {
|
|
113
|
+
if (req.httpVersion === "1.0") delete proxyRes.headers["transfer-encoding"];
|
|
114
|
+
}),
|
|
115
|
+
defineProxyOutgoingMiddleware((req, res, proxyRes) => {
|
|
116
|
+
if (req.httpVersion === "1.0") proxyRes.headers.connection = req.headers.connection || "close";
|
|
117
|
+
else if (req.httpVersion !== "2.0" && !proxyRes.headers.connection) proxyRes.headers.connection = req.headers.connection || "keep-alive";
|
|
118
|
+
}),
|
|
119
|
+
defineProxyOutgoingMiddleware((req, res, proxyRes, options) => {
|
|
120
|
+
if ((options.hostRewrite || options.autoRewrite || options.protocolRewrite) && proxyRes.headers.location && redirectRegex.test(String(proxyRes.statusCode))) {
|
|
121
|
+
const target = new URL(options.target);
|
|
122
|
+
const u = new URL(proxyRes.headers.location);
|
|
123
|
+
if (target.host !== u.host) return;
|
|
124
|
+
if (options.hostRewrite) u.host = options.hostRewrite;
|
|
125
|
+
else if (options.autoRewrite) u.host = req.headers.host;
|
|
126
|
+
if (options.protocolRewrite) u.protocol = options.protocolRewrite;
|
|
127
|
+
proxyRes.headers.location = u.toString();
|
|
128
|
+
}
|
|
129
|
+
}),
|
|
130
|
+
defineProxyOutgoingMiddleware((req, res, proxyRes, options) => {
|
|
131
|
+
let rewriteCookieDomainConfig = options.cookieDomainRewrite;
|
|
132
|
+
let rewriteCookiePathConfig = options.cookiePathRewrite;
|
|
133
|
+
const preserveHeaderKeyCase = options.preserveHeaderKeyCase;
|
|
134
|
+
let rawHeaderKeyMap;
|
|
135
|
+
const setHeader = function(key, header) {
|
|
136
|
+
if (header === void 0) return;
|
|
137
|
+
if (rewriteCookieDomainConfig && key.toLowerCase() === "set-cookie") header = rewriteCookieProperty(header, rewriteCookieDomainConfig, "domain");
|
|
138
|
+
if (rewriteCookiePathConfig && key.toLowerCase() === "set-cookie") header = rewriteCookieProperty(header, rewriteCookiePathConfig, "path");
|
|
139
|
+
res.setHeader(String(key).trim(), header);
|
|
140
|
+
};
|
|
141
|
+
if (typeof rewriteCookieDomainConfig === "string") rewriteCookieDomainConfig = { "*": rewriteCookieDomainConfig };
|
|
142
|
+
if (typeof rewriteCookiePathConfig === "string") rewriteCookiePathConfig = { "*": rewriteCookiePathConfig };
|
|
143
|
+
if (preserveHeaderKeyCase && proxyRes.rawHeaders !== void 0) {
|
|
144
|
+
rawHeaderKeyMap = {};
|
|
145
|
+
for (let i = 0; i < proxyRes.rawHeaders.length; i += 2) {
|
|
146
|
+
const key = proxyRes.rawHeaders[i];
|
|
147
|
+
rawHeaderKeyMap[key.toLowerCase()] = key;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (let key of Object.keys(proxyRes.headers)) {
|
|
151
|
+
const header = proxyRes.headers[key];
|
|
152
|
+
if (preserveHeaderKeyCase && rawHeaderKeyMap) key = rawHeaderKeyMap[key] || key;
|
|
153
|
+
setHeader(key, header);
|
|
154
|
+
}
|
|
155
|
+
}),
|
|
156
|
+
defineProxyOutgoingMiddleware((req, res, proxyRes) => {
|
|
157
|
+
if (proxyRes.statusMessage) {
|
|
158
|
+
res.statusCode = proxyRes.statusCode;
|
|
159
|
+
res.statusMessage = proxyRes.statusMessage;
|
|
160
|
+
} else res.statusCode = proxyRes.statusCode;
|
|
161
|
+
})
|
|
162
|
+
];
|
|
163
|
+
const nativeAgents = {
|
|
164
|
+
http,
|
|
165
|
+
https
|
|
166
|
+
};
|
|
167
|
+
const webIncomingMiddleware = [
|
|
168
|
+
defineProxyMiddleware((req) => {
|
|
169
|
+
if ((req.method === "DELETE" || req.method === "OPTIONS") && !req.headers["content-length"]) {
|
|
170
|
+
req.headers["content-length"] = "0";
|
|
171
|
+
delete req.headers["transfer-encoding"];
|
|
172
|
+
}
|
|
173
|
+
}),
|
|
174
|
+
defineProxyMiddleware((req, res, options) => {
|
|
175
|
+
if (options.timeout) req.socket.setTimeout(options.timeout);
|
|
176
|
+
}),
|
|
177
|
+
defineProxyMiddleware((req, res, options) => {
|
|
178
|
+
if (!options.xfwd) return;
|
|
179
|
+
const encrypted = req.isSpdy || hasEncryptedConnection(req);
|
|
180
|
+
const values = {
|
|
181
|
+
for: req.connection.remoteAddress || req.socket.remoteAddress,
|
|
182
|
+
port: getPort(req),
|
|
183
|
+
proto: encrypted ? "https" : "http"
|
|
184
|
+
};
|
|
185
|
+
for (const header of [
|
|
186
|
+
"for",
|
|
187
|
+
"port",
|
|
188
|
+
"proto"
|
|
189
|
+
]) req.headers["x-forwarded-" + header] = (req.headers["x-forwarded-" + header] || "") + (req.headers["x-forwarded-" + header] ? "," : "") + values[header];
|
|
190
|
+
req.headers["x-forwarded-host"] = req.headers["x-forwarded-host"] || req.headers.host || "";
|
|
191
|
+
}),
|
|
192
|
+
defineProxyMiddleware((req, res, options, server, head, callback) => {
|
|
193
|
+
server.emit("start", req, res, options.target || options.forward);
|
|
194
|
+
const agents = nativeAgents;
|
|
195
|
+
const http$1 = agents.http;
|
|
196
|
+
const https$1 = agents.https;
|
|
197
|
+
if (options.forward) {
|
|
198
|
+
const forwardReq = (options.forward.protocol === "https:" ? https$1 : http$1).request(setupOutgoing(options.ssl || {}, options, req, "forward"));
|
|
199
|
+
const forwardError = createErrorHandler(forwardReq, options.forward);
|
|
200
|
+
req.on("error", forwardError);
|
|
201
|
+
forwardReq.on("error", forwardError);
|
|
202
|
+
(options.buffer || req).pipe(forwardReq);
|
|
203
|
+
if (!options.target) {
|
|
204
|
+
res.end();
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
const proxyReq = (options.target.protocol === "https:" ? https$1 : http$1).request(setupOutgoing(options.ssl || {}, options, req));
|
|
209
|
+
proxyReq.on("socket", (socket) => {
|
|
210
|
+
if (server && !proxyReq.getHeader("expect")) server.emit("proxyReq", proxyReq, req, res, options);
|
|
211
|
+
});
|
|
212
|
+
if (options.proxyTimeout) proxyReq.setTimeout(options.proxyTimeout, function() {
|
|
213
|
+
proxyReq.abort();
|
|
214
|
+
});
|
|
215
|
+
req.on("aborted", function() {
|
|
216
|
+
proxyReq.abort();
|
|
217
|
+
});
|
|
218
|
+
const proxyError = createErrorHandler(proxyReq, options.target);
|
|
219
|
+
req.on("error", proxyError);
|
|
220
|
+
proxyReq.on("error", proxyError);
|
|
221
|
+
function createErrorHandler(proxyReq2, url) {
|
|
222
|
+
return function proxyError2(err) {
|
|
223
|
+
if (req.socket.destroyed && err.code === "ECONNRESET") {
|
|
224
|
+
server.emit("econnreset", err, req, res, url);
|
|
225
|
+
return proxyReq2.abort();
|
|
226
|
+
}
|
|
227
|
+
if (callback) callback(err, req, res, url);
|
|
228
|
+
else server.emit("error", err, req, res, url);
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
(options.buffer || req).pipe(proxyReq);
|
|
232
|
+
proxyReq.on("response", function(proxyRes) {
|
|
233
|
+
if (server) server.emit("proxyRes", proxyRes, req, res);
|
|
234
|
+
if (!res.headersSent && !options.selfHandleResponse) {
|
|
235
|
+
for (const pass of webOutgoingMiddleware) if (pass(req, res, proxyRes, options)) break;
|
|
236
|
+
}
|
|
237
|
+
if (res.finished) {
|
|
238
|
+
if (server) server.emit("end", req, res, proxyRes);
|
|
239
|
+
} else {
|
|
240
|
+
res.on("close", function() {
|
|
241
|
+
proxyRes.destroy();
|
|
242
|
+
});
|
|
243
|
+
proxyRes.on("end", function() {
|
|
244
|
+
if (server) server.emit("end", req, res, proxyRes);
|
|
245
|
+
});
|
|
246
|
+
if (!options.selfHandleResponse) proxyRes.pipe(res);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
})
|
|
250
|
+
];
|
|
251
|
+
const websocketIncomingMiddleware = [
|
|
252
|
+
defineProxyMiddleware((req, socket) => {
|
|
253
|
+
if (req.method !== "GET" || !req.headers.upgrade) {
|
|
254
|
+
socket.destroy();
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
if (req.headers.upgrade.toLowerCase() !== "websocket") {
|
|
258
|
+
socket.destroy();
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
}),
|
|
262
|
+
defineProxyMiddleware((req, socket, options) => {
|
|
263
|
+
if (!options.xfwd) return;
|
|
264
|
+
const values = {
|
|
265
|
+
for: req.connection.remoteAddress || req.socket.remoteAddress,
|
|
266
|
+
port: getPort(req),
|
|
267
|
+
proto: hasEncryptedConnection(req) ? "wss" : "ws"
|
|
268
|
+
};
|
|
269
|
+
for (const header of [
|
|
270
|
+
"for",
|
|
271
|
+
"port",
|
|
272
|
+
"proto"
|
|
273
|
+
]) req.headers["x-forwarded-" + header] = (req.headers["x-forwarded-" + header] || "") + (req.headers["x-forwarded-" + header] ? "," : "") + values[header];
|
|
274
|
+
}),
|
|
275
|
+
defineProxyMiddleware((req, socket, options, server, head, callback) => {
|
|
276
|
+
const createHttpHeader = function(line, headers) {
|
|
277
|
+
return Object.keys(headers).reduce(function(head2, key) {
|
|
278
|
+
const value = headers[key];
|
|
279
|
+
if (!Array.isArray(value)) {
|
|
280
|
+
head2.push(key + ": " + value);
|
|
281
|
+
return head2;
|
|
282
|
+
}
|
|
283
|
+
for (const element of value) head2.push(key + ": " + element);
|
|
284
|
+
return head2;
|
|
285
|
+
}, [line]).join("\r\n") + "\r\n\r\n";
|
|
286
|
+
};
|
|
287
|
+
setupSocket(socket);
|
|
288
|
+
if (head && head.length > 0) socket.unshift(head);
|
|
289
|
+
const proxyReq = (isSSL.test(options.target.protocol) ? https : http).request(setupOutgoing(options.ssl || {}, options, req));
|
|
290
|
+
if (server) server.emit("proxyReqWs", proxyReq, req, socket, options, head);
|
|
291
|
+
proxyReq.on("error", onOutgoingError);
|
|
292
|
+
proxyReq.on("response", function(res) {
|
|
293
|
+
if (!res.upgrade) {
|
|
294
|
+
socket.write(createHttpHeader("HTTP/" + res.httpVersion + " " + res.statusCode + " " + res.statusMessage, res.headers));
|
|
295
|
+
res.pipe(socket);
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
proxyReq.on("upgrade", function(proxyRes, proxySocket, proxyHead) {
|
|
299
|
+
proxySocket.on("error", onOutgoingError);
|
|
300
|
+
proxySocket.on("end", function() {
|
|
301
|
+
server.emit("close", proxyRes, proxySocket, proxyHead);
|
|
302
|
+
});
|
|
303
|
+
socket.on("error", function() {
|
|
304
|
+
proxySocket.end();
|
|
305
|
+
});
|
|
306
|
+
setupSocket(proxySocket);
|
|
307
|
+
if (proxyHead && proxyHead.length > 0) proxySocket.unshift(proxyHead);
|
|
308
|
+
socket.write(createHttpHeader("HTTP/1.1 101 Switching Protocols", proxyRes.headers));
|
|
309
|
+
proxySocket.pipe(socket).pipe(proxySocket);
|
|
310
|
+
server.emit("open", proxySocket);
|
|
311
|
+
server.emit("proxySocket", proxySocket);
|
|
312
|
+
});
|
|
313
|
+
proxyReq.end();
|
|
314
|
+
function onOutgoingError(err) {
|
|
315
|
+
if (callback) callback(err, req, socket);
|
|
316
|
+
else server.emit("error", err, req, socket);
|
|
317
|
+
socket.end();
|
|
318
|
+
}
|
|
319
|
+
})
|
|
320
|
+
];
|
|
321
|
+
var ProxyServer = class extends EventEmitter {
|
|
322
|
+
_server;
|
|
323
|
+
_webPasses = [...webIncomingMiddleware];
|
|
324
|
+
_wsPasses = [...websocketIncomingMiddleware];
|
|
325
|
+
options;
|
|
326
|
+
web;
|
|
327
|
+
ws;
|
|
328
|
+
/**
|
|
329
|
+
* Creates the proxy server with specified options.
|
|
330
|
+
* @param options - Config object passed to the proxy
|
|
331
|
+
*/
|
|
332
|
+
constructor(options = {}) {
|
|
333
|
+
super();
|
|
334
|
+
this.options = options || {};
|
|
335
|
+
this.options.prependPath = options.prependPath !== false;
|
|
336
|
+
this.web = _createProxyFn("web", this);
|
|
337
|
+
this.ws = _createProxyFn("ws", this);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* A function that wraps the object in a webserver, for your convenience
|
|
341
|
+
* @param port - Port to listen on
|
|
342
|
+
* @param hostname - The hostname to listen on
|
|
343
|
+
*/
|
|
344
|
+
listen(port, hostname) {
|
|
345
|
+
const closure = (req, res) => {
|
|
346
|
+
this.web(req, res);
|
|
347
|
+
};
|
|
348
|
+
this._server = this.options.ssl ? https.createServer(this.options.ssl, closure) : http.createServer(closure);
|
|
349
|
+
if (this.options.ws) this._server.on("upgrade", (req, socket, head) => {
|
|
350
|
+
this._ws(req, socket, head);
|
|
351
|
+
});
|
|
352
|
+
this._server.listen(port, hostname);
|
|
353
|
+
return this;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* A function that closes the inner webserver and stops listening on given port
|
|
357
|
+
*/
|
|
358
|
+
close(callback) {
|
|
359
|
+
if (this._server) this._server.close((...args) => {
|
|
360
|
+
this._server = void 0;
|
|
361
|
+
if (callback) Reflect.apply(callback, void 0, args);
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
before(type, passName, pass) {
|
|
365
|
+
if (type !== "ws" && type !== "web") throw new Error("type must be `web` or `ws`");
|
|
366
|
+
const passes = type === "ws" ? this._wsPasses : this._webPasses;
|
|
367
|
+
let i = false;
|
|
368
|
+
for (const [idx, v] of passes.entries()) if (v.name === passName) i = idx;
|
|
369
|
+
if (i === false) throw new Error("No such pass");
|
|
370
|
+
passes.splice(i, 0, pass);
|
|
371
|
+
}
|
|
372
|
+
after(type, passName, pass) {
|
|
373
|
+
if (type !== "ws" && type !== "web") throw new Error("type must be `web` or `ws`");
|
|
374
|
+
const passes = type === "ws" ? this._wsPasses : this._webPasses;
|
|
375
|
+
let i = false;
|
|
376
|
+
for (const [idx, v] of passes.entries()) if (v.name === passName) i = idx;
|
|
377
|
+
if (i === false) throw new Error("No such pass");
|
|
378
|
+
passes.splice(i++, 0, pass);
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
function createProxyServer(options = {}) {
|
|
382
|
+
return new ProxyServer(options);
|
|
383
|
+
}
|
|
384
|
+
function _createProxyFn(type, server) {
|
|
385
|
+
return function(req, res, opts, head) {
|
|
386
|
+
const requestOptions = {
|
|
387
|
+
...opts,
|
|
388
|
+
...server.options
|
|
389
|
+
};
|
|
390
|
+
for (const key of ["target", "forward"]) if (typeof requestOptions[key] === "string") requestOptions[key] = new URL(requestOptions[key]);
|
|
391
|
+
if (!requestOptions.target && !requestOptions.forward) return this.emit("error", /* @__PURE__ */ new Error("Must provide a proper URL as target"));
|
|
392
|
+
let _resolve;
|
|
393
|
+
let _reject;
|
|
394
|
+
const callbackPromise = new Promise((resolve, reject) => {
|
|
395
|
+
_resolve = resolve;
|
|
396
|
+
_reject = reject;
|
|
397
|
+
});
|
|
398
|
+
res.on("close", () => {
|
|
399
|
+
_resolve();
|
|
400
|
+
});
|
|
401
|
+
res.on("error", (error) => {
|
|
402
|
+
_reject(error);
|
|
403
|
+
});
|
|
404
|
+
for (const pass of type === "ws" ? server._wsPasses : server._webPasses) if (pass(req, res, requestOptions, server, head, (error) => {
|
|
405
|
+
_reject(error);
|
|
406
|
+
})) {
|
|
407
|
+
_resolve();
|
|
408
|
+
break;
|
|
409
|
+
}
|
|
410
|
+
return callbackPromise;
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
//#endregion
|
|
415
|
+
export { dist_exports as n, createProxyServer as t };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region node_modules/.pnpm/klona@2.0.6/node_modules/klona/full/index.mjs
|
|
2
|
+
function set(obj, key, val) {
|
|
3
|
+
if (typeof val.value === "object") val.value = klona(val.value);
|
|
4
|
+
if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === "__proto__") Object.defineProperty(obj, key, val);
|
|
5
|
+
else obj[key] = val.value;
|
|
6
|
+
}
|
|
7
|
+
function klona(x) {
|
|
8
|
+
if (typeof x !== "object") return x;
|
|
9
|
+
var i = 0, k, list, tmp, str = Object.prototype.toString.call(x);
|
|
10
|
+
if (str === "[object Object]") tmp = Object.create(x.__proto__ || null);
|
|
11
|
+
else if (str === "[object Array]") tmp = Array(x.length);
|
|
12
|
+
else if (str === "[object Set]") {
|
|
13
|
+
tmp = /* @__PURE__ */ new Set();
|
|
14
|
+
x.forEach(function(val) {
|
|
15
|
+
tmp.add(klona(val));
|
|
16
|
+
});
|
|
17
|
+
} else if (str === "[object Map]") {
|
|
18
|
+
tmp = /* @__PURE__ */ new Map();
|
|
19
|
+
x.forEach(function(val, key) {
|
|
20
|
+
tmp.set(klona(key), klona(val));
|
|
21
|
+
});
|
|
22
|
+
} else if (str === "[object Date]") tmp = /* @__PURE__ */ new Date(+x);
|
|
23
|
+
else if (str === "[object RegExp]") tmp = new RegExp(x.source, x.flags);
|
|
24
|
+
else if (str === "[object DataView]") tmp = new x.constructor(klona(x.buffer));
|
|
25
|
+
else if (str === "[object ArrayBuffer]") tmp = x.slice(0);
|
|
26
|
+
else if (str.slice(-6) === "Array]") tmp = new x.constructor(x);
|
|
27
|
+
if (tmp) {
|
|
28
|
+
for (list = Object.getOwnPropertySymbols(x); i < list.length; i++) set(tmp, list[i], Object.getOwnPropertyDescriptor(x, list[i]));
|
|
29
|
+
for (i = 0, list = Object.getOwnPropertyNames(x); i < list.length; i++) {
|
|
30
|
+
if (Object.hasOwnProperty.call(tmp, k = list[i]) && tmp[k] === x[k]) continue;
|
|
31
|
+
set(tmp, k, Object.getOwnPropertyDescriptor(x, k));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return tmp || x;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//#endregion
|
|
38
|
+
export { klona as t };
|