@antseed/provider-core 0.2.17 → 0.2.19
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/dist/config-utils.d.ts +7 -0
- package/dist/config-utils.d.ts.map +1 -0
- package/dist/config-utils.js +66 -0
- package/dist/config-utils.js.map +1 -0
- package/dist/http-headers.d.ts +7 -0
- package/dist/http-headers.d.ts.map +1 -0
- package/dist/http-headers.js +37 -0
- package/dist/http-headers.js.map +1 -0
- package/dist/http-relay.d.ts +5 -0
- package/dist/http-relay.d.ts.map +1 -1
- package/dist/http-relay.js +24 -32
- package/dist/http-relay.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Provider, ServiceApiProtocol } from '@antseed/node';
|
|
2
|
+
export declare function parseNonNegativeNumber(raw: string | undefined, key: string, fallback: number): number;
|
|
3
|
+
export declare function parseServicePricingJson(raw: string | undefined): Provider['pricing']['services'];
|
|
4
|
+
export declare function parseCsv(raw: string | undefined): string[];
|
|
5
|
+
export declare function parseJsonObject(raw: string | undefined, key: string): Record<string, unknown> | undefined;
|
|
6
|
+
export declare function buildServiceApiProtocols(services: string[], protocol: ServiceApiProtocol): Record<string, ServiceApiProtocol[]> | undefined;
|
|
7
|
+
//# sourceMappingURL=config-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-utils.d.ts","sourceRoot":"","sources":["../src/config-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAElE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMrG;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CA+BhG;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAU1D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAezG;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,kBAAkB,GAC3B,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS,CAGlD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export function parseNonNegativeNumber(raw, key, fallback) {
|
|
2
|
+
const parsed = raw === undefined ? fallback : Number.parseFloat(raw);
|
|
3
|
+
if (!Number.isFinite(parsed) || parsed < 0) {
|
|
4
|
+
throw new Error(`${key} must be a non-negative number`);
|
|
5
|
+
}
|
|
6
|
+
return parsed;
|
|
7
|
+
}
|
|
8
|
+
export function parseServicePricingJson(raw) {
|
|
9
|
+
if (!raw)
|
|
10
|
+
return undefined;
|
|
11
|
+
let parsed;
|
|
12
|
+
try {
|
|
13
|
+
parsed = JSON.parse(raw);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
throw new Error('ANTSEED_SERVICE_PRICING_JSON must be valid JSON');
|
|
17
|
+
}
|
|
18
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
19
|
+
throw new Error('ANTSEED_SERVICE_PRICING_JSON must be an object map of service -> pricing');
|
|
20
|
+
}
|
|
21
|
+
const out = {};
|
|
22
|
+
for (const [service, pricing] of Object.entries(parsed)) {
|
|
23
|
+
if (!pricing || typeof pricing !== 'object' || Array.isArray(pricing)) {
|
|
24
|
+
throw new Error(`Service pricing for "${service}" must be an object`);
|
|
25
|
+
}
|
|
26
|
+
const input = pricing['inputUsdPerMillion'];
|
|
27
|
+
const output = pricing['outputUsdPerMillion'];
|
|
28
|
+
if (typeof input !== 'number' || !Number.isFinite(input) || input < 0) {
|
|
29
|
+
throw new Error(`Service pricing for "${service}" requires non-negative inputUsdPerMillion`);
|
|
30
|
+
}
|
|
31
|
+
if (typeof output !== 'number' || !Number.isFinite(output) || output < 0) {
|
|
32
|
+
throw new Error(`Service pricing for "${service}" requires non-negative outputUsdPerMillion`);
|
|
33
|
+
}
|
|
34
|
+
out[service] = { inputUsdPerMillion: input, outputUsdPerMillion: output };
|
|
35
|
+
}
|
|
36
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
37
|
+
}
|
|
38
|
+
export function parseCsv(raw) {
|
|
39
|
+
if (!raw)
|
|
40
|
+
return [];
|
|
41
|
+
return Array.from(new Set(raw
|
|
42
|
+
.split(',')
|
|
43
|
+
.map((entry) => entry.trim())
|
|
44
|
+
.filter((entry) => entry.length > 0)));
|
|
45
|
+
}
|
|
46
|
+
export function parseJsonObject(raw, key) {
|
|
47
|
+
if (!raw)
|
|
48
|
+
return undefined;
|
|
49
|
+
let parsed;
|
|
50
|
+
try {
|
|
51
|
+
parsed = JSON.parse(raw);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
throw new Error(`${key} must be valid JSON`);
|
|
55
|
+
}
|
|
56
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
57
|
+
throw new Error(`${key} must be a JSON object`);
|
|
58
|
+
}
|
|
59
|
+
return parsed;
|
|
60
|
+
}
|
|
61
|
+
export function buildServiceApiProtocols(services, protocol) {
|
|
62
|
+
if (services.length === 0)
|
|
63
|
+
return undefined;
|
|
64
|
+
return Object.fromEntries(services.map((service) => [service, [protocol]]));
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=config-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-utils.js","sourceRoot":"","sources":["../src/config-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface StripRelayRequestHeadersOptions {
|
|
2
|
+
stripHeaderPrefixes?: string[];
|
|
3
|
+
stripHeaderNames?: string[];
|
|
4
|
+
}
|
|
5
|
+
export declare function stripRelayRequestHeaders(headers: Record<string, string>, options?: StripRelayRequestHeadersOptions): Record<string, string>;
|
|
6
|
+
export declare function stripRelayResponseHeaders(response: Response): Record<string, string>;
|
|
7
|
+
//# sourceMappingURL=http-headers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-headers.d.ts","sourceRoot":"","sources":["../src/http-headers.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,+BAA+B;IAC9C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,GAAE,+BAAoC,GAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBxB;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASpF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const HOP_BY_HOP_HEADERS = new Set([
|
|
2
|
+
'connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization',
|
|
3
|
+
'te', 'trailers', 'transfer-encoding', 'upgrade',
|
|
4
|
+
]);
|
|
5
|
+
const INTERNAL_HEADERS = new Set([
|
|
6
|
+
'x-antseed-provider',
|
|
7
|
+
]);
|
|
8
|
+
export function stripRelayRequestHeaders(headers, options = {}) {
|
|
9
|
+
const out = {};
|
|
10
|
+
const stripPrefixes = options.stripHeaderPrefixes ?? [];
|
|
11
|
+
const stripNames = new Set((options.stripHeaderNames ?? []).map((name) => name.toLowerCase()));
|
|
12
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
13
|
+
const lower = key.toLowerCase();
|
|
14
|
+
if (HOP_BY_HOP_HEADERS.has(lower)
|
|
15
|
+
|| INTERNAL_HEADERS.has(lower)
|
|
16
|
+
|| lower === 'host'
|
|
17
|
+
|| lower === 'content-length'
|
|
18
|
+
|| lower === 'accept-encoding'
|
|
19
|
+
|| stripNames.has(lower)
|
|
20
|
+
|| stripPrefixes.some((prefix) => lower.startsWith(prefix))) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
out[key] = value;
|
|
24
|
+
}
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
27
|
+
export function stripRelayResponseHeaders(response) {
|
|
28
|
+
const headers = {};
|
|
29
|
+
response.headers.forEach((value, key) => {
|
|
30
|
+
const lower = key.toLowerCase();
|
|
31
|
+
if (!HOP_BY_HOP_HEADERS.has(lower) && lower !== 'content-encoding' && lower !== 'content-length') {
|
|
32
|
+
headers[lower] = value;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return headers;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=http-headers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-headers.js","sourceRoot":"","sources":["../src/http-headers.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB;IACvE,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS;CACjD,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,oBAAoB;CACrB,CAAC,CAAC;AAOH,MAAM,UAAU,wBAAwB,CACtC,OAA+B,EAC/B,UAA2C,EAAE;IAE7C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE/F,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAChC,IACE,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;eAC1B,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;eAC3B,KAAK,KAAK,MAAM;eAChB,KAAK,KAAK,gBAAgB;eAC1B,KAAK,KAAK,iBAAiB;eAC3B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;eACrB,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAC3D,CAAC;YACD,SAAS;QACX,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAkB;IAC1D,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;YACjG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/http-relay.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { TokenProvider } from '@antseed/node';
|
|
2
2
|
import type { SerializedHttpRequest, SerializedHttpResponse, SerializedHttpResponseChunk } from '@antseed/node';
|
|
3
|
+
export declare const DEFAULT_HTTP_TIMEOUT_MS = 120000;
|
|
3
4
|
export interface RelayConfig {
|
|
4
5
|
baseUrl: string;
|
|
5
6
|
authHeaderName: string;
|
|
@@ -17,6 +18,10 @@ export interface RelayConfig {
|
|
|
17
18
|
injectJsonFields?: Record<string, unknown>;
|
|
18
19
|
/** If true, retry once with a force-refreshed token on 401. Only meaningful for providers with a refreshable tokenProvider (e.g. OAuth). */
|
|
19
20
|
retryOn401?: boolean;
|
|
21
|
+
/** Retry on 500/502/503/504 with exponential backoff. Default: 0 (no retries). */
|
|
22
|
+
retryOn5xx?: number;
|
|
23
|
+
/** Base delay in ms for 5xx retries. Default: 1000. */
|
|
24
|
+
retryBaseDelayMs?: number;
|
|
20
25
|
}
|
|
21
26
|
export interface RelayCallbacks {
|
|
22
27
|
onResponse: (response: SerializedHttpResponse) => void;
|
package/dist/http-relay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-relay.d.ts","sourceRoot":"","sources":["../src/http-relay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"http-relay.d.ts","sourceRoot":"","sources":["../src/http-relay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAKhH,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,4IAA4I;IAC5I,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;CAChE;AAcD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc;IAU1D,cAAc,IAAI,MAAM;IAIxB,OAAO,CAAC,UAAU;IASZ,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;CAkMnE"}
|
package/dist/http-relay.js
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import { ANTSEED_STREAMING_RESPONSE_HEADER } from '@antseed/node';
|
|
2
2
|
import { swapAuthHeader, validateRequestService } from './auth-swap.js';
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
'connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization',
|
|
6
|
-
'te', 'trailers', 'transfer-encoding', 'upgrade',
|
|
7
|
-
]);
|
|
8
|
-
/** Internal headers used only within Antseed routing. */
|
|
9
|
-
const INTERNAL_HEADERS = new Set([
|
|
10
|
-
'x-antseed-provider',
|
|
11
|
-
]);
|
|
3
|
+
import { stripRelayRequestHeaders, stripRelayResponseHeaders } from './http-headers.js';
|
|
4
|
+
export const DEFAULT_HTTP_TIMEOUT_MS = 120_000;
|
|
12
5
|
function deepMerge(target, source) {
|
|
13
6
|
const out = { ...target };
|
|
14
7
|
for (const [key, val] of Object.entries(source)) {
|
|
@@ -111,18 +104,10 @@ export class HttpRelay {
|
|
|
111
104
|
const url = `${base}${path}`;
|
|
112
105
|
// Build fetch headers, stripping hop-by-hop and provider-specific prefixes
|
|
113
106
|
const stripPrefixes = this._config.stripHeaderPrefixes ?? [];
|
|
114
|
-
const fetchHeaders = {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
if (stripPrefixes.length > 0 && stripPrefixes.some((p) => lower.startsWith(p))) {
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
fetchHeaders[key] = value;
|
|
124
|
-
}
|
|
125
|
-
const timeoutMs = this._config.timeoutMs ?? 120_000;
|
|
107
|
+
const fetchHeaders = stripRelayRequestHeaders(swappedRequest.headers, {
|
|
108
|
+
stripHeaderPrefixes: stripPrefixes,
|
|
109
|
+
});
|
|
110
|
+
const timeoutMs = this._config.timeoutMs ?? DEFAULT_HTTP_TIMEOUT_MS;
|
|
126
111
|
const doFetch = async (headers) => {
|
|
127
112
|
const controller = new AbortController();
|
|
128
113
|
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
@@ -140,27 +125,34 @@ export class HttpRelay {
|
|
|
140
125
|
clearTimeout(timeout);
|
|
141
126
|
}
|
|
142
127
|
};
|
|
143
|
-
let
|
|
128
|
+
let currentHeaders = fetchHeaders;
|
|
129
|
+
let fetchResponse = await doFetch(currentHeaders);
|
|
144
130
|
if (fetchResponse.status === 401 && this._config.retryOn401 && this._config.tokenProvider?.forceRefresh) {
|
|
145
131
|
const refreshedToken = await this._config.tokenProvider.forceRefresh();
|
|
146
132
|
const isBearer = this._config.authHeaderName === 'authorization';
|
|
147
133
|
const newHeaderValue = isBearer ? `Bearer ${refreshedToken}` : refreshedToken;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
fetchResponse = await doFetch(
|
|
134
|
+
currentHeaders = { ...currentHeaders };
|
|
135
|
+
currentHeaders[this._config.authHeaderName] = newHeaderValue;
|
|
136
|
+
fetchResponse = await doFetch(currentHeaders);
|
|
137
|
+
}
|
|
138
|
+
// Retry on 5xx with exponential backoff
|
|
139
|
+
const maxRetries = this._config.retryOn5xx ?? 0;
|
|
140
|
+
const baseDelay = this._config.retryBaseDelayMs ?? 1000;
|
|
141
|
+
if (maxRetries > 0 && fetchResponse.status >= 500) {
|
|
142
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
143
|
+
const delay = baseDelay * (2 ** attempt);
|
|
144
|
+
await new Promise(r => setTimeout(r, delay));
|
|
145
|
+
fetchResponse = await doFetch(currentHeaders);
|
|
146
|
+
if (fetchResponse.status < 500)
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
151
149
|
}
|
|
152
150
|
const contentType = fetchResponse.headers.get('content-type') ?? '';
|
|
153
151
|
const isSSE = contentType.includes('text/event-stream');
|
|
154
152
|
// Build response headers, stripping hop-by-hop and encoding headers.
|
|
155
153
|
// Node.js fetch auto-decompresses gzip/br responses, so we must strip
|
|
156
154
|
// content-encoding to prevent the client from double-decompressing.
|
|
157
|
-
const responseHeaders =
|
|
158
|
-
fetchResponse.headers.forEach((value, key) => {
|
|
159
|
-
const lower = key.toLowerCase();
|
|
160
|
-
if (!HOP_BY_HOP_HEADERS.has(lower) && lower !== 'content-encoding' && lower !== 'content-length') {
|
|
161
|
-
responseHeaders[lower] = value;
|
|
162
|
-
}
|
|
163
|
-
});
|
|
155
|
+
const responseHeaders = stripRelayResponseHeaders(fetchResponse);
|
|
164
156
|
if (isSSE && fetchResponse.body) {
|
|
165
157
|
responseHeaders[ANTSEED_STREAMING_RESPONSE_HEADER] = '1';
|
|
166
158
|
this._callbacks.onResponse({
|
package/dist/http-relay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-relay.js","sourceRoot":"","sources":["../src/http-relay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"http-relay.js","sourceRoot":"","sources":["../src/http-relay.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export { HttpRelay, type RelayConfig, type RelayCallbacks } from './http-relay.js';
|
|
2
|
+
export { DEFAULT_HTTP_TIMEOUT_MS } from './http-relay.js';
|
|
2
3
|
export { swapAuthHeader, validateRequestService, KNOWN_AUTH_HEADERS } from './auth-swap.js';
|
|
3
4
|
export { StaticTokenProvider, OAuthTokenProvider, createTokenProvider, type AuthType } from './token-providers.js';
|
|
4
5
|
export type { TokenProvider, TokenProviderState } from './token-providers.js';
|
|
5
6
|
export { BaseProvider, type BaseProviderConfig } from './base-provider.js';
|
|
6
7
|
export { parseServiceAliasMap } from './service-alias.js';
|
|
8
|
+
export { parseNonNegativeNumber, parseServicePricingJson, parseCsv, parseJsonObject, buildServiceApiProtocols, } from './config-utils.js';
|
|
9
|
+
export { stripRelayRequestHeaders, stripRelayResponseHeaders, type StripRelayRequestHeadersOptions, } from './http-headers.js';
|
|
7
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACnH,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACnH,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,QAAQ,EACR,eAAe,EACf,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,+BAA+B,GACrC,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export { HttpRelay } from './http-relay.js';
|
|
2
|
+
export { DEFAULT_HTTP_TIMEOUT_MS } from './http-relay.js';
|
|
2
3
|
export { swapAuthHeader, validateRequestService, KNOWN_AUTH_HEADERS } from './auth-swap.js';
|
|
3
4
|
export { StaticTokenProvider, OAuthTokenProvider, createTokenProvider } from './token-providers.js';
|
|
4
5
|
export { BaseProvider } from './base-provider.js';
|
|
5
6
|
export { parseServiceAliasMap } from './service-alias.js';
|
|
7
|
+
export { parseNonNegativeNumber, parseServicePricingJson, parseCsv, parseJsonObject, buildServiceApiProtocols, } from './config-utils.js';
|
|
8
|
+
export { stripRelayRequestHeaders, stripRelayResponseHeaders, } from './http-headers.js';
|
|
6
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAiB,MAAM,sBAAsB,CAAC;AAEnH,OAAO,EAAE,YAAY,EAA2B,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAiB,MAAM,sBAAsB,CAAC;AAEnH,OAAO,EAAE,YAAY,EAA2B,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,QAAQ,EACR,eAAe,EACf,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAE1B,MAAM,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antseed/provider-core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.19",
|
|
4
4
|
"description": "Shared provider infrastructure for Antseed plugins",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"typescript": "^5.5.0",
|
|
16
16
|
"vitest": "^2.0.0",
|
|
17
|
-
"@antseed/node": "0.2.
|
|
17
|
+
"@antseed/node": "0.2.23"
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
20
|
"prebuild": "rm -rf dist",
|