@elastic/transport
Advanced tools
Comparing version 8.0.0-beta.2 to 8.1.0-beta.1
@@ -41,3 +41,5 @@ /* | ||
ConnectionRequestOptions, | ||
ConnectionRequestResponse | ||
ConnectionRequestOptionsAsStream, | ||
ConnectionRequestResponse, | ||
ConnectionRequestResponseAsStream | ||
} from './lib/connection' | ||
@@ -51,2 +53,3 @@ | ||
export type { | ||
TransportOptions, | ||
TransportRequestParams, | ||
@@ -53,0 +56,0 @@ TransportRequestOptions, |
@@ -36,6 +36,8 @@ /// <reference types="node" /> | ||
maxCompressedResponseSize?: number; | ||
asStream?: boolean; | ||
signal?: AbortSignal; | ||
timeout?: number; | ||
} | ||
export interface ConnectionRequestOptionsAsStream extends ConnectionRequestOptions { | ||
asStream: true; | ||
} | ||
export interface ConnectionRequestResponse { | ||
@@ -46,2 +48,7 @@ body: string | Buffer; | ||
} | ||
export interface ConnectionRequestResponseAsStream { | ||
body: ReadableStream; | ||
headers: http.IncomingHttpHeaders; | ||
statusCode: number; | ||
} | ||
export default class BaseConnection { | ||
@@ -69,2 +76,3 @@ url: URL; | ||
request(params: ConnectionRequestParams, options: ConnectionRequestOptions): Promise<ConnectionRequestResponse>; | ||
request(params: ConnectionRequestParams, options: ConnectionRequestOptionsAsStream): Promise<ConnectionRequestResponseAsStream>; | ||
close(): Promise<void>; | ||
@@ -71,0 +79,0 @@ [inspect.custom](depth: number, options: Record<string, any>): Record<string, any>; |
@@ -131,3 +131,2 @@ "use strict"; | ||
} | ||
/* istanbul ignore next */ | ||
async request(params, options) { | ||
@@ -134,0 +133,0 @@ throw new errors_1.ConfigurationError('The request method should be implemented by extended classes'); |
@@ -5,3 +5,3 @@ /// <reference types="node" /> | ||
import https from 'https'; | ||
import BaseConnection, { ConnectionOptions, ConnectionRequestParams, ConnectionRequestOptions, ConnectionRequestResponse } from './BaseConnection'; | ||
import BaseConnection, { ConnectionOptions, ConnectionRequestParams, ConnectionRequestOptions, ConnectionRequestOptionsAsStream, ConnectionRequestResponse, ConnectionRequestResponseAsStream } from './BaseConnection'; | ||
export default class HttpConnection extends BaseConnection { | ||
@@ -12,4 +12,5 @@ agent?: http.Agent | https.Agent | hpagent.HttpProxyAgent | hpagent.HttpsProxyAgent; | ||
request(params: ConnectionRequestParams, options: ConnectionRequestOptions): Promise<ConnectionRequestResponse>; | ||
request(params: ConnectionRequestParams, options: ConnectionRequestOptionsAsStream): Promise<ConnectionRequestResponseAsStream>; | ||
close(): Promise<void>; | ||
buildRequestObject(params: ConnectionRequestParams, options: ConnectionRequestOptions): http.ClientRequestArgs; | ||
} |
@@ -22,2 +22,3 @@ "use strict"; | ||
const tslib_1 = require("tslib"); | ||
/* eslint-disable @typescript-eslint/restrict-template-expressions */ | ||
const hpagent_1 = (0, tslib_1.__importDefault)(require("hpagent")); | ||
@@ -108,3 +109,2 @@ const http_1 = (0, tslib_1.__importDefault)(require("http")); | ||
if (options.signal != null) { | ||
// @ts-expect-error | ||
options.signal.addEventListener('abort', () => request.abort(), { once: true }); | ||
@@ -116,2 +116,9 @@ } | ||
this._openRequests--; | ||
if (options.asStream === true) { | ||
return resolve({ | ||
body: response, | ||
statusCode: response.statusCode, | ||
headers: response.headers | ||
}); | ||
} | ||
const contentEncoding = ((_a = response.headers['content-encoding']) !== null && _a !== void 0 ? _a : '').toLowerCase(); | ||
@@ -118,0 +125,0 @@ const isCompressed = contentEncoding.includes('gzip') || contentEncoding.includes('deflate'); |
@@ -5,3 +5,3 @@ import BaseConnection from './BaseConnection'; | ||
export declare type Connection = BaseConnection | HttpConnection | UndiciConnection; | ||
export type { ConnectionOptions, ConnectionRequestParams, ConnectionRequestOptions, ConnectionRequestResponse } from './BaseConnection'; | ||
export type { ConnectionOptions, ConnectionRequestParams, ConnectionRequestOptions, ConnectionRequestOptionsAsStream, ConnectionRequestResponse, ConnectionRequestResponseAsStream } from './BaseConnection'; | ||
export { BaseConnection, HttpConnection, UndiciConnection }; |
/// <reference types="node" /> | ||
import { EventEmitter } from 'events'; | ||
import BaseConnection, { ConnectionOptions, ConnectionRequestParams, ConnectionRequestOptions, ConnectionRequestResponse } from './BaseConnection'; | ||
import BaseConnection, { ConnectionOptions, ConnectionRequestParams, ConnectionRequestOptions, ConnectionRequestOptionsAsStream, ConnectionRequestResponse, ConnectionRequestResponseAsStream } from './BaseConnection'; | ||
import { Pool } from 'undici'; | ||
@@ -11,3 +11,4 @@ import { kEmitter } from '../symbols'; | ||
request(params: ConnectionRequestParams, options: ConnectionRequestOptions): Promise<ConnectionRequestResponse>; | ||
request(params: ConnectionRequestParams, options: ConnectionRequestOptionsAsStream): Promise<ConnectionRequestResponseAsStream>; | ||
close(): Promise<void>; | ||
} |
@@ -23,2 +23,3 @@ "use strict"; | ||
const tslib_1 = require("tslib"); | ||
/* eslint-disable @typescript-eslint/restrict-template-expressions */ | ||
const events_1 = require("events"); | ||
@@ -128,3 +129,2 @@ const debug_1 = (0, tslib_1.__importDefault)(require("debug")); | ||
if (options.signal != null) { | ||
// @ts-expect-error | ||
options.signal.dispatchEvent('abort'); | ||
@@ -163,2 +163,9 @@ } | ||
} | ||
if (options.asStream === true) { | ||
return { | ||
statusCode: response.statusCode, | ||
headers: response.headers, | ||
body: response.body | ||
}; | ||
} | ||
const contentEncoding = ((_o = response.headers['content-encoding']) !== null && _o !== void 0 ? _o : '').toLowerCase(); | ||
@@ -165,0 +172,0 @@ const isCompressed = contentEncoding.includes('gzip') || contentEncoding.includes('deflate'); // eslint-disable-line |
@@ -348,4 +348,2 @@ "use strict"; | ||
} | ||
// TODO: fixme | ||
// if (options.asStream === true) params.asStream = true | ||
// handle compression | ||
@@ -399,3 +397,4 @@ if (connectionParams.body !== '' && connectionParams.body != null) { | ||
signal, | ||
timeout: toMs(options.requestTimeout != null ? options.requestTimeout : this[symbols_1.kRequestTimeout]) | ||
timeout: toMs(options.requestTimeout != null ? options.requestTimeout : this[symbols_1.kRequestTimeout]), | ||
...(options.asStream === true ? { asStream: true } : null) | ||
}); | ||
@@ -407,2 +406,7 @@ result.statusCode = statusCode; | ||
} | ||
if (options.asStream === true) { | ||
result.body = body; | ||
this[symbols_1.kDiagnostic].emit('response', null, result); | ||
return returnMeta ? result : body; | ||
} | ||
const contentEncoding = ((_8 = headers['content-encoding']) !== null && _8 !== void 0 ? _8 : '').toLowerCase(); | ||
@@ -416,8 +420,2 @@ if (contentEncoding.includes('gzip') || contentEncoding.includes('deflate')) { | ||
} | ||
// TODO: fixme | ||
// if (options.asStream === true) { | ||
// result.body = response | ||
// this[kDiagnostic].emit('response', null, result) | ||
// return result | ||
// } | ||
const isHead = params.method === 'HEAD'; | ||
@@ -424,0 +422,0 @@ // we should attempt the payload deserialization only if: |
{ | ||
"name": "@elastic/transport", | ||
"version": "8.0.0-beta.2", | ||
"version": "8.1.0-beta.1", | ||
"description": "Transport classes and utilities shared among Node.js Elastic client libraries", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
224622
3508