@clickhouse/client 0.1.1 → 0.2.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 (119) hide show
  1. package/README.md +11 -6
  2. package/dist/client.d.ts +12 -141
  3. package/dist/client.js +39 -229
  4. package/dist/client.js.map +1 -1
  5. package/dist/connection/index.d.ts +3 -1
  6. package/dist/connection/index.js +3 -1
  7. package/dist/connection/index.js.map +1 -1
  8. package/dist/connection/node_base_connection.d.ts +50 -0
  9. package/dist/connection/{adapter/base_http_adapter.js → node_base_connection.js} +81 -117
  10. package/dist/connection/node_base_connection.js.map +1 -0
  11. package/dist/connection/node_http_connection.d.ts +11 -0
  12. package/dist/connection/node_http_connection.js +32 -0
  13. package/dist/connection/node_http_connection.js.map +1 -0
  14. package/dist/connection/node_https_connection.d.ts +12 -0
  15. package/dist/connection/node_https_connection.js +53 -0
  16. package/dist/connection/node_https_connection.js.map +1 -0
  17. package/dist/index.d.ts +4 -15
  18. package/dist/index.js +11 -9
  19. package/dist/index.js.map +1 -1
  20. package/dist/result_set.d.ts +13 -0
  21. package/dist/{result.js → result_set.js} +5 -32
  22. package/dist/result_set.js.map +1 -0
  23. package/dist/utils/encoder.d.ts +7 -0
  24. package/dist/utils/encoder.js +55 -0
  25. package/dist/utils/encoder.js.map +1 -0
  26. package/dist/utils/index.d.ts +3 -1
  27. package/dist/utils/index.js +3 -1
  28. package/dist/utils/index.js.map +1 -1
  29. package/dist/utils/process.js.map +1 -1
  30. package/dist/utils/stream.d.ts +1 -1
  31. package/dist/utils/stream.js.map +1 -1
  32. package/dist/utils/user_agent.js +1 -2
  33. package/dist/utils/user_agent.js.map +1 -1
  34. package/dist/version.d.ts +1 -1
  35. package/dist/version.js +1 -1
  36. package/dist/version.js.map +1 -1
  37. package/package.json +7 -48
  38. package/dist/clickhouse_types.d.ts +0 -24
  39. package/dist/clickhouse_types.js +0 -3
  40. package/dist/clickhouse_types.js.map +0 -1
  41. package/dist/connection/adapter/base_http_adapter.d.ts +0 -38
  42. package/dist/connection/adapter/base_http_adapter.js.map +0 -1
  43. package/dist/connection/adapter/http_adapter.d.ts +0 -10
  44. package/dist/connection/adapter/http_adapter.js +0 -27
  45. package/dist/connection/adapter/http_adapter.js.map +0 -1
  46. package/dist/connection/adapter/http_search_params.d.ts +0 -11
  47. package/dist/connection/adapter/http_search_params.js +0 -42
  48. package/dist/connection/adapter/http_search_params.js.map +0 -1
  49. package/dist/connection/adapter/https_adapter.d.ts +0 -11
  50. package/dist/connection/adapter/https_adapter.js +0 -48
  51. package/dist/connection/adapter/https_adapter.js.map +0 -1
  52. package/dist/connection/adapter/index.d.ts +0 -2
  53. package/dist/connection/adapter/index.js +0 -8
  54. package/dist/connection/adapter/index.js.map +0 -1
  55. package/dist/connection/adapter/transform_url.d.ts +0 -5
  56. package/dist/connection/adapter/transform_url.js +0 -15
  57. package/dist/connection/adapter/transform_url.js.map +0 -1
  58. package/dist/connection/connection.d.ts +0 -63
  59. package/dist/connection/connection.js +0 -17
  60. package/dist/connection/connection.js.map +0 -1
  61. package/dist/data_formatter/format_query_params.d.ts +0 -1
  62. package/dist/data_formatter/format_query_params.js +0 -61
  63. package/dist/data_formatter/format_query_params.js.map +0 -1
  64. package/dist/data_formatter/format_query_settings.d.ts +0 -2
  65. package/dist/data_formatter/format_query_settings.js +0 -21
  66. package/dist/data_formatter/format_query_settings.js.map +0 -1
  67. package/dist/data_formatter/formatter.d.ts +0 -23
  68. package/dist/data_formatter/formatter.js +0 -96
  69. package/dist/data_formatter/formatter.js.map +0 -1
  70. package/dist/data_formatter/index.d.ts +0 -3
  71. package/dist/data_formatter/index.js +0 -23
  72. package/dist/data_formatter/index.js.map +0 -1
  73. package/dist/error/index.d.ts +0 -1
  74. package/dist/error/index.js +0 -18
  75. package/dist/error/index.js.map +0 -1
  76. package/dist/error/parse_error.d.ts +0 -12
  77. package/dist/error/parse_error.js +0 -39
  78. package/dist/error/parse_error.js.map +0 -1
  79. package/dist/logger.d.ts +0 -33
  80. package/dist/logger.js +0 -108
  81. package/dist/logger.js.map +0 -1
  82. package/dist/result.d.ts +0 -52
  83. package/dist/result.js.map +0 -1
  84. package/dist/schema/common.d.ts +0 -8
  85. package/dist/schema/common.js +0 -3
  86. package/dist/schema/common.js.map +0 -1
  87. package/dist/schema/engines.d.ts +0 -40
  88. package/dist/schema/engines.js +0 -61
  89. package/dist/schema/engines.js.map +0 -1
  90. package/dist/schema/index.d.ts +0 -7
  91. package/dist/schema/index.js +0 -24
  92. package/dist/schema/index.js.map +0 -1
  93. package/dist/schema/query_formatter.d.ts +0 -9
  94. package/dist/schema/query_formatter.js +0 -48
  95. package/dist/schema/query_formatter.js.map +0 -1
  96. package/dist/schema/result.d.ts +0 -13
  97. package/dist/schema/result.js +0 -3
  98. package/dist/schema/result.js.map +0 -1
  99. package/dist/schema/schema.d.ts +0 -6
  100. package/dist/schema/schema.js +0 -20
  101. package/dist/schema/schema.js.map +0 -1
  102. package/dist/schema/stream.d.ts +0 -11
  103. package/dist/schema/stream.js +0 -25
  104. package/dist/schema/stream.js.map +0 -1
  105. package/dist/schema/table.d.ts +0 -44
  106. package/dist/schema/table.js +0 -73
  107. package/dist/schema/table.js.map +0 -1
  108. package/dist/schema/types.d.ts +0 -201
  109. package/dist/schema/types.js +0 -268
  110. package/dist/schema/types.js.map +0 -1
  111. package/dist/schema/where.d.ts +0 -8
  112. package/dist/schema/where.js +0 -43
  113. package/dist/schema/where.js.map +0 -1
  114. package/dist/settings.d.ts +0 -1453
  115. package/dist/settings.js +0 -28
  116. package/dist/settings.js.map +0 -1
  117. package/dist/utils/string.d.ts +0 -1
  118. package/dist/utils/string.js +0 -9
  119. package/dist/utils/string.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ /// <reference types="node" />
2
+ import type { DataFormat, InsertValues, ValuesEncoder } from '@clickhouse/client-common';
3
+ import Stream from 'stream';
4
+ export declare class NodeValuesEncoder implements ValuesEncoder<Stream.Readable> {
5
+ encodeValues<T>(values: InsertValues<Stream.Readable, T>, format: DataFormat): string | Stream.Readable;
6
+ validateInsertValues<T>(values: InsertValues<Stream.Readable, T>, format: DataFormat): void;
7
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NodeValuesEncoder = void 0;
7
+ const client_common_1 = require("@clickhouse/client-common");
8
+ const stream_1 = __importDefault(require("stream"));
9
+ const stream_2 = require("./stream");
10
+ class NodeValuesEncoder {
11
+ encodeValues(values, format) {
12
+ if ((0, stream_2.isStream)(values)) {
13
+ // TSV/CSV/CustomSeparated formats don't require additional serialization
14
+ if (!values.readableObjectMode) {
15
+ return values;
16
+ }
17
+ // JSON* formats streams
18
+ return stream_1.default.pipeline(values, (0, stream_2.mapStream)((value) => (0, client_common_1.encodeJSON)(value, format)), pipelineCb);
19
+ }
20
+ // JSON* arrays
21
+ if (Array.isArray(values)) {
22
+ return values.map((value) => (0, client_common_1.encodeJSON)(value, format)).join('');
23
+ }
24
+ // JSON & JSONObjectEachRow format input
25
+ if (typeof values === 'object') {
26
+ return (0, client_common_1.encodeJSON)(values, format);
27
+ }
28
+ throw new Error(`Cannot encode values of type ${typeof values} with ${format} format`);
29
+ }
30
+ validateInsertValues(values, format) {
31
+ if (!Array.isArray(values) &&
32
+ !(0, stream_2.isStream)(values) &&
33
+ typeof values !== 'object') {
34
+ throw new Error('Insert expected "values" to be an array, a stream of values or a JSON object, ' +
35
+ `got: ${typeof values}`);
36
+ }
37
+ if ((0, stream_2.isStream)(values)) {
38
+ if ((0, client_common_1.isSupportedRawFormat)(format)) {
39
+ if (values.readableObjectMode) {
40
+ throw new Error(`Insert for ${format} expected Readable Stream with disabled object mode.`);
41
+ }
42
+ }
43
+ else if (!values.readableObjectMode) {
44
+ throw new Error(`Insert for ${format} expected Readable Stream with enabled object mode.`);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ exports.NodeValuesEncoder = NodeValuesEncoder;
50
+ function pipelineCb(err) {
51
+ if (err) {
52
+ console.error(err);
53
+ }
54
+ }
55
+ //# sourceMappingURL=encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../../../packages/client-node/src/utils/encoder.ts"],"names":[],"mappings":";;;;;;AAKA,6DAA4E;AAC5E,oDAA2B;AAC3B,qCAA8C;AAE9C,MAAa,iBAAiB;IAC5B,YAAY,CACV,MAAwC,EACxC,MAAkB;QAElB,IAAI,IAAA,iBAAQ,EAAC,MAAM,CAAC,EAAE;YACpB,yEAAyE;YACzE,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;gBAC9B,OAAO,MAAM,CAAA;aACd;YACD,wBAAwB;YACxB,OAAO,gBAAM,CAAC,QAAQ,CACpB,MAAM,EACN,IAAA,kBAAS,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAC/C,UAAU,CACX,CAAA;SACF;QACD,eAAe;QACf,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SACjE;QACD,wCAAwC;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,OAAO,IAAA,0BAAU,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAClC;QACD,MAAM,IAAI,KAAK,CACb,gCAAgC,OAAO,MAAM,SAAS,MAAM,SAAS,CACtE,CAAA;IACH,CAAC;IAED,oBAAoB,CAClB,MAAwC,EACxC,MAAkB;QAElB,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,CAAC,IAAA,iBAAQ,EAAC,MAAM,CAAC;YACjB,OAAO,MAAM,KAAK,QAAQ,EAC1B;YACA,MAAM,IAAI,KAAK,CACb,gFAAgF;gBAC9E,QAAQ,OAAO,MAAM,EAAE,CAC1B,CAAA;SACF;QAED,IAAI,IAAA,iBAAQ,EAAC,MAAM,CAAC,EAAE;YACpB,IAAI,IAAA,oCAAoB,EAAC,MAAM,CAAC,EAAE;gBAChC,IAAI,MAAM,CAAC,kBAAkB,EAAE;oBAC7B,MAAM,IAAI,KAAK,CACb,cAAc,MAAM,sDAAsD,CAC3E,CAAA;iBACF;aACF;iBAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;gBACrC,MAAM,IAAI,KAAK,CACb,cAAc,MAAM,qDAAqD,CAC1E,CAAA;aACF;SACF;IACH,CAAC;CACF;AA3DD,8CA2DC;AAED,SAAS,UAAU,CAAC,GAAiC;IACnD,IAAI,GAAG,EAAE;QACP,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KACnB;AACH,CAAC"}
@@ -1,2 +1,4 @@
1
1
  export * from './stream';
2
- export * from './string';
2
+ export * from './encoder';
3
+ export * from './process';
4
+ export * from './user_agent';
@@ -15,5 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./stream"), exports);
18
- __exportStar(require("./string"), exports);
18
+ __exportStar(require("./encoder"), exports);
19
+ __exportStar(require("./process"), exports);
20
+ __exportStar(require("./user_agent"), exports);
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,2CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/client-node/src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,4CAAyB;AACzB,4CAAyB;AACzB,+CAA4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/utils/process.ts"],"names":[],"mappings":";;;AAAA,gCAAgC;AAChC,SAAgB,iBAAiB;IAC/B,OAAO,OAAO,CAAC,OAAO,CAAA;AACxB,CAAC;AAFD,8CAEC"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../../packages/client-node/src/utils/process.ts"],"names":[],"mappings":";;;AAAA,gCAAgC;AAChC,SAAgB,iBAAiB;IAC/B,OAAO,OAAO,CAAC,OAAO,CAAA;AACxB,CAAC;AAFD,8CAEC"}
@@ -2,4 +2,4 @@
2
2
  import Stream from 'stream';
3
3
  export declare function isStream(obj: any): obj is Stream.Readable;
4
4
  export declare function getAsText(stream: Stream.Readable): Promise<string>;
5
- export declare function mapStream(mapper: (input: any) => any): Stream.Transform;
5
+ export declare function mapStream(mapper: (input: unknown) => string): Stream.Transform;
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/utils/stream.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAE3B,SAAgB,QAAQ,CAAC,GAAQ;IAC/B,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,CAAA;AACvD,CAAC;AAFD,4BAEC;AAEM,KAAK,UAAU,SAAS,CAAC,MAAuB;IACrD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IAErC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;QAChC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;KACtD;IAED,QAAQ;IACR,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CAAA;IAC9B,OAAO,MAAM,CAAA;AACf,CAAC;AAXD,8BAWC;AAED,SAAgB,SAAS,CAAC,MAA2B;IACnD,OAAO,IAAI,gBAAM,CAAC,SAAS,CAAC;QAC1B,UAAU,EAAE,IAAI;QAChB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ;YACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC/B,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAPD,8BAOC"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../../packages/client-node/src/utils/stream.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAE3B,SAAgB,QAAQ,CAAC,GAAQ;IAC/B,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,CAAA;AACvD,CAAC;AAFD,4BAEC;AAEM,KAAK,UAAU,SAAS,CAAC,MAAuB;IACrD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IAErC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;QAChC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;KACtD;IAED,QAAQ;IACR,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CAAA;IAC9B,OAAO,MAAM,CAAA;AACf,CAAC;AAXD,8BAWC;AAED,SAAgB,SAAS,CACvB,MAAkC;IAElC,OAAO,IAAI,gBAAM,CAAC,SAAS,CAAC;QAC1B,UAAU,EAAE,IAAI;QAChB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ;YACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC/B,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AATD,8BASC"}
@@ -29,7 +29,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.getUserAgent = void 0;
30
30
  const os = __importStar(require("os"));
31
31
  const version_1 = __importDefault(require("../version"));
32
- const process_1 = require("./process");
33
32
  /**
34
33
  * Generate a user agent string like
35
34
  * clickhouse-js/0.0.11 (lv:nodejs/19.0.4; os:linux)
@@ -37,7 +36,7 @@ const process_1 = require("./process");
37
36
  * MyApplicationName clickhouse-js/0.0.11 (lv:nodejs/19.0.4; os:linux)
38
37
  */
39
38
  function getUserAgent(application_id) {
40
- const defaultUserAgent = `clickhouse-js/${version_1.default} (lv:nodejs/${(0, process_1.getProcessVersion)()}; os:${os.platform()})`;
39
+ const defaultUserAgent = `clickhouse-js/${version_1.default} (lv:nodejs/${process.version}; os:${os.platform()})`;
41
40
  return application_id
42
41
  ? `${application_id} ${defaultUserAgent}`
43
42
  : defaultUserAgent;
@@ -1 +1 @@
1
- {"version":3,"file":"user_agent.js","sourceRoot":"","sources":["../../src/utils/user_agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,yDAAuC;AACvC,uCAA6C;AAE7C;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,cAAuB;IAClD,MAAM,gBAAgB,GAAG,iBAAiB,iBAAc,eAAe,IAAA,2BAAiB,GAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAA;IAClH,OAAO,cAAc;QACnB,CAAC,CAAC,GAAG,cAAc,IAAI,gBAAgB,EAAE;QACzC,CAAC,CAAC,gBAAgB,CAAA;AACtB,CAAC;AALD,oCAKC"}
1
+ {"version":3,"file":"user_agent.js","sourceRoot":"","sources":["../../../../packages/client-node/src/utils/user_agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,yDAAuC;AAEvC;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,cAAuB;IAClD,MAAM,gBAAgB,GAAG,iBAAiB,iBAAc,eACtD,OAAO,CAAC,OACV,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAA;IACxB,OAAO,cAAc;QACnB,CAAC,CAAC,GAAG,cAAc,IAAI,gBAAgB,EAAE;QACzC,CAAC,CAAC,gBAAgB,CAAA;AACtB,CAAC;AAPD,oCAOC"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "0.1.1";
1
+ declare const _default: "0.2.0";
2
2
  export default _default;
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '0.1.1';
3
+ exports.default = '0.2.0';
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;AAAA,kBAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../packages/client-node/src/version.ts"],"names":[],"mappings":";;AAAA,kBAAe,OAAO,CAAA"}
package/package.json CHANGED
@@ -1,35 +1,21 @@
1
1
  {
2
2
  "name": "@clickhouse/client",
3
- "version": "0.1.1",
4
- "description": "Official JS client for ClickHouse DB",
3
+ "description": "Official JS client for ClickHouse DB - Node.js implementation",
4
+ "homepage": "https://clickhouse.com",
5
+ "version": "0.2.0",
5
6
  "license": "Apache-2.0",
6
7
  "keywords": [
7
8
  "clickhouse",
8
9
  "sql",
9
10
  "client"
10
11
  ],
11
- "engines": {
12
- "node": ">=16"
13
- },
14
- "private": false,
15
12
  "repository": {
16
13
  "type": "git",
17
14
  "url": "https://github.com/ClickHouse/clickhouse-js.git"
18
15
  },
19
- "homepage": "https://clickhouse.com",
20
- "scripts": {
21
- "build": "rm -rf dist; tsc",
22
- "build:all": "rm -rf dist; tsc --project tsconfig.dev.json",
23
- "typecheck": "tsc --project tsconfig.dev.json --noEmit",
24
- "lint": "eslint . --ext .ts",
25
- "lint:fix": "eslint --fix . --ext .ts",
26
- "test": "jest --testPathPattern=__tests__ --globalSetup='<rootDir>/__tests__/setup.integration.ts'",
27
- "test:tls": "jest --testMatch='**/__tests__/tls/*.test.ts'",
28
- "test:unit": "jest --testMatch='**/__tests__/{unit,utils}/*.test.ts'",
29
- "test:integration": "jest --runInBand --testPathPattern=__tests__/integration --globalSetup='<rootDir>/__tests__/setup.integration.ts'",
30
- "test:integration:local_cluster": "CLICKHOUSE_TEST_ENVIRONMENT=local_cluster jest --runInBand --testPathPattern=__tests__/integration --globalSetup='<rootDir>/__tests__/setup.integration.ts'",
31
- "test:integration:cloud": "CLICKHOUSE_TEST_ENVIRONMENT=cloud jest --runInBand --testPathPattern=__tests__/integration --globalSetup='<rootDir>/__tests__/setup.integration.ts'",
32
- "prepare": "husky install"
16
+ "private": false,
17
+ "engines": {
18
+ "node": ">=16"
33
19
  },
34
20
  "main": "dist/index.js",
35
21
  "types": "dist/index.d.ts",
@@ -37,33 +23,6 @@
37
23
  "dist"
38
24
  ],
39
25
  "dependencies": {
40
- "uuid": "^9.0.0"
41
- },
42
- "devDependencies": {
43
- "@jest/reporters": "^29.4.0",
44
- "@types/jest": "^29.4.0",
45
- "@types/node": "^18.11.18",
46
- "@types/split2": "^3.2.1",
47
- "@types/uuid": "^9.0.0",
48
- "@typescript-eslint/eslint-plugin": "^5.49.0",
49
- "@typescript-eslint/parser": "^5.49.0",
50
- "eslint": "^8.32.0",
51
- "eslint-config-prettier": "^8.6.0",
52
- "eslint-plugin-prettier": "^4.2.1",
53
- "husky": "^8.0.2",
54
- "jest": "^29.4.0",
55
- "lint-staged": "^13.1.0",
56
- "prettier": "2.8.3",
57
- "split2": "^4.1.0",
58
- "ts-jest": "^29.0.5",
59
- "ts-node": "^10.9.1",
60
- "tsconfig-paths": "^4.1.2",
61
- "typescript": "^4.9.4"
62
- },
63
- "lint-staged": {
64
- "*.ts": [
65
- "prettier --write",
66
- "eslint --fix"
67
- ]
26
+ "@clickhouse/client-common": "0.2.0"
68
27
  }
69
28
  }
@@ -1,24 +0,0 @@
1
- export interface ResponseJSON<T = unknown> {
2
- data: Array<T>;
3
- query_id?: string;
4
- totals?: Record<string, number>;
5
- extremes?: Record<string, any>;
6
- meta?: Array<{
7
- name: string;
8
- type: string;
9
- }>;
10
- statistics?: {
11
- elapsed: number;
12
- rows_read: number;
13
- bytes_read: number;
14
- };
15
- rows?: number;
16
- }
17
- export interface InputJSON<T = unknown> {
18
- meta: {
19
- name: string;
20
- type: string;
21
- }[];
22
- data: T[];
23
- }
24
- export type InputJSONObjectEachRow<T = unknown> = Record<string, T>;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=clickhouse_types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clickhouse_types.js","sourceRoot":"","sources":["../src/clickhouse_types.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import Stream from 'stream';
4
- import type Http from 'http';
5
- import type { Logger } from '../../logger';
6
- import type { Connection, ConnectionParams, ExecParams, ExecResult, InsertParams, InsertResult, QueryParams, QueryResult } from '../connection';
7
- export interface RequestParams {
8
- method: 'GET' | 'POST';
9
- url: URL;
10
- body?: string | Stream.Readable;
11
- abort_signal?: AbortSignal;
12
- decompress_response?: boolean;
13
- compress_request?: boolean;
14
- }
15
- export declare abstract class BaseHttpAdapter implements Connection {
16
- protected readonly config: ConnectionParams;
17
- private readonly logger;
18
- protected readonly agent: Http.Agent;
19
- protected readonly headers: Http.OutgoingHttpHeaders;
20
- private readonly retry_expired_sockets;
21
- private readonly known_sockets;
22
- protected constructor(config: ConnectionParams, logger: Logger, agent: Http.Agent);
23
- protected buildDefaultHeaders(username: string, password: string): Http.OutgoingHttpHeaders;
24
- protected abstract createClientRequest(params: RequestParams, abort_signal?: AbortSignal): Http.ClientRequest;
25
- private request;
26
- private _request;
27
- ping(): Promise<boolean>;
28
- query(params: QueryParams): Promise<QueryResult>;
29
- exec(params: ExecParams): Promise<ExecResult>;
30
- insert(params: InsertParams): Promise<InsertResult>;
31
- close(): Promise<void>;
32
- private getQueryId;
33
- private logResponse;
34
- protected getHeaders(params: RequestParams): {
35
- 'Content-Encoding'?: string | undefined;
36
- 'Accept-Encoding'?: string | undefined;
37
- };
38
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"base_http_adapter.js","sourceRoot":"","sources":["../../../src/connection/adapter/base_http_adapter.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /// <reference types="node" />
2
- import Http from 'http';
3
- import type { LogWriter } from '../../logger';
4
- import type { Connection, ConnectionParams } from '../connection';
5
- import type { RequestParams } from './base_http_adapter';
6
- import { BaseHttpAdapter } from './base_http_adapter';
7
- export declare class HttpAdapter extends BaseHttpAdapter implements Connection {
8
- constructor(config: ConnectionParams, logger: LogWriter);
9
- protected createClientRequest(params: RequestParams, abort_signal?: AbortSignal): Http.ClientRequest;
10
- }
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HttpAdapter = void 0;
7
- const http_1 = __importDefault(require("http"));
8
- const base_http_adapter_1 = require("./base_http_adapter");
9
- class HttpAdapter extends base_http_adapter_1.BaseHttpAdapter {
10
- constructor(config, logger) {
11
- const agent = new http_1.default.Agent({
12
- keepAlive: config.keep_alive.enabled,
13
- maxSockets: config.max_open_connections,
14
- });
15
- super(config, logger, agent);
16
- }
17
- createClientRequest(params, abort_signal) {
18
- return http_1.default.request(params.url, {
19
- method: params.method,
20
- agent: this.agent,
21
- headers: this.getHeaders(params),
22
- signal: abort_signal,
23
- });
24
- }
25
- }
26
- exports.HttpAdapter = HttpAdapter;
27
- //# sourceMappingURL=http_adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http_adapter.js","sourceRoot":"","sources":["../../../src/connection/adapter/http_adapter.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAKvB,2DAAqD;AAErD,MAAa,WAAY,SAAQ,mCAAe;IAC9C,YAAY,MAAwB,EAAE,MAAiB;QACrD,MAAM,KAAK,GAAG,IAAI,cAAI,CAAC,KAAK,CAAC;YAC3B,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;YACpC,UAAU,EAAE,MAAM,CAAC,oBAAoB;SACxC,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAES,mBAAmB,CAC3B,MAAqB,EACrB,YAA0B;QAE1B,OAAO,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,MAAM,EAAE,YAAY;SACrB,CAAC,CAAA;IACJ,CAAC;CACF;AApBD,kCAoBC"}
@@ -1,11 +0,0 @@
1
- import type { ClickHouseSettings } from '../../settings';
2
- type ToSearchParamsOptions = {
3
- database: string;
4
- clickhouse_settings?: ClickHouseSettings;
5
- query_params?: Record<string, unknown>;
6
- query?: string;
7
- session_id?: string;
8
- query_id?: string;
9
- };
10
- export declare function toSearchParams({ database, query, query_params, clickhouse_settings, session_id, query_id, }: ToSearchParamsOptions): URLSearchParams | undefined;
11
- export {};
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toSearchParams = void 0;
4
- const data_formatter_1 = require("../../data_formatter/");
5
- // TODO validate max length of the resulting query
6
- // https://stackoverflow.com/questions/812925/what-is-the-maximum-possible-length-of-a-query-string
7
- function toSearchParams({ database, query, query_params, clickhouse_settings, session_id, query_id, }) {
8
- if (clickhouse_settings === undefined &&
9
- query_params === undefined &&
10
- query === undefined &&
11
- database === 'default') {
12
- return;
13
- }
14
- const params = new URLSearchParams();
15
- if (query_params !== undefined) {
16
- for (const [key, value] of Object.entries(query_params)) {
17
- params.set(`param_${key}`, (0, data_formatter_1.formatQueryParams)(value));
18
- }
19
- }
20
- if (clickhouse_settings !== undefined) {
21
- for (const [key, value] of Object.entries(clickhouse_settings)) {
22
- if (value !== undefined) {
23
- params.set(key, (0, data_formatter_1.formatQuerySettings)(value));
24
- }
25
- }
26
- }
27
- if (database !== 'default') {
28
- params.set('database', database);
29
- }
30
- if (query) {
31
- params.set('query', query);
32
- }
33
- if (session_id) {
34
- params.set('session_id', session_id);
35
- }
36
- if (query_id) {
37
- params.set('query_id', query_id);
38
- }
39
- return params;
40
- }
41
- exports.toSearchParams = toSearchParams;
42
- //# sourceMappingURL=http_search_params.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http_search_params.js","sourceRoot":"","sources":["../../../src/connection/adapter/http_search_params.ts"],"names":[],"mappings":";;;AAAA,0DAA8E;AAY9E,kDAAkD;AAClD,mGAAmG;AACnG,SAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,QAAQ,GACc;IACtB,IACE,mBAAmB,KAAK,SAAS;QACjC,YAAY,KAAK,SAAS;QAC1B,KAAK,KAAK,SAAS;QACnB,QAAQ,KAAK,SAAS,EACtB;QACA,OAAM;KACP;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IAEpC,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACvD,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,EAAE,IAAA,kCAAiB,EAAC,KAAK,CAAC,CAAC,CAAA;SACrD;KACF;IAED,IAAI,mBAAmB,KAAK,SAAS,EAAE;QACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAC9D,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAA,oCAAmB,EAAC,KAAK,CAAC,CAAC,CAAA;aAC5C;SACF;KACF;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;KACjC;IAED,IAAI,KAAK,EAAE;QACT,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;KAC3B;IAED,IAAI,UAAU,EAAE;QACd,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;KACrC;IAED,IAAI,QAAQ,EAAE;QACZ,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;KACjC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAlDD,wCAkDC"}
@@ -1,11 +0,0 @@
1
- /// <reference types="node" />
2
- import type { RequestParams } from './base_http_adapter';
3
- import { BaseHttpAdapter } from './base_http_adapter';
4
- import type { Connection, ConnectionParams } from '../connection';
5
- import type { LogWriter } from '../../logger';
6
- import type Http from 'http';
7
- export declare class HttpsAdapter extends BaseHttpAdapter implements Connection {
8
- constructor(config: ConnectionParams, logger: LogWriter);
9
- protected buildDefaultHeaders(username: string, password: string): Http.OutgoingHttpHeaders;
10
- protected createClientRequest(params: RequestParams, abort_signal?: AbortSignal): Http.ClientRequest;
11
- }
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HttpsAdapter = void 0;
7
- const base_http_adapter_1 = require("./base_http_adapter");
8
- const https_1 = __importDefault(require("https"));
9
- class HttpsAdapter extends base_http_adapter_1.BaseHttpAdapter {
10
- constructor(config, logger) {
11
- var _a, _b, _c;
12
- const agent = new https_1.default.Agent({
13
- keepAlive: config.keep_alive.enabled,
14
- maxSockets: config.max_open_connections,
15
- ca: (_a = config.tls) === null || _a === void 0 ? void 0 : _a.ca_cert,
16
- key: ((_b = config.tls) === null || _b === void 0 ? void 0 : _b.type) === 'Mutual' ? config.tls.key : undefined,
17
- cert: ((_c = config.tls) === null || _c === void 0 ? void 0 : _c.type) === 'Mutual' ? config.tls.cert : undefined,
18
- });
19
- super(config, logger, agent);
20
- }
21
- buildDefaultHeaders(username, password) {
22
- var _a, _b;
23
- if (((_a = this.config.tls) === null || _a === void 0 ? void 0 : _a.type) === 'Mutual') {
24
- return {
25
- 'X-ClickHouse-User': username,
26
- 'X-ClickHouse-Key': password,
27
- 'X-ClickHouse-SSL-Certificate-Auth': 'on',
28
- };
29
- }
30
- if (((_b = this.config.tls) === null || _b === void 0 ? void 0 : _b.type) === 'Basic') {
31
- return {
32
- 'X-ClickHouse-User': username,
33
- 'X-ClickHouse-Key': password,
34
- };
35
- }
36
- return super.buildDefaultHeaders(username, password);
37
- }
38
- createClientRequest(params, abort_signal) {
39
- return https_1.default.request(params.url, {
40
- method: params.method,
41
- agent: this.agent,
42
- headers: this.getHeaders(params),
43
- signal: abort_signal,
44
- });
45
- }
46
- }
47
- exports.HttpsAdapter = HttpsAdapter;
48
- //# sourceMappingURL=https_adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"https_adapter.js","sourceRoot":"","sources":["../../../src/connection/adapter/https_adapter.ts"],"names":[],"mappings":";;;;;;AACA,2DAAqD;AAGrD,kDAAyB;AAGzB,MAAa,YAAa,SAAQ,mCAAe;IAC/C,YAAY,MAAwB,EAAE,MAAiB;;QACrD,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC,KAAK,CAAC;YAC5B,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;YACpC,UAAU,EAAE,MAAM,CAAC,oBAAoB;YACvC,EAAE,EAAE,MAAA,MAAM,CAAC,GAAG,0CAAE,OAAO;YACvB,GAAG,EAAE,CAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YAC/D,IAAI,EAAE,CAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAEkB,mBAAmB,CACpC,QAAgB,EAChB,QAAgB;;QAEhB,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,EAAE;YACtC,OAAO;gBACL,mBAAmB,EAAE,QAAQ;gBAC7B,kBAAkB,EAAE,QAAQ;gBAC5B,mCAAmC,EAAE,IAAI;aAC1C,CAAA;SACF;QACD,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,OAAO,EAAE;YACrC,OAAO;gBACL,mBAAmB,EAAE,QAAQ;gBAC7B,kBAAkB,EAAE,QAAQ;aAC7B,CAAA;SACF;QACD,OAAO,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IAES,mBAAmB,CAC3B,MAAqB,EACrB,YAA0B;QAE1B,OAAO,eAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,MAAM,EAAE,YAAY;SACrB,CAAC,CAAA;IACJ,CAAC;CACF;AA3CD,oCA2CC"}
@@ -1,2 +0,0 @@
1
- export { HttpAdapter } from './http_adapter';
2
- export { HttpsAdapter } from './https_adapter';
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HttpsAdapter = exports.HttpAdapter = void 0;
4
- var http_adapter_1 = require("./http_adapter");
5
- Object.defineProperty(exports, "HttpAdapter", { enumerable: true, get: function () { return http_adapter_1.HttpAdapter; } });
6
- var https_adapter_1 = require("./https_adapter");
7
- Object.defineProperty(exports, "HttpsAdapter", { enumerable: true, get: function () { return https_adapter_1.HttpsAdapter; } });
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection/adapter/index.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,iDAA8C;AAArC,6GAAA,YAAY,OAAA"}
@@ -1,5 +0,0 @@
1
- export declare function transformUrl({ url, pathname, searchParams, }: {
2
- url: URL;
3
- pathname?: string;
4
- searchParams?: URLSearchParams;
5
- }): URL;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.transformUrl = void 0;
4
- function transformUrl({ url, pathname, searchParams, }) {
5
- const newUrl = new URL(url);
6
- if (pathname) {
7
- newUrl.pathname = pathname;
8
- }
9
- if (searchParams) {
10
- newUrl.search = searchParams === null || searchParams === void 0 ? void 0 : searchParams.toString();
11
- }
12
- return newUrl;
13
- }
14
- exports.transformUrl = transformUrl;
15
- //# sourceMappingURL=transform_url.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform_url.js","sourceRoot":"","sources":["../../../src/connection/adapter/transform_url.ts"],"names":[],"mappings":";;;AAAA,SAAgB,YAAY,CAAC,EAC3B,GAAG,EACH,QAAQ,EACR,YAAY,GAKb;IACC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IAE3B,IAAI,QAAQ,EAAE;QACZ,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;KAC3B;IAED,IAAI,YAAY,EAAE;QAChB,MAAM,CAAC,MAAM,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,EAAE,CAAA;KACzC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AApBD,oCAoBC"}
@@ -1,63 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import type Stream from 'stream';
4
- import type { LogWriter } from '../logger';
5
- import type { ClickHouseSettings } from '../settings';
6
- export interface ConnectionParams {
7
- url: URL;
8
- application_id?: string;
9
- request_timeout: number;
10
- max_open_connections: number;
11
- compression: {
12
- decompress_response: boolean;
13
- compress_request: boolean;
14
- };
15
- tls?: TLSParams;
16
- username: string;
17
- password: string;
18
- database: string;
19
- keep_alive: {
20
- enabled: boolean;
21
- socket_ttl: number;
22
- retry_on_expired_socket: boolean;
23
- };
24
- }
25
- export type TLSParams = {
26
- ca_cert: Buffer;
27
- type: 'Basic';
28
- } | {
29
- ca_cert: Buffer;
30
- cert: Buffer;
31
- key: Buffer;
32
- type: 'Mutual';
33
- };
34
- export interface BaseParams {
35
- query: string;
36
- clickhouse_settings?: ClickHouseSettings;
37
- query_params?: Record<string, unknown>;
38
- abort_signal?: AbortSignal;
39
- session_id?: string;
40
- query_id?: string;
41
- }
42
- export interface InsertParams extends BaseParams {
43
- values: string | Stream.Readable;
44
- }
45
- export type QueryParams = BaseParams;
46
- export type ExecParams = BaseParams;
47
- export interface BaseResult {
48
- query_id: string;
49
- }
50
- export interface QueryResult extends BaseResult {
51
- stream: Stream.Readable;
52
- query_id: string;
53
- }
54
- export type InsertResult = BaseResult;
55
- export type ExecResult = QueryResult;
56
- export interface Connection {
57
- ping(): Promise<boolean>;
58
- close(): Promise<void>;
59
- query(params: QueryParams): Promise<QueryResult>;
60
- exec(params: ExecParams): Promise<ExecResult>;
61
- insert(params: InsertParams): Promise<InsertResult>;
62
- }
63
- export declare function createConnection(params: ConnectionParams, logger: LogWriter): Connection;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createConnection = void 0;
4
- const adapter_1 = require("./adapter");
5
- function createConnection(params, logger) {
6
- // TODO throw ClickHouseClient error
7
- switch (params.url.protocol) {
8
- case 'http:':
9
- return new adapter_1.HttpAdapter(params, logger);
10
- case 'https:':
11
- return new adapter_1.HttpsAdapter(params, logger);
12
- default:
13
- throw new Error('Only HTTP(s) adapters are supported');
14
- }
15
- }
16
- exports.createConnection = createConnection;
17
- //# sourceMappingURL=connection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/connection/connection.ts"],"names":[],"mappings":";;;AAEA,uCAAqD;AA6ErD,SAAgB,gBAAgB,CAC9B,MAAwB,EACxB,MAAiB;IAEjB,oCAAoC;IACpC,QAAQ,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC3B,KAAK,OAAO;YACV,OAAO,IAAI,qBAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACxC,KAAK,QAAQ;YACX,OAAO,IAAI,sBAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACzC;YACE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;KACzD;AACH,CAAC;AAbD,4CAaC"}