@hypequery/clickhouse 0.2.1

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 (61) hide show
  1. package/README-CLI.md +123 -0
  2. package/README.md +276 -0
  3. package/dist/cli/bin.js +151 -0
  4. package/dist/cli/generate-types.d.ts +5 -0
  5. package/dist/cli/generate-types.js +91 -0
  6. package/dist/cli/index.d.ts +2 -0
  7. package/dist/cli/index.js +2 -0
  8. package/dist/core/connection.d.ts.map +1 -0
  9. package/dist/core/connection.js +34 -0
  10. package/dist/core/cross-filter.d.ts.map +1 -0
  11. package/dist/core/cross-filter.js +218 -0
  12. package/dist/core/features/aggregations.d.ts.map +1 -0
  13. package/dist/core/features/aggregations.js +35 -0
  14. package/dist/core/features/analytics.d.ts.map +1 -0
  15. package/dist/core/features/analytics.js +35 -0
  16. package/dist/core/features/executor.d.ts.map +1 -0
  17. package/dist/core/features/executor.js +136 -0
  18. package/dist/core/features/filtering.d.ts.map +1 -0
  19. package/dist/core/features/filtering.js +30 -0
  20. package/dist/core/features/joins.d.ts.map +1 -0
  21. package/dist/core/features/joins.js +16 -0
  22. package/dist/core/features/pagination.d.ts.map +1 -0
  23. package/dist/core/features/pagination.js +190 -0
  24. package/dist/core/features/query-modifiers.d.ts.map +1 -0
  25. package/dist/core/features/query-modifiers.js +50 -0
  26. package/dist/core/formatters/sql-formatter.d.ts.map +1 -0
  27. package/dist/core/formatters/sql-formatter.js +69 -0
  28. package/dist/core/join-relationships.d.ts.map +1 -0
  29. package/dist/core/join-relationships.js +56 -0
  30. package/dist/core/query-builder.d.ts.map +1 -0
  31. package/dist/core/query-builder.js +372 -0
  32. package/dist/core/tests/index.d.ts.map +1 -0
  33. package/dist/core/tests/index.js +1 -0
  34. package/dist/core/tests/integration/setup.d.ts.map +1 -0
  35. package/dist/core/tests/integration/setup.js +274 -0
  36. package/dist/core/tests/test-utils.d.ts.map +1 -0
  37. package/dist/core/tests/test-utils.js +32 -0
  38. package/dist/core/utils/logger.d.ts.map +1 -0
  39. package/dist/core/utils/logger.js +98 -0
  40. package/dist/core/utils/sql-expressions.d.ts.map +1 -0
  41. package/dist/core/utils/sql-expressions.js +73 -0
  42. package/dist/core/utils.d.ts.map +1 -0
  43. package/dist/core/utils.js +29 -0
  44. package/dist/core/validators/filter-validator.d.ts.map +1 -0
  45. package/dist/core/validators/filter-validator.js +19 -0
  46. package/dist/core/validators/value-validator.d.ts.map +1 -0
  47. package/dist/core/validators/value-validator.js +47 -0
  48. package/dist/formatters/index.d.ts.map +1 -0
  49. package/dist/formatters/index.js +1 -0
  50. package/dist/index.d.ts +33 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +5 -0
  53. package/dist/types/base.d.ts.map +1 -0
  54. package/dist/types/base.js +1 -0
  55. package/dist/types/clickhouse-types.d.ts.map +1 -0
  56. package/dist/types/clickhouse-types.js +1 -0
  57. package/dist/types/filters.d.ts.map +1 -0
  58. package/dist/types/filters.js +1 -0
  59. package/dist/types/index.d.ts.map +1 -0
  60. package/dist/types/index.js +2 -0
  61. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/core/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC1C,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;CACtC;AAED,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,UAAU,CAAC,CAA0B;IAC7C,OAAO,CAAC,gBAAgB,CAAuD;IAE/E,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,MAAM;IAO5B,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMvC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,IAAI;IAoBhF,OAAO,CAAC,SAAS;IAMjB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM5C,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;CAmC9B;AAED,eAAO,MAAM,MAAM,QAAuB,CAAC"}
@@ -0,0 +1,98 @@
1
+ class Logger {
2
+ constructor() {
3
+ this.level = 'info';
4
+ this.enabled = true;
5
+ this.querySubscribers = new Map();
6
+ }
7
+ static getInstance() {
8
+ if (!Logger.instance) {
9
+ Logger.instance = new Logger();
10
+ }
11
+ return Logger.instance;
12
+ }
13
+ configure(options) {
14
+ if (options.level)
15
+ this.level = options.level;
16
+ if (options.enabled !== undefined)
17
+ this.enabled = options.enabled;
18
+ if (options.onQueryLog)
19
+ this.onQueryLog = options.onQueryLog;
20
+ }
21
+ subscribeToQuery(queryId, callback) {
22
+ if (!this.querySubscribers.has(queryId)) {
23
+ this.querySubscribers.set(queryId, []);
24
+ }
25
+ this.querySubscribers.get(queryId).push(callback);
26
+ return () => {
27
+ const subscribers = this.querySubscribers.get(queryId);
28
+ if (subscribers) {
29
+ const index = subscribers.indexOf(callback);
30
+ if (index > -1) {
31
+ subscribers.splice(index, 1);
32
+ }
33
+ if (subscribers.length === 0) {
34
+ this.querySubscribers.delete(queryId);
35
+ }
36
+ }
37
+ };
38
+ }
39
+ shouldLog(level) {
40
+ if (!this.enabled)
41
+ return false;
42
+ const levels = ['debug', 'info', 'warn', 'error'];
43
+ return levels.indexOf(level) >= levels.indexOf(this.level);
44
+ }
45
+ debug(message, ...args) {
46
+ if (this.shouldLog('debug')) {
47
+ console.debug(`[HypeQuery Debug] ${message}`, ...args);
48
+ }
49
+ }
50
+ info(message, ...args) {
51
+ if (this.shouldLog('info')) {
52
+ console.info(`[HypeQuery Info] ${message}`, ...args);
53
+ }
54
+ }
55
+ warn(message, ...args) {
56
+ if (this.shouldLog('warn')) {
57
+ console.warn(`[HypeQuery Warn] ${message}`, ...args);
58
+ }
59
+ }
60
+ error(message, ...args) {
61
+ if (this.shouldLog('error')) {
62
+ console.error(`[HypeQuery Error] ${message}`, ...args);
63
+ }
64
+ }
65
+ logQuery(log) {
66
+ if (this.onQueryLog) {
67
+ this.onQueryLog(log);
68
+ }
69
+ if (log.queryId) {
70
+ const subscribers = this.querySubscribers.get(log.queryId);
71
+ if (subscribers) {
72
+ subscribers.forEach(callback => callback(log));
73
+ }
74
+ }
75
+ if (!this.enabled)
76
+ return;
77
+ const { query, parameters, duration, status, error, rowCount } = log;
78
+ const message = `Query ${status}: ${query}`;
79
+ const details = {
80
+ parameters,
81
+ duration: duration ? `${duration}ms` : undefined,
82
+ rowCount,
83
+ error: error?.message
84
+ };
85
+ switch (status) {
86
+ case 'started':
87
+ this.debug(message, details);
88
+ break;
89
+ case 'completed':
90
+ this.info(message, details);
91
+ break;
92
+ case 'error':
93
+ this.error(message, details);
94
+ break;
95
+ }
96
+ }
97
+ }
98
+ export const logger = Logger.getInstance();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-expressions.d.ts","sourceRoot":"","sources":["../../../src/core/utils/sql-expressions.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,IAAI,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,MAAM,EAAE,oBAAoB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAK9C;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAMnE;AAID;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,iBAAiB,CAI3F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,iBAAiB,CAI/G;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,iBAAiB,CAIpH;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,iBAAiB,CAK7K"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Creates a raw SQL expression
3
+ * @param sql The SQL expression string
4
+ * @returns A SqlExpression object
5
+ */
6
+ export function raw(sql) {
7
+ return {
8
+ __type: 'expression',
9
+ toSql: () => sql
10
+ };
11
+ }
12
+ /**
13
+ * Creates an aliased SQL expression for use in SELECT clauses
14
+ * @param sql The SQL expression string
15
+ * @param alias The alias to use for the expression
16
+ * @returns An AliasedExpression object
17
+ */
18
+ export function rawAs(sql, alias) {
19
+ return {
20
+ __type: 'aliased_expression',
21
+ alias,
22
+ toSql: () => `${sql} AS ${alias}`
23
+ };
24
+ }
25
+ // Helper for common ClickHouse functions
26
+ /**
27
+ * Converts a value to DateTime format
28
+ * @param field The field or expression to convert
29
+ * @param alias Optional alias for the result
30
+ * @returns SQL expression or aliased expression
31
+ */
32
+ export function toDateTime(field, alias) {
33
+ return alias
34
+ ? rawAs(`toDateTime(${field})`, alias)
35
+ : raw(`toDateTime(${field})`);
36
+ }
37
+ /**
38
+ * Formats a DateTime value using the specified format
39
+ * @param field The field or expression to format
40
+ * @param format The date format string
41
+ * @param alias Optional alias for the result
42
+ * @returns SQL expression or aliased expression
43
+ */
44
+ export function formatDateTime(field, format, alias) {
45
+ return alias
46
+ ? rawAs(`formatDateTime(${field}, '${format}')`, alias)
47
+ : raw(`formatDateTime(${field}, '${format}')`);
48
+ }
49
+ /**
50
+ * Truncates a date/time value to the start of the specified interval
51
+ * @param field The field to truncate
52
+ * @param interval The interval (e.g., '1 day', '15 minute')
53
+ * @param alias Optional alias for the result
54
+ * @returns SQL expression or aliased expression
55
+ */
56
+ export function toStartOfInterval(field, interval, alias) {
57
+ return alias
58
+ ? rawAs(`toStartOfInterval(${field}, INTERVAL ${interval})`, alias)
59
+ : raw(`toStartOfInterval(${field}, INTERVAL ${interval})`);
60
+ }
61
+ /**
62
+ * Extracts the specified part from a date/time value
63
+ * @param part The part to extract (year, month, day, etc.)
64
+ * @param field The field to extract from
65
+ * @param alias Optional alias for the result
66
+ * @returns SQL expression or aliased expression
67
+ */
68
+ export function datePart(part, field, alias) {
69
+ const functionName = `to${part.charAt(0).toUpperCase() + part.slice(1)}`;
70
+ return alias
71
+ ? rawAs(`${functionName}(${field})`, alias)
72
+ : raw(`${functionName}(${field})`);
73
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAa9C;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAavE"}
@@ -0,0 +1,29 @@
1
+ export function escapeValue(value) {
2
+ if (typeof value === 'boolean') {
3
+ return value ? 'true' : 'false';
4
+ }
5
+ else if (typeof value === 'number') {
6
+ return value.toString();
7
+ }
8
+ else if (typeof value === 'string') {
9
+ return `'${value.replace(/'/g, "''")}'`;
10
+ }
11
+ else if (value instanceof Date) {
12
+ return `'${value.toISOString()}'`;
13
+ }
14
+ else {
15
+ return `'${JSON.stringify(value)}'`;
16
+ }
17
+ }
18
+ export function substituteParameters(sql, params) {
19
+ const parts = sql.split('?');
20
+ if (parts.length - 1 !== params.length) {
21
+ throw new Error(`Mismatch between placeholders and parameters. Found ${parts.length - 1} placeholders but ${params.length} parameters.`);
22
+ }
23
+ let substitutedSql = '';
24
+ for (let i = 0; i < params.length; i++) {
25
+ substitutedSql += parts[i] + escapeValue(params[i]);
26
+ }
27
+ substitutedSql += parts[parts.length - 1];
28
+ return substitutedSql;
29
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-validator.d.ts","sourceRoot":"","sources":["../../../src/core/validators/filter-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAG/E,qBAAa,eAAe;IAC1B,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,GAAG,EACpC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAClC,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GACpC,IAAI;IAgBP,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAGrD"}
@@ -0,0 +1,19 @@
1
+ import { ValueValidator } from './value-validator';
2
+ export class FilterValidator {
3
+ static validateFilterCondition(condition, columnType, options = {}) {
4
+ const { column, operator, value } = condition;
5
+ const columnName = String(column);
6
+ // Validate value is not null/undefined unless explicitly allowed
7
+ if (!options.allowNull && (value === null || value === undefined)) {
8
+ throw new Error(`Filter value for column '${columnName}' cannot be null/undefined`);
9
+ }
10
+ // Skip type validation if no columnType provided (e.g., for joined columns)
11
+ if (!columnType)
12
+ return;
13
+ // Delegate to value validator for type checking
14
+ ValueValidator.validateFilterValue(columnType, operator, value, columnName);
15
+ }
16
+ static validateJoinedColumn(column) {
17
+ return column.includes('.');
18
+ }
19
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-validator.d.ts","sourceRoot":"","sources":["../../../src/core/validators/value-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,cAAc;IACzB,MAAM,CAAC,mBAAmB,CACxB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,GAAG,EACV,UAAU,EAAE,MAAM,GACjB,IAAI;IAqBP,OAAO,CAAC,MAAM,CAAC,mBAAmB;CA4BnC"}
@@ -0,0 +1,47 @@
1
+ export class ValueValidator {
2
+ static validateFilterValue(columnType, operator, value, columnName) {
3
+ if (operator === 'in' || operator === 'notIn') {
4
+ if (!Array.isArray(value)) {
5
+ throw new Error(`Operator '${operator}' requires an array value`);
6
+ }
7
+ value.forEach((v) => this.validateSingleValue(columnType, v, columnName));
8
+ return;
9
+ }
10
+ if (operator === 'between') {
11
+ if (!Array.isArray(value) || value.length !== 2) {
12
+ throw new Error(`Operator 'between' requires an array with exactly two values`);
13
+ }
14
+ value.forEach((v) => this.validateSingleValue(columnType, v, columnName));
15
+ return;
16
+ }
17
+ if ((operator === 'like' || operator === 'notLike') && typeof value !== 'string') {
18
+ throw new Error(`Operator '${operator}' requires a string value`);
19
+ }
20
+ this.validateSingleValue(columnType, value, columnName);
21
+ }
22
+ static validateSingleValue(columnType, value, columnName) {
23
+ if (value === null)
24
+ return;
25
+ switch (columnType) {
26
+ case 'Date':
27
+ if (!(value instanceof Date) && typeof value !== 'string') {
28
+ throw new Error(`Invalid date value for column '${columnName}'`);
29
+ }
30
+ break;
31
+ case 'Int32':
32
+ case 'Int64':
33
+ case 'Float64':
34
+ if (typeof value !== 'number') {
35
+ throw new Error(`Invalid numeric value for column '${columnName}'`);
36
+ }
37
+ break;
38
+ case 'String':
39
+ if (typeof value !== 'string') {
40
+ throw new Error(`Invalid string value for column '${columnName}'`);
41
+ }
42
+ break;
43
+ default:
44
+ break;
45
+ }
46
+ }
47
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Main ClickHouse connection class
3
+ */
4
+ export declare class ClickHouseConnection {
5
+ static client: any;
6
+ static config: any;
7
+
8
+ /**
9
+ * Initialize the connection with configuration
10
+ */
11
+ static initialize(config: {
12
+ host: string;
13
+ username: string;
14
+ password: string;
15
+ database: string;
16
+ }): typeof ClickHouseConnection;
17
+
18
+ /**
19
+ * Get the ClickHouse client instance
20
+ */
21
+ static getClient(): any;
22
+
23
+ /**
24
+ * Get the current configuration
25
+ */
26
+ static getConfig(): any;
27
+ }
28
+
29
+ /**
30
+ * Generates TypeScript type definitions from ClickHouse schema
31
+ * @param outputPath - Path where the type definitions will be written
32
+ */
33
+ export declare function generateTypes(outputPath: string): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,eAAe,EACf,QAAQ,EACR,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,GAAG,EACH,KAAK,EACL,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACT,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,aAAa,EACb,iBAAiB,EAClB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ // Main entry point
2
+ export { ClickHouseConnection } from './core/connection.js';
3
+
4
+ // CLI exports
5
+ export { generateTypes } from './cli/generate-types.js';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,MAAM;IACpC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,SAAS,EAAE,cAAc,CAAC;KAC3B,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AACrC,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CACxE,CAAC;AAGF,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AAGxC,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,GAAG,CAAC;IACX,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI;KAC/B,KAAK,IAAI,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE;CAC7E,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC;AAG7C,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,OAAO,IACrH,SAAS,SAAS,IAAI,GACpB;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM;CAAE,GACzD,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,YAAY,GAAG,MAAM,CAAC,CAAC,SAAS,SAAS,GAAG,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,GACvF,MAAM,CAAC,CAAC,SAAS,SAAS,GAAG,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAE7E,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,SAAS,EAAE,cAAc,CAAC;KAC3B,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ,CAAC;CACpB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickhouse-types.d.ts","sourceRoot":"","sources":["../../src/types/clickhouse-types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,iBAAiB,GACzB,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAC1D,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GACzB,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GACvD,WAAW,MAAM,KAAK,MAAM,GAAG,CAAC;AAGpC,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GAAG,QAAQ,GACjB,UAAU,GACV,cAAc,MAAM,GAAG,GACvB,cAAc,MAAM,MAAM,MAAM,IAAI,CAAC;AAGzC,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,eAAe,MAAM,GAAG,GACxB,MAAM,CAAC;AAGX,MAAM,MAAM,eAAe,GAAG,SAAS,kBAAkB,GAAG,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,YAAY,kBAAkB,GAAG,CAAC;AACnE,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,gBAAgB,GAAG,CAAC;AAC7E,MAAM,MAAM,aAAa,GAAG,OAAO,kBAAkB,KAAK,kBAAkB,GAAG,CAAC;AAGhF,MAAM,MAAM,kBAAkB,GAC1B,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,CAAC;AAGrB,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,eAAe,GACf,kBAAkB,GAClB,wBAAwB,GACxB,aAAa,CAAC;AAGlB,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,cAAc,IACtD,CAAC,SAAS,iBAAiB,GAAG,MAAM,GACpC,CAAC,SAAS,eAAe,GAAG,MAAM,GAClC,CAAC,SAAS,iBAAiB,GAAG,MAAM,GACpC,CAAC,SAAS,kBAAkB,GAAG,IAAI,GACnC,CAAC,SAAS,gBAAgB,GAAG,MAAM,GACnC,CAAC,SAAS,SAAS,MAAM,CAAC,SAAS,kBAAkB,GAAG,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GACxF,CAAC,SAAS,YAAY,MAAM,CAAC,SAAS,kBAAkB,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,GAC3F,CAAC,SAAS,kBAAkB,MAAM,CAAC,SAAS,gBAAgB,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,GACxF,CAAC,SAAS,OAAO,MAAM,CAAC,SAAS,kBAAkB,KAAK,MAAM,CAAC,SAAS,kBAAkB,GAAG,GAC7F,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,GACnD,KAAK,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/types/filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './base';
2
+ export * from './filters';
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@hypequery/clickhouse",
3
+ "version": "0.2.1",
4
+ "description": "ClickHouse typescript query builder",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "scripts": {
9
+ "build": "npm run build:main && npm run build:cli && npm run fix-typedefs && npm run verify-build || npm run diagnose-ci",
10
+ "build:main": "tsc",
11
+ "build:cli": "node scripts/ensure-core-files.js && node scripts/create-bin-file.js && node scripts/handle-cli-files.js",
12
+ "build:ci": "npm run build:main && node scripts/create-bin-file.js && node scripts/ensure-core-files.js && node scripts/handle-cli-files.js && npm run fix-typedefs && npm run verify-build || npm run diagnose-ci",
13
+ "fix-typedefs": "node scripts/fix-typedefs.js",
14
+ "verify-build": "node scripts/verify-build.js",
15
+ "diagnose-ci": "node scripts/diagnose-ci.js",
16
+ "dev": "tsc --watch",
17
+ "test": "npm run test:unit",
18
+ "test:unit": "jest --testPathIgnorePatterns='integration'",
19
+ "test:watch": "jest --testPathIgnorePatterns='integration' --watch",
20
+ "test:coverage": "jest --coverage",
21
+ "test:cli": "node scripts/test-cli-integration.js",
22
+ "lint": "eslint src/**/*.ts",
23
+ "semantic-release": "npx semantic-release",
24
+ "release": "npx semantic-release --extends ./.releaserc.cjs --no-ci"
25
+ },
26
+ "bin": {
27
+ "hypequery-generate-types": "./dist/cli/bin.js"
28
+ },
29
+ "files": [
30
+ "dist",
31
+ "README-CLI.md"
32
+ ],
33
+ "dependencies": {
34
+ "@clickhouse/client-web": "^0.2.0",
35
+ "dotenv": "^16.0.0"
36
+ },
37
+ "devDependencies": {
38
+ "@semantic-release/changelog": "^6.0.3",
39
+ "@semantic-release/commit-analyzer": "^11.1.0",
40
+ "@semantic-release/git": "^10.0.1",
41
+ "@semantic-release/github": "^9.2.6",
42
+ "@semantic-release/npm": "^11.0.2",
43
+ "@semantic-release/release-notes-generator": "^12.1.0",
44
+ "@types/jest": "^29.5.11",
45
+ "@types/node": "^18.19.80",
46
+ "jest": "^29.7.0",
47
+ "semantic-release": "^23.0.2",
48
+ "ts-jest": "^29.1.1",
49
+ "ts-node": "^10.9.0",
50
+ "typescript": "^5.7.3"
51
+ },
52
+ "ts-node": {
53
+ "esm": true,
54
+ "experimentalSpecifiers": true
55
+ },
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "https://github.com/lureilly1/hypequery.git"
59
+ },
60
+ "homepage": "https://hypequery.dev",
61
+ "bugs": {
62
+ "url": "https://github.com/lureilly1/hypequery/issues"
63
+ },
64
+ "publishConfig": {
65
+ "access": "public"
66
+ }
67
+ }