@apifuse/provider-sdk 2.2.0-beta.3 → 2.2.0-beta.5
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/AUTHORING.md +53 -0
- package/CHANGELOG.md +8 -0
- package/bin/apifuse-check.ts +18 -58
- package/bin/apifuse-create.ts +1 -1
- package/bin/apifuse-dev.ts +27 -52
- package/bin/apifuse-pack-smoke.ts +22 -81
- package/bin/apifuse-pack-types.ts +266 -0
- package/bin/apifuse-perf.ts +45 -127
- package/bin/apifuse-record.ts +23 -61
- package/bin/apifuse-submit-check.ts +266 -34
- package/bin/apifuse.ts +1 -1
- package/bin/submit-check-xml.ts +1 -1
- package/dist/auth-turn/index.d.ts +1 -1
- package/dist/auth.d.ts +2 -2
- package/dist/auth.js +9 -18
- package/dist/ceremonies/index.d.ts +1 -1
- package/dist/ceremonies/index.js +8 -18
- package/dist/config/loader.d.ts +2 -2
- package/dist/config/loader.js +19 -42
- package/dist/contract-serialization.d.ts +2 -2
- package/dist/contract-serialization.js +3 -6
- package/dist/contract-types.d.ts +2 -2
- package/dist/contract.d.ts +3 -3
- package/dist/contract.js +4 -6
- package/dist/define.d.ts +8 -1
- package/dist/define.js +57 -115
- package/dist/dev.d.ts +1 -1
- package/dist/dev.js +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +1 -3
- package/dist/i18n/catalog.d.ts +2 -2
- package/dist/i18n/catalog.js +4 -10
- package/dist/i18n/index.d.ts +2 -2
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/keys.d.ts +2 -2
- package/dist/index.d.ts +43 -42
- package/dist/index.js +38 -37
- package/dist/lint.js +8 -15
- package/dist/provider.d.ts +11 -11
- package/dist/provider.js +9 -9
- package/dist/public-schema-field-lint.d.ts +1 -1
- package/dist/recipes/gov-api.js +1 -1
- package/dist/runtime/auth-flow.d.ts +1 -1
- package/dist/runtime/auth-flow.js +3 -3
- package/dist/runtime/browser.d.ts +1 -1
- package/dist/runtime/browser.js +15 -29
- package/dist/runtime/cache.d.ts +1 -1
- package/dist/runtime/cache.js +4 -8
- package/dist/runtime/choice.d.ts +1 -1
- package/dist/runtime/choice.js +12 -34
- package/dist/runtime/credential.d.ts +1 -1
- package/dist/runtime/credential.js +1 -1
- package/dist/runtime/env.d.ts +1 -1
- package/dist/runtime/executor.d.ts +1 -1
- package/dist/runtime/executor.js +2 -2
- package/dist/runtime/http.d.ts +2 -2
- package/dist/runtime/http.js +5 -5
- package/dist/runtime/insights.d.ts +1 -1
- package/dist/runtime/insights.js +6 -13
- package/dist/runtime/instrumentation.d.ts +2 -2
- package/dist/runtime/instrumentation.js +5 -15
- package/dist/runtime/keyring.js +1 -1
- package/dist/runtime/namespace.js +1 -1
- package/dist/runtime/otlp.d.ts +1 -1
- package/dist/runtime/perf.d.ts +1 -1
- package/dist/runtime/provider.d.ts +1 -1
- package/dist/runtime/provider.js +1 -2
- package/dist/runtime/proxy-errors.d.ts +1 -1
- package/dist/runtime/proxy-errors.js +3 -5
- package/dist/runtime/proxy-retry-policy.d.ts +2 -2
- package/dist/runtime/proxy-retry-policy.js +2 -2
- package/dist/runtime/proxy-telemetry.d.ts +1 -1
- package/dist/runtime/proxy-telemetry.js +16 -48
- package/dist/runtime/redis.d.ts +1 -1
- package/dist/runtime/redis.js +2 -4
- package/dist/runtime/request-options.d.ts +1 -1
- package/dist/runtime/state.d.ts +2 -2
- package/dist/runtime/state.js +3 -3
- package/dist/runtime/stealth.d.ts +2 -2
- package/dist/runtime/stealth.js +6 -6
- package/dist/runtime/stt.d.ts +1 -1
- package/dist/runtime/stt.js +11 -15
- package/dist/runtime/trace.d.ts +2 -2
- package/dist/runtime/trace.js +2 -4
- package/dist/runtime/waterfall.d.ts +1 -1
- package/dist/schema.d.ts +1 -1
- package/dist/schema.js +7 -15
- package/dist/serve.d.ts +1 -1
- package/dist/serve.js +1 -1
- package/dist/server/index.d.ts +7 -7
- package/dist/server/index.js +6 -6
- package/dist/server/self-test-redaction.d.ts +1 -1
- package/dist/server/self-test-redaction.js +1 -1
- package/dist/server/self-test.d.ts +104 -3
- package/dist/server/self-test.js +673 -115
- package/dist/server/serve.d.ts +3 -3
- package/dist/server/serve.js +37 -49
- package/dist/server/types.js +2 -7
- package/dist/stealth/profiles.d.ts +1 -1
- package/dist/stealth/profiles.js +5 -14
- package/dist/stream.d.ts +1 -1
- package/dist/testing/index.d.ts +2 -2
- package/dist/testing/index.js +2 -2
- package/dist/testing/run.d.ts +1 -1
- package/dist/testing/run.js +7 -14
- package/dist/types.d.ts +57 -0
- package/dist/user-input.d.ts +30 -0
- package/dist/user-input.js +66 -0
- package/package.json +6 -4
- package/src/auth-turn/index.ts +1 -1
- package/src/auth.ts +28 -86
- package/src/ceremonies/index.ts +24 -78
- package/src/config/loader.ts +58 -176
- package/src/contract-serialization.ts +5 -11
- package/src/contract-types.ts +2 -2
- package/src/contract.ts +12 -28
- package/src/define.ts +174 -495
- package/src/dev.ts +4 -9
- package/src/errors.ts +4 -11
- package/src/i18n/catalog.ts +10 -32
- package/src/i18n/index.ts +2 -2
- package/src/i18n/keys.ts +5 -11
- package/src/index.ts +44 -42
- package/src/lint.ts +89 -159
- package/src/provider.ts +12 -11
- package/src/public-schema-field-lint.ts +7 -33
- package/src/recipes/gov-api.ts +2 -5
- package/src/runtime/auth-flow.ts +5 -7
- package/src/runtime/browser.ts +64 -187
- package/src/runtime/cache.ts +20 -67
- package/src/runtime/choice.ts +55 -129
- package/src/runtime/credential.ts +2 -2
- package/src/runtime/env.ts +1 -1
- package/src/runtime/executor.ts +9 -19
- package/src/runtime/http.ts +7 -7
- package/src/runtime/insights.ts +15 -53
- package/src/runtime/instrumentation.ts +19 -58
- package/src/runtime/keyring.ts +7 -19
- package/src/runtime/namespace.ts +2 -7
- package/src/runtime/otlp.ts +12 -23
- package/src/runtime/perf.ts +1 -1
- package/src/runtime/provider.ts +4 -9
- package/src/runtime/proxy-errors.ts +17 -38
- package/src/runtime/proxy-retry-policy.ts +3 -3
- package/src/runtime/proxy-telemetry.ts +23 -72
- package/src/runtime/redis.ts +4 -12
- package/src/runtime/request-options.ts +4 -13
- package/src/runtime/state.ts +30 -109
- package/src/runtime/stealth.ts +8 -8
- package/src/runtime/stt.ts +38 -94
- package/src/runtime/trace.ts +14 -44
- package/src/runtime/waterfall.ts +5 -18
- package/src/schema.ts +23 -84
- package/src/serve.ts +1 -1
- package/src/server/index.ts +12 -7
- package/src/server/self-test-redaction.ts +2 -2
- package/src/server/self-test.ts +857 -132
- package/src/server/serve.ts +89 -238
- package/src/server/types.ts +6 -19
- package/src/stealth/profiles.ts +10 -26
- package/src/stream.ts +8 -19
- package/src/testing/index.ts +2 -2
- package/src/testing/run.ts +19 -67
- package/src/types.ts +58 -0
- package/src/user-input.ts +118 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ProviderContext } from "../types";
|
|
2
|
-
import { type CreateTraceContextOptions, type TraceContext } from "./trace";
|
|
1
|
+
import type { ProviderContext } from "../types.js";
|
|
2
|
+
import { type CreateTraceContextOptions, type TraceContext } from "./trace.js";
|
|
3
3
|
export interface InstrumentationOptions extends CreateTraceContextOptions {
|
|
4
4
|
}
|
|
5
5
|
export type InstrumentedProviderContext<T extends ProviderContext> = Omit<T, "trace"> & {
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import { createTraceContext, getTraceRecorder, } from "./trace";
|
|
2
|
-
const BROWSER_PAGE_METHODS = new Set([
|
|
3
|
-
"goto",
|
|
4
|
-
"fill",
|
|
5
|
-
"click",
|
|
6
|
-
"type",
|
|
7
|
-
"waitForSelector",
|
|
8
|
-
]);
|
|
1
|
+
import { createTraceContext, getTraceRecorder, } from "./trace.js";
|
|
2
|
+
const BROWSER_PAGE_METHODS = new Set(["goto", "fill", "click", "type", "waitForSelector"]);
|
|
9
3
|
function getErrorStatus(error) {
|
|
10
4
|
if (typeof error === "object" &&
|
|
11
5
|
error !== null &&
|
|
@@ -69,9 +63,7 @@ function buildSpanAttributes(namespace, methodName, args, result, error) {
|
|
|
69
63
|
const attributes = {};
|
|
70
64
|
const url = getUrl(namespace, args, result);
|
|
71
65
|
const method = getMethod(namespace, methodName, args);
|
|
72
|
-
const status = error
|
|
73
|
-
? getErrorStatus(error)
|
|
74
|
-
: getResponseStatus(namespace, result);
|
|
66
|
+
const status = error ? getErrorStatus(error) : getResponseStatus(namespace, result);
|
|
75
67
|
const duration = error ? undefined : getResponseDuration(result);
|
|
76
68
|
if (url) {
|
|
77
69
|
attributes.url = url;
|
|
@@ -79,8 +71,7 @@ function buildSpanAttributes(namespace, methodName, args, result, error) {
|
|
|
79
71
|
if (method) {
|
|
80
72
|
attributes.method = method;
|
|
81
73
|
}
|
|
82
|
-
if (status !== undefined &&
|
|
83
|
-
(namespace === "http" || namespace === "stealth")) {
|
|
74
|
+
if (status !== undefined && (namespace === "http" || namespace === "stealth")) {
|
|
84
75
|
attributes.status = status;
|
|
85
76
|
}
|
|
86
77
|
if (duration !== undefined) {
|
|
@@ -192,8 +183,7 @@ function wrapNamespace(namespace, target, trace) {
|
|
|
192
183
|
if (namespaceTarget &&
|
|
193
184
|
typeof namespaceTarget === "object" &&
|
|
194
185
|
"engine" in namespaceTarget &&
|
|
195
|
-
typeof namespaceTarget.engine ===
|
|
196
|
-
"string") {
|
|
186
|
+
typeof namespaceTarget.engine === "string") {
|
|
197
187
|
attributes.engine = namespaceTarget.engine;
|
|
198
188
|
}
|
|
199
189
|
return attributes;
|
package/dist/runtime/keyring.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConfigurationError, decodeMasterKey } from "./key-derivation";
|
|
1
|
+
import { ConfigurationError, decodeMasterKey } from "./key-derivation.js";
|
|
2
2
|
const DEFAULT_KEY_PREFIX = "APIFUSE__KEYRING__MASTER_KEY_V";
|
|
3
3
|
const DEFAULT_ACCEPT_LIST_VAR = "APIFUSE__KEYRING__MASTER_KEY_ACCEPT_LIST";
|
|
4
4
|
const DEFAULT_WRITER_VERSION_VAR = "APIFUSE__KEYRING__MASTER_KEY_WRITER_VERSION";
|
package/dist/runtime/otlp.d.ts
CHANGED
package/dist/runtime/perf.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { ProviderDefinition } from "../types";
|
|
1
|
+
import type { ProviderDefinition } from "../types.js";
|
|
2
2
|
export declare function getProviderBaseUrl(provider: ProviderDefinition): string | undefined;
|
package/dist/runtime/provider.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
export function getProviderBaseUrl(provider) {
|
|
2
2
|
const operations = Object.values(provider.operations);
|
|
3
3
|
for (const operation of operations) {
|
|
4
|
-
const baseUrl = operation.upstream
|
|
5
|
-
?.baseUrl;
|
|
4
|
+
const baseUrl = operation.upstream?.baseUrl;
|
|
6
5
|
if (typeof baseUrl === "string" && baseUrl.length > 0) {
|
|
7
6
|
return baseUrl;
|
|
8
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TransportError } from "../errors";
|
|
1
|
+
import { TransportError } from "../errors.js";
|
|
2
2
|
export declare const PROXY_AUTH_IP_DENIED_CODE = "PROXY_AUTH_IP_DENIED";
|
|
3
3
|
export declare const PROXY_AUTH_IP_DENIED_MESSAGE = "Proxy source IP is not authorized. Add the runtime egress IP to the proxy provider allowlist.";
|
|
4
4
|
export declare const PROXY_EDGE_AUTH_REJECTED_CODE = "PROXY_EDGE_AUTH_REJECTED";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TransportError } from "../errors";
|
|
1
|
+
import { TransportError } from "../errors.js";
|
|
2
2
|
export const PROXY_AUTH_IP_DENIED_CODE = "PROXY_AUTH_IP_DENIED";
|
|
3
3
|
export const PROXY_AUTH_IP_DENIED_MESSAGE = "Proxy source IP is not authorized. Add the runtime egress IP to the proxy provider allowlist.";
|
|
4
4
|
export const PROXY_EDGE_AUTH_REJECTED_CODE = "PROXY_EDGE_AUTH_REJECTED";
|
|
@@ -42,8 +42,7 @@ export function isProxyPoolStaleMessage(message) {
|
|
|
42
42
|
return PROXY_POOL_STALE_MESSAGE_PATTERN.test(message);
|
|
43
43
|
}
|
|
44
44
|
export function isProxyPoolRefreshableError(error) {
|
|
45
|
-
if (error instanceof TransportError &&
|
|
46
|
-
error.code === PROXY_AUTH_IP_DENIED_CODE) {
|
|
45
|
+
if (error instanceof TransportError && error.code === PROXY_AUTH_IP_DENIED_CODE) {
|
|
47
46
|
return false;
|
|
48
47
|
}
|
|
49
48
|
if (error instanceof TransportError &&
|
|
@@ -57,8 +56,7 @@ export function isProxyPoolRefreshableError(error) {
|
|
|
57
56
|
error instanceof Error ? error.message : String(error),
|
|
58
57
|
cause instanceof Error ? cause.message : "",
|
|
59
58
|
].join(" ");
|
|
60
|
-
return (PROXY_POOL_STALE_MESSAGE_PATTERN.test(message) ||
|
|
61
|
-
PROXY_EDGE_AUTH_REJECTED_PATTERN.test(message));
|
|
59
|
+
return (PROXY_POOL_STALE_MESSAGE_PATTERN.test(message) || PROXY_EDGE_AUTH_REJECTED_PATTERN.test(message));
|
|
62
60
|
}
|
|
63
61
|
export const isProxyPoolStaleError = isProxyPoolRefreshableError;
|
|
64
62
|
export function createProxyPoolStaleError(status, cause) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { HttpMethod, HttpRetryOptions, RequestOptions } from "../types";
|
|
2
|
-
import { HttpRetryPreset } from "../types";
|
|
1
|
+
import type { HttpMethod, HttpRetryOptions, RequestOptions } from "../types.js";
|
|
2
|
+
import { HttpRetryPreset } from "../types.js";
|
|
3
3
|
export type NormalizedProxyTransportRetryOptions = Required<Pick<HttpRetryOptions, "attempts" | "delayStrategy" | "baseDelayMs" | "maxDelayMs" | "jitter" | "retryAfter" | "unsafeMethodPolicy">> & {
|
|
4
4
|
preset?: HttpRetryPreset;
|
|
5
5
|
methods: readonly string[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ProviderError, TransportError } from "../errors";
|
|
2
|
-
import { HttpRetryAfterPolicy, HttpRetryDelayStrategy, HttpRetryJitter, HttpRetryPreset, HttpRetryUnsafeMethodPolicy, } from "../types";
|
|
1
|
+
import { ProviderError, TransportError } from "../errors.js";
|
|
2
|
+
import { HttpRetryAfterPolicy, HttpRetryDelayStrategy, HttpRetryJitter, HttpRetryPreset, HttpRetryUnsafeMethodPolicy, } from "../types.js";
|
|
3
3
|
export const DEFAULT_PROXY_TRANSPORT_RETRY_METHODS = ["GET", "HEAD", "OPTIONS"];
|
|
4
4
|
export const DEFAULT_PROXY_TRANSPORT_RETRY_ERROR_CODES = [
|
|
5
5
|
"transport_network_error",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProxyAttemptTelemetryEvent, ProxyResolutionTelemetryEvent, ProxyTelemetrySink } from "../config/loader";
|
|
1
|
+
import type { ProxyAttemptTelemetryEvent, ProxyResolutionTelemetryEvent, ProxyTelemetrySink } from "../config/loader.js";
|
|
2
2
|
export declare const PROVIDER_TELEMETRY_HEADER = "X-ApiFuse-Provider-Telemetry";
|
|
3
3
|
export declare class ProxyTelemetryCollector implements ProxyTelemetrySink {
|
|
4
4
|
#private;
|
|
@@ -20,9 +20,7 @@ function maxOptional(left, right) {
|
|
|
20
20
|
return values.length > 0 ? Math.max(...values) : undefined;
|
|
21
21
|
}
|
|
22
22
|
function worseStatus(left, right) {
|
|
23
|
-
return CACHE_STATUS_SEVERITY[right] > CACHE_STATUS_SEVERITY[left]
|
|
24
|
-
? right
|
|
25
|
-
: left;
|
|
23
|
+
return CACHE_STATUS_SEVERITY[right] > CACHE_STATUS_SEVERITY[left] ? right : left;
|
|
26
24
|
}
|
|
27
25
|
function encodeBase64Url(value) {
|
|
28
26
|
return Buffer.from(value, "utf8").toString("base64url");
|
|
@@ -36,9 +34,7 @@ export class ProxyTelemetryCollector {
|
|
|
36
34
|
cacheStatus: event.cacheStatus,
|
|
37
35
|
cacheHit: event.cacheHit,
|
|
38
36
|
resolutionMs: Math.max(0, Math.floor(event.resolutionMs)),
|
|
39
|
-
allocatorMs: event.allocatorMs === undefined
|
|
40
|
-
? undefined
|
|
41
|
-
: Math.max(0, Math.floor(event.allocatorMs)),
|
|
37
|
+
allocatorMs: event.allocatorMs === undefined ? undefined : Math.max(0, Math.floor(event.allocatorMs)),
|
|
42
38
|
allocatorStatus: event.allocatorStatus === undefined
|
|
43
39
|
? undefined
|
|
44
40
|
: Math.max(0, Math.floor(event.allocatorStatus)),
|
|
@@ -46,25 +42,15 @@ export class ProxyTelemetryCollector {
|
|
|
46
42
|
allocatorAttempts: event.allocatorAttempts === undefined
|
|
47
43
|
? undefined
|
|
48
44
|
: Math.max(1, Math.floor(event.allocatorAttempts)),
|
|
49
|
-
lockWaitMs: event.lockWaitMs === undefined
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
? undefined
|
|
54
|
-
: Math.max(0, Math.floor(event.redisReadMs)),
|
|
55
|
-
redisWriteMs: event.redisWriteMs === undefined
|
|
56
|
-
? undefined
|
|
57
|
-
: Math.max(0, Math.floor(event.redisWriteMs)),
|
|
58
|
-
poolAgeMs: event.poolAgeMs === undefined
|
|
59
|
-
? undefined
|
|
60
|
-
: Math.max(0, Math.floor(event.poolAgeMs)),
|
|
45
|
+
lockWaitMs: event.lockWaitMs === undefined ? undefined : Math.max(0, Math.floor(event.lockWaitMs)),
|
|
46
|
+
redisReadMs: event.redisReadMs === undefined ? undefined : Math.max(0, Math.floor(event.redisReadMs)),
|
|
47
|
+
redisWriteMs: event.redisWriteMs === undefined ? undefined : Math.max(0, Math.floor(event.redisWriteMs)),
|
|
48
|
+
poolAgeMs: event.poolAgeMs === undefined ? undefined : Math.max(0, Math.floor(event.poolAgeMs)),
|
|
61
49
|
poolExpiresInMs: event.poolExpiresInMs === undefined
|
|
62
50
|
? undefined
|
|
63
51
|
: Math.max(0, Math.floor(event.poolExpiresInMs)),
|
|
64
52
|
attempts: Math.max(1, Math.floor(event.attempts || 1)),
|
|
65
|
-
refreshes: event.refreshes === undefined
|
|
66
|
-
? undefined
|
|
67
|
-
: Math.max(0, Math.floor(event.refreshes)),
|
|
53
|
+
refreshes: event.refreshes === undefined ? undefined : Math.max(0, Math.floor(event.refreshes)),
|
|
68
54
|
});
|
|
69
55
|
}
|
|
70
56
|
recordProxyAttempt(event) {
|
|
@@ -79,9 +65,7 @@ export class ProxyTelemetryCollector {
|
|
|
79
65
|
...(event.proxyHash ? { proxyHash: event.proxyHash.slice(0, 16) } : {}),
|
|
80
66
|
outcome: event.outcome === "ok" ? "ok" : "error",
|
|
81
67
|
...(event.errorCode ? { errorCode: event.errorCode.slice(0, 80) } : {}),
|
|
82
|
-
...(event.status === undefined
|
|
83
|
-
? {}
|
|
84
|
-
: { status: Math.max(0, Math.floor(event.status)) }),
|
|
68
|
+
...(event.status === undefined ? {} : { status: Math.max(0, Math.floor(event.status)) }),
|
|
85
69
|
...(event.durationMs === undefined
|
|
86
70
|
? {}
|
|
87
71
|
: { durationMs: Math.max(0, Math.floor(event.durationMs)) }),
|
|
@@ -115,9 +99,7 @@ export class ProxyTelemetryCollector {
|
|
|
115
99
|
cacheStatus: aggregate.cacheStatus,
|
|
116
100
|
cacheHit: aggregate.cacheHit,
|
|
117
101
|
resolutionMs: aggregate.resolutionMs,
|
|
118
|
-
...(aggregate.allocatorMs !== undefined
|
|
119
|
-
? { allocatorMs: aggregate.allocatorMs }
|
|
120
|
-
: {}),
|
|
102
|
+
...(aggregate.allocatorMs !== undefined ? { allocatorMs: aggregate.allocatorMs } : {}),
|
|
121
103
|
...(aggregate.allocatorStatus !== undefined
|
|
122
104
|
? { allocatorStatus: aggregate.allocatorStatus }
|
|
123
105
|
: {}),
|
|
@@ -127,40 +109,26 @@ export class ProxyTelemetryCollector {
|
|
|
127
109
|
...(aggregate.allocatorAttempts !== undefined
|
|
128
110
|
? { allocatorAttempts: aggregate.allocatorAttempts }
|
|
129
111
|
: {}),
|
|
130
|
-
...(aggregate.lockWaitMs !== undefined
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
...(aggregate.
|
|
134
|
-
? { redisReadMs: aggregate.redisReadMs }
|
|
135
|
-
: {}),
|
|
136
|
-
...(aggregate.redisWriteMs !== undefined
|
|
137
|
-
? { redisWriteMs: aggregate.redisWriteMs }
|
|
138
|
-
: {}),
|
|
139
|
-
...(aggregate.poolAgeMs !== undefined
|
|
140
|
-
? { poolAgeMs: aggregate.poolAgeMs }
|
|
141
|
-
: {}),
|
|
112
|
+
...(aggregate.lockWaitMs !== undefined ? { lockWaitMs: aggregate.lockWaitMs } : {}),
|
|
113
|
+
...(aggregate.redisReadMs !== undefined ? { redisReadMs: aggregate.redisReadMs } : {}),
|
|
114
|
+
...(aggregate.redisWriteMs !== undefined ? { redisWriteMs: aggregate.redisWriteMs } : {}),
|
|
115
|
+
...(aggregate.poolAgeMs !== undefined ? { poolAgeMs: aggregate.poolAgeMs } : {}),
|
|
142
116
|
...(aggregate.poolExpiresInMs !== undefined
|
|
143
117
|
? { poolExpiresInMs: aggregate.poolExpiresInMs }
|
|
144
118
|
: {}),
|
|
145
119
|
attempts: aggregate.attempts,
|
|
146
|
-
...(aggregate.refreshes !== undefined
|
|
147
|
-
? { refreshes: aggregate.refreshes }
|
|
148
|
-
: {}),
|
|
120
|
+
...(aggregate.refreshes !== undefined ? { refreshes: aggregate.refreshes } : {}),
|
|
149
121
|
...(this.#attempts.length > 0
|
|
150
122
|
? {
|
|
151
123
|
attemptSamples: this.#attempts.map((attempt, index) => ({
|
|
152
124
|
n: index + 1,
|
|
153
125
|
a: attempt.attempt,
|
|
154
|
-
...(attempt.poolIndex === undefined
|
|
155
|
-
? {}
|
|
156
|
-
: { i: attempt.poolIndex }),
|
|
126
|
+
...(attempt.poolIndex === undefined ? {} : { i: attempt.poolIndex }),
|
|
157
127
|
...(attempt.proxyHash ? { h: attempt.proxyHash } : {}),
|
|
158
128
|
o: attempt.outcome,
|
|
159
129
|
...(attempt.errorCode ? { c: attempt.errorCode } : {}),
|
|
160
130
|
...(attempt.status === undefined ? {} : { s: attempt.status }),
|
|
161
|
-
...(attempt.durationMs === undefined
|
|
162
|
-
? {}
|
|
163
|
-
: { d: attempt.durationMs }),
|
|
131
|
+
...(attempt.durationMs === undefined ? {} : { d: attempt.durationMs }),
|
|
164
132
|
})),
|
|
165
133
|
}
|
|
166
134
|
: {}),
|
package/dist/runtime/redis.d.ts
CHANGED
package/dist/runtime/redis.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Redis from "ioredis";
|
|
1
|
+
import { Redis } from "ioredis";
|
|
2
2
|
export function createProviderRedisClient(options) {
|
|
3
3
|
const redis = new Redis(options.redisUrl, {
|
|
4
4
|
connectTimeout: options.timeoutMs,
|
|
@@ -23,9 +23,7 @@ export async function withRedisTimeout(operation, options) {
|
|
|
23
23
|
}
|
|
24
24
|
}, options.timeoutMs);
|
|
25
25
|
});
|
|
26
|
-
const operationResult = options.onError
|
|
27
|
-
? operation().catch(options.onError)
|
|
28
|
-
: operation();
|
|
26
|
+
const operationResult = options.onError ? operation().catch(options.onError) : operation();
|
|
29
27
|
return await Promise.race([operationResult, timeout]);
|
|
30
28
|
}
|
|
31
29
|
finally {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { RequestParams } from "../types";
|
|
1
|
+
import type { RequestParams } from "../types.js";
|
|
2
2
|
export declare function appendQueryParams(url: string, params?: RequestParams): string;
|
|
3
3
|
export declare function normalizeHttpRequestBody(body: unknown): string | Buffer | undefined;
|
package/dist/runtime/state.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ProviderError } from "../errors";
|
|
2
|
-
import type { ProviderRuntimeState } from "../types";
|
|
1
|
+
import { ProviderError } from "../errors.js";
|
|
2
|
+
import type { ProviderRuntimeState } from "../types.js";
|
|
3
3
|
type RedisProviderRuntimeStateOptions = {
|
|
4
4
|
readonly redisUrl: string;
|
|
5
5
|
readonly providerId?: string;
|
package/dist/runtime/state.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { providerStateRedisUrlFromEnv } from "../config/loader";
|
|
2
|
-
import { ProviderError } from "../errors";
|
|
3
|
-
import { createProviderRedisClient, ensureRedisReady, withRedisTimeout, } from "./redis";
|
|
1
|
+
import { providerStateRedisUrlFromEnv } from "../config/loader.js";
|
|
2
|
+
import { ProviderError } from "../errors.js";
|
|
3
|
+
import { createProviderRedisClient, ensureRedisReady, withRedisTimeout, } from "./redis.js";
|
|
4
4
|
const DEFAULT_REDIS_TIMEOUT_MS = 250;
|
|
5
5
|
const REDIS_STATE_PREFIX = "apifuse:provider-state:v1";
|
|
6
6
|
const redisBackends = new Map();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ImpitResponse } from "impit";
|
|
2
|
-
import type { ProxyResolutionOptions } from "../config/loader";
|
|
3
|
-
import type { StealthClient, StealthResponse } from "../types";
|
|
2
|
+
import type { ProxyResolutionOptions } from "../config/loader.js";
|
|
3
|
+
import type { StealthClient, StealthResponse } from "../types.js";
|
|
4
4
|
export type StealthClientOptions = ProxyResolutionOptions & {
|
|
5
5
|
warn?: (message: string) => void;
|
|
6
6
|
/**
|
package/dist/runtime/stealth.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { Impit } from "impit";
|
|
3
|
-
import { DEFAULT_SMARTPROXY_POOL_SIZE, invalidateProxyResolutionCacheAsync, ProxyResolutionError, resolveProxyConfigAsync, SMARTPROXY_MAX_POOL_SIZE, } from "../config/loader";
|
|
4
|
-
import { SDKError, TransportError } from "../errors";
|
|
5
|
-
import { getStealthProfile } from "../stealth/profiles";
|
|
6
|
-
import { createProxyAuthIpDeniedError, createProxyEdgeAuthRejectedError, createProxyEdgeTlsRejectedError, createProxyPoolExhaustedError, createProxyPoolStaleError, isProxyAuthIpDeniedMessage, isProxyEdgeAuthRejectedMessage, isProxyEdgeTlsRejectedResponse, isProxyPoolRefreshableError, isProxyPoolStaleMessage, isProxyPoolStaleStatus, PROXY_EDGE_AUTH_REJECTED_CODE, PROXY_POOL_STALE_CODE, } from "./proxy-errors";
|
|
7
|
-
import { computeProxyAttemptIndex, computeProxyTransportRetryDelayMs, createDefaultProxyTransportRetryOptions, normalizeProxyTransportRetryOptions, shouldRetryProxyTransportAttempt, validateUnsafeProxyTransportRetryMethods, } from "./proxy-retry-policy";
|
|
8
|
-
import { appendQueryParams } from "./request-options";
|
|
3
|
+
import { DEFAULT_SMARTPROXY_POOL_SIZE, invalidateProxyResolutionCacheAsync, ProxyResolutionError, resolveProxyConfigAsync, SMARTPROXY_MAX_POOL_SIZE, } from "../config/loader.js";
|
|
4
|
+
import { SDKError, TransportError } from "../errors.js";
|
|
5
|
+
import { getStealthProfile } from "../stealth/profiles.js";
|
|
6
|
+
import { createProxyAuthIpDeniedError, createProxyEdgeAuthRejectedError, createProxyEdgeTlsRejectedError, createProxyPoolExhaustedError, createProxyPoolStaleError, isProxyAuthIpDeniedMessage, isProxyEdgeAuthRejectedMessage, isProxyEdgeTlsRejectedResponse, isProxyPoolRefreshableError, isProxyPoolStaleMessage, isProxyPoolStaleStatus, PROXY_EDGE_AUTH_REJECTED_CODE, PROXY_POOL_STALE_CODE, } from "./proxy-errors.js";
|
|
7
|
+
import { computeProxyAttemptIndex, computeProxyTransportRetryDelayMs, createDefaultProxyTransportRetryOptions, normalizeProxyTransportRetryOptions, shouldRetryProxyTransportAttempt, validateUnsafeProxyTransportRetryMethods, } from "./proxy-retry-policy.js";
|
|
8
|
+
import { appendQueryParams } from "./request-options.js";
|
|
9
9
|
const DEFAULT_PROFILE = "chrome-146";
|
|
10
10
|
const MISSING_PROXY_WARNING = "[provider-sdk] Provider requested proxy routing, but no proxy URL was configured. Continuing without proxy.";
|
|
11
11
|
const MAX_POLICY_PROXY_RETRY_ATTEMPTS = SMARTPROXY_MAX_POOL_SIZE;
|
package/dist/runtime/stt.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProviderSttConfig, SttContext, SttTranscribeRequest, SttVerificationCodeOptions, VerificationCodeExtractionResult } from "../types";
|
|
1
|
+
import type { ProviderSttConfig, SttContext, SttTranscribeRequest, SttVerificationCodeOptions, VerificationCodeExtractionResult } from "../types.js";
|
|
2
2
|
export declare const APIFUSE__STT__BACKEND_ENV = "APIFUSE__STT__BACKEND";
|
|
3
3
|
export declare const APIFUSE__STT__MODEL_ENV = "APIFUSE__STT__MODEL";
|
|
4
4
|
export declare const CLOUDFLARE_ACCOUNT_ID_ENV = "APIFUSE__CLOUDFLARE__ACCOUNT_ID";
|
package/dist/runtime/stt.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProviderError, TransportError, ValidationError } from "../errors";
|
|
1
|
+
import { ProviderError, TransportError, ValidationError } from "../errors.js";
|
|
2
2
|
export const APIFUSE__STT__BACKEND_ENV = "APIFUSE__STT__BACKEND";
|
|
3
3
|
export const APIFUSE__STT__MODEL_ENV = "APIFUSE__STT__MODEL";
|
|
4
4
|
export const CLOUDFLARE_ACCOUNT_ID_ENV = "APIFUSE__CLOUDFLARE__ACCOUNT_ID";
|
|
@@ -59,17 +59,12 @@ export function createSttClientFromEnv(config, env = process.env) {
|
|
|
59
59
|
return createCloudflareWorkersAiSttClient({
|
|
60
60
|
accountId,
|
|
61
61
|
apiToken,
|
|
62
|
-
model: normalizedEnvValue(env, APIFUSE__STT__MODEL_ENV) ??
|
|
63
|
-
DEFAULT_CLOUDFLARE_WORKERS_AI_STT_MODEL,
|
|
62
|
+
model: normalizedEnvValue(env, APIFUSE__STT__MODEL_ENV) ?? DEFAULT_CLOUDFLARE_WORKERS_AI_STT_MODEL,
|
|
64
63
|
});
|
|
65
64
|
}
|
|
66
65
|
function base64ByteLength(data) {
|
|
67
66
|
const normalized = data.trim();
|
|
68
|
-
const padding = normalized.endsWith("==")
|
|
69
|
-
? 2
|
|
70
|
-
: normalized.endsWith("=")
|
|
71
|
-
? 1
|
|
72
|
-
: 0;
|
|
67
|
+
const padding = normalized.endsWith("==") ? 2 : normalized.endsWith("=") ? 1 : 0;
|
|
73
68
|
return Math.floor((normalized.length * 3) / 4) - padding;
|
|
74
69
|
}
|
|
75
70
|
function assertBase64Audio(audio, maxAudioBytes) {
|
|
@@ -80,9 +75,7 @@ function assertBase64Audio(audio, maxAudioBytes) {
|
|
|
80
75
|
});
|
|
81
76
|
}
|
|
82
77
|
const data = audio.data.trim();
|
|
83
|
-
if (data.length === 0 ||
|
|
84
|
-
data.length % 4 !== 0 ||
|
|
85
|
-
!BASE64_AUDIO_PATTERN.test(data)) {
|
|
78
|
+
if (data.length === 0 || data.length % 4 !== 0 || !BASE64_AUDIO_PATTERN.test(data)) {
|
|
86
79
|
throw new ValidationError("STT audio.data must be a base64-encoded string", {
|
|
87
80
|
code: "INVALID_STT_AUDIO",
|
|
88
81
|
});
|
|
@@ -90,7 +83,9 @@ function assertBase64Audio(audio, maxAudioBytes) {
|
|
|
90
83
|
const bytes = base64ByteLength(data);
|
|
91
84
|
const maxBytes = maxAudioBytes ?? DEFAULT_STT_MAX_AUDIO_BYTES;
|
|
92
85
|
if (bytes > maxBytes) {
|
|
93
|
-
throw new ValidationError(`STT audio exceeds maxAudioBytes (${bytes} > ${maxBytes})`, {
|
|
86
|
+
throw new ValidationError(`STT audio exceeds maxAudioBytes (${bytes} > ${maxBytes})`, {
|
|
87
|
+
code: "STT_AUDIO_TOO_LARGE",
|
|
88
|
+
});
|
|
94
89
|
}
|
|
95
90
|
return bytes;
|
|
96
91
|
}
|
|
@@ -227,8 +222,7 @@ export function createCloudflareWorkersAiSttClient(options) {
|
|
|
227
222
|
return {
|
|
228
223
|
async transcribe(request) {
|
|
229
224
|
const warnings = [];
|
|
230
|
-
if (request.initialPrompt &&
|
|
231
|
-
effectivePromptPolicy(request) !== "custom-hint") {
|
|
225
|
+
if (request.initialPrompt && effectivePromptPolicy(request) !== "custom-hint") {
|
|
232
226
|
const warning = warnOrThrowUnsupportedOption(request, "initialPrompt is honored only when promptPolicy is custom-hint");
|
|
233
227
|
if (warning)
|
|
234
228
|
warnings.push(warning);
|
|
@@ -350,7 +344,9 @@ function lengthSet(codeLengths) {
|
|
|
350
344
|
}
|
|
351
345
|
function validCodeLength(value) {
|
|
352
346
|
if (!Number.isInteger(value) || value < 1 || value > 32) {
|
|
353
|
-
throw new ValidationError("STT verification code length must be an integer between 1 and 32", {
|
|
347
|
+
throw new ValidationError("STT verification code length must be an integer between 1 and 32", {
|
|
348
|
+
code: "INVALID_STT_VERIFICATION_CODE_OPTIONS",
|
|
349
|
+
});
|
|
354
350
|
}
|
|
355
351
|
return value;
|
|
356
352
|
}
|
package/dist/runtime/trace.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TraceContext as BaseTraceContext, TraceAttributeValue, TraceConfig, TraceSpan } from "../types";
|
|
2
|
-
import { type OTLPExportOptions } from "./otlp";
|
|
1
|
+
import type { TraceContext as BaseTraceContext, TraceAttributeValue, TraceConfig, TraceSpan } from "../types.js";
|
|
2
|
+
import { type OTLPExportOptions } from "./otlp.js";
|
|
3
3
|
export type SpanAttributeValue = TraceAttributeValue;
|
|
4
4
|
export type Span = TraceSpan;
|
|
5
5
|
export interface TraceContext extends BaseTraceContext {
|
package/dist/runtime/trace.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
-
import { exportSpansOTLP } from "./otlp";
|
|
2
|
+
import { exportSpansOTLP } from "./otlp.js";
|
|
3
3
|
export const TRACE_RECORDER = Symbol.for("@apifuse/provider-sdk/runtime/trace-recorder");
|
|
4
4
|
function buildOTLPExportOptions(config) {
|
|
5
5
|
if (config?.exporter !== "otlp") {
|
|
@@ -23,9 +23,7 @@ export function resolveTraceContextOptions(config) {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
function normalizeAttributeValue(value) {
|
|
26
|
-
if (typeof value === "string" ||
|
|
27
|
-
typeof value === "number" ||
|
|
28
|
-
typeof value === "boolean") {
|
|
26
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
29
27
|
return value;
|
|
30
28
|
}
|
|
31
29
|
if (value === null || value === undefined) {
|
package/dist/schema.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ZodString, type ZodType, z } from "zod";
|
|
2
|
-
import type { InferSchemaOutput, ProviderLocaleKey, SchemaLike } from "./types";
|
|
2
|
+
import type { InferSchemaOutput, ProviderLocaleKey, SchemaLike } from "./types.js";
|
|
3
3
|
export { z };
|
|
4
4
|
export type SchemaValidationResult<TSchema extends SchemaLike> = {
|
|
5
5
|
success: true;
|
package/dist/schema.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { ValidationError } from "./errors";
|
|
3
|
-
import { providerLocaleKey } from "./i18n/keys";
|
|
2
|
+
import { ValidationError } from "./errors.js";
|
|
3
|
+
import { providerLocaleKey } from "./i18n/keys.js";
|
|
4
4
|
export { z };
|
|
5
5
|
function isFailureResult(result) {
|
|
6
6
|
return "issues" in result;
|
|
@@ -99,21 +99,15 @@ export function field(schema, options = {}) {
|
|
|
99
99
|
const metadata = described.meta() ?? {};
|
|
100
100
|
return described.meta({
|
|
101
101
|
...metadata,
|
|
102
|
-
...((options.sensitive ?? true)
|
|
103
|
-
|
|
104
|
-
: {}),
|
|
105
|
-
...(options.kind
|
|
106
|
-
? { [APIFUSE_SENSITIVE_KIND_META_KEY]: options.kind }
|
|
107
|
-
: {}),
|
|
102
|
+
...((options.sensitive ?? true) ? { [APIFUSE_SENSITIVE_META_KEY]: true } : {}),
|
|
103
|
+
...(options.kind ? { [APIFUSE_SENSITIVE_KIND_META_KEY]: options.kind } : {}),
|
|
108
104
|
});
|
|
109
105
|
}
|
|
110
106
|
export function sensitive(schema, kind) {
|
|
111
107
|
return field(schema, { sensitive: true, kind });
|
|
112
108
|
}
|
|
113
109
|
function sensitiveString(kind, description, options = {}) {
|
|
114
|
-
const schema = options.minLength === undefined
|
|
115
|
-
? z.string()
|
|
116
|
-
: z.string().min(options.minLength);
|
|
110
|
+
const schema = options.minLength === undefined ? z.string() : z.string().min(options.minLength);
|
|
117
111
|
return field(schema, {
|
|
118
112
|
kind,
|
|
119
113
|
description: options.description ?? description,
|
|
@@ -132,8 +126,7 @@ export const fields = {
|
|
|
132
126
|
};
|
|
133
127
|
export function isSensitiveSchema(schema) {
|
|
134
128
|
const metadata = readZodMetadata(schema);
|
|
135
|
-
return
|
|
136
|
-
Reflect.get(metadata, APIFUSE_SENSITIVE_META_KEY) === true);
|
|
129
|
+
return metadata !== undefined && Reflect.get(metadata, APIFUSE_SENSITIVE_META_KEY) === true;
|
|
137
130
|
}
|
|
138
131
|
export function collectSensitivePaths(schema) {
|
|
139
132
|
const out = [];
|
|
@@ -217,8 +210,7 @@ function pathMatches(path, patterns) {
|
|
|
217
210
|
}
|
|
218
211
|
function isReservedSensitiveKey(key) {
|
|
219
212
|
const normalized = key.toLowerCase().replace(/[-_\s]/g, "");
|
|
220
|
-
return
|
|
221
|
-
RESERVED_SENSITIVE_KEYS.has(key.toLowerCase()));
|
|
213
|
+
return RESERVED_SENSITIVE_KEYS.has(normalized) || RESERVED_SENSITIVE_KEYS.has(key.toLowerCase());
|
|
222
214
|
}
|
|
223
215
|
function readZodMetadata(schema) {
|
|
224
216
|
if (!schema || typeof schema !== "object" || !("meta" in schema)) {
|
package/dist/serve.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { createServerApp, type ServeOptions, serve } from "./server/serve";
|
|
1
|
+
export { createServerApp, type ServeOptions, serve } from "./server/serve.js";
|
package/dist/serve.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { createServerApp, serve } from "./server/serve";
|
|
1
|
+
export { createServerApp, serve } from "./server/serve.js";
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { createServerApp, type ServeOptions, serve } from "./serve";
|
|
2
|
-
export { computeSelfTestPlanDigest, createSelfTestApp, createSelfTestInvoke, DEFAULT_SELF_TEST_REQUEST_BUDGET_MS, isSelfTestReadOnlyOperation, PROVIDER_RUNTIME_SELF_TEST_REQUEST_BUDGET_MS_ENV, resolveSelfTestPort, SELF_TEST_HEALTHZ_PATH, SELF_TEST_PATH, SELF_TEST_SCHEMA_VERSION, type SelfTestAppOptions, type SelfTestCaseResult, type SelfTestCaseStatus, type SelfTestOperationInvoke, type SelfTestRequest, SelfTestRequestSchema, type SelfTestResponse, } from "./self-test";
|
|
3
|
-
export { resolveHealthCheckInputDateTokens } from "./self-test-input-tokens";
|
|
4
|
-
export { collectSelfTestSensitiveValues, redactSelfTestText, SELF_TEST_MAX_TEXT_LENGTH, SELF_TEST_REDACTED_PLACEHOLDER, } from "./self-test-redaction";
|
|
5
|
-
export { DEFAULT_SELF_TEST_PORT, deriveSelfTestToken, PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_ENV, PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_PREVIOUS_ENV, PROVIDER_RUNTIME_SELF_TEST_PORT_ENV, resolveSelfTestMasterSecrets, type SelfTestMasterSecrets, verifySelfTestAuthorization, } from "./self-test-token";
|
|
6
|
-
export type { AuthFlowRequest, AuthFlowResponse, AuthFlowSuccessResponse, ConnectionMode, OperationConnection, OperationErrorResponse, OperationRequest, OperationResponse, OperationSuccessResponse, } from "./types";
|
|
7
|
-
export { AuthFlowRequestSchema, AuthFlowSuccessResponseSchema, ConnectionModeSchema, ErrorEnvelopeSchema, OperationConnectionSchema, OperationErrorResponseSchema, OperationRequestSchema, OperationSuccessResponseSchema, } from "./types";
|
|
1
|
+
export { createServerApp, type ServeOptions, serve } from "./serve.js";
|
|
2
|
+
export { computeSelfTestPlanDigest, createSelfTestApp, createSelfTestAuthFlowInvoke, createSelfTestInvoke, DEFAULT_SELF_TEST_REQUEST_BUDGET_MS, isSelfTestReadOnlyOperation, PROVIDER_RUNTIME_SELF_TEST_REQUEST_BUDGET_MS_ENV, resolveSelfTestPort, SELF_TEST_AUTH_FLOW_MULTI_TURN_SKIP_REASON, SELF_TEST_AUTH_FLOW_REJECTED_SKIP_REASON, SELF_TEST_HEALTHZ_PATH, SELF_TEST_PATH, SELF_TEST_SCHEMA_VERSION, type SelfTestAppOptions, type SelfTestAuthFlowInvoke, type SelfTestAuthFlowRoute, type SelfTestCaseResult, type SelfTestCaseStatus, type SelfTestOperationInvoke, type SelfTestRequest, SelfTestRequestSchema, type SelfTestResponse, } from "./self-test.js";
|
|
3
|
+
export { resolveHealthCheckInputDateTokens } from "./self-test-input-tokens.js";
|
|
4
|
+
export { collectSelfTestSensitiveValues, redactSelfTestText, SELF_TEST_MAX_TEXT_LENGTH, SELF_TEST_REDACTED_PLACEHOLDER, } from "./self-test-redaction.js";
|
|
5
|
+
export { DEFAULT_SELF_TEST_PORT, deriveSelfTestToken, PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_ENV, PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_PREVIOUS_ENV, PROVIDER_RUNTIME_SELF_TEST_PORT_ENV, resolveSelfTestMasterSecrets, type SelfTestMasterSecrets, verifySelfTestAuthorization, } from "./self-test-token.js";
|
|
6
|
+
export type { AuthFlowRequest, AuthFlowResponse, AuthFlowSuccessResponse, ConnectionMode, OperationConnection, OperationErrorResponse, OperationRequest, OperationResponse, OperationSuccessResponse, } from "./types.js";
|
|
7
|
+
export { AuthFlowRequestSchema, AuthFlowSuccessResponseSchema, ConnectionModeSchema, ErrorEnvelopeSchema, OperationConnectionSchema, OperationErrorResponseSchema, OperationRequestSchema, OperationSuccessResponseSchema, } from "./types.js";
|
package/dist/server/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { createServerApp, serve } from "./serve";
|
|
2
|
-
export { computeSelfTestPlanDigest, createSelfTestApp, createSelfTestInvoke, DEFAULT_SELF_TEST_REQUEST_BUDGET_MS, isSelfTestReadOnlyOperation, PROVIDER_RUNTIME_SELF_TEST_REQUEST_BUDGET_MS_ENV, resolveSelfTestPort, SELF_TEST_HEALTHZ_PATH, SELF_TEST_PATH, SELF_TEST_SCHEMA_VERSION, SelfTestRequestSchema, } from "./self-test";
|
|
3
|
-
export { resolveHealthCheckInputDateTokens } from "./self-test-input-tokens";
|
|
4
|
-
export { collectSelfTestSensitiveValues, redactSelfTestText, SELF_TEST_MAX_TEXT_LENGTH, SELF_TEST_REDACTED_PLACEHOLDER, } from "./self-test-redaction";
|
|
5
|
-
export { DEFAULT_SELF_TEST_PORT, deriveSelfTestToken, PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_ENV, PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_PREVIOUS_ENV, PROVIDER_RUNTIME_SELF_TEST_PORT_ENV, resolveSelfTestMasterSecrets, verifySelfTestAuthorization, } from "./self-test-token";
|
|
6
|
-
export { AuthFlowRequestSchema, AuthFlowSuccessResponseSchema, ConnectionModeSchema, ErrorEnvelopeSchema, OperationConnectionSchema, OperationErrorResponseSchema, OperationRequestSchema, OperationSuccessResponseSchema, } from "./types";
|
|
1
|
+
export { createServerApp, serve } from "./serve.js";
|
|
2
|
+
export { computeSelfTestPlanDigest, createSelfTestApp, createSelfTestAuthFlowInvoke, createSelfTestInvoke, DEFAULT_SELF_TEST_REQUEST_BUDGET_MS, isSelfTestReadOnlyOperation, PROVIDER_RUNTIME_SELF_TEST_REQUEST_BUDGET_MS_ENV, resolveSelfTestPort, SELF_TEST_AUTH_FLOW_MULTI_TURN_SKIP_REASON, SELF_TEST_AUTH_FLOW_REJECTED_SKIP_REASON, SELF_TEST_HEALTHZ_PATH, SELF_TEST_PATH, SELF_TEST_SCHEMA_VERSION, SelfTestRequestSchema, } from "./self-test.js";
|
|
3
|
+
export { resolveHealthCheckInputDateTokens } from "./self-test-input-tokens.js";
|
|
4
|
+
export { collectSelfTestSensitiveValues, redactSelfTestText, SELF_TEST_MAX_TEXT_LENGTH, SELF_TEST_REDACTED_PLACEHOLDER, } from "./self-test-redaction.js";
|
|
5
|
+
export { DEFAULT_SELF_TEST_PORT, deriveSelfTestToken, PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_ENV, PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_PREVIOUS_ENV, PROVIDER_RUNTIME_SELF_TEST_PORT_ENV, resolveSelfTestMasterSecrets, verifySelfTestAuthorization, } from "./self-test-token.js";
|
|
6
|
+
export { AuthFlowRequestSchema, AuthFlowSuccessResponseSchema, ConnectionModeSchema, ErrorEnvelopeSchema, OperationConnectionSchema, OperationErrorResponseSchema, OperationRequestSchema, OperationSuccessResponseSchema, } from "./types.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProviderDefinition } from "../types";
|
|
1
|
+
import type { ProviderDefinition } from "../types.js";
|
|
2
2
|
export declare const SELF_TEST_REDACTED_PLACEHOLDER = "[REDACTED]";
|
|
3
3
|
/** Maximum length of any string echoed in a self-test response. */
|
|
4
4
|
export declare const SELF_TEST_MAX_TEXT_LENGTH = 300;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_ENV, PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_PREVIOUS_ENV, } from "./self-test-token";
|
|
1
|
+
import { PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_ENV, PROVIDER_RUNTIME_SELF_TEST_MASTER_SECRET_PREVIOUS_ENV, } from "./self-test-token.js";
|
|
2
2
|
export const SELF_TEST_REDACTED_PLACEHOLDER = "[REDACTED]";
|
|
3
3
|
/** Maximum length of any string echoed in a self-test response. */
|
|
4
4
|
export const SELF_TEST_MAX_TEXT_LENGTH = 300;
|