@cubejs-backend/clickhouse-driver 1.7.33 → 1.7.34

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.
@@ -78,11 +78,16 @@ export declare class ClickHouseDriver extends BaseDriver implements DriverInterf
78
78
  private buildQueryId;
79
79
  protected withCancel<T>(fn: (con: ClickHouseClient, queryId: string, signal: AbortSignal) => Promise<T>, options?: QueryOptions): Promise<T>;
80
80
  protected createClient(maxPoolSize: number): ClickHouseClient;
81
+ /**
82
+ * The client instantiates `LoggerClass` with no arguments, and `setLogger` runs
83
+ * after the constructor, so the Cube logger is resolved lazily on every call.
84
+ */
85
+ private clientLoggerClass;
81
86
  testConnection(): Promise<void>;
82
87
  readOnly(): boolean;
83
88
  query<R = unknown>(query: string, values: unknown[], options?: QueryOptions): Promise<R[]>;
84
- protected queryResponse(query: string, values: unknown[], options?: QueryOptions): Promise<ResponseJSON<Record<string, unknown>>>;
85
- protected normaliseResponse<R = unknown>(res: ResponseJSON<Record<string, unknown>>): Array<R>;
89
+ protected queryResponse(query: string, values: unknown[], options?: QueryOptions): Promise<ResponseJSON<Array<unknown>>>;
90
+ protected normaliseResponse<R = unknown>(res: ResponseJSON<Array<unknown>>): Array<R>;
86
91
  release(): Promise<void>;
87
92
  informationSchemaQuery(): string;
88
93
  protected getTablesForSpecificSchemasQuery(schemasPlaceholders: string): string;
@@ -92,6 +97,16 @@ export declare class ClickHouseDriver extends BaseDriver implements DriverInterf
92
97
  getSchemas(): Promise<QuerySchemasResult[]>;
93
98
  stream(query: string, values: unknown[], { highWaterMark, requestId }: StreamOptions): Promise<StreamTableDataWithTypes>;
94
99
  downloadQueryResults(query: string, values: unknown[], options: DownloadQueryResultsOptions): Promise<DownloadQueryResultsResult>;
100
+ /**
101
+ * Example of types:
102
+ *
103
+ * Int64
104
+ * Nullable(Int64) / Nullable(String)
105
+ * Nullable(DateTime('UTC'))
106
+ * LowCardinality(Nullable(String))
107
+ * Array(DateTime) -> timestamp[]
108
+ * Map(String, Int32) / Tuple(Int32, String)
109
+ */
95
110
  protected toGenericType(columnType: string, precision?: number | null, scale?: number | null): GenericDataBaseType;
96
111
  createSchemaIfNotExists(schemaName: string): Promise<void>;
97
112
  getTablesQuery(schemaName: string): Promise<TableQueryResult[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"ClickHouseDriver.d.ts","sourceRoot":"","sources":["../../src/ClickHouseDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClickHouseDriver.d.ts","sourceRoot":"","sources":["../../src/ClickHouseDriver.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClickHouseDriver = void 0;
4
4
  const shared_1 = require("@cubejs-backend/shared");
5
5
  const base_driver_1 = require("@cubejs-backend/base-driver");
6
- const node_stream_1 = require("node:stream");
7
6
  const client_1 = require("@clickhouse/client");
8
7
  const uuid_1 = require("uuid");
9
- const HydrationStream_1 = require("./HydrationStream");
8
+ const RowStream_1 = require("./RowStream");
9
+ const Transform_1 = require("./Transform");
10
10
  const utils_1 = require("./utils");
11
11
  const SUPPORTED_BUCKET_TYPES = ['s3'];
12
12
  const ClickhouseTypeToGeneric = {
@@ -83,9 +83,14 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
83
83
  /// Let's disable it, because we don't need them.
84
84
  send_progress_in_http_headers: 0,
85
85
  // If ClickHouse user's permissions are restricted with "readonly = 1",
86
- // change settings queries are not allowed. Thus, "join_use_nulls" setting
87
- // can not be changed
88
- ...(this.readOnlyMode ? {} : { join_use_nulls: 1 }),
86
+ // change settings queries are not allowed
87
+ ...(this.readOnlyMode ? {} : {
88
+ join_use_nulls: 1,
89
+ // Pins every DateTime value to the width its column type implies, which is what the
90
+ // specialized converters in Transform.ts key off. Not guaranteed: a readonly user or a
91
+ // driver_factory override still lands on the generic formatter.
92
+ date_time_output_format: 'simple',
93
+ }),
89
94
  },
90
95
  // Custom HTTP headers can only be passed via driver_factory, not env vars.
91
96
  headers: config.headers ?? {},
@@ -140,8 +145,47 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
140
145
  request_timeout: this.config.requestTimeout,
141
146
  max_open_connections: maxPoolSize,
142
147
  http_headers: this.config.headers,
148
+ log: {
149
+ LoggerClass: this.clientLoggerClass(),
150
+ // At WARN the client advises enabling progress headers on every construction,
151
+ // which we disable on purpose.
152
+ level: client_1.ClickHouseLogLevel.ERROR,
153
+ },
143
154
  });
144
155
  }
156
+ /**
157
+ * The client instantiates `LoggerClass` with no arguments, and `setLogger` runs
158
+ * after the constructor, so the Cube logger is resolved lazily on every call.
159
+ */
160
+ clientLoggerClass() {
161
+ const emit = (level, { module, message, args }, err) => {
162
+ this.logger?.('ClickHouse Client Log', {
163
+ ...args,
164
+ level,
165
+ module,
166
+ message,
167
+ ...(err ? { error: (err.stack || err).toString() } : {}),
168
+ });
169
+ };
170
+ return class {
171
+ trace(params) {
172
+ emit('trace', params);
173
+ }
174
+ // Cube's LogLevel has no debug counterpart
175
+ debug(params) {
176
+ emit('trace', params);
177
+ }
178
+ info(params) {
179
+ emit('info', params);
180
+ }
181
+ warn(params) {
182
+ emit('warn', params, params.err);
183
+ }
184
+ error(params) {
185
+ emit('error', params, params.err);
186
+ }
187
+ };
188
+ }
145
189
  async testConnection() {
146
190
  await this.query('SELECT 1', []);
147
191
  }
@@ -158,7 +202,9 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
158
202
  const formattedQuery = (0, shared_1.formatMySql)(query, values);
159
203
  return this.withCancel(async (connection, queryId, signal) => {
160
204
  try {
161
- const format = 'JSON';
205
+ // Positional rows drop the repeated column names and share the transform with `stream()`;
206
+ // ClickHouse serializes cell values identically in JSON and JSONCompact.
207
+ const format = 'JSONCompact';
162
208
  const resultSet = await connection.query({
163
209
  query: formattedQuery,
164
210
  query_id: queryId,
@@ -171,8 +217,14 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
171
217
  if (resultSet.response_headers['x-clickhouse-format'] && resultSet.response_headers['x-clickhouse-format'] !== format) {
172
218
  throw new Error(`Unexpected x-clickhouse-format in response: expected ${format}, received ${resultSet.response_headers['x-clickhouse-format']}`);
173
219
  }
174
- // We used format JSON, so we expect each row to be Record with column names as keys
175
220
  const results = await resultSet.json();
221
+ // Up to ClickHouse 25.x, failures after the first flushed block are appended to a 200
222
+ // response; newer versions truncate the JSON and are rejected while parsing it above.
223
+ // The client declares `exception` for `JSONEachRowWithProgress` rows only, never here.
224
+ const { exception } = results;
225
+ if (exception) {
226
+ throw new Error(`ClickHouse aborted after ${results.data?.length ?? 0} row(s): ${exception}`);
227
+ }
176
228
  return results;
177
229
  }
178
230
  catch (e) {
@@ -181,14 +233,19 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
181
233
  }, options);
182
234
  }
183
235
  normaliseResponse(res) {
184
- if (res.data) {
185
- const meta = (res.meta ?? []).reduce((state, element) => ({ [element.name]: element, ...state }), {});
186
- // TODO maybe use row-based format here as well?
187
- res.data.forEach((row) => {
188
- (0, HydrationStream_1.transformRow)(row, meta);
189
- });
236
+ const { data } = res;
237
+ if (!data || data.length === 0) {
238
+ return [];
239
+ }
240
+ if (!res.meta) {
241
+ throw new Error('Unexpected response without meta for format JSONCompact');
190
242
  }
191
- return res.data;
243
+ const transform = (0, Transform_1.buildTransformFromMeta)(res.meta);
244
+ const rows = new Array(data.length);
245
+ for (let i = 0; i < data.length; i++) {
246
+ rows[i] = (0, Transform_1.transformRow)(data[i], transform);
247
+ }
248
+ return rows;
192
249
  }
193
250
  async release() {
194
251
  await this.client.close();
@@ -232,9 +289,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
232
289
  async getSchemas() {
233
290
  return [{ schema_name: this.config.database }];
234
291
  }
235
- async stream(query, values,
236
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
237
- { highWaterMark, requestId }) {
292
+ async stream(query, values, { highWaterMark, requestId }) {
238
293
  // Use separate client for this long-living query
239
294
  const client = this.createClient(1);
240
295
  const queryId = this.buildQueryId(requestId);
@@ -253,35 +308,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
253
308
  // Array<unknown> is okay, because we use fixed JSONCompactEachRowWithNamesAndTypes format
254
309
  // And each row after first two will look like this: [42, "hello", [0,1]]
255
310
  // https://clickhouse.com/docs/en/interfaces/formats#jsoncompacteachrowwithnamesandtypes
256
- const resultSetStream = resultSet.stream();
257
- const allRowsIter = (async function* allRowsIter() {
258
- for await (const rowsBatch of resultSetStream) {
259
- for (const row of rowsBatch) {
260
- yield row.json();
261
- }
262
- }
263
- }());
264
- const first = await allRowsIter.next();
265
- if (first.done) {
266
- throw new Error('Unexpected stream end before row with names');
267
- }
268
- // JSONCompactEachRowWithNamesAndTypes: expect first row to be column names as string
269
- const names = first.value;
270
- const second = await allRowsIter.next();
271
- if (second.done) {
272
- throw new Error('Unexpected stream end before row with types');
273
- }
274
- // JSONCompactEachRowWithNamesAndTypes: expect first row to be column names as string
275
- const types = second.value;
276
- if (names.length !== types.length) {
277
- throw new Error(`Unexpected names and types length mismatch; names ${names.length} vs types ${types.length}`);
278
- }
279
- const dataRowsIter = (async function* () {
280
- for await (const row of allRowsIter) {
281
- yield (0, HydrationStream_1.transformStreamRow)(row, names, types);
282
- }
283
- }());
284
- const rowStream = node_stream_1.Readable.from(dataRowsIter);
311
+ const { rowStream, names, types } = await RowStream_1.ClickHouseRowStream.open(resultSet.stream()[Symbol.asyncIterator](), queryId, highWaterMark || (0, shared_1.getEnv)('dbQueryStreamHighWaterMark'));
285
312
  return {
286
313
  rowStream,
287
314
  types: names.map((name, idx) => {
@@ -314,33 +341,49 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
314
341
  })),
315
342
  };
316
343
  }
344
+ /**
345
+ * Example of types:
346
+ *
347
+ * Int64
348
+ * Nullable(Int64) / Nullable(String)
349
+ * Nullable(DateTime('UTC'))
350
+ * LowCardinality(Nullable(String))
351
+ * Array(DateTime) -> timestamp[]
352
+ * Map(String, Int32) / Tuple(Int32, String)
353
+ */
317
354
  toGenericType(columnType, precision, scale) {
318
- if (columnType.toLowerCase() in ClickhouseTypeToGeneric) {
319
- return ClickhouseTypeToGeneric[columnType.toLowerCase()];
355
+ const type = columnType.trim();
356
+ const lowerType = type.toLowerCase();
357
+ if (lowerType in ClickhouseTypeToGeneric) {
358
+ return ClickhouseTypeToGeneric[lowerType];
320
359
  }
321
- const match = columnType.trim().toLowerCase().match(/decimal\s*\(\s*(\d+)\s*,\s*(\d+)\s*\)/i);
322
- if (match) {
323
- precision = Number(match[1]);
324
- scale = Number(match[2]);
360
+ const argsStart = type.indexOf('(');
361
+ if (argsStart === -1) {
362
+ return super.toGenericType(type, precision, scale);
325
363
  }
326
- /**
327
- * Example of types:
328
- *
329
- * Int64
330
- * Nullable(Int64) / Nullable(String)
331
- * Nullable(DateTime('UTC'))
332
- */
333
- if (columnType.includes('(')) {
334
- const types = columnType.toLowerCase().match(/([a-z0-9']+)/g);
335
- if (types) {
336
- for (const type of types) {
337
- if (type in ClickhouseTypeToGeneric) {
338
- return ClickhouseTypeToGeneric[type];
339
- }
340
- }
364
+ const name = lowerType.slice(0, argsStart).trim();
365
+ const args = type.slice(argsStart + 1, type.lastIndexOf(')'));
366
+ switch (name) {
367
+ case 'nullable':
368
+ case 'lowcardinality':
369
+ return this.toGenericType(args, precision, scale);
370
+ case 'array':
371
+ return `${this.toGenericType(args)}[]`;
372
+ case 'map':
373
+ case 'tuple':
374
+ case 'nested':
375
+ return 'text';
376
+ case 'decimal': {
377
+ const [argPrecision, argScale] = args.split(',');
378
+ return super.toGenericType(name, Number(argPrecision), Number(argScale));
341
379
  }
380
+ default:
381
+ // Parameterized scalars: DateTime('UTC'), DateTime64(3, 'UTC'), Enum8('Date' = 1),
382
+ // FixedString(16). Their arguments never carry a type, so only the name is mapped.
383
+ return name in ClickhouseTypeToGeneric
384
+ ? ClickhouseTypeToGeneric[name]
385
+ : super.toGenericType(name, precision, scale);
342
386
  }
343
- return super.toGenericType(columnType, precision, scale);
344
387
  }
345
388
  async createSchemaIfNotExists(schemaName) {
346
389
  await this.command(`CREATE DATABASE IF NOT EXISTS ${schemaName}`);
@@ -1 +1 @@
1
- {"version":3,"file":"ClickHouseDriver.js","sourceRoot":"","sources":["../../src/ClickHouseDriver.ts"],"names":[],"mappings":";;;AAAA,mDAKgC;AAChC,6DAgBqC;AAErC,6CAAuC;AACvC,+CAAoE;AAEpE,+BAAoC;AAEpC,uDAAqE;AACrE,mCAAsC;AAEtC,MAAM,sBAAsB,GAAG,CAAC,IAAI,CAAC,CAAC;AAEtC,MAAM,uBAAuB,GAA2B;IACtD,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,WAAW;IACvB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,WAAW;IACX,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,QAAQ;IACf,eAAe;IACf,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,QAAQ;IAChB,SAAS;IACT,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,QAAQ;IACjB,yBAAyB;IACzB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;CACf,CAAC;AAuEF,MAAa,gBAAiB,SAAQ,wBAAU;IAC9C;;OAEG;IACI,MAAM,CAAC,qBAAqB;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,kFAAkF;IAC/D,MAAM,CAAmB;IAEzB,YAAY,CAAU;IAEtB,MAAM,CAAyB;IAElD;;OAEG;IACH,YACE,SAAkC,EAAE;QAEpC,KAAK,CAAC;YACJ,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;SACpD,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAA,yBAAgB,EAAC,SAAS,CAAC,CAAC;QACpE,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAA,eAAM,EAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAA,eAAM,EAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,IAAI,IAAI,CAAC;QACtF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAA,eAAM,EAAC,OAAO,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5G,MAAM,GAAG,GAAG,GAAG,QAAQ,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC;QAE3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAA,eAAM,EAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAA,eAAM,EAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAK,IAAA,eAAM,EAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAY,IAAI,SAAS,CAAC;QAE/G,gDAAgD;QAChD,IAAI,CAAC,YAAY,GAAG,IAAA,eAAM,EAAC,oBAAoB,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;QAElF,kEAAkE;QAClE,MAAM,iBAAiB,GAAW,IAAA,eAAM,EAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC;QACnG,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,iBAAiB,CAAC;QAElE,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG;YACH,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC;YAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;YAC3B,cAAc;YACd,WAAW,EAAE;gBACX,uIAAuI;gBACvI,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,eAAM,EAAC,uBAAuB,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;gBACtG,OAAO,EAAE,IAAA,eAAM,EAAC,uBAAuB,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;aAC1E;YACD,kBAAkB,EAAE;gBAClB,yHAAyH;gBACzH,iDAAiD;gBACjD,6BAA6B,EAAE,CAAC;gBAChC,uEAAuE;gBACvE,0EAA0E;gBAC1E,qBAAqB;gBACrB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;aACpD;YACD,2EAA2E;YAC3E,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;SAC9B,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW;YACpC,IAAA,eAAM,EAAC,eAAe,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;YACxD,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;QAE3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAEO,YAAY,CAAC,SAAkB;QACrC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,2BAAkB,EAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,IAAA,SAAM,GAAE,CAAC;SACjB;QAED,OAAO,GAAG,MAAM,IAAI,IAAA,SAAM,GAAE,EAAE,CAAC;IACjC,CAAC;IAES,UAAU,CAClB,EAA+E,EAC/E,OAAsB;QAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEtD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC;QAEnC,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,2GAA2G;YAC3G,qCAAqC;YACrC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,EAAE,CAAC;QACJ,OAAe,CAAC,MAAM,GAAG,KAAK,IAAI,EAAE;YACnC,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,6DAA6D;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI;gBACF,MAAM,UAAU,CAAC,OAAO,CAAC;oBACvB,KAAK,EAAE,IAAA,oBAAW,EAAC,+BAA+B,EAAE,CAAC,OAAO,CAAC,CAAC;iBAC/D,CAAC,CAAC;aACJ;oBAAS;gBACR,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;aAC1B;QACH,CAAC,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,YAAY,CAAC,WAAmB;QACxC,OAAO,IAAA,qBAAY,EAAC;YAClB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;YACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;YACnD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;YAC3C,oBAAoB,EAAE,WAAW;YACjC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAClC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAEM,QAAQ;QACb,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC;IACT,CAAC;IAEM,KAAK,CAAC,KAAK,CAAc,KAAa,EAAE,MAAiB,EAAE,OAAsB;QACtF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAES,aAAa,CAAC,KAAa,EAAE,MAAiB,EAAE,OAAsB;QAC9E,MAAM,cAAc,GAAG,IAAA,oBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,CAAC;gBAEtB,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC;oBACvC,KAAK,EAAE,cAAc;oBACrB,QAAQ,EAAE,OAAO;oBACjB,MAAM;oBACN,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;oBACnD,YAAY,EAAE,MAAM;iBACrB,CAAC,CAAC;gBAEH,yEAAyE;gBACzE,wCAAwC;gBACxC,IAAI,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,KAAK,MAAM,EAAE;oBACrH,MAAM,IAAI,KAAK,CAAC,wDAAwD,MAAM,cAAc,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;iBAClJ;gBAED,oFAAoF;gBACpF,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAA2B,CAAC;gBAChE,OAAO,OAAO,CAAC;aAChB;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAA,mBAAW,EAAC,CAAC,CAAC,eAAe,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;aACxF;QACH,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAES,iBAAiB,CAAc,GAA0C;QACjF,IAAI,GAAG,CAAC,IAAI,EAAE;YACZ,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAClC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,EAC3D,EAAE,CACH,CAAC;YAEF,gDAAgD;YAChD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvB,IAAA,8BAAY,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,GAAG,CAAC,IAAgB,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEM,sBAAsB;QAC3B,OAAO;;;;;;2BAMgB,IAAI,CAAC,MAAM,CAAC,QAAQ;KAC1C,CAAC;IACJ,CAAC;IAEkB,gCAAgC,CAAC,mBAA2B;QAC7E,MAAM,KAAK,GAAG;;;;2BAIS,mBAAmB;KACzC,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAEkB,gCAAgC,CAAC,eAAuB;QACzE,MAAM,KAAK,GAAG;uBACK,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;wBAClC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;2BAC/B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;uBACvC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;;cAE1C,eAAe;KACxB,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAEkB,0BAA0B;QAC3C,OAAO,UAAU,CAAC;IACpB,CAAC;IAEkB,yBAAyB;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAEe,KAAK,CAAC,UAAU;QAC9B,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,KAAa,EACb,MAAiB;IACjB,6DAA6D;IAC7D,EAAE,aAAa,EAAE,SAAS,EAAiB;QAE3C,iDAAiD;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE7C,IAAI;YACF,MAAM,cAAc,GAAG,IAAA,oBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,qCAAqC,CAAC;YAErD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBACnC,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE,OAAO;gBACjB,MAAM;gBACN,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;aACpD,CAAC,CAAC;YAEH,IAAI,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,KAAK,MAAM,EAAE;gBAChE,MAAM,IAAI,KAAK,CAAC,wDAAwD,MAAM,cAAc,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;aAClJ;YAED,0FAA0F;YAC1F,yEAAyE;YACzE,wFAAwF;YACxF,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,EAAkB,CAAC;YAE3D,MAAM,WAAW,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,WAAW;gBAC9C,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,eAAe,EAAE;oBAC7C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;wBAC3B,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;qBAClB;iBACF;YACH,CAAC,EAAE,CAAC,CAAC;YAEL,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,IAAI,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;aAChE;YACD,qFAAqF;YACrF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAsB,CAAC;YAE3C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,IAAI,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;aAChE;YACD,qFAAqF;YACrF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAsB,CAAC;YAE5C,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,qDAAqD,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;aAC/G;YAED,MAAM,YAAY,GAAG,CAAC,KAAK,SAAS,CAAC;gBACnC,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,WAAW,EAAE;oBACnC,MAAM,IAAA,oCAAkB,EAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;iBAC7C;YACH,CAAC,EAAE,CAAC,CAAC;YACL,MAAM,SAAS,GAAG,sBAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE9C,OAAO;gBACL,SAAS;gBACT,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;oBAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;oBACxB,OAAO;wBACL,IAAI;wBACJ,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;qBAC/B,CAAC;gBACJ,CAAC,CAAC;gBACF,OAAO,EAAE,KAAK,IAAI,EAAE;oBAClB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACvB,CAAC;aACF,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAA,mBAAW,EAAC,CAAC,CAAC,eAAe,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;SAC/F;IACH,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAC/B,KAAa,EACb,MAAiB,EACjB,OAAoC;QAEpC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;SAC5C;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAElE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YACtC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC3C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;aACrC,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAEkB,aAAa,CAAC,UAAkB,EAAE,SAAyB,EAAE,KAAqB;QACnG,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,uBAAuB,EAAE;YACvD,OAAO,uBAAuB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;SAC1D;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAE9F,IAAI,KAAK,EAAE;YACT,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1B;QAED;;;;;;WAMG;QACH,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC9D,IAAI,KAAK,EAAE;gBACT,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,IAAI,IAAI,IAAI,uBAAuB,EAAE;wBACnC,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;qBACtC;iBACF;aACF;SACF;QAED,OAAO,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,UAAkB;QACrD,MAAM,IAAI,CAAC,OAAO,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAEM,cAAc,CAAC,UAAkB;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,iEAAiE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACrG,CAAC;IAEe,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,OAAsB;QACvE,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAES,eAAe,CACvB,UAAkB,EAClB,eAAyB;QAEzB,MAAM,oBAAoB,GAAsC;YAC9D,UAAU,EAAE,IAAA,eAAM,EAAC,oBAAoB,EAAE;gBACvC,SAAS,EAAE,sBAAsB;gBACjC,UAAU;gBACV,eAAe;aAChB,CAAC;YACF,UAAU,EAAE,IAAA,eAAM,EAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;YACrE,MAAM,EAAE,IAAA,eAAM,EAAC,yBAAyB,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;SAC3E,CAAC;QAEF,MAAM,YAAY,GAA8B;YAC9C,GAAG,oBAAoB;YACvB,KAAK,EAAE,IAAA,eAAM,EAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;YACtE,SAAS,EAAE,IAAA,eAAM,EAAC,yBAAyB,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;SAC9E,CAAC;QAEF,IAAI,YAAY,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;gBAC7D,MAAM,IAAI,KAAK,CACb,8CAA8C,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACjF,CAAC;aACH;YAED,sCAAsC;YACtC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;iBACxD,MAAM,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,oBAAoB,CAA0C,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;YAC7G,IAAI,iBAAiB,CAAC,MAAM,EAAE;gBAC5B,MAAM,IAAI,KAAK,CACb,8EAA8E,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC5G,CAAC;aACH;YAED,OAAO,YAAY,CAAC;SACrB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,MAAiB,EAAE,OAAsB;QAQlF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAc,YAAY,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAClF,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAC7C;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;SACtC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,gCAAgC;IAChB,KAAK,CAAC,cAAc,CAAC,KAAa;QAChD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEe,KAAK,CAAC,WAAW,CAAC,eAAuB,EAAE,OAAsB;QAC/E,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI;YACF,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SACpC;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,gBAAgB,eAAe,YAAY,IAAA,mBAAW,EAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5F;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,OAAsB;QAC5D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QAED,OAAO,IAAI,CAAC,eAAe,CACzB,OAAO,CAAC,KAAK,EAAE,GAAG,EAClB,OAAO,CAAC,KAAK,EAAE,MAAM,EACrB,OAAO,CACR,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,MAAiB,EAAE,OAAsB;QACjF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAC7C;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChG,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACtF,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAA,SAAM,GAAE,EAAE,CAAC,CAAC,CAAC,IAAA,SAAM,GAAE,CAAC;QAE7D,MAAM,cAAc,GAAG,IAAA,oBAAW,EAAC;;;wBAGf,UAAU,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,kBAAkB,YAAY;gBACtF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK;gBAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS;;;QAG1C,GAAG;KACN,EAAE,MAAM,CAAC,CAAC;QAEX,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAErE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,0BAA0B,CACnD;YACE,WAAW,EAAE;gBACX,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK;gBAC3C,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS;aACpD;YACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM;SACxC,EACD,UAAU,EACV,YAAY,CACb,CAAC;QAEF,OAAO;YACL,OAAO;YACP,KAAK;YACL,WAAW,EAAE,IAAI;YACjB,iDAAiD;YACjD,YAAY,EAAE,GAAG;SAClB,CAAC;IACJ,CAAC;IAEM,YAAY;QACjB,OAAO;YACL,sBAAsB,EAAE,IAAI;YAC5B,wBAAwB,EAAE,IAAI;SAC/B,CAAC;IACJ,CAAC;IAED,6EAA6E;IACtE,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAsB;QACxD,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1D,IAAI;gBACF,MAAM,UAAU,CAAC,OAAO,CAAC;oBACvB,KAAK;oBACL,QAAQ,EAAE,OAAO;oBACjB,YAAY,EAAE,MAAM;iBACrB,CAAC,CAAC;aACJ;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAA,mBAAW,EAAC,CAAC,CAAC,eAAe,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;aAC1F;QACH,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED,6EAA6E;IACtE,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAA6B,EAAE,OAAsB;QACtF,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1D,IAAI;gBACF,MAAM,UAAU,CAAC,MAAM,CAAC;oBACtB,KAAK;oBACL,MAAM;oBACN,MAAM,EAAE,oBAAoB;oBAC5B,QAAQ,EAAE,OAAO;oBACjB,YAAY,EAAE,MAAM;iBACrB,CAAC,CAAC;aACJ;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAA,mBAAW,EAAC,CAAC,CAAC,eAAe,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;aACzF;QACH,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;CACF;AAvjBD,4CAujBC"}
1
+ {"version":3,"file":"ClickHouseDriver.js","sourceRoot":"","sources":["../../src/ClickHouseDriver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from 'node:stream';
3
+ import type { Row } from '@clickhouse/client';
4
+ type RowBatch = Array<Row<Array<unknown>>>;
5
+ /**
6
+ * Streams a JSONCompactEachRowWithNamesAndTypes result set as hydrated row objects.
7
+ *
8
+ * @clickhouse/client hands out batches of rows, so a whole batch is pushed per `await` on the
9
+ * source instead of one row per `await`, and the caller's `highWaterMark` decides how far ahead
10
+ * of the consumer we read.
11
+ */
12
+ export declare class ClickHouseRowStream extends Readable {
13
+ private readonly source;
14
+ private readonly queryId;
15
+ private reading;
16
+ private batch;
17
+ private idx;
18
+ private transform;
19
+ private constructor();
20
+ /**
21
+ * Consumes the two header rows the format starts with. Reading them here rather than through
22
+ * a consumer keeps it to the one moment where skipping rows is correct.
23
+ */
24
+ static open(source: AsyncIterator<RowBatch>, queryId: string, highWaterMark: number): Promise<{
25
+ rowStream: ClickHouseRowStream;
26
+ names: Array<string>;
27
+ types: Array<string>;
28
+ }>;
29
+ /** Advances to the next non-empty batch; false once the source is exhausted. */
30
+ private fetchBatch;
31
+ private readRawRow;
32
+ _read(): Promise<void>;
33
+ _destroy(error: Error | null, callback: (error?: Error | null) => void): void;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=RowStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RowStream.d.ts","sourceRoot":"","sources":["../../src/RowStream.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAK9C,KAAK,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3C;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;IAU7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,GAAG,CAAa;IAExB,OAAO,CAAC,SAAS,CAAa;IAE9B,OAAO;IAQP;;;OAGG;WACiB,IAAI,CACtB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;QAAE,SAAS,EAAE,mBAAmB,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IAyB1F,gFAAgF;YAClE,UAAU;YAcV,UAAU;IAQF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;CAG9F"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClickHouseRowStream = void 0;
4
+ const node_stream_1 = require("node:stream");
5
+ const Transform_1 = require("./Transform");
6
+ const utils_1 = require("./utils");
7
+ /**
8
+ * Streams a JSONCompactEachRowWithNamesAndTypes result set as hydrated row objects.
9
+ *
10
+ * @clickhouse/client hands out batches of rows, so a whole batch is pushed per `await` on the
11
+ * source instead of one row per `await`, and the caller's `highWaterMark` decides how far ahead
12
+ * of the consumer we read.
13
+ */
14
+ class ClickHouseRowStream extends node_stream_1.Readable {
15
+ source;
16
+ queryId;
17
+ reading = false;
18
+ batch = [];
19
+ idx = 0;
20
+ transform;
21
+ constructor(source, queryId, highWaterMark) {
22
+ super({ objectMode: true, highWaterMark });
23
+ this.source = source;
24
+ this.queryId = queryId;
25
+ }
26
+ /**
27
+ * Consumes the two header rows the format starts with. Reading them here rather than through
28
+ * a consumer keeps it to the one moment where skipping rows is correct.
29
+ */
30
+ static async open(source, queryId, highWaterMark) {
31
+ const rowStream = new ClickHouseRowStream(source, queryId, highWaterMark);
32
+ try {
33
+ const names = await rowStream.readRawRow();
34
+ if (!names) {
35
+ throw new Error('Unexpected stream end before row with names');
36
+ }
37
+ const types = await rowStream.readRawRow();
38
+ if (!types) {
39
+ throw new Error('Unexpected stream end before row with types');
40
+ }
41
+ rowStream.transform = (0, Transform_1.buildTransformFromNamesAndTypes)(names, types);
42
+ return { rowStream, names, types };
43
+ }
44
+ catch (e) {
45
+ // Nobody holds the stream yet, so destroy it without an error to release the source
46
+ // rather than emit 'error' with no listener attached
47
+ rowStream.destroy();
48
+ throw e;
49
+ }
50
+ }
51
+ /** Advances to the next non-empty batch; false once the source is exhausted. */
52
+ async fetchBatch() {
53
+ do {
54
+ const next = await this.source.next();
55
+ if (next.done) {
56
+ return false;
57
+ }
58
+ this.batch = next.value;
59
+ this.idx = 0;
60
+ } while (this.batch.length === 0);
61
+ return true;
62
+ }
63
+ async readRawRow() {
64
+ if (this.idx >= this.batch.length && !await this.fetchBatch()) {
65
+ return undefined;
66
+ }
67
+ return this.batch[this.idx++].json();
68
+ }
69
+ async _read() {
70
+ // A synchronous push() can re-enter _read() while the loop below is still running
71
+ if (this.reading) {
72
+ return;
73
+ }
74
+ this.reading = true;
75
+ try {
76
+ let canPush = true;
77
+ while (canPush) {
78
+ if (this.idx >= this.batch.length) {
79
+ if (!await this.fetchBatch()) {
80
+ this.push(null);
81
+ return;
82
+ }
83
+ // A destroy() while parked on the source settles the pending next() via source.return();
84
+ // the rows it carried have no reader anymore. A destroy() mid-batch needs no check of its
85
+ // own: push() into a destroyed stream returns false, so the loop exits on its own
86
+ if (this.destroyed) {
87
+ return;
88
+ }
89
+ }
90
+ canPush = this.push((0, Transform_1.transformRow)(this.batch[this.idx++].json(), this.transform));
91
+ }
92
+ }
93
+ catch (e) {
94
+ // Since 25.11 the server reports an exception raised after the first block through
95
+ // the response headers and an in-stream tag, and the client rethrows it here.
96
+ this.destroy(new Error(`Stream query failed: ${(0, utils_1.formatError)(e)}; query id: ${this.queryId}`, { cause: e }));
97
+ }
98
+ finally {
99
+ this.reading = false;
100
+ }
101
+ }
102
+ _destroy(error, callback) {
103
+ Promise.resolve(this.source.return?.()).then(() => callback(error), () => callback(error));
104
+ }
105
+ }
106
+ exports.ClickHouseRowStream = ClickHouseRowStream;
107
+ //# sourceMappingURL=RowStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RowStream.js","sourceRoot":"","sources":["../../src/RowStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export type ColumnConverter = (value: unknown) => unknown;
2
+ export type ColumnMeta = {
3
+ name: string;
4
+ type: string;
5
+ };
6
+ export type Transform = {
7
+ names: Array<string>;
8
+ converters: Array<ColumnConverter | null>;
9
+ objectShape: Record<string, unknown> | null;
10
+ };
11
+ export declare function formatCanonicalDateTime(s: string): string | null;
12
+ export declare function formatDateTime(value: unknown): string;
13
+ export declare function getColumnConverter(type: string): ColumnConverter | null;
14
+ export declare function buildTransformFromMeta(meta: ReadonlyArray<ColumnMeta>): Transform;
15
+ export declare function buildTransformFromNamesAndTypes(names: Array<string>, types: Array<string>): Transform;
16
+ export declare function transformRow(row: ReadonlyArray<unknown>, transform: Transform): Record<string, unknown>;
17
+ //# sourceMappingURL=Transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../src/Transform.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C,CAAC;AA6CF,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiChE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASrD;AA+ID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAsBvE;AAUD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS,CAUjF;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAWrG;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBvG"}
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.transformRow = exports.buildTransformFromNamesAndTypes = exports.buildTransformFromMeta = exports.getColumnConverter = exports.formatDateTime = exports.formatCanonicalDateTime = void 0;
27
+ const moment = __importStar(require("moment"));
28
+ const shared_1 = require("@cubejs-backend/shared");
29
+ const CHAR_0 = 48;
30
+ const CHAR_9 = 57;
31
+ const CHAR_SPACE = 32;
32
+ const CHAR_DASH = 45;
33
+ const CHAR_DOT = 46;
34
+ const CHAR_COLON = 58;
35
+ const CHAR_T = 84;
36
+ const CHAR_LPAREN = 40;
37
+ const CHAR_Z = 90;
38
+ const ZEROS = '000';
39
+ function isDigit(code) {
40
+ return code >= CHAR_0 && code <= CHAR_9;
41
+ }
42
+ function hasCanonicalDateTimePrefix(s) {
43
+ if (s.length < 19) {
44
+ return false;
45
+ }
46
+ const separator = s.charCodeAt(10);
47
+ if (s.charCodeAt(4) !== CHAR_DASH ||
48
+ s.charCodeAt(7) !== CHAR_DASH ||
49
+ (separator !== CHAR_SPACE && separator !== CHAR_T) ||
50
+ s.charCodeAt(13) !== CHAR_COLON ||
51
+ s.charCodeAt(16) !== CHAR_COLON) {
52
+ return false;
53
+ }
54
+ return isDigit(s.charCodeAt(0)) && isDigit(s.charCodeAt(1)) &&
55
+ isDigit(s.charCodeAt(2)) && isDigit(s.charCodeAt(3)) &&
56
+ isDigit(s.charCodeAt(5)) && isDigit(s.charCodeAt(6)) &&
57
+ isDigit(s.charCodeAt(8)) && isDigit(s.charCodeAt(9)) &&
58
+ isDigit(s.charCodeAt(11)) && isDigit(s.charCodeAt(12)) &&
59
+ isDigit(s.charCodeAt(14)) && isDigit(s.charCodeAt(15)) &&
60
+ isDigit(s.charCodeAt(17)) && isDigit(s.charCodeAt(18));
61
+ }
62
+ // The server can override `date_time_output_format`, so only bypass moment for known-equivalent
63
+ // simple and ISO values.
64
+ function formatCanonicalDateTime(s) {
65
+ if (!hasCanonicalDateTimePrefix(s)) {
66
+ return null;
67
+ }
68
+ const len = s.length;
69
+ let millis = ZEROS;
70
+ let tail = 19;
71
+ if (len > 19 && s.charCodeAt(19) === CHAR_DOT) {
72
+ let end = 20;
73
+ while (end < len && isDigit(s.charCodeAt(end))) {
74
+ end++;
75
+ }
76
+ const fractionLength = end - 20;
77
+ if (fractionLength === 0) {
78
+ return null;
79
+ }
80
+ millis = fractionLength >= 3
81
+ ? s.slice(20, 23)
82
+ : s.slice(20, end) + ZEROS.slice(fractionLength);
83
+ tail = end;
84
+ }
85
+ // Offsets require a timezone shift, which only moment does.
86
+ if (tail !== len && !(tail === len - 1 && s.charCodeAt(tail) === CHAR_Z)) {
87
+ return null;
88
+ }
89
+ return `${s.slice(0, 10)}T${s.slice(11, 19)}.${millis}`;
90
+ }
91
+ exports.formatCanonicalDateTime = formatCanonicalDateTime;
92
+ function formatDateTime(value) {
93
+ if (typeof value === 'string') {
94
+ const formatted = formatCanonicalDateTime(value);
95
+ if (formatted !== null) {
96
+ return formatted;
97
+ }
98
+ }
99
+ return moment.utc(value).format(moment.HTML5_FMT.DATETIME_LOCAL_MS);
100
+ }
101
+ exports.formatDateTime = formatDateTime;
102
+ // The other two `date_time_output_format` shapes never share the width a column type pins: iso is
103
+ // always one character longer, unix_timestamp far shorter. The fraction marker is checked on top of
104
+ // the width because `2020-01-01 12:34:56+03:00` is exactly as wide as a DateTime64(5) value.
105
+ const dateTime0Converter = (value) => {
106
+ if (value === null || value === undefined) {
107
+ return value;
108
+ }
109
+ if (typeof value === 'string' && value.length === 19) {
110
+ return `${value.slice(0, 10)}T${value.slice(11, 19)}.${ZEROS}`;
111
+ }
112
+ return formatDateTime(value);
113
+ };
114
+ const dateTime1Converter = (value) => {
115
+ if (value === null || value === undefined) {
116
+ return value;
117
+ }
118
+ if (typeof value === 'string' && value.length === 21 && value.charCodeAt(19) === CHAR_DOT) {
119
+ return `${value.slice(0, 10)}T${value.slice(11, 19)}.${value.slice(20, 21)}00`;
120
+ }
121
+ return formatDateTime(value);
122
+ };
123
+ const dateTime2Converter = (value) => {
124
+ if (value === null || value === undefined) {
125
+ return value;
126
+ }
127
+ if (typeof value === 'string' && value.length === 22 && value.charCodeAt(19) === CHAR_DOT) {
128
+ return `${value.slice(0, 10)}T${value.slice(11, 19)}.${value.slice(20, 22)}0`;
129
+ }
130
+ return formatDateTime(value);
131
+ };
132
+ function createTruncatingDateTimeConverter(width) {
133
+ return (value) => {
134
+ if (value === null || value === undefined) {
135
+ return value;
136
+ }
137
+ if (typeof value === 'string' && value.length === width && value.charCodeAt(19) === CHAR_DOT) {
138
+ return `${value.slice(0, 10)}T${value.slice(11, 23)}`;
139
+ }
140
+ return formatDateTime(value);
141
+ };
142
+ }
143
+ const DATE_TIME_CONVERTERS = [
144
+ dateTime0Converter,
145
+ dateTime1Converter,
146
+ dateTime2Converter,
147
+ createTruncatingDateTimeConverter(23),
148
+ createTruncatingDateTimeConverter(24),
149
+ createTruncatingDateTimeConverter(25),
150
+ createTruncatingDateTimeConverter(26),
151
+ createTruncatingDateTimeConverter(27),
152
+ createTruncatingDateTimeConverter(28),
153
+ createTruncatingDateTimeConverter(29),
154
+ ];
155
+ const dateTimeConverter = (value) => (value === null || value === undefined ? value : formatDateTime(value));
156
+ const dateConverter = (value) => (value === null || value === undefined ? value : `${value}T00:00:00.000`);
157
+ const numberConverter = (value) => {
158
+ if (value === null || value === undefined) {
159
+ return value;
160
+ }
161
+ return typeof value === 'string' ? value : String(value);
162
+ };
163
+ const WRAPPER_PREFIXES = ['Nullable(', 'LowCardinality('];
164
+ // Scalar names inside container arguments must not select a converter for the container itself.
165
+ // SimpleAggregateFunction is excluded because it reads back as its scalar argument type.
166
+ const NON_SCALAR_PREFIXES = ['Array(', 'Map(', 'Tuple(', 'Nested(', 'Enum', 'JSON', 'AggregateFunction('];
167
+ function unwrapScalar(type) {
168
+ let inner = type;
169
+ let stripped = true;
170
+ while (stripped) {
171
+ stripped = false;
172
+ for (const prefix of WRAPPER_PREFIXES) {
173
+ if (inner.startsWith(prefix)) {
174
+ inner = inner.slice(prefix.length);
175
+ stripped = true;
176
+ }
177
+ }
178
+ }
179
+ return inner;
180
+ }
181
+ const DATE_TIME64 = 'DateTime64';
182
+ const DEFAULT_DATE_TIME64_PRECISION = 3;
183
+ const MAX_DATE_TIME64_PRECISION = 9;
184
+ const PRECISION_UNSUPPORTED = -1;
185
+ // `DateTime` and `DateTime64(0)` read back with the same 19 character shape, so a plain DateTime is
186
+ // precision 0. indexOf rather than startsWith, because SimpleAggregateFunction(max, DateTime64(3))
187
+ // reads back as its argument type. charCodeAt past the end is NaN, so no bounds checks are needed.
188
+ function parseDateTimePrecision(inner) {
189
+ const at = inner.indexOf(DATE_TIME64);
190
+ if (at === -1) {
191
+ return 0;
192
+ }
193
+ let i = at + DATE_TIME64.length;
194
+ if (inner.charCodeAt(i) !== CHAR_LPAREN) {
195
+ return DEFAULT_DATE_TIME64_PRECISION;
196
+ }
197
+ i++;
198
+ let precision = 0;
199
+ let digits = 0;
200
+ while (isDigit(inner.charCodeAt(i))) {
201
+ precision = precision * 10 + (inner.charCodeAt(i) - CHAR_0);
202
+ digits++;
203
+ i++;
204
+ }
205
+ if (digits === 0 || precision > MAX_DATE_TIME64_PRECISION) {
206
+ return PRECISION_UNSUPPORTED;
207
+ }
208
+ return precision;
209
+ }
210
+ function getColumnConverter(type) {
211
+ const inner = unwrapScalar(type);
212
+ if (NON_SCALAR_PREFIXES.some((prefix) => inner.startsWith(prefix))) {
213
+ return null;
214
+ }
215
+ if (inner.includes('Date')) {
216
+ if (!inner.includes('DateTime')) {
217
+ return dateConverter;
218
+ }
219
+ const precision = parseDateTimePrecision(inner);
220
+ return precision === PRECISION_UNSUPPORTED ? dateTimeConverter : DATE_TIME_CONVERTERS[precision];
221
+ }
222
+ if (inner.includes('Int') || inner.includes('Float') || inner.includes('Decimal')) {
223
+ return numberConverter;
224
+ }
225
+ return null;
226
+ }
227
+ exports.getColumnConverter = getColumnConverter;
228
+ function buildTransform(names, converters) {
229
+ return {
230
+ names,
231
+ converters,
232
+ objectShape: (0, shared_1.buildObjectShape)(names),
233
+ };
234
+ }
235
+ function buildTransformFromMeta(meta) {
236
+ const names = new Array(meta.length);
237
+ const converters = new Array(meta.length);
238
+ for (let i = 0; i < meta.length; i++) {
239
+ names[i] = meta[i].name;
240
+ converters[i] = getColumnConverter(meta[i].type);
241
+ }
242
+ return buildTransform(names, converters);
243
+ }
244
+ exports.buildTransformFromMeta = buildTransformFromMeta;
245
+ function buildTransformFromNamesAndTypes(names, types) {
246
+ if (names.length !== types.length) {
247
+ throw new Error(`Unexpected names and types length mismatch; names ${names.length} vs types ${types.length}`);
248
+ }
249
+ const converters = new Array(names.length);
250
+ for (let i = 0; i < names.length; i++) {
251
+ converters[i] = getColumnConverter(types[i]);
252
+ }
253
+ return buildTransform(names, converters);
254
+ }
255
+ exports.buildTransformFromNamesAndTypes = buildTransformFromNamesAndTypes;
256
+ // Left-to-right assignment preserves JSON.parse's ordering and last-value behavior for duplicate
257
+ // column names, keeping pre-aggregation content versions stable.
258
+ function transformRow(row, transform) {
259
+ const { names, converters, objectShape } = transform;
260
+ if (row.length !== names.length) {
261
+ throw new Error(`Unexpected row and names/types length mismatch; row ${row.length} vs names ${names.length}`);
262
+ }
263
+ // Cloning a shape that already holds every column keeps the row in fast-properties mode; see
264
+ // buildObjectShape for why that matters to everything reading the row afterwards.
265
+ const rowObj = objectShape === null ? {} : { ...objectShape };
266
+ for (let i = 0; i < names.length; i++) {
267
+ const converter = converters[i];
268
+ const value = row[i];
269
+ rowObj[names[i]] = converter === null ? value : converter(value);
270
+ }
271
+ return rowObj;
272
+ }
273
+ exports.transformRow = transformRow;
274
+ //# sourceMappingURL=Transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transform.js","sourceRoot":"","sources":["../../src/Transform.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@cubejs-backend/clickhouse-driver",
3
3
  "description": "Cube.js ClickHouse database driver",
4
4
  "author": "Cube Dev, Inc.",
5
- "version": "1.7.33",
5
+ "version": "1.7.34",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/cube-js/cube.git",
@@ -28,16 +28,16 @@
28
28
  "integration:clickhouse": "jest dist/test/integration"
29
29
  },
30
30
  "dependencies": {
31
- "@clickhouse/client": "^1.12.0",
32
- "@cubejs-backend/base-driver": "1.7.33",
33
- "@cubejs-backend/shared": "1.7.33",
31
+ "@clickhouse/client": "^1.23.1",
32
+ "@cubejs-backend/base-driver": "1.7.34",
33
+ "@cubejs-backend/shared": "1.7.34",
34
34
  "moment": "^2.24.0",
35
35
  "uuid": "^11.1.1"
36
36
  },
37
37
  "license": "Apache-2.0",
38
38
  "devDependencies": {
39
- "@cubejs-backend/linter": "1.7.33",
40
- "@cubejs-backend/testing-shared": "1.7.33",
39
+ "@cubejs-backend/linter": "1.7.34",
40
+ "@cubejs-backend/testing-shared": "1.7.34",
41
41
  "@types/jest": "^29",
42
42
  "jest": "^29",
43
43
  "typescript": "~5.2.2"
@@ -48,5 +48,5 @@
48
48
  "eslintConfig": {
49
49
  "extends": "../cubejs-linter"
50
50
  },
51
- "gitHead": "465fdf160665cf78e2bee9c964719a96e9a55d12"
51
+ "gitHead": "9237c26f3c6181fa6abe964ee784d4a997e89523"
52
52
  }
@@ -1,3 +0,0 @@
1
- export declare function transformRow(row: Record<string, unknown>, meta: any): void;
2
- export declare function transformStreamRow(row: Array<unknown>, names: Array<string>, types: Array<string>): Record<string, unknown>;
3
- //# sourceMappingURL=HydrationStream.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HydrationStream.d.ts","sourceRoot":"","sources":["../../src/HydrationStream.ts"],"names":[],"mappings":"AA4BA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,QAKnE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAY3H"}
@@ -1,74 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.transformStreamRow = exports.transformRow = void 0;
27
- const moment = __importStar(require("moment"));
28
- // ClickHouse returns DateTime as strings in format "YYYY-DD-MM HH:MM:SS"
29
- // cube.js expects them in format "YYYY-DD-MMTHH:MM:SS.000", so translate them based on the metadata returned
30
- //
31
- // ClickHouse returns some number types as js numbers, others as js string, normalise them all to strings
32
- function transformValue(type, value) {
33
- if (value !== null) {
34
- if (type.includes('DateTime64')) {
35
- return moment.utc(value).format(moment.HTML5_FMT.DATETIME_LOCAL_MS);
36
- }
37
- else if (type.includes('DateTime') /** Can be DateTime or DateTime('timezone') */) {
38
- // expect DateTime to always be string
39
- const valueStr = value;
40
- return `${valueStr.substring(0, 10)}T${valueStr.substring(11, 22)}.000`;
41
- }
42
- else if (type.includes('Date')) {
43
- return `${value}T00:00:00.000`;
44
- }
45
- else if (type.includes('Int')
46
- || type.includes('Float')
47
- || type.includes('Decimal')) {
48
- // convert all numbers into strings
49
- return `${value}`;
50
- }
51
- }
52
- return value;
53
- }
54
- function transformRow(row, meta) {
55
- for (const [fieldName, value] of Object.entries(row)) {
56
- const metaForField = meta[fieldName];
57
- row[fieldName] = transformValue(metaForField.type, value);
58
- }
59
- }
60
- exports.transformRow = transformRow;
61
- function transformStreamRow(row, names, types) {
62
- if (row.length !== names.length) {
63
- throw new Error(`Unexpected row and names/types length mismatch; row ${row.length} vs names ${names.length}`);
64
- }
65
- return row.reduce((rowObj, value, idx) => {
66
- const name = names[idx];
67
- const type = types[idx];
68
- rowObj[name] = transformValue(type, value);
69
- return rowObj;
70
- // TODO do we actually want Object.create(null) safety? or is it ok to use {}
71
- }, Object.create(null));
72
- }
73
- exports.transformStreamRow = transformStreamRow;
74
- //# sourceMappingURL=HydrationStream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HydrationStream.js","sourceRoot":"","sources":["../../src/HydrationStream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAEjC,0EAA0E;AAC1E,8GAA8G;AAC9G,EAAE;AACF,0GAA0G;AAC1G,SAAS,cAAc,CAAC,IAAY,EAAE,KAAc;IAClD,IAAI,KAAK,KAAK,IAAI,EAAE;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;SACrE;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,8CAA8C,EAAE;YACnF,sCAAsC;YACtC,MAAM,QAAQ,GAAG,KAAe,CAAC;YACjC,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;SACzE;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAChC,OAAO,GAAG,KAAK,eAAe,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;eAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;eACtB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC3B;YACA,mCAAmC;YACnC,OAAO,GAAG,KAAK,EAAE,CAAC;SACnB;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,YAAY,CAAC,GAA4B,EAAE,IAAS;IAClE,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,GAAG,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC3D;AACH,CAAC;AALD,oCAKC;AAED,SAAgB,kBAAkB,CAAC,GAAmB,EAAE,KAAoB,EAAE,KAAoB;IAChG,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,uDAAuD,GAAG,CAAC,MAAM,aAAa,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;KAC/G;IAED,OAAO,GAAG,CAAC,MAAM,CAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAChE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC;QACd,6EAA6E;IAC/E,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,CAAC;AAZD,gDAYC"}