@clickhouse/client
Advanced tools
Comparing version 1.4.1 to 1.5.0
@@ -33,4 +33,5 @@ /// <reference types="node" /> | ||
abort_signal: AbortSignal; | ||
decompress_response?: boolean; | ||
compress_request?: boolean; | ||
enable_response_compression?: boolean; | ||
enable_request_compression?: boolean; | ||
try_decompress_response_stream?: boolean; | ||
parse_summary?: boolean; | ||
@@ -43,3 +44,2 @@ } | ||
protected readonly defaultHeaders: Http.OutgoingHttpHeaders; | ||
protected readonly additionalHTTPHeaders: Record<string, string>; | ||
private readonly logger; | ||
@@ -46,0 +46,0 @@ private readonly knownSockets; |
@@ -8,3 +8,2 @@ "use strict"; | ||
const client_common_1 = require("@clickhouse/client-common"); | ||
const client_common_2 = require("@clickhouse/client-common"); | ||
const crypto_1 = __importDefault(require("crypto")); | ||
@@ -42,8 +41,2 @@ const stream_1 = __importDefault(require("stream")); | ||
}); | ||
Object.defineProperty(this, "additionalHTTPHeaders", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: void 0 | ||
}); | ||
Object.defineProperty(this, "logger", { | ||
@@ -67,6 +60,5 @@ enumerable: true, | ||
}); | ||
this.additionalHTTPHeaders = params.http_headers ?? {}; | ||
this.defaultAuthHeader = `Basic ${Buffer.from(`${params.username}:${params.password}`).toString('base64')}`; | ||
this.defaultHeaders = { | ||
...this.additionalHTTPHeaders, | ||
...(params.http_headers ?? {}), | ||
// KeepAlive agent for some reason does not set this on its own | ||
@@ -84,3 +76,3 @@ Connection: this.params.keep_alive.enabled ? 'keep-alive' : 'close', | ||
method: 'GET', | ||
url: (0, client_common_2.transformUrl)({ url: this.params.url, pathname: '/ping' }), | ||
url: (0, client_common_1.transformUrl)({ url: this.params.url, pathname: '/ping' }), | ||
abort_signal: abortController.signal, | ||
@@ -109,19 +101,20 @@ headers: this.buildRequestHeaders(), | ||
const query_id = this.getQueryId(params.query_id); | ||
const clickhouse_settings = (0, client_common_2.withHttpSettings)(params.clickhouse_settings, this.params.compression.decompress_response); | ||
const searchParams = (0, client_common_2.toSearchParams)({ | ||
const clickhouse_settings = (0, client_common_1.withHttpSettings)(params.clickhouse_settings, this.params.compression.decompress_response); | ||
const searchParams = (0, client_common_1.toSearchParams)({ | ||
database: this.params.database, | ||
clickhouse_settings, | ||
query_params: params.query_params, | ||
session_id: params.session_id, | ||
clickhouse_settings, | ||
query_id, | ||
}); | ||
const decompressResponse = clickhouse_settings.enable_http_compression === 1; | ||
const { controller, controllerCleanup } = this.getAbortController(params); | ||
// allows to enforce the compression via the settings even if the client instance has it disabled | ||
const enableResponseCompression = clickhouse_settings.enable_http_compression === 1; | ||
try { | ||
const { stream, response_headers } = await this.request({ | ||
method: 'POST', | ||
url: (0, client_common_2.transformUrl)({ url: this.params.url, searchParams }), | ||
url: (0, client_common_1.transformUrl)({ url: this.params.url, searchParams }), | ||
body: params.query, | ||
abort_signal: controller.signal, | ||
decompress_response: decompressResponse, | ||
enable_response_compression: enableResponseCompression, | ||
headers: this.buildRequestHeaders(params), | ||
@@ -144,3 +137,3 @@ }, 'Query'); | ||
extra_args: { | ||
decompress_response: decompressResponse, | ||
decompress_response: enableResponseCompression, | ||
clickhouse_settings, | ||
@@ -157,3 +150,3 @@ }, | ||
const query_id = this.getQueryId(params.query_id); | ||
const searchParams = (0, client_common_2.toSearchParams)({ | ||
const searchParams = (0, client_common_1.toSearchParams)({ | ||
database: this.params.database, | ||
@@ -170,6 +163,6 @@ clickhouse_settings: params.clickhouse_settings, | ||
method: 'POST', | ||
url: (0, client_common_2.transformUrl)({ url: this.params.url, searchParams }), | ||
url: (0, client_common_1.transformUrl)({ url: this.params.url, searchParams }), | ||
body: params.values, | ||
abort_signal: controller.signal, | ||
compress_request: this.params.compression.compress_request, | ||
enable_request_compression: this.params.compression.compress_request, | ||
parse_summary: true, | ||
@@ -306,19 +299,30 @@ headers: this.buildRequestHeaders(params), | ||
const sendQueryInParams = params.values !== undefined; | ||
const clickhouse_settings = (0, client_common_1.withHttpSettings)(params.clickhouse_settings, this.params.compression.decompress_response); | ||
const toSearchParamsOptions = { | ||
query: sendQueryInParams ? params.query : undefined, | ||
database: this.params.database, | ||
clickhouse_settings: params.clickhouse_settings, | ||
query_params: params.query_params, | ||
session_id: params.session_id, | ||
clickhouse_settings, | ||
query_id, | ||
}; | ||
const searchParams = (0, client_common_2.toSearchParams)(toSearchParamsOptions); | ||
const searchParams = (0, client_common_1.toSearchParams)(toSearchParamsOptions); | ||
const { controller, controllerCleanup } = this.getAbortController(params); | ||
const tryDecompressResponseStream = params.op === 'Exec' | ||
? // allows to disable stream decompression for the `Exec` operation only | ||
params.decompress_response_stream ?? | ||
this.params.compression.decompress_response | ||
: // there is nothing useful in the response stream for the `Command` operation, | ||
// and it is immediately destroyed; never decompress it | ||
false; | ||
try { | ||
const { stream, summary, response_headers } = await this.request({ | ||
method: 'POST', | ||
url: (0, client_common_2.transformUrl)({ url: this.params.url, searchParams }), | ||
url: (0, client_common_1.transformUrl)({ url: this.params.url, searchParams }), | ||
body: sendQueryInParams ? params.values : params.query, | ||
abort_signal: controller.signal, | ||
parse_summary: true, | ||
enable_request_compression: this.params.compression.compress_request, | ||
enable_response_compression: this.params.compression.decompress_response, | ||
try_decompress_response_stream: tryDecompressResponseStream, | ||
headers: this.buildRequestHeaders(params), | ||
@@ -364,9 +368,22 @@ }, params.op); | ||
this.logResponse(op, request, params, _response, start); | ||
const decompressionResult = (0, compression_1.decompressResponse)(_response); | ||
if ((0, compression_1.isDecompressionError)(decompressionResult)) { | ||
return reject(decompressionResult.error); | ||
let responseStream; | ||
const tryDecompressResponseStream = params.try_decompress_response_stream ?? true; | ||
// even if the stream decompression is disabled, we have to decompress it in case of an error | ||
const isFailedResponse = !(0, client_common_1.isSuccessfulResponse)(_response.statusCode); | ||
if (tryDecompressResponseStream || isFailedResponse) { | ||
const decompressionResult = (0, compression_1.decompressResponse)(_response); | ||
if ((0, compression_1.isDecompressionError)(decompressionResult)) { | ||
return reject(decompressionResult.error); | ||
} | ||
responseStream = decompressionResult.response; | ||
} | ||
if ((0, client_common_2.isSuccessfulResponse)(_response.statusCode)) { | ||
else { | ||
responseStream = _response; | ||
} | ||
if (isFailedResponse) { | ||
reject((0, client_common_1.parseError)(await (0, utils_1.getAsText)(responseStream))); | ||
} | ||
else { | ||
return resolve({ | ||
stream: decompressionResult.response, | ||
stream: responseStream, | ||
summary: params.parse_summary | ||
@@ -378,5 +395,2 @@ ? this.parseSummary(op, _response) | ||
} | ||
else { | ||
reject((0, client_common_2.parseError)(await (0, utils_1.getAsText)(decompressionResult.response))); | ||
} | ||
}; | ||
@@ -415,3 +429,3 @@ function onAbort() { | ||
}; | ||
if (params.compress_request) { | ||
if (params.enable_request_compression) { | ||
stream_1.default.pipeline(bodyStream, zlib_1.default.createGzip(), request, callback); | ||
@@ -418,0 +432,0 @@ } |
@@ -20,4 +20,4 @@ "use strict"; | ||
headers: params.headers, | ||
compress_request: params.compress_request, | ||
decompress_response: params.decompress_response, | ||
enable_request_compression: params.enable_request_compression, | ||
enable_response_compression: params.enable_response_compression, | ||
}); | ||
@@ -24,0 +24,0 @@ return http_1.default.request(params.url, { |
@@ -21,4 +21,4 @@ "use strict"; | ||
headers: params.headers, | ||
compress_request: params.compress_request, | ||
decompress_response: params.decompress_response, | ||
enable_request_compression: params.enable_request_compression, | ||
enable_response_compression: params.enable_response_compression, | ||
}); | ||
@@ -25,0 +25,0 @@ return http_1.default.request(params.url, { |
@@ -46,4 +46,4 @@ "use strict"; | ||
headers: params.headers, | ||
compress_request: params.compress_request, | ||
decompress_response: params.decompress_response, | ||
enable_request_compression: params.enable_request_compression, | ||
enable_response_compression: params.enable_response_compression, | ||
}); | ||
@@ -50,0 +50,0 @@ return https_1.default.request(params.url, { |
@@ -1,2 +0,2 @@ | ||
declare const _default: "1.4.1"; | ||
declare const _default: "1.5.0"; | ||
export default _default; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.default = '1.4.1'; | ||
exports.default = '1.5.0'; | ||
//# sourceMappingURL=version.js.map |
@@ -5,3 +5,3 @@ { | ||
"homepage": "https://clickhouse.com", | ||
"version": "1.4.1", | ||
"version": "1.5.0", | ||
"license": "Apache-2.0", | ||
@@ -27,4 +27,4 @@ "keywords": [ | ||
"dependencies": { | ||
"@clickhouse/client-common": "1.4.1" | ||
"@clickhouse/client-common": "1.5.0" | ||
} | ||
} |
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
112661
1496
+ Added@clickhouse/client-common@1.5.0(transitive)
- Removed@clickhouse/client-common@1.4.1(transitive)