@introspection-sdk/introspection-proxy 0.4.7 → 0.4.9
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/.turbo/turbo-build.log +1 -1
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +15 -8
- package/dist/proxy.js.map +1 -1
- package/package.json +3 -3
- package/src/proxy.ts +15 -8
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @introspection-sdk/introspection-proxy@0.4.
|
|
2
|
+
> @introspection-sdk/introspection-proxy@0.4.9 build /home/runner/work/introspection-js-sdk/introspection-js-sdk/packages/introspection-proxy
|
|
3
3
|
> tsc
|
|
4
4
|
|
package/dist/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAiBA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,QAAQ,CAAC;AAEhB,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAiBD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAQ3D;AA0BD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,iBAAsB,GAC9B,UAAU,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAiBA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,QAAQ,CAAC;AAEhB,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAiBD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAQ3D;AA0BD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,iBAAsB,GAC9B,UAAU,GAAG,SAAS,CAUxB;AAaD,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,KAAK,CAwDd;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,IAAI,CAU7E"}
|
package/dist/proxy.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* plain-HTTP reverse proxy that routes by `Host` header and injects upstream
|
|
8
8
|
* credentials via ext_proc. Only used for hosts listed in
|
|
9
9
|
* `INTROSPECTION_ENDPOINT_HOSTS` (comma-separated). When the host list is
|
|
10
|
-
* empty, all traffic
|
|
10
|
+
* empty, egress is disabled and all traffic uses the forward proxy.
|
|
11
11
|
*
|
|
12
12
|
* - **Forward CONNECT proxy** (`HTTPS_PROXY` / `HTTP_PROXY`): opaque TLS
|
|
13
13
|
* tunnel the proxy cannot read or modify. Used for all other hosts (S3,
|
|
@@ -60,7 +60,8 @@ function buildEgressDispatcher(proxyUrl) {
|
|
|
60
60
|
*/
|
|
61
61
|
export function getProxyDispatcher(options = {}) {
|
|
62
62
|
const egressUrl = resolveEgressUrl(options);
|
|
63
|
-
|
|
63
|
+
const egressHostSet = resolveEgressHosts(options);
|
|
64
|
+
if (egressUrl && egressHostSet.size > 0) {
|
|
64
65
|
return buildEgressDispatcher(egressUrl);
|
|
65
66
|
}
|
|
66
67
|
if (resolveForwardProxyUrl()) {
|
|
@@ -80,6 +81,10 @@ function downgradeToHttp(url) {
|
|
|
80
81
|
return s.startsWith("https://") ? "http://" + s.slice(8) : s;
|
|
81
82
|
}
|
|
82
83
|
export function createProxyFetch(options = {}) {
|
|
84
|
+
// Capture the real fetch now, before installProxyFetch swaps
|
|
85
|
+
// globalThis.fetch to this wrapper. The per-request fallback below must not
|
|
86
|
+
// re-read the global, or it would recurse into the installed proxy.
|
|
87
|
+
const base = globalThis.fetch;
|
|
83
88
|
const egressUrl = resolveEgressUrl(options);
|
|
84
89
|
const egressHosts = resolveEgressHosts(options);
|
|
85
90
|
const egressIsPlainHttp = !!egressUrl && new URL(egressUrl).protocol === "http:";
|
|
@@ -88,13 +93,13 @@ export function createProxyFetch(options = {}) {
|
|
|
88
93
|
? new EnvHttpProxyAgent()
|
|
89
94
|
: undefined;
|
|
90
95
|
if (!egress && !forward)
|
|
91
|
-
return
|
|
96
|
+
return base;
|
|
92
97
|
return (input, init) => {
|
|
93
98
|
const hostname = new URL(toUrlString(input)).hostname.toLowerCase();
|
|
94
|
-
const useEgress = !!egress &&
|
|
99
|
+
const useEgress = !!egress && egressHosts.size > 0 && egressHosts.has(hostname);
|
|
95
100
|
const dispatcher = useEgress ? egress : forward;
|
|
96
101
|
if (!dispatcher)
|
|
97
|
-
return
|
|
102
|
+
return base(input, init);
|
|
98
103
|
let target;
|
|
99
104
|
let opts;
|
|
100
105
|
if (typeof Request !== "undefined" && input instanceof Request) {
|
|
@@ -123,13 +128,15 @@ export function createProxyFetch(options = {}) {
|
|
|
123
128
|
};
|
|
124
129
|
}
|
|
125
130
|
export function installProxyFetch(options = {}) {
|
|
131
|
+
const original = globalThis.fetch;
|
|
126
132
|
const proxied = createProxyFetch(options);
|
|
127
|
-
if (proxied ===
|
|
133
|
+
if (proxied === original)
|
|
128
134
|
return () => { };
|
|
129
|
-
const original = globalThis.fetch;
|
|
130
135
|
globalThis.fetch = proxied;
|
|
131
136
|
return () => {
|
|
132
|
-
globalThis.fetch
|
|
137
|
+
if (globalThis.fetch === proxied) {
|
|
138
|
+
globalThis.fetch = original;
|
|
139
|
+
}
|
|
133
140
|
};
|
|
134
141
|
}
|
|
135
142
|
//# sourceMappingURL=proxy.js.map
|
package/dist/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EACL,KAAK,EACL,iBAAiB,EAEjB,KAAK,IAAI,WAAW,GAErB,MAAM,QAAQ,CAAC;AAQhB,SAAS,gBAAgB,CAAC,OAA0B;IAClD,OAAO,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;AACxE,CAAC;AAED,SAAS,kBAAkB,CAAC,OAA0B;IACpD,MAAM,GAAG,GACP,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,EAAE,CAAC;IAC7E,OAAO,IAAI,GAAG,CACZ,GAAG;SACA,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,SAAS,CACV,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IAE1B,OAAO,IAAI,KAAK,CAAC;QACf,OAAO,CACL,QAAgC,EAChC,QAAiC;YAEjC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBACzD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAA6B,EAAE;IAE/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@introspection-sdk/introspection-proxy",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Outbound HTTP proxy helpers for routing fetch-based clients through the Introspection egress proxy or a standard forward proxy",
|
|
6
6
|
"engines": {
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"undici": "^8.
|
|
19
|
+
"undici": "^8.4.0"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@types/node": "^22.19.
|
|
22
|
+
"@types/node": "^22.19.20",
|
|
23
23
|
"eslint": "^9.39.4",
|
|
24
24
|
"typescript": "5.9.3",
|
|
25
25
|
"@repo/eslint-config": "0.0.0",
|
package/src/proxy.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* plain-HTTP reverse proxy that routes by `Host` header and injects upstream
|
|
8
8
|
* credentials via ext_proc. Only used for hosts listed in
|
|
9
9
|
* `INTROSPECTION_ENDPOINT_HOSTS` (comma-separated). When the host list is
|
|
10
|
-
* empty, all traffic
|
|
10
|
+
* empty, egress is disabled and all traffic uses the forward proxy.
|
|
11
11
|
*
|
|
12
12
|
* - **Forward CONNECT proxy** (`HTTPS_PROXY` / `HTTP_PROXY`): opaque TLS
|
|
13
13
|
* tunnel the proxy cannot read or modify. Used for all other hosts (S3,
|
|
@@ -87,7 +87,8 @@ export function getProxyDispatcher(
|
|
|
87
87
|
options: ProxyFetchOptions = {},
|
|
88
88
|
): Dispatcher | undefined {
|
|
89
89
|
const egressUrl = resolveEgressUrl(options);
|
|
90
|
-
|
|
90
|
+
const egressHostSet = resolveEgressHosts(options);
|
|
91
|
+
if (egressUrl && egressHostSet.size > 0) {
|
|
91
92
|
return buildEgressDispatcher(egressUrl);
|
|
92
93
|
}
|
|
93
94
|
if (resolveForwardProxyUrl()) {
|
|
@@ -110,6 +111,10 @@ function downgradeToHttp(url: string | URL): string {
|
|
|
110
111
|
export function createProxyFetch(
|
|
111
112
|
options: ProxyFetchOptions = {},
|
|
112
113
|
): typeof fetch {
|
|
114
|
+
// Capture the real fetch now, before installProxyFetch swaps
|
|
115
|
+
// globalThis.fetch to this wrapper. The per-request fallback below must not
|
|
116
|
+
// re-read the global, or it would recurse into the installed proxy.
|
|
117
|
+
const base = globalThis.fetch;
|
|
113
118
|
const egressUrl = resolveEgressUrl(options);
|
|
114
119
|
const egressHosts = resolveEgressHosts(options);
|
|
115
120
|
const egressIsPlainHttp =
|
|
@@ -120,16 +125,16 @@ export function createProxyFetch(
|
|
|
120
125
|
? new EnvHttpProxyAgent()
|
|
121
126
|
: undefined;
|
|
122
127
|
|
|
123
|
-
if (!egress && !forward) return
|
|
128
|
+
if (!egress && !forward) return base;
|
|
124
129
|
|
|
125
130
|
return (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {
|
|
126
131
|
const hostname = new URL(toUrlString(input)).hostname.toLowerCase();
|
|
127
132
|
|
|
128
133
|
const useEgress =
|
|
129
|
-
!!egress &&
|
|
134
|
+
!!egress && egressHosts.size > 0 && egressHosts.has(hostname);
|
|
130
135
|
const dispatcher = useEgress ? egress : forward;
|
|
131
136
|
|
|
132
|
-
if (!dispatcher) return
|
|
137
|
+
if (!dispatcher) return base(input, init);
|
|
133
138
|
|
|
134
139
|
let target: string | URL;
|
|
135
140
|
let opts: Record<string, unknown>;
|
|
@@ -164,11 +169,13 @@ export function createProxyFetch(
|
|
|
164
169
|
}
|
|
165
170
|
|
|
166
171
|
export function installProxyFetch(options: ProxyFetchOptions = {}): () => void {
|
|
167
|
-
const proxied = createProxyFetch(options);
|
|
168
|
-
if (proxied === fetch) return () => {};
|
|
169
172
|
const original = globalThis.fetch;
|
|
173
|
+
const proxied = createProxyFetch(options);
|
|
174
|
+
if (proxied === original) return () => {};
|
|
170
175
|
globalThis.fetch = proxied;
|
|
171
176
|
return () => {
|
|
172
|
-
globalThis.fetch
|
|
177
|
+
if (globalThis.fetch === proxied) {
|
|
178
|
+
globalThis.fetch = original;
|
|
179
|
+
}
|
|
173
180
|
};
|
|
174
181
|
}
|