@hypequery/clickhouse 1.4.0-beta.2 → 1.5.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 (127) hide show
  1. package/README.md +65 -2
  2. package/dist/cli/bin.js +65 -23
  3. package/dist/cli/generate-types.js +42 -4
  4. package/dist/core/cache/cache-manager.d.ts +4 -0
  5. package/dist/core/cache/cache-manager.d.ts.map +1 -0
  6. package/dist/core/cache/cache-manager.js +176 -0
  7. package/dist/core/cache/controller.d.ts +15 -0
  8. package/dist/core/cache/controller.d.ts.map +1 -0
  9. package/dist/core/cache/controller.js +58 -0
  10. package/dist/core/cache/key.d.ts +11 -0
  11. package/dist/core/cache/key.d.ts.map +1 -0
  12. package/dist/core/cache/key.js +26 -0
  13. package/dist/core/cache/providers/memory-lru.d.ts +31 -0
  14. package/dist/core/cache/providers/memory-lru.d.ts.map +1 -0
  15. package/dist/core/cache/providers/memory-lru.js +156 -0
  16. package/dist/core/cache/providers/noop.d.ts +7 -0
  17. package/dist/core/cache/providers/noop.d.ts.map +1 -0
  18. package/dist/core/cache/providers/noop.js +11 -0
  19. package/dist/core/cache/runtime-context.d.ts +30 -0
  20. package/dist/core/cache/runtime-context.d.ts.map +1 -0
  21. package/dist/core/cache/runtime-context.js +58 -0
  22. package/dist/core/cache/serialization.d.ts +6 -0
  23. package/dist/core/cache/serialization.d.ts.map +1 -0
  24. package/dist/core/cache/serialization.js +166 -0
  25. package/dist/core/cache/types.d.ts +52 -0
  26. package/dist/core/cache/types.d.ts.map +1 -0
  27. package/dist/core/cache/types.js +1 -0
  28. package/dist/core/cache/utils.d.ts +9 -0
  29. package/dist/core/cache/utils.d.ts.map +1 -0
  30. package/dist/core/cache/utils.js +30 -0
  31. package/dist/core/connection.d.ts.map +1 -1
  32. package/dist/core/connection.js +4 -3
  33. package/dist/core/cross-filter.d.ts +12 -9
  34. package/dist/core/cross-filter.d.ts.map +1 -1
  35. package/dist/core/cross-filter.js +9 -6
  36. package/dist/core/env/auto-client.browser.d.ts +3 -0
  37. package/dist/core/env/auto-client.browser.d.ts.map +1 -0
  38. package/dist/core/env/auto-client.browser.js +3 -0
  39. package/dist/core/env/auto-client.d.ts +9 -0
  40. package/dist/core/env/auto-client.d.ts.map +1 -0
  41. package/dist/core/env/auto-client.js +21 -0
  42. package/dist/core/features/aggregations.d.ts +18 -22
  43. package/dist/core/features/aggregations.d.ts.map +1 -1
  44. package/dist/core/features/aggregations.js +6 -6
  45. package/dist/core/features/analytics.d.ts +15 -19
  46. package/dist/core/features/analytics.d.ts.map +1 -1
  47. package/dist/core/features/analytics.js +2 -2
  48. package/dist/core/features/cross-filtering.d.ts +4 -24
  49. package/dist/core/features/cross-filtering.d.ts.map +1 -1
  50. package/dist/core/features/cross-filtering.js +0 -34
  51. package/dist/core/features/executor.d.ts +11 -9
  52. package/dist/core/features/executor.d.ts.map +1 -1
  53. package/dist/core/features/executor.js +14 -5
  54. package/dist/core/features/filtering.d.ts +32 -28
  55. package/dist/core/features/filtering.d.ts.map +1 -1
  56. package/dist/core/features/filtering.js +27 -26
  57. package/dist/core/features/joins.d.ts +7 -10
  58. package/dist/core/features/joins.d.ts.map +1 -1
  59. package/dist/core/features/query-modifiers.d.ts +18 -21
  60. package/dist/core/features/query-modifiers.d.ts.map +1 -1
  61. package/dist/core/formatters/sql-formatter.d.ts.map +1 -1
  62. package/dist/core/formatters/sql-formatter.js +6 -0
  63. package/dist/core/join-relationships.d.ts +2 -1
  64. package/dist/core/join-relationships.d.ts.map +1 -1
  65. package/dist/core/query-builder.d.ts +67 -84
  66. package/dist/core/query-builder.d.ts.map +1 -1
  67. package/dist/core/query-builder.js +165 -135
  68. package/dist/core/tests/integration/setup.d.ts +9 -1
  69. package/dist/core/tests/integration/setup.d.ts.map +1 -1
  70. package/dist/core/tests/integration/setup.js +56 -22
  71. package/dist/core/tests/integration/test-config.d.ts +2 -2
  72. package/dist/core/tests/integration/test-config.d.ts.map +1 -1
  73. package/dist/core/tests/integration/test-config.js +3 -4
  74. package/dist/core/tests/integration/test-data.json +190 -0
  75. package/dist/core/tests/test-utils.d.ts +18 -3
  76. package/dist/core/tests/test-utils.d.ts.map +1 -1
  77. package/dist/core/tests/test-utils.js +37 -10
  78. package/dist/core/types/builder-state.d.ts +25 -0
  79. package/dist/core/types/builder-state.d.ts.map +1 -0
  80. package/dist/core/types/builder-state.js +1 -0
  81. package/dist/core/types/select-types.d.ts +32 -0
  82. package/dist/core/types/select-types.d.ts.map +1 -0
  83. package/dist/core/types/select-types.js +1 -0
  84. package/dist/core/types/type-helpers.d.ts +5 -0
  85. package/dist/core/types/type-helpers.d.ts.map +1 -0
  86. package/dist/core/types/type-helpers.js +1 -0
  87. package/dist/core/utils/logger.d.ts +6 -0
  88. package/dist/core/utils/logger.d.ts.map +1 -1
  89. package/dist/core/utils/logger.js +7 -2
  90. package/dist/core/utils/predicate-builder.d.ts +29 -0
  91. package/dist/core/utils/predicate-builder.d.ts.map +1 -0
  92. package/dist/core/utils/predicate-builder.js +92 -0
  93. package/dist/core/utils/sql-expressions.d.ts +24 -10
  94. package/dist/core/utils/sql-expressions.d.ts.map +1 -1
  95. package/dist/core/utils/sql-expressions.js +7 -30
  96. package/dist/core/utils/streaming-helpers.d.ts +2 -0
  97. package/dist/core/utils/streaming-helpers.d.ts.map +1 -0
  98. package/dist/core/utils/streaming-helpers.js +137 -0
  99. package/dist/core/validators/filter-validator.d.ts +2 -1
  100. package/dist/core/validators/filter-validator.d.ts.map +1 -1
  101. package/dist/core/validators/value-validator.d.ts +2 -1
  102. package/dist/core/validators/value-validator.d.ts.map +1 -1
  103. package/dist/index.d.ts +11 -4
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +4 -0
  106. package/dist/types/base.d.ts +10 -37
  107. package/dist/types/base.d.ts.map +1 -1
  108. package/dist/types/clickhouse-types.d.ts +9 -4
  109. package/dist/types/clickhouse-types.d.ts.map +1 -1
  110. package/dist/types/filters.d.ts +1 -1
  111. package/dist/types/filters.d.ts.map +1 -1
  112. package/dist/types/index.d.ts +2 -0
  113. package/dist/types/index.d.ts.map +1 -1
  114. package/dist/types/index.js +2 -0
  115. package/dist/types/schema.d.ts +19 -0
  116. package/dist/types/schema.d.ts.map +1 -0
  117. package/dist/types/schema.js +1 -0
  118. package/package.json +21 -23
  119. package/dist/core/features/pagination.d.ts +0 -23
  120. package/dist/core/features/pagination.d.ts.map +0 -1
  121. package/dist/core/features/pagination.js +0 -192
  122. package/dist/core/tests/integration/pagination-test-tbc.d.ts +0 -2
  123. package/dist/core/tests/integration/pagination-test-tbc.d.ts.map +0 -1
  124. package/dist/core/tests/integration/pagination-test-tbc.js +0 -189
  125. package/dist/core/tests/integration/test-initializer.d.ts +0 -7
  126. package/dist/core/tests/integration/test-initializer.d.ts.map +0 -1
  127. package/dist/core/tests/integration/test-initializer.js +0 -32
@@ -1,12 +1,24 @@
1
1
  import { CrossFilter } from './cross-filter.js';
2
- import { ColumnType, FilterOperator, OrderDirection, TableColumn, AggregationType, QueryConfig, OperatorValueMap, InferColumnType, PaginationOptions, PaginatedResult } from '../types/index.js';
2
+ import { FilterOperator, OperatorValueMap, OrderDirection, QueryConfig } from '../types/index.js';
3
+ import { AnySchema } from '../types/schema.js';
3
4
  import { SQLFormatter } from './formatters/sql-formatter.js';
5
+ import { ExecutorFeature } from './features/executor.js';
4
6
  import { JoinRelationships, JoinPathOptions } from './join-relationships.js';
5
- import { SqlExpression } from './utils/sql-expressions.js';
7
+ import { PredicateBuilder, PredicateExpression } from './utils/predicate-builder.js';
6
8
  import type { ClickHouseSettings, BaseClickHouseClientConfigOptions } from '@clickhouse/client-common';
7
9
  import type { ClickHouseClient as NodeClickHouseClient } from '@clickhouse/client';
8
10
  import type { ClickHouseClient as WebClickHouseClient } from '@clickhouse/client-web';
11
+ import type { CacheOptions, CacheConfig } from './cache/types.js';
12
+ import type { QueryRuntimeContext } from './cache/runtime-context.js';
13
+ import type { BuilderState, AnyBuilderState, SchemaDefinition, InitialState, UpdateOutput, WidenTables, AppendToOutput, BaseRow, AddAlias } from './types/builder-state.js';
14
+ import { SelectableItem, SelectableColumn, SelectionResult, ColumnSelectionValue } from './types/select-types.js';
15
+ type WhereColumn<State extends AnyBuilderState> = SelectableColumn<State>;
16
+ type ColumnOperatorValue<Schema extends SchemaDefinition<Schema>, State extends BuilderState<Schema, string, any, keyof Schema, Partial<Record<string, keyof Schema>>>, Column extends WhereColumn<State>, Op extends keyof OperatorValueMap<any, Schema>> = OperatorValueMap<ColumnSelectionValue<State, Column>, Schema>[Op];
9
17
  type ClickHouseClient = NodeClickHouseClient | WebClickHouseClient;
18
+ export interface ExecuteOptions {
19
+ queryId?: string;
20
+ cache?: CacheOptions | false;
21
+ }
10
22
  /**
11
23
  * Configuration for client-based connections.
12
24
  */
@@ -25,21 +37,13 @@ export type ClickHouseConfig = BaseClickHouseClientConfigOptions | ClickHouseCli
25
37
  export declare function isClientConfig(config: ClickHouseConfig): config is ClickHouseClientConfig;
26
38
  /**
27
39
  * A type-safe query builder for ClickHouse databases.
28
- * @template Schema - The full database schema
29
- * @template T - The schema type of the current table
30
- * @template HasSelect - Whether a SELECT clause has been applied
31
- * @template Aggregations - The type of any aggregation functions applied
40
+ * The builder carries a single state object that encodes scope, output, and schema metadata.
32
41
  */
33
- export declare class QueryBuilder<Schema extends {
34
- [K in keyof Schema]: {
35
- [columnName: string]: ColumnType;
36
- };
37
- }, T, HasSelect extends boolean = false, Aggregations = {}, OriginalT = T> {
42
+ export declare class QueryBuilder<Schema extends SchemaDefinition<Schema>, State extends BuilderState<Schema, string, any, keyof Schema, Partial<Record<string, keyof Schema>>>> {
38
43
  private static relationships;
39
44
  private config;
40
45
  private tableName;
41
- private schema;
42
- private originalSchema;
46
+ private state;
43
47
  private formatter;
44
48
  private aggregations;
45
49
  private joins;
@@ -47,15 +51,14 @@ export declare class QueryBuilder<Schema extends {
47
51
  private analytics;
48
52
  private executor;
49
53
  private modifiers;
50
- private pagination;
51
54
  private crossFiltering;
52
- constructor(tableName: string, schema: {
53
- name: string;
54
- columns: T;
55
- }, originalSchema: Schema);
55
+ private runtime;
56
+ private cacheOptions?;
57
+ constructor(tableName: string, state: State, runtime: QueryRuntimeContext);
58
+ private fork;
56
59
  debug(): this;
57
- clone(): QueryBuilder<Schema, T, HasSelect, Aggregations, OriginalT>;
58
- withCTE(alias: string, subquery: QueryBuilder<any, any> | string): this;
60
+ cache(options: CacheOptions | false): this;
61
+ withCTE(alias: string, subquery: QueryBuilder<any, AnyBuilderState> | string): this;
59
62
  /**
60
63
  * Groups results by a time interval using a specified ClickHouse function.
61
64
  *
@@ -68,7 +71,7 @@ export declare class QueryBuilder<Schema extends {
68
71
  * 'toStartOfDay', 'toStartOfWeek', 'toStartOfMonth', 'toStartOfQuarter', and 'toStartOfYear'.
69
72
  * @returns The current QueryBuilder instance.
70
73
  */
71
- groupByTimeInterval(column: keyof T | TableColumn<Schema>, interval: string, method?: 'toStartOfInterval' | 'toStartOfMinute' | 'toStartOfHour' | 'toStartOfDay' | 'toStartOfWeek' | 'toStartOfMonth' | 'toStartOfQuarter' | 'toStartOfYear'): this;
74
+ groupByTimeInterval(column: SelectableColumn<State>, interval: string, method?: 'toStartOfInterval' | 'toStartOfMinute' | 'toStartOfHour' | 'toStartOfDay' | 'toStartOfWeek' | 'toStartOfMonth' | 'toStartOfQuarter' | 'toStartOfYear'): this;
72
75
  raw(sql: string): this;
73
76
  settings(opts: ClickHouseSettings): this;
74
77
  /**
@@ -77,39 +80,45 @@ export declare class QueryBuilder<Schema extends {
77
80
  * @param crossFilter - An instance of CrossFilter containing shared filter conditions.
78
81
  * @returns The current QueryBuilder instance.
79
82
  */
80
- applyCrossFilters(crossFilter: CrossFilter<Schema, keyof Schema>): this;
83
+ applyCrossFilters<TableName extends Extract<keyof Schema, string>>(crossFilter: CrossFilter<Schema, TableName>): this;
84
+ applyCrossFilters(crossFilter: CrossFilter<AnySchema, string>): this;
81
85
  /**
82
86
  * Selects specific columns from the table.
83
87
  * @template K - The keys/columns to select
84
- * @param {K[]} columns - Array of column names to select
88
+ * @param {K[] | '*'} columnsOrAsterisk - Array of column names to select or '*' for all columns
85
89
  * @returns {QueryBuilder} A new QueryBuilder instance with updated types
86
90
  * @example
87
91
  * ```ts
88
92
  * builder.select(['id', 'name'])
93
+ * builder.select('*')
89
94
  * ```
90
95
  */
91
- select<K extends keyof T | TableColumn<Schema> | SqlExpression>(columns: K[]): QueryBuilder<Schema, {
92
- [P in Extract<K, keyof T | TableColumn<Schema>> as P extends `${string}.${infer C}` ? C : P]: P extends keyof T ? (T[P] extends "String" ? string : T[P] extends "Date" ? Date : T[P] extends "Float64" | "Int32" | "Int64" ? number : never) : string;
93
- }, true, Aggregations, OriginalT>;
94
- sum<Column extends keyof OriginalT, Alias extends string = `${Column & string}_sum`>(column: Column, alias?: Alias): QueryBuilder<Schema, AggregationType<T, Aggregations, Column, Alias, 'sum', HasSelect>, true, {}, OriginalT>;
95
- count<Column extends keyof OriginalT, Alias extends string = `${Column & string}_count`>(column: Column, alias?: Alias): QueryBuilder<Schema, AggregationType<T, Aggregations, Column, Alias, 'count', HasSelect>, true, {}, OriginalT>;
96
- avg<Column extends keyof OriginalT, Alias extends string = `${Column & string}_avg`>(column: Column, alias?: Alias): QueryBuilder<Schema, AggregationType<T, Aggregations, Column, Alias, 'avg', HasSelect>, true, {}, OriginalT>;
97
- min<Column extends keyof OriginalT, Alias extends string = `${Column & string}_min`>(column: Column, alias?: Alias): QueryBuilder<Schema, AggregationType<T, Aggregations, Column, Alias, 'min', HasSelect>, true, {}, OriginalT>;
98
- max<Column extends keyof OriginalT, Alias extends string = `${Column & string}_max`>(column: Column, alias?: Alias): QueryBuilder<Schema, AggregationType<T, Aggregations, Column, Alias, 'max', HasSelect>, true, {}, OriginalT>;
96
+ select(columnsOrAsterisk: '*'): QueryBuilder<Schema, UpdateOutput<State, BaseRow<State>>>;
97
+ select<Selections extends ReadonlyArray<SelectableItem<State>>>(columnsOrAsterisk: Selections): QueryBuilder<Schema, UpdateOutput<State, SelectionResult<State, Selections[number]>>>;
98
+ selectConst<Selections extends ReadonlyArray<SelectableItem<State>>>(...columns: Selections): QueryBuilder<Schema, UpdateOutput<State, SelectionResult<State, Selections[number]>>>;
99
+ sum<Column extends keyof BaseRow<State>, Alias extends string = `${Column & string}_sum`>(column: Column, alias?: Alias): QueryBuilder<Schema, AppendToOutput<State, Record<Alias, string>>>;
100
+ count<Column extends keyof BaseRow<State>, Alias extends string = `${Column & string}_count`>(column: Column, alias?: Alias): QueryBuilder<Schema, AppendToOutput<State, Record<Alias, string>>>;
101
+ avg<Column extends keyof BaseRow<State>, Alias extends string = `${Column & string}_avg`>(column: Column, alias?: Alias): QueryBuilder<Schema, AppendToOutput<State, Record<Alias, string>>>;
102
+ min<Column extends keyof BaseRow<State>, Alias extends string = `${Column & string}_min`>(column: Column, alias?: Alias): QueryBuilder<Schema, AppendToOutput<State, Record<Alias, string>>>;
103
+ max<Column extends keyof BaseRow<State>, Alias extends string = `${Column & string}_max`>(column: Column, alias?: Alias): QueryBuilder<Schema, AppendToOutput<State, Record<Alias, string>>>;
104
+ private applyAggregation;
99
105
  getTableName(): string;
100
106
  getFormatter(): SQLFormatter;
107
+ getRuntimeContext(): QueryRuntimeContext;
108
+ getCacheOptions(): CacheOptions | undefined;
109
+ getExecutor(): ExecutorFeature<Schema, State>;
101
110
  toSQL(): string;
102
111
  toSQLWithParams(): {
103
112
  sql: string;
104
113
  parameters: any[];
105
114
  };
106
- execute(): Promise<T[]>;
107
- stream(): Promise<ReadableStream<T[]>>;
115
+ execute(options?: ExecuteOptions): Promise<State['output'][]>;
116
+ stream(): Promise<ReadableStream<State['output'][]>>;
108
117
  /**
109
118
  * Processes each row in a stream with the provided callback function
110
119
  * @param callback Function to call for each row in the stream
111
120
  */
112
- streamForEach<R = void>(callback: (row: T) => R | Promise<R>): Promise<void>;
121
+ streamForEach<R = void>(callback: (row: State['output']) => R | Promise<R>): Promise<void>;
113
122
  private validateFilterValue;
114
123
  /**
115
124
  * Adds a WHERE clause to filter results.
@@ -123,7 +132,8 @@ export declare class QueryBuilder<Schema extends {
123
132
  * builder.where('age', 'gt', 18)
124
133
  * ```
125
134
  */
126
- where<K extends keyof OriginalT | TableColumn<Schema>, Op extends keyof OperatorValueMap<any, Schema>>(columnOrColumns: K | K[], operator: Op, value: K extends keyof OriginalT ? OperatorValueMap<OriginalT[K] extends ColumnType ? InferColumnType<OriginalT[K]> : never, Schema>[Op] : any): this;
135
+ where(expressionBuilder: (expr: PredicateBuilder<State>) => PredicateExpression): this;
136
+ where<Column extends WhereColumn<State>, Op extends keyof OperatorValueMap<any, Schema>>(columnOrColumns: Column | Column[], operator: Op, value: ColumnOperatorValue<Schema, State, Column, Op>): this;
127
137
  /**
128
138
  * Adds a WHERE clause for tuple IN operations.
129
139
  * @template K - The column keys type
@@ -136,21 +146,10 @@ export declare class QueryBuilder<Schema extends {
136
146
  * builder.where(['counter_id', 'user_id'], 'inTuple', [[34, 123], [101500, 456]])
137
147
  * ```
138
148
  */
139
- where<K extends keyof OriginalT | TableColumn<Schema>>(columns: K[], operator: 'inTuple' | 'globalInTuple', value: any): this;
140
- orWhere<K extends keyof OriginalT | TableColumn<Schema>>(column: K, operator: FilterOperator, value: any): this;
141
- /**
142
- * Adds an OR WHERE clause for tuple IN operations.
143
- * @template K - The column keys type
144
- * @param {K[]} columns - The columns to filter on (for tuple operations)
145
- * @param {'inTuple' | 'globalInTuple'} operator - The tuple IN operator
146
- * @param {any} value - The array of tuples to compare against
147
- * @returns {this} The current QueryBuilder instance
148
- * @example
149
- * ```ts
150
- * builder.orWhere(['counter_id', 'user_id'], 'inTuple', [[34, 123], [101500, 456]])
151
- * ```
152
- */
153
- orWhere<K extends keyof OriginalT | TableColumn<Schema>>(columns: K[], operator: 'inTuple' | 'globalInTuple', value: any): this;
149
+ where<Column extends WhereColumn<State>>(columns: Column[], operator: 'inTuple' | 'globalInTuple', value: any): this;
150
+ orWhere(expressionBuilder: (expr: PredicateBuilder<State>) => PredicateExpression): this;
151
+ orWhere<Column extends WhereColumn<State>>(column: Column, operator: FilterOperator, value: any): this;
152
+ orWhere<Column extends WhereColumn<State>>(columns: Column[], operator: 'inTuple' | 'globalInTuple', value: any): this;
154
153
  /**
155
154
  * Creates a parenthesized group of WHERE conditions joined with AND/OR operators.
156
155
  * @param {Function} callback - Function that builds the conditions within the group
@@ -184,7 +183,7 @@ export declare class QueryBuilder<Schema extends {
184
183
  * builder.groupBy(['category', 'status'])
185
184
  * ```
186
185
  */
187
- groupBy(columns: (keyof T | TableColumn<Schema>) | Array<keyof T | TableColumn<Schema>>): this;
186
+ groupBy(columns: SelectableColumn<State> | Array<SelectableColumn<State>>): this;
188
187
  limit(count: number): this;
189
188
  offset(count: number): this;
190
189
  /**
@@ -197,7 +196,7 @@ export declare class QueryBuilder<Schema extends {
197
196
  * builder.orderBy('created_at', 'DESC')
198
197
  * ```
199
198
  */
200
- orderBy<K extends keyof T | TableColumn<Schema>>(column: K, direction?: OrderDirection): this;
199
+ orderBy(column: SelectableColumn<State>, direction?: OrderDirection): this;
201
200
  /**
202
201
  * Adds a HAVING clause for filtering grouped results.
203
202
  * @param {string} condition - The HAVING condition
@@ -209,43 +208,27 @@ export declare class QueryBuilder<Schema extends {
209
208
  */
210
209
  having(condition: string, parameters?: any[]): this;
211
210
  distinct(): this;
212
- whereBetween<K extends keyof OriginalT>(column: K, [min, max]: [
213
- OriginalT[K] extends ColumnType ? InferColumnType<OriginalT[K]> : never,
214
- OriginalT[K] extends ColumnType ? InferColumnType<OriginalT[K]> : never
215
- ]): this;
216
- innerJoin<TableName extends keyof Schema>(table: TableName, leftColumn: keyof OriginalT, rightColumn: `${TableName & string}.${keyof Schema[TableName] & string}`, alias?: string): QueryBuilder<Schema, T, HasSelect, Aggregations, OriginalT>;
217
- leftJoin<TableName extends keyof Schema>(table: TableName, leftColumn: keyof OriginalT, rightColumn: `${TableName & string}.${keyof Schema[TableName] & string}`, alias?: string): QueryBuilder<Schema, T, HasSelect, Aggregations, OriginalT>;
218
- rightJoin<TableName extends keyof Schema>(table: TableName, leftColumn: keyof OriginalT, rightColumn: `${TableName & string}.${keyof Schema[TableName] & string}`, alias?: string): QueryBuilder<Schema, T, HasSelect, Aggregations, OriginalT>;
219
- fullJoin<TableName extends keyof Schema>(table: TableName, leftColumn: keyof OriginalT, rightColumn: `${TableName & string}.${keyof Schema[TableName] & string}`, alias?: string): QueryBuilder<Schema, T, HasSelect, Aggregations, OriginalT>;
220
- getConfig(): QueryConfig<T, Schema>;
221
- /**
222
- * Paginates the query results using cursor-based pagination
223
- */
224
- paginate(options: PaginationOptions<T>): Promise<PaginatedResult<T>>;
225
- /**
226
- * Gets the first page of results
227
- */
228
- firstPage(pageSize: number): Promise<PaginatedResult<T>>;
229
- /**
230
- * Returns an async iterator that yields all pages
231
- */
232
- iteratePages(pageSize: number): AsyncGenerator<PaginatedResult<T>>;
233
- static setJoinRelationships<S extends {
234
- [K in keyof S]: {
235
- [columnName: string]: ColumnType;
236
- };
237
- }>(relationships: JoinRelationships<S>): void;
211
+ whereBetween<Column extends keyof BaseRow<State>>(column: Column, [min, max]: [BaseRow<State>[Column], BaseRow<State>[Column]]): this;
212
+ innerJoin<TableName extends Extract<keyof Schema, string>, Alias extends string | undefined = undefined>(table: TableName, leftColumn: keyof BaseRow<State>, rightColumn: `${TableName & string}.${keyof Schema[TableName] & string}`, alias?: Alias): QueryBuilder<Schema, Alias extends string ? AddAlias<WidenTables<State, TableName>, Alias, TableName> : WidenTables<State, TableName>>;
213
+ leftJoin<TableName extends Extract<keyof Schema, string>, Alias extends string | undefined = undefined>(table: TableName, leftColumn: keyof BaseRow<State>, rightColumn: `${TableName & string}.${keyof Schema[TableName] & string}`, alias?: Alias): QueryBuilder<Schema, Alias extends string ? AddAlias<WidenTables<State, TableName>, Alias, TableName> : WidenTables<State, TableName>>;
214
+ rightJoin<TableName extends Extract<keyof Schema, string>, Alias extends string | undefined = undefined>(table: TableName, leftColumn: keyof BaseRow<State>, rightColumn: `${TableName & string}.${keyof Schema[TableName] & string}`, alias?: Alias): QueryBuilder<Schema, Alias extends string ? AddAlias<WidenTables<State, TableName>, Alias, TableName> : WidenTables<State, TableName>>;
215
+ fullJoin<TableName extends Extract<keyof Schema, string>, Alias extends string | undefined = undefined>(table: TableName, leftColumn: keyof BaseRow<State>, rightColumn: `${TableName & string}.${keyof Schema[TableName] & string}`, alias?: Alias): QueryBuilder<Schema, Alias extends string ? AddAlias<WidenTables<State, TableName>, Alias, TableName> : WidenTables<State, TableName>>;
216
+ private applyJoin;
217
+ getConfig(): QueryConfig<State["output"], Schema>;
218
+ static setJoinRelationships<S extends SchemaDefinition<S>>(relationships: JoinRelationships<S>): void;
238
219
  /**
239
220
  * Apply a predefined join relationship
240
221
  */
241
222
  withRelation(name: string, options?: JoinPathOptions): this;
242
223
  }
243
- export declare function createQueryBuilder<Schema extends {
244
- [K in keyof Schema]: {
245
- [columnName: string]: ColumnType;
246
- };
247
- }>(config: ClickHouseConfig): {
248
- table<TableName extends keyof Schema>(tableName: TableName): QueryBuilder<Schema, Schema[TableName], false, {}>;
224
+ export type SelectQB<Schema extends SchemaDefinition<Schema>, Tables extends string, Output, BaseTable extends keyof Schema> = QueryBuilder<Schema, BuilderState<Schema, Tables, Output, BaseTable, {}>>;
225
+ export type CreateQueryBuilderConfig = ClickHouseConfig & {
226
+ cache?: CacheConfig;
227
+ };
228
+ export declare function createQueryBuilder<Schema extends SchemaDefinition<Schema>>(config: CreateQueryBuilderConfig): {
229
+ cache: import("./cache/controller.js").CacheController;
230
+ rawQuery<TResult = any>(sql: string, params?: unknown[]): Promise<TResult[][]>;
231
+ table<TableName extends Extract<keyof Schema, string>>(tableName: TableName): SelectQB<Schema, TableName, InitialState<Schema, TableName>["output"], TableName>;
249
232
  };
250
233
  export {};
251
234
  //# sourceMappingURL=query-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/core/query-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAS7D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AACvG,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGtF,KAAK,gBAAgB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iCAAiC;IAC/E,iDAAiD;IACjD,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,iCAAiC,GAAG,sBAAsB,CAAC;AAE1F;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,sBAAsB,CAEzF;AAED;;;;;;GAMG;AACH,qBAAa,YAAY,CACvB,MAAM,SAAS;KAAG,CAAC,IAAI,MAAM,MAAM,GAAG;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE;CAAE,EAC5E,CAAC,EACD,SAAS,SAAS,OAAO,GAAG,KAAK,EACjC,YAAY,GAAG,EAAE,EACjB,SAAS,GAAG,CAAC;IAEb,OAAO,CAAC,MAAM,CAAC,aAAa,CAAyB;IAErD,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,YAAY,CAAoE;IACxF,OAAO,CAAC,KAAK,CAA6D;IAC1E,OAAO,CAAC,SAAS,CAAkE;IACnF,OAAO,CAAC,SAAS,CAAkE;IACnF,OAAO,CAAC,QAAQ,CAAiE;IACjF,OAAO,CAAC,SAAS,CAAuE;IACxF,OAAO,CAAC,UAAU,CAAmE;IACrF,OAAO,CAAC,cAAc,CAAuE;gBAG3F,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,CAAA;KAAE,EACpC,cAAc,EAAE,MAAM;IAexB,KAAK;IASL,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IAoBpE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI;IAKvE;;;;;;;;;;;KAWC;IACD,mBAAmB,CACjB,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,EACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,mBAAmB,GAAG,iBAAiB,GAAG,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,eAAqC,GACnL,IAAI;IAMP,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAStB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAKxC;;;;;OAKG;IACH,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,GAAG,IAAI;IAKvE;;;;;;;;;OASG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,EAC5D,OAAO,EAAE,CAAC,EAAE,GACX,YAAY,CACb,MAAM,EACN;SACG,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,CAChH,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,MAAM,GAC9B,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,GAC1B,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAC5D,GAAG,MAAM;KACX,EACD,IAAI,EACJ,YAAY,EACZ,SAAS,CACV;IA0CD,GAAG,CAAC,MAAM,SAAS,MAAM,SAAS,EAAE,KAAK,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,EACjF,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CACb,MAAM,EACN,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EACjE,IAAI,EACJ,EAAE,EACF,SAAS,CACV;IAMD,KAAK,CAAC,MAAM,SAAS,MAAM,SAAS,EAAE,KAAK,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,QAAQ,EACrF,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CACb,MAAM,EACN,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EACnE,IAAI,EACJ,EAAE,EACF,SAAS,CACV;IAMD,GAAG,CAAC,MAAM,SAAS,MAAM,SAAS,EAAE,KAAK,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,EACjF,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CACb,MAAM,EACN,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EACjE,IAAI,EACJ,EAAE,EACF,SAAS,CACV;IAMD,GAAG,CAAC,MAAM,SAAS,MAAM,SAAS,EAAE,KAAK,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,EACjF,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CACb,MAAM,EACN,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EACjE,IAAI,EACJ,EAAE,EACF,SAAS,CACV;IAMD,GAAG,CAAC,MAAM,SAAS,MAAM,SAAS,EAAE,KAAK,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,EACjF,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CACb,MAAM,EACN,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EACjE,IAAI,EACJ,EAAE,EACF,SAAS,CACV;IAOD,YAAY;IAIZ,YAAY;IAKZ,KAAK,IAAI,MAAM;IAIf,eAAe,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,EAAE,CAAA;KAAE;IAIrD,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAIjB,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAI5C;;;OAGG;IACG,aAAa,CAAC,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlF,OAAO,CAAC,mBAAmB;IA8B3B;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,CAAC,SAAS,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,EACnG,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,EACxB,QAAQ,EAAE,EAAE,EACZ,KAAK,EAAE,CAAC,SAAS,MAAM,SAAS,GAC5B,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,GACrG,GAAG,GACN,IAAI;IACP;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,CAAC,SAAS,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,EACnD,OAAO,EAAE,CAAC,EAAE,EACZ,QAAQ,EAAE,SAAS,GAAG,eAAe,EACrC,KAAK,EAAE,GAAG,GACT,IAAI;IAsBP,OAAO,CAAC,CAAC,SAAS,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,EACrD,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,GAAG,GACT,IAAI;IACP;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,EACrD,OAAO,EAAE,CAAC,EAAE,EACZ,QAAQ,EAAE,SAAS,GAAG,eAAe,EACrC,KAAK,EAAE,GAAG,GACT,IAAI;IAsBP;;;;;;;;;;OAUG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAOnD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAOrD;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;IAK9F,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3B;;;;;;;;;OASG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,EAC7C,MAAM,EAAE,CAAC,EACT,SAAS,GAAE,cAAsB,GAChC,IAAI;IAKP;;;;;;;;OAQG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI;IAKnD,QAAQ,IAAI,IAAI;IAKhB,YAAY,CAAC,CAAC,SAAS,MAAM,SAAS,EACpC,MAAM,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;QACvE,SAAS,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;KACxE,GACA,IAAI;IAOP,SAAS,CAAC,SAAS,SAAS,MAAM,MAAM,EACtC,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,SAAS,EAC3B,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,EACxE,KAAK,CAAC,EAAE,MAAM,GACb,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IAM9D,QAAQ,CACN,SAAS,SAAS,MAAM,MAAM,EAE9B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,SAAS,EAC3B,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,EACxE,KAAK,CAAC,EAAE,MAAM,GACb,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IAM9D,SAAS,CACP,SAAS,SAAS,MAAM,MAAM,EAE9B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,SAAS,EAC3B,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,EACxE,KAAK,CAAC,EAAE,MAAM,GACb,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IAM9D,QAAQ,CACN,SAAS,SAAS,MAAM,MAAM,EAE9B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,SAAS,EAC3B,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,EACxE,KAAK,CAAC,EAAE,MAAM,GACb,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IAO9D,SAAS;IAIT;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAI1E;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAI9D;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAIlE,MAAM,CAAC,oBAAoB,CAAC,CAAC,SAAS;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG;YAAE,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAA;SAAE;KAAE,EAC5F,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAClC,IAAI;IAIP;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;CA4B5D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,SAAS;KAC/C,CAAC,IAAI,MAAM,MAAM,GAAG;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE;CAC1D,EACC,MAAM,EAAE,gBAAgB;UAKhB,SAAS,SAAS,MAAM,MAAM,aAAa,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;EAWlH"}
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/core/query-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,WAAW,EAEZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAK7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAiB,MAAM,yBAAyB,CAAC;AAE5F,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EAEpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AACvG,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAItE,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,OAAO,EACP,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAEjC,KAAK,WAAW,CAAC,KAAK,SAAS,eAAe,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAE1E,KAAK,mBAAmB,CACtB,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACvC,KAAK,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC,EACpG,MAAM,SAAS,WAAW,CAAC,KAAK,CAAC,EACjC,EAAE,SAAS,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,IAC5C,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAGtE,KAAK,gBAAgB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iCAAiC;IAC/E,iDAAiD;IACjD,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,iCAAiC,GAAG,sBAAsB,CAAC;AAE1F;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,sBAAsB,CAEzF;AAED;;;GAGG;AACH,qBAAa,YAAY,CACvB,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACvC,KAAK,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC;IAEpG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAyB;IAErD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,YAAY,CAAC,CAAe;gBAGlC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,mBAAmB;IAc9B,OAAO,CAAC,IAAI;IAkBZ,KAAK;IAQL,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,KAAK,GAAG,IAAI;IAU1C,OAAO,CACL,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,YAAY,CAAC,GAAG,EAAE,eAAe,CAAC,GAAG,MAAM,GACpD,IAAI;IAKP;;;;;;;;;;;KAWC;IACD,mBAAmB,CACjB,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,mBAAmB,GAAG,iBAAiB,GAAG,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,eAAqC,GACnL,IAAI;IAMP,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAStB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAKxC;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,SAAS,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IACrH,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI;IAUpE;;;;;;;;;;OAUG;IACH,MAAM,CAAC,iBAAiB,EAAE,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzF,MAAM,CAAC,UAAU,SAAS,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAC5D,iBAAiB,EAAE,UAAU,GAC5B,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAgDxF,WAAW,CAAC,UAAU,SAAS,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACjE,GAAG,OAAO,EAAE,UAAU,GACrB,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAIxF,GAAG,CAAC,MAAM,SAAS,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,EACtF,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAMrE,KAAK,CAAC,MAAM,SAAS,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,QAAQ,EAC1F,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAMrE,GAAG,CAAC,MAAM,SAAS,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,EACtF,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAMrE,GAAG,CAAC,MAAM,SAAS,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,EACtF,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAMrE,GAAG,CAAC,MAAM,SAAS,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,EACtF,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAMrE,OAAO,CAAC,gBAAgB;IAoBxB,YAAY;IAIZ,YAAY;IAIZ,iBAAiB;IAIjB,eAAe;IAIf,WAAW;IAKX,KAAK,IAAI,MAAM;IAIf,eAAe,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,EAAE,CAAA;KAAE;IAIrD,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;IAIvD,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAI1D;;;OAGG;IACG,aAAa,CAAC,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhG,OAAO,CAAC,mBAAmB;IAgC3B;;;;;;;;;;;OAWG;IACH,KAAK,CACH,iBAAiB,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,mBAAmB,GACxE,IAAI;IACP,KAAK,CAAC,MAAM,SAAS,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,EACrF,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,EAClC,QAAQ,EAAE,EAAE,EACZ,KAAK,EAAE,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,GACpD,IAAI;IACP;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,MAAM,SAAS,WAAW,CAAC,KAAK,CAAC,EACrC,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,SAAS,GAAG,eAAe,EACrC,KAAK,EAAE,GAAG,GACT,IAAI;IA8BP,OAAO,CACL,iBAAiB,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,mBAAmB,GACxE,IAAI;IACP,OAAO,CAAC,MAAM,SAAS,WAAW,CAAC,KAAK,CAAC,EACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,GAAG,GACT,IAAI;IACP,OAAO,CAAC,MAAM,SAAS,WAAW,CAAC,KAAK,CAAC,EACvC,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,SAAS,GAAG,eAAe,EACrC,KAAK,EAAE,GAAG,GACT,IAAI;IA6BP;;;;;;;;;;OAUG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAOnD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAOrD;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI;IAMhF,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3B;;;;;;;;;OASG;IACH,OAAO,CACL,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC/B,SAAS,GAAE,cAAsB,GAChC,IAAI;IAKP;;;;;;;;OAQG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI;IAKnD,QAAQ,IAAI,IAAI;IAKhB,YAAY,CAAC,MAAM,SAAS,MAAM,OAAO,CAAC,KAAK,CAAC,EAC9C,MAAM,EAAE,MAAM,EACd,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAC3D,IAAI;IAOP,SAAS,CAAC,SAAS,SAAS,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EACrG,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAChC,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,EACxE,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CACb,MAAM,EACN,KAAK,SAAS,MAAM,GAClB,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GACzD,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAChC;IAID,QAAQ,CAAC,SAAS,SAAS,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EACpG,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAChC,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,EACxE,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CACb,MAAM,EACN,KAAK,SAAS,MAAM,GAClB,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GACzD,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAChC;IAID,SAAS,CAAC,SAAS,SAAS,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EACrG,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAChC,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,EACxE,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CACb,MAAM,EACN,KAAK,SAAS,MAAM,GAClB,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GACzD,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAChC;IAID,QAAQ,CAAC,SAAS,SAAS,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EACpG,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAChC,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,EACxE,KAAK,CAAC,EAAE,KAAK,GACZ,YAAY,CACb,MAAM,EACN,KAAK,SAAS,MAAM,GAClB,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GACzD,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAChC;IAID,OAAO,CAAC,SAAS;IAyBjB,SAAS;IAIT,MAAM,CAAC,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EACvD,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAClC,IAAI;IAIP;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;CA2B5D;AAED,MAAM,MAAM,QAAQ,CAClB,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACvC,MAAM,SAAS,MAAM,EACrB,MAAM,EACN,SAAS,SAAS,MAAM,MAAM,IAC5B,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GAAG;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAYF,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACxE,MAAM,EAAE,wBAAwB;;aAUf,OAAO,aAAa,MAAM,WAAU,OAAO,EAAE;UAStD,SAAS,SAAS,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,aAAa,SAAS,GAAG,QAAQ,CACpF,MAAM,EACN,SAAS,EACT,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,EACzC,SAAS,CACV;EAaJ"}