@clickhouse/client-common 0.3.0 → 0.4.0

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.
Files changed (79) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +14 -0
  3. package/dist/clickhouse_types.d.ts +59 -1
  4. package/dist/clickhouse_types.js +27 -0
  5. package/dist/clickhouse_types.js.map +1 -1
  6. package/dist/client.d.ts +126 -95
  7. package/dist/client.js +119 -76
  8. package/dist/client.js.map +1 -1
  9. package/dist/config.d.ts +173 -0
  10. package/dist/config.js +309 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/connection.d.ts +44 -13
  13. package/dist/connection.js.map +1 -1
  14. package/dist/data_formatter/format_query_params.d.ts +11 -1
  15. package/dist/data_formatter/format_query_params.js +102 -16
  16. package/dist/data_formatter/format_query_params.js.map +1 -1
  17. package/dist/data_formatter/format_query_settings.js +1 -2
  18. package/dist/data_formatter/format_query_settings.js.map +1 -1
  19. package/dist/data_formatter/formatter.d.ts +32 -14
  20. package/dist/data_formatter/formatter.js +27 -46
  21. package/dist/data_formatter/formatter.js.map +1 -1
  22. package/dist/data_formatter/index.d.ts +1 -1
  23. package/dist/data_formatter/index.js +2 -1
  24. package/dist/data_formatter/index.js.map +1 -1
  25. package/dist/error/error.d.ts +20 -0
  26. package/dist/error/error.js +69 -0
  27. package/dist/error/error.js.map +1 -0
  28. package/dist/error/index.d.ts +1 -1
  29. package/dist/error/index.js +1 -1
  30. package/dist/error/index.js.map +1 -1
  31. package/dist/index.d.ts +18 -12
  32. package/dist/index.js +34 -12
  33. package/dist/index.js.map +1 -1
  34. package/dist/logger.js +8 -8
  35. package/dist/logger.js.map +1 -1
  36. package/dist/parse/column_types.d.ts +127 -0
  37. package/dist/parse/column_types.js +540 -0
  38. package/dist/parse/column_types.js.map +1 -0
  39. package/dist/parse/index.d.ts +2 -0
  40. package/dist/parse/index.js +19 -0
  41. package/dist/parse/index.js.map +1 -0
  42. package/dist/parse/json_handling.d.ts +19 -0
  43. package/dist/parse/json_handling.js +8 -0
  44. package/dist/parse/json_handling.js.map +1 -0
  45. package/dist/result.d.ts +52 -8
  46. package/dist/result.js.map +1 -1
  47. package/dist/settings.d.ts +38 -2
  48. package/dist/settings.js.map +1 -1
  49. package/dist/ts_utils.d.ts +4 -0
  50. package/dist/ts_utils.js +3 -0
  51. package/dist/ts_utils.js.map +1 -0
  52. package/dist/utils/connection.d.ts +11 -3
  53. package/dist/utils/connection.js +19 -7
  54. package/dist/utils/connection.js.map +1 -1
  55. package/dist/utils/index.d.ts +2 -2
  56. package/dist/utils/index.js +2 -2
  57. package/dist/utils/index.js.map +1 -1
  58. package/dist/utils/sleep.d.ts +1 -0
  59. package/dist/utils/sleep.js +9 -0
  60. package/dist/utils/sleep.js.map +1 -0
  61. package/dist/utils/stream.d.ts +14 -0
  62. package/dist/utils/stream.js +53 -0
  63. package/dist/utils/stream.js.map +1 -0
  64. package/dist/utils/url.d.ts +5 -4
  65. package/dist/utils/url.js +22 -13
  66. package/dist/utils/url.js.map +1 -1
  67. package/dist/version.d.ts +1 -1
  68. package/dist/version.js +1 -1
  69. package/dist/version.js.map +1 -1
  70. package/package.json +6 -2
  71. package/dist/error/parse_error.d.ts +0 -12
  72. package/dist/error/parse_error.js +0 -41
  73. package/dist/error/parse_error.js.map +0 -1
  74. package/dist/utils/permutations.d.ts +0 -1
  75. package/dist/utils/permutations.js +0 -12
  76. package/dist/utils/permutations.js.map +0 -1
  77. package/dist/utils/string.d.ts +0 -1
  78. package/dist/utils/string.js +0 -8
  79. package/dist/utils/string.js.map +0 -1
package/dist/config.js ADDED
@@ -0,0 +1,309 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareConfigWithURL = prepareConfigWithURL;
4
+ exports.getConnectionParams = getConnectionParams;
5
+ exports.mergeConfigs = mergeConfigs;
6
+ exports.createUrl = createUrl;
7
+ exports.loadConfigOptionsFromURL = loadConfigOptionsFromURL;
8
+ exports.booleanConfigURLValue = booleanConfigURLValue;
9
+ exports.numberConfigURLValue = numberConfigURLValue;
10
+ exports.enumConfigURLValue = enumConfigURLValue;
11
+ const logger_1 = require("./logger");
12
+ const json_handling_1 = require("./parse/json_handling");
13
+ /**
14
+ * Validates and normalizes the provided "base" config.
15
+ * Warns about deprecated configuration parameters usage.
16
+ * Parses the common URL parameters into the configuration parameters (these are the same for all implementations).
17
+ * Parses implementation-specific URL parameters using the handler provided by that implementation.
18
+ * Merges these parameters with the base config and implementation-specific defaults.
19
+ * Enforces certain defaults in case of deprecated keys or readonly mode.
20
+ */
21
+ function prepareConfigWithURL(baseConfigOptions, logger, handleImplURLParams) {
22
+ const baseConfig = { ...baseConfigOptions };
23
+ if (baseConfig.additional_headers !== undefined) {
24
+ logger.warn({
25
+ module: 'Config',
26
+ message: '"additional_headers" is deprecated. Use "http_headers" instead.',
27
+ });
28
+ baseConfig.http_headers = baseConfig.additional_headers;
29
+ delete baseConfig.additional_headers;
30
+ }
31
+ let configURL;
32
+ if (baseConfig.host !== undefined) {
33
+ logger.warn({
34
+ module: 'Config',
35
+ message: '"host" is deprecated. Use "url" instead.',
36
+ });
37
+ configURL = createUrl(baseConfig.host);
38
+ delete baseConfig.host;
39
+ }
40
+ else {
41
+ configURL = createUrl(baseConfig.url);
42
+ }
43
+ const [url, configFromURL] = loadConfigOptionsFromURL(configURL, handleImplURLParams);
44
+ const config = mergeConfigs(baseConfig, configFromURL, logger);
45
+ if (config.pathname !== undefined) {
46
+ url.pathname = config.pathname;
47
+ }
48
+ config.url = url;
49
+ return config;
50
+ }
51
+ function getConnectionParams(config, logger) {
52
+ let auth;
53
+ if (config.access_token !== undefined) {
54
+ if (config.username !== undefined || config.password !== undefined) {
55
+ throw new Error('Both access token and username/password are provided in the configuration. Please use only one authentication method.');
56
+ }
57
+ auth = { access_token: config.access_token, type: 'JWT' };
58
+ }
59
+ else {
60
+ auth = {
61
+ username: config.username ?? 'default',
62
+ password: config.password ?? '',
63
+ type: 'Credentials',
64
+ };
65
+ }
66
+ return {
67
+ auth,
68
+ url: config.url,
69
+ application_id: config.application,
70
+ request_timeout: config.request_timeout ?? 30000,
71
+ max_open_connections: config.max_open_connections ?? 10,
72
+ compression: {
73
+ decompress_response: config.compression?.response ?? false,
74
+ compress_request: config.compression?.request ?? false,
75
+ },
76
+ database: config.database ?? 'default',
77
+ log_writer: new logger_1.LogWriter(logger, 'Connection', config.log?.level),
78
+ keep_alive: { enabled: config.keep_alive?.enabled ?? true },
79
+ clickhouse_settings: config.clickhouse_settings ?? {},
80
+ http_headers: config.http_headers ?? {},
81
+ json: {
82
+ ...json_handling_1.defaultJSONHandling,
83
+ ...config.json,
84
+ },
85
+ };
86
+ }
87
+ /**
88
+ * Merge two versions of the config: base (hardcoded) from the instance creation and the URL parsed one.
89
+ * URL config takes priority and overrides the base config parameters.
90
+ * If a value is overridden, then a warning will be logged (even if the log level is OFF).
91
+ */
92
+ function mergeConfigs(baseConfig, configFromURL, logger) {
93
+ function deepMerge(base, fromURL, path = []) {
94
+ for (const key of Object.keys(fromURL)) {
95
+ if (typeof fromURL[key] === 'object') {
96
+ deepMerge(base, fromURL[key], path.concat(key));
97
+ }
98
+ else {
99
+ let baseAtPath = base;
100
+ for (const key of path) {
101
+ if (baseAtPath[key] === undefined) {
102
+ baseAtPath[key] = {};
103
+ }
104
+ baseAtPath = baseAtPath[key];
105
+ }
106
+ const baseAtKey = baseAtPath[key];
107
+ if (baseAtKey !== undefined) {
108
+ const fullPath = path.concat(key).join('.');
109
+ logger.warn({
110
+ module: 'Config',
111
+ message: `"${fullPath}" is overridden by a URL parameter.`,
112
+ });
113
+ }
114
+ baseAtPath[key] = fromURL[key];
115
+ }
116
+ }
117
+ }
118
+ const config = { ...baseConfig };
119
+ deepMerge(config, configFromURL);
120
+ return config;
121
+ }
122
+ function createUrl(configURL) {
123
+ let url;
124
+ try {
125
+ if (typeof configURL === 'string' || configURL instanceof URL) {
126
+ url = new URL(configURL);
127
+ }
128
+ else {
129
+ return new URL('http://localhost:8123');
130
+ }
131
+ }
132
+ catch (err) {
133
+ throw new Error('ClickHouse URL is malformed. Expected format: http[s]://[username:password@]hostname:port[/database][?param1=value1&param2=value2]', { cause: err });
134
+ }
135
+ if (url.protocol !== 'http:' && url.protocol !== 'https:') {
136
+ throw new Error(`ClickHouse URL protocol must be either http or https. Got: ${url.protocol}`);
137
+ }
138
+ return url;
139
+ }
140
+ /**
141
+ * @param url potentially contains auth, database and URL params to parse the configuration from
142
+ * @param handleExtraURLParams some platform-specific URL params might be unknown by the common package;
143
+ * use this function defined in the implementation to handle them. Logs warnings in case of hardcode overrides.
144
+ */
145
+ function loadConfigOptionsFromURL(url, handleExtraURLParams) {
146
+ let config = {};
147
+ // trim is not needed, cause space is not allowed in the URL basic auth and should be encoded as %20
148
+ if (url.username !== '') {
149
+ config.username = decodeURIComponent(url.username);
150
+ }
151
+ if (url.password !== '') {
152
+ config.password = decodeURIComponent(url.password);
153
+ }
154
+ if (url.pathname.trim().length > 1) {
155
+ config.database = url.pathname.slice(1);
156
+ }
157
+ const urlSearchParamsKeys = [...url.searchParams.keys()];
158
+ if (urlSearchParamsKeys.length > 0) {
159
+ const unknownParams = new Set();
160
+ const settingPrefix = 'clickhouse_setting_';
161
+ const settingShortPrefix = 'ch_';
162
+ const httpHeaderPrefix = 'http_header_';
163
+ urlSearchParamsKeys.forEach((key) => {
164
+ let paramWasProcessed = true;
165
+ const value = url.searchParams.get(key);
166
+ if (key.startsWith(settingPrefix)) {
167
+ // clickhouse_settings_*
168
+ const settingKey = key.slice(settingPrefix.length);
169
+ if (config.clickhouse_settings === undefined) {
170
+ config.clickhouse_settings = {};
171
+ }
172
+ config.clickhouse_settings[settingKey] = value;
173
+ }
174
+ else if (key.startsWith(settingShortPrefix)) {
175
+ // ch_*
176
+ const settingKey = key.slice(settingShortPrefix.length);
177
+ if (config.clickhouse_settings === undefined) {
178
+ config.clickhouse_settings = {};
179
+ }
180
+ config.clickhouse_settings[settingKey] = value;
181
+ }
182
+ else if (key.startsWith(httpHeaderPrefix)) {
183
+ // http_headers_*
184
+ const headerKey = key.slice(httpHeaderPrefix.length);
185
+ if (config.http_headers === undefined) {
186
+ config.http_headers = {};
187
+ }
188
+ config.http_headers[headerKey] = value;
189
+ }
190
+ else {
191
+ // static known parameters
192
+ switch (key) {
193
+ case 'application':
194
+ config.application = value;
195
+ break;
196
+ case 'pathname':
197
+ config.pathname = value;
198
+ break;
199
+ case 'session_id':
200
+ config.session_id = value;
201
+ break;
202
+ case 'request_timeout':
203
+ config.request_timeout = numberConfigURLValue({
204
+ key,
205
+ value,
206
+ min: 0,
207
+ });
208
+ break;
209
+ case 'max_open_connections':
210
+ config.max_open_connections = numberConfigURLValue({
211
+ key,
212
+ value,
213
+ min: 1,
214
+ });
215
+ break;
216
+ case 'compression_request':
217
+ if (config.compression === undefined) {
218
+ config.compression = {};
219
+ }
220
+ config.compression.request = booleanConfigURLValue({ key, value });
221
+ break;
222
+ case 'compression_response':
223
+ if (config.compression === undefined) {
224
+ config.compression = {};
225
+ }
226
+ config.compression.response = booleanConfigURLValue({
227
+ key,
228
+ value,
229
+ });
230
+ break;
231
+ case 'log_level':
232
+ if (config.log === undefined) {
233
+ config.log = {};
234
+ }
235
+ config.log.level = enumConfigURLValue({
236
+ key,
237
+ value,
238
+ enumObject: logger_1.ClickHouseLogLevel,
239
+ });
240
+ break;
241
+ case 'keep_alive_enabled':
242
+ if (config.keep_alive === undefined) {
243
+ config.keep_alive = {};
244
+ }
245
+ config.keep_alive.enabled = booleanConfigURLValue({ key, value });
246
+ break;
247
+ case 'access_token':
248
+ config.access_token = value;
249
+ break;
250
+ default:
251
+ paramWasProcessed = false;
252
+ unknownParams.add(key);
253
+ break;
254
+ }
255
+ }
256
+ if (paramWasProcessed) {
257
+ // so it won't be passed to the impl URL params handler
258
+ url.searchParams.delete(key);
259
+ }
260
+ });
261
+ if (handleExtraURLParams !== null) {
262
+ const res = handleExtraURLParams(config, url);
263
+ config = res.config;
264
+ if (unknownParams.size > 0) {
265
+ res.handled_params.forEach((k) => unknownParams.delete(k));
266
+ }
267
+ if (res.unknown_params.size > 0) {
268
+ res.unknown_params.forEach((k) => unknownParams.add(k));
269
+ }
270
+ }
271
+ if (unknownParams.size > 0) {
272
+ throw new Error(`Unknown URL parameters: ${Array.from(unknownParams).join(', ')}`);
273
+ }
274
+ }
275
+ // clean up the final ClickHouse URL to be used in the connection
276
+ const clickHouseURL = new URL(`${url.protocol}//${url.host}`);
277
+ return [clickHouseURL, config];
278
+ }
279
+ function booleanConfigURLValue({ key, value, }) {
280
+ const trimmed = value.trim();
281
+ if (trimmed === 'true' || trimmed === '1')
282
+ return true;
283
+ if (trimmed === 'false' || trimmed === '0')
284
+ return false;
285
+ throw new Error(`"${key}" has invalid boolean value: ${trimmed}. Expected one of: 0, 1, true, false.`);
286
+ }
287
+ function numberConfigURLValue({ key, value, min, max, }) {
288
+ const trimmed = value.trim();
289
+ const number = Number(trimmed);
290
+ if (isNaN(number))
291
+ throw new Error(`"${key}" has invalid numeric value: ${trimmed}`);
292
+ if (min !== undefined && number < min) {
293
+ throw new Error(`"${key}" value ${trimmed} is less than min allowed ${min}`);
294
+ }
295
+ if (max !== undefined && number > max) {
296
+ throw new Error(`"${key}" value ${trimmed} is greater than max allowed ${max}`);
297
+ }
298
+ return number;
299
+ }
300
+ function enumConfigURLValue({ key, value, enumObject, }) {
301
+ const values = Object.keys(enumObject).filter((item) => isNaN(Number(item)));
302
+ const trimmed = value.trim();
303
+ if (!values.includes(trimmed)) {
304
+ const expected = values.join(', ');
305
+ throw new Error(`"${key}" has invalid value: ${trimmed}. Expected one of: ${expected}.`);
306
+ }
307
+ return enumObject[trimmed];
308
+ }
309
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,34 @@
1
- import type { WithClickHouseSummary } from './clickhouse_types';
1
+ import type { JSONHandling } from '.';
2
+ import type { WithClickHouseSummary, WithResponseHeaders } from './clickhouse_types';
2
3
  import type { LogWriter } from './logger';
3
4
  import type { ClickHouseSettings } from './settings';
5
+ export type ConnectionAuth = {
6
+ username: string;
7
+ password: string;
8
+ type: 'Credentials';
9
+ } | {
10
+ access_token: string;
11
+ type: 'JWT';
12
+ };
4
13
  export interface ConnectionParams {
5
14
  url: URL;
6
15
  request_timeout: number;
7
16
  max_open_connections: number;
8
- compression: {
9
- decompress_response: boolean;
10
- compress_request: boolean;
11
- };
12
- username: string;
13
- password: string;
17
+ compression: CompressionSettings;
14
18
  database: string;
15
19
  clickhouse_settings: ClickHouseSettings;
16
20
  log_writer: LogWriter;
21
+ keep_alive: {
22
+ enabled: boolean;
23
+ };
17
24
  application_id?: string;
18
- additional_headers?: Record<string, string>;
25
+ http_headers?: Record<string, string>;
26
+ auth: ConnectionAuth;
27
+ json?: JSONHandling;
28
+ }
29
+ export interface CompressionSettings {
30
+ decompress_response: boolean;
31
+ compress_request: boolean;
19
32
  }
20
33
  export interface ConnBaseQueryParams {
21
34
  query: string;
@@ -24,11 +37,27 @@ export interface ConnBaseQueryParams {
24
37
  abort_signal?: AbortSignal;
25
38
  session_id?: string;
26
39
  query_id?: string;
40
+ auth?: {
41
+ username: string;
42
+ password: string;
43
+ } | {
44
+ access_token: string;
45
+ };
46
+ role?: string | Array<string>;
47
+ http_headers?: Record<string, string>;
27
48
  }
49
+ export type ConnPingParams = {
50
+ select: boolean;
51
+ } & Omit<ConnBaseQueryParams, 'query' | 'query_params'>;
28
52
  export interface ConnInsertParams<Stream> extends ConnBaseQueryParams {
29
53
  values: string | Stream;
30
54
  }
31
- export interface ConnBaseResult {
55
+ export interface ConnExecParams<Stream> extends ConnBaseQueryParams {
56
+ values?: Stream;
57
+ decompress_response_stream?: boolean;
58
+ ignore_error_response?: boolean;
59
+ }
60
+ export interface ConnBaseResult extends WithResponseHeaders {
32
61
  query_id: string;
33
62
  }
34
63
  export interface ConnQueryResult<Stream> extends ConnBaseResult {
@@ -37,17 +66,19 @@ export interface ConnQueryResult<Stream> extends ConnBaseResult {
37
66
  }
38
67
  export type ConnInsertResult = ConnBaseResult & WithClickHouseSummary;
39
68
  export type ConnExecResult<Stream> = ConnQueryResult<Stream> & WithClickHouseSummary;
69
+ export type ConnCommandResult = ConnBaseResult & WithClickHouseSummary;
40
70
  export type ConnPingResult = {
41
71
  success: true;
42
72
  } | {
43
73
  success: false;
44
74
  error: Error;
45
75
  };
46
- export type ConnOperation = 'Ping' | 'Query' | 'Insert' | 'Exec';
76
+ export type ConnOperation = 'Ping' | 'Query' | 'Insert' | 'Exec' | 'Command';
47
77
  export interface Connection<Stream> {
48
- ping(): Promise<ConnPingResult>;
49
- close(): Promise<void>;
78
+ ping(params: ConnPingParams): Promise<ConnPingResult>;
50
79
  query(params: ConnBaseQueryParams): Promise<ConnQueryResult<Stream>>;
51
- exec(params: ConnBaseQueryParams): Promise<ConnExecResult<Stream>>;
52
80
  insert(params: ConnInsertParams<Stream>): Promise<ConnInsertResult>;
81
+ command(params: ConnBaseQueryParams): Promise<ConnCommandResult>;
82
+ exec(params: ConnExecParams<Stream>): Promise<ConnExecResult<Stream>>;
83
+ close(): Promise<void>;
53
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../packages/client-common/src/connection.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":""}
@@ -1 +1,11 @@
1
- export declare function formatQueryParams(value: any, wrapStringInQuotes?: boolean): string;
1
+ export declare class TupleParam {
2
+ readonly values: readonly unknown[];
3
+ constructor(values: readonly unknown[]);
4
+ }
5
+ export declare function formatQueryParams({ value, wrapStringInQuotes, printNullAsKeyword, }: FormatQueryParamsOptions): string;
6
+ interface FormatQueryParamsOptions {
7
+ value: unknown;
8
+ wrapStringInQuotes?: boolean;
9
+ printNullAsKeyword?: boolean;
10
+ }
11
+ export {};
@@ -1,27 +1,80 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatQueryParams = void 0;
4
- const utils_1 = require("../utils");
5
- function formatQueryParams(value, wrapStringInQuotes = false) {
6
- if (value === null || value === undefined)
3
+ exports.TupleParam = void 0;
4
+ exports.formatQueryParams = formatQueryParams;
5
+ class TupleParam {
6
+ constructor(values) {
7
+ Object.defineProperty(this, "values", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: values
12
+ });
13
+ }
14
+ }
15
+ exports.TupleParam = TupleParam;
16
+ function formatQueryParams({ value, wrapStringInQuotes, printNullAsKeyword, }) {
17
+ return formatQueryParamsInternal({
18
+ value,
19
+ wrapStringInQuotes,
20
+ printNullAsKeyword,
21
+ isInArrayOrTuple: false,
22
+ });
23
+ }
24
+ function formatQueryParamsInternal({ value, wrapStringInQuotes, printNullAsKeyword, isInArrayOrTuple, }) {
25
+ if (value === null || value === undefined) {
26
+ if (printNullAsKeyword)
27
+ return 'NULL';
7
28
  return '\\N';
29
+ }
8
30
  if (Number.isNaN(value))
9
31
  return 'nan';
10
32
  if (value === Number.POSITIVE_INFINITY)
11
33
  return '+inf';
12
34
  if (value === Number.NEGATIVE_INFINITY)
13
35
  return '-inf';
14
- if (typeof value === 'number')
36
+ if (typeof value === 'number' || typeof value === 'bigint')
15
37
  return String(value);
16
- if (typeof value === 'boolean')
38
+ if (typeof value === 'boolean') {
39
+ if (isInArrayOrTuple) {
40
+ return value ? 'TRUE' : 'FALSE';
41
+ }
17
42
  return value ? '1' : '0';
43
+ }
18
44
  if (typeof value === 'string') {
19
- const escapedValue = (0, utils_1.replaceAll)((0, utils_1.replaceAll)(value, `\\`, `\\\\`), `'`, `\\'`);
20
- return wrapStringInQuotes ? `'${escapedValue}'` : escapedValue;
45
+ let result = '';
46
+ for (let i = 0; i < value.length; i++) {
47
+ switch (value.charCodeAt(i)) {
48
+ case TabASCII:
49
+ result += '\\t';
50
+ break;
51
+ case NewlineASCII:
52
+ result += '\\n';
53
+ break;
54
+ case CarriageReturnASCII:
55
+ result += '\\r';
56
+ break;
57
+ case SingleQuoteASCII:
58
+ result += `\\'`;
59
+ break;
60
+ case BackslashASCII:
61
+ result += '\\\\';
62
+ break;
63
+ default:
64
+ result += value[i];
65
+ }
66
+ }
67
+ return wrapStringInQuotes ? `'${result}'` : result;
21
68
  }
22
69
  if (Array.isArray(value)) {
23
- const formatted = value.map((v) => formatQueryParams(v, true));
24
- return `[${formatted.join(',')}]`;
70
+ return `[${value
71
+ .map((v) => formatQueryParamsInternal({
72
+ value: v,
73
+ wrapStringInQuotes: true,
74
+ printNullAsKeyword: true,
75
+ isInArrayOrTuple: true,
76
+ }))
77
+ .join(',')}]`;
25
78
  }
26
79
  if (value instanceof Date) {
27
80
  // The ClickHouse server parses numbers as time-zone-agnostic Unix timestamps
@@ -33,14 +86,47 @@ function formatQueryParams(value, wrapStringInQuotes = false) {
33
86
  ? unixTimestamp
34
87
  : `${unixTimestamp}.${milliseconds.toString().padStart(3, '0')}`;
35
88
  }
89
+ // (42,'foo',NULL)
90
+ if (value instanceof TupleParam) {
91
+ return `(${value.values
92
+ .map((v) => formatQueryParamsInternal({
93
+ value: v,
94
+ wrapStringInQuotes: true,
95
+ printNullAsKeyword: true,
96
+ isInArrayOrTuple: true,
97
+ }))
98
+ .join(',')})`;
99
+ }
100
+ if (value instanceof Map) {
101
+ return formatObjectLikeParam(value.entries());
102
+ }
103
+ // This is only useful for simple maps where the keys are strings
36
104
  if (typeof value === 'object') {
37
- const formatted = [];
38
- for (const [key, val] of Object.entries(value)) {
39
- formatted.push(`${formatQueryParams(key, true)}:${formatQueryParams(val, true)}`);
40
- }
41
- return `{${formatted.join(',')}}`;
105
+ return formatObjectLikeParam(Object.entries(value));
42
106
  }
43
107
  throw new Error(`Unsupported value in query parameters: [${value}].`);
44
108
  }
45
- exports.formatQueryParams = formatQueryParams;
109
+ // {'key1':'value1',42:'value2'}
110
+ function formatObjectLikeParam(entries) {
111
+ const formatted = [];
112
+ for (const [key, val] of entries) {
113
+ formatted.push(`${formatQueryParamsInternal({
114
+ value: key,
115
+ wrapStringInQuotes: true,
116
+ printNullAsKeyword: true,
117
+ isInArrayOrTuple: true,
118
+ })}:${formatQueryParamsInternal({
119
+ value: val,
120
+ wrapStringInQuotes: true,
121
+ printNullAsKeyword: true,
122
+ isInArrayOrTuple: true,
123
+ })}`);
124
+ }
125
+ return `{${formatted.join(',')}}`;
126
+ }
127
+ const TabASCII = 9;
128
+ const NewlineASCII = 10;
129
+ const CarriageReturnASCII = 13;
130
+ const SingleQuoteASCII = 39;
131
+ const BackslashASCII = 92;
46
132
  //# sourceMappingURL=format_query_params.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format_query_params.js","sourceRoot":"","sources":["../../../../packages/client-common/src/data_formatter/format_query_params.ts"],"names":[],"mappings":";;;AAAA,oCAAqC;AAErC,SAAgB,iBAAiB,CAC/B,KAAU,EACV,kBAAkB,GAAG,KAAK;IAE1B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACvD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACrC,IAAI,KAAK,KAAK,MAAM,CAAC,iBAAiB;QAAE,OAAO,MAAM,CAAA;IACrD,IAAI,KAAK,KAAK,MAAM,CAAC,iBAAiB;QAAE,OAAO,MAAM,CAAA;IAErD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACnD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,IAAA,kBAAU,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAC5E,OAAO,kBAAkB,CAAC,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,YAAY,CAAA;KAC/D;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;QAC9D,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;KAClC;IAED,IAAI,KAAK,YAAY,IAAI,EAAE;QACzB,6EAA6E;QAC7E,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;aACrD,QAAQ,EAAE;aACV,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QACpB,MAAM,YAAY,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAA;QAC/C,OAAO,YAAY,KAAK,CAAC;YACvB,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,GAAG,aAAa,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;KACnE;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,MAAM,SAAS,GAAa,EAAE,CAAA;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC9C,SAAS,CAAC,IAAI,CACZ,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAClE,CAAA;SACF;QACD,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;KAClC;IAED,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,IAAI,CAAC,CAAA;AACvE,CAAC;AA3CD,8CA2CC"}
1
+ {"version":3,"file":"format_query_params.js","sourceRoot":"","sources":["../../src/data_formatter/format_query_params.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatQuerySettings = void 0;
3
+ exports.formatQuerySettings = formatQuerySettings;
4
4
  const settings_1 = require("../settings");
5
5
  function formatQuerySettings(value) {
6
6
  if (typeof value === 'boolean')
@@ -17,5 +17,4 @@ function formatQuerySettings(value) {
17
17
  }
18
18
  throw new Error(`Unsupported value in query settings: [${value}].`);
19
19
  }
20
- exports.formatQuerySettings = formatQuerySettings;
21
20
  //# sourceMappingURL=format_query_settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format_query_settings.js","sourceRoot":"","sources":["../../../../packages/client-common/src/data_formatter/format_query_settings.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AAEzC,SAAgB,mBAAmB,CACjC,KAA8C;IAE9C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,mEAAmE;IACnE,uDAAuD;IACvD,4CAA4C;IAC5C,IAAI,KAAK,YAAY,sBAAW,EAAE;QAChC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;KACxB;IACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,IAAI,CAAC,CAAA;AACrE,CAAC;AAbD,kDAaC"}
1
+ {"version":3,"file":"format_query_settings.js","sourceRoot":"","sources":["../../src/data_formatter/format_query_settings.ts"],"names":[],"mappings":";;AAEA,kDAaC;AAfD,0CAAyC;AAEzC,SAAgB,mBAAmB,CACjC,KAA8C;IAE9C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,mEAAmE;IACnE,uDAAuD;IACvD,4CAA4C;IAC5C,IAAI,KAAK,YAAY,sBAAW,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,IAAI,CAAC,CAAA;AACrE,CAAC"}