/// /// import * as http from 'http'; import { Connection } from './connection'; import Diagnostic from './Diagnostic'; import Serializer from './Serializer'; import { BaseConnectionPool } from './pool'; import { nodeFilterFn, nodeSelectorFn, generateRequestIdFn, RequestBody, RequestNDBody, TransportResult, Context } from './types'; import { kSniffEnabled, kNextSniff, kIsSniffing, kSniffInterval, kSniffOnConnectionFault, kSniffEndpoint, kRequestTimeout, kCompression, kMaxRetries, kName, kOpaqueIdPrefix, kGenerateRequestId, kContext, kConnectionPool, kSerializer, kDiagnostic, kHeaders, kNodeFilter, kNodeSelector, kProductCheck, kMaxResponseSize, kMaxCompressedResponseSize, kJsonContentType, kNdjsonContentType, kAcceptHeader, kRedaction } from './symbols'; export interface TransportOptions { diagnostic?: Diagnostic; connectionPool: BaseConnectionPool; serializer?: Serializer; maxRetries?: number; requestTimeout?: number | string; compression?: boolean; sniffInterval?: number | boolean; sniffOnConnectionFault?: boolean; sniffEndpoint?: string; sniffOnStart?: boolean; nodeFilter?: nodeFilterFn; nodeSelector?: nodeSelectorFn; headers?: http.IncomingHttpHeaders; generateRequestId?: generateRequestIdFn; name?: string | symbol; opaqueIdPrefix?: string; context?: Context; productCheck?: string; maxResponseSize?: number; maxCompressedResponseSize?: number; vendoredHeaders?: { jsonContentType?: string; ndjsonContentType?: string; accept?: string; }; redaction?: RedactionOptions; } export interface TransportRequestParams { method: string; path: string; body?: RequestBody; bulkBody?: RequestNDBody; querystring?: Record | string; } export interface TransportRequestOptions { ignore?: number[]; requestTimeout?: number | string; maxRetries?: number; asStream?: boolean; headers?: http.IncomingHttpHeaders; querystring?: Record; compression?: boolean; id?: any; context?: Context; warnings?: string[]; opaqueId?: string; signal?: AbortSignal; maxResponseSize?: number; maxCompressedResponseSize?: number; /** * Warning: If you set meta to true the result will no longer be * the response body, but an object containing the body, statusCode, * headers and meta keys. * You can use the destructuring assignment to update your code without * refactoring the entire code base: * From: * ``` * const result = await client.method(params) * ``` * To: * ``` * const { * body: result, * statusCode, * headers, * meta * } = await client.method(params, { meta: true }) * ``` */ meta?: boolean; redaction?: RedactionOptions; } export interface TransportRequestOptionsWithMeta extends TransportRequestOptions { meta: true; } export interface TransportRequestOptionsWithOutMeta extends TransportRequestOptions { meta: false; } export interface GetConnectionOptions { requestId: string | number; context: any; } export interface SniffOptions { requestId?: string | number; reason: string; context: any; } export interface RedactionOptions { type: 'off' | 'replace' | 'remove'; additionalKeys?: string[]; } export default class Transport { [kNodeFilter]: nodeFilterFn; [kNodeSelector]: nodeSelectorFn; [kHeaders]: http.IncomingHttpHeaders; [kDiagnostic]: Diagnostic; [kConnectionPool]: BaseConnectionPool; [kSerializer]: Serializer; [kContext]: Context; [kGenerateRequestId]: generateRequestIdFn; [kOpaqueIdPrefix]: string | null; [kName]: string | symbol; [kMaxRetries]: number; [kCompression]: boolean; [kRequestTimeout]: number; [kSniffEnabled]: boolean; [kNextSniff]: number; [kIsSniffing]: boolean; [kSniffInterval]: number | boolean; [kSniffOnConnectionFault]: boolean; [kSniffEndpoint]: string | null; [kProductCheck]: string | null; [kMaxResponseSize]: number; [kMaxCompressedResponseSize]: number; [kJsonContentType]: string; [kNdjsonContentType]: string; [kAcceptHeader]: string; [kRedaction]: RedactionOptions; static sniffReasons: { SNIFF_ON_START: string; SNIFF_INTERVAL: string; SNIFF_ON_CONNECTION_FAULT: string; DEFAULT: string; }; constructor(opts: TransportOptions); get connectionPool(): BaseConnectionPool; get sniffEnabled(): boolean; get nextSniff(): number | null; get sniffEndpoint(): string | null; get isSniffing(): boolean; set isSniffing(val: boolean); get diagnostic(): Diagnostic; request(params: TransportRequestParams, options?: TransportRequestOptionsWithOutMeta): Promise; request(params: TransportRequestParams, options?: TransportRequestOptionsWithMeta): Promise>; request(params: TransportRequestParams, options?: TransportRequestOptions): Promise; getConnection(opts: GetConnectionOptions): Connection | null; sniff(opts: SniffOptions): void; } export declare function generateRequestId(): generateRequestIdFn; export declare function lowerCaseHeaders(oldHeaders?: http.IncomingHttpHeaders): http.IncomingHttpHeaders | null;