@hypequery/clickhouse 1.3.1-beta.0 → 1.3.2

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 (82) hide show
  1. package/README.md +18 -1
  2. package/dist/cli/generate-types.js +41 -3
  3. package/dist/core/connection.d.ts.map +1 -1
  4. package/dist/core/connection.js +4 -3
  5. package/dist/core/cross-filter.d.ts +3 -7
  6. package/dist/core/cross-filter.d.ts.map +1 -1
  7. package/dist/core/cross-filter.js +3 -2
  8. package/dist/core/env/auto-client.browser.d.ts +3 -0
  9. package/dist/core/env/auto-client.browser.d.ts.map +1 -0
  10. package/dist/core/env/auto-client.browser.js +3 -0
  11. package/dist/core/env/auto-client.d.ts +9 -0
  12. package/dist/core/env/auto-client.d.ts.map +1 -0
  13. package/dist/core/env/auto-client.js +21 -0
  14. package/dist/core/features/aggregations.d.ts +18 -22
  15. package/dist/core/features/aggregations.d.ts.map +1 -1
  16. package/dist/core/features/aggregations.js +6 -6
  17. package/dist/core/features/analytics.d.ts +15 -19
  18. package/dist/core/features/analytics.d.ts.map +1 -1
  19. package/dist/core/features/analytics.js +2 -2
  20. package/dist/core/features/cross-filtering.d.ts +5 -24
  21. package/dist/core/features/cross-filtering.d.ts.map +1 -1
  22. package/dist/core/features/cross-filtering.js +0 -33
  23. package/dist/core/features/executor.d.ts +5 -9
  24. package/dist/core/features/executor.d.ts.map +1 -1
  25. package/dist/core/features/filtering.d.ts +32 -28
  26. package/dist/core/features/filtering.d.ts.map +1 -1
  27. package/dist/core/features/filtering.js +27 -26
  28. package/dist/core/features/joins.d.ts +7 -10
  29. package/dist/core/features/joins.d.ts.map +1 -1
  30. package/dist/core/features/pagination.d.ts +8 -10
  31. package/dist/core/features/pagination.d.ts.map +1 -1
  32. package/dist/core/features/pagination.js +13 -41
  33. package/dist/core/features/query-modifiers.d.ts +18 -21
  34. package/dist/core/features/query-modifiers.d.ts.map +1 -1
  35. package/dist/core/formatters/sql-formatter.d.ts.map +1 -1
  36. package/dist/core/formatters/sql-formatter.js +6 -0
  37. package/dist/core/join-relationships.d.ts +2 -1
  38. package/dist/core/join-relationships.d.ts.map +1 -1
  39. package/dist/core/query-builder.d.ts +50 -73
  40. package/dist/core/query-builder.d.ts.map +1 -1
  41. package/dist/core/query-builder.js +113 -92
  42. package/dist/core/tests/integration/setup.d.ts +1 -1
  43. package/dist/core/tests/test-utils.d.ts +4 -3
  44. package/dist/core/tests/test-utils.d.ts.map +1 -1
  45. package/dist/core/tests/test-utils.js +18 -8
  46. package/dist/core/types/builder-state.d.ts +25 -0
  47. package/dist/core/types/builder-state.d.ts.map +1 -0
  48. package/dist/core/types/builder-state.js +1 -0
  49. package/dist/core/types/select-types.d.ts +25 -0
  50. package/dist/core/types/select-types.d.ts.map +1 -0
  51. package/dist/core/types/select-types.js +1 -0
  52. package/dist/core/types/type-helpers.d.ts +5 -0
  53. package/dist/core/types/type-helpers.d.ts.map +1 -0
  54. package/dist/core/types/type-helpers.js +1 -0
  55. package/dist/core/utils/predicate-builder.d.ts +29 -0
  56. package/dist/core/utils/predicate-builder.d.ts.map +1 -0
  57. package/dist/core/utils/predicate-builder.js +92 -0
  58. package/dist/core/utils/sql-expressions.d.ts +11 -10
  59. package/dist/core/utils/sql-expressions.d.ts.map +1 -1
  60. package/dist/core/utils/sql-expressions.js +4 -2
  61. package/dist/core/validators/filter-validator.d.ts +2 -1
  62. package/dist/core/validators/filter-validator.d.ts.map +1 -1
  63. package/dist/core/validators/value-validator.d.ts +2 -1
  64. package/dist/core/validators/value-validator.d.ts.map +1 -1
  65. package/dist/index.d.ts +4 -2
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/types/base.d.ts +10 -15
  68. package/dist/types/base.d.ts.map +1 -1
  69. package/dist/types/clickhouse-types.d.ts +2 -2
  70. package/dist/types/clickhouse-types.d.ts.map +1 -1
  71. package/dist/types/filters.d.ts +1 -1
  72. package/dist/types/filters.d.ts.map +1 -1
  73. package/dist/types/index.d.ts +1 -0
  74. package/dist/types/index.d.ts.map +1 -1
  75. package/dist/types/index.js +1 -0
  76. package/dist/types/schema.d.ts +19 -0
  77. package/dist/types/schema.d.ts.map +1 -0
  78. package/dist/types/schema.js +1 -0
  79. package/package.json +7 -3
  80. package/dist/core/tests/integration/test-initializer.d.ts +0 -7
  81. package/dist/core/tests/integration/test-initializer.d.ts.map +0 -1
  82. package/dist/core/tests/integration/test-initializer.js +0 -32
@@ -1,19 +1,15 @@
1
+ import type { BuilderState, SchemaDefinition } from '../types/builder-state.js';
1
2
  import { QueryBuilder } from '../query-builder.js';
2
- import { ColumnType } from '../../types/index.js';
3
- export declare class ExecutorFeature<Schema extends {
4
- [tableName: string]: {
5
- [columnName: string]: ColumnType;
6
- };
7
- }, T, HasSelect extends boolean = false, Aggregations = {}, OriginalT = T> {
3
+ export declare class ExecutorFeature<Schema extends SchemaDefinition<Schema>, State extends BuilderState<Schema, string, any, keyof Schema, Partial<Record<string, keyof Schema>>>> {
8
4
  private builder;
9
- constructor(builder: QueryBuilder<Schema, T, HasSelect, Aggregations, OriginalT>);
5
+ constructor(builder: QueryBuilder<Schema, State>);
10
6
  toSQLWithParams(): {
11
7
  sql: string;
12
8
  parameters: any[];
13
9
  };
14
10
  toSQL(): string;
15
- execute(): Promise<T[]>;
16
- stream(): Promise<ReadableStream<T[]>>;
11
+ execute(): Promise<State['output'][]>;
12
+ stream(): Promise<ReadableStream<State['output'][]>>;
17
13
  private toSQLWithoutParameters;
18
14
  }
19
15
  //# sourceMappingURL=executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/core/features/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKlD,qBAAa,eAAe,CAC1B,MAAM,SAAS;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;CAAE,EAC5E,CAAC,EACD,SAAS,SAAS,OAAO,GAAG,KAAK,EACjC,YAAY,GAAG,EAAE,EACjB,SAAS,GAAG,CAAC;IAED,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IAExF,eAAe,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,EAAE,CAAA;KAAE;IAOrD,KAAK,IAAI,MAAM;IAKT,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAgDvB,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IA+C5C,OAAO,CAAC,sBAAsB;CA0C/B"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/core/features/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD,qBAAa,eAAe,CAC1B,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;IAExF,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAExD,eAAe,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,EAAE,CAAA;KAAE;IAOrD,KAAK,IAAI,MAAM;IAKT,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;IAgDrC,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IA+C1D,OAAO,CAAC,sBAAsB;CA0C/B"}
@@ -1,23 +1,39 @@
1
+ import type { BuilderState, SchemaDefinition } from '../types/builder-state.js';
1
2
  import { QueryBuilder } from '../query-builder.js';
2
- import { ColumnType, FilterOperator, TableColumn } from '../../types/index.js';
3
- export declare class FilteringFeature<Schema extends {
4
- [tableName: string]: {
5
- [columnName: string]: ColumnType;
6
- };
7
- }, T, HasSelect extends boolean = false, Aggregations = {}, OriginalT = T> {
3
+ import { FilterOperator } from '../../types/index.js';
4
+ import { PredicateExpression } from '../utils/predicate-builder.js';
5
+ export declare class FilteringFeature<Schema extends SchemaDefinition<Schema>, State extends BuilderState<Schema, string, any, keyof Schema, Partial<Record<string, keyof Schema>>>> {
8
6
  private builder;
9
- constructor(builder: QueryBuilder<Schema, T, HasSelect, Aggregations, OriginalT>);
10
- addCondition<K extends keyof OriginalT | TableColumn<Schema>>(conjunction: 'AND' | 'OR', column: K | K[], operator: FilterOperator, value: any): {
7
+ constructor(builder: QueryBuilder<Schema, State>);
8
+ addCondition(conjunction: 'AND' | 'OR', column: string | string[], operator: FilterOperator, value: any): {
9
+ where: import("../../types/base.js").WhereCondition[];
10
+ parameters: any[];
11
+ select?: (string | keyof State["output"])[] | undefined;
12
+ groupBy?: string[];
13
+ having?: string[];
14
+ limit?: number;
15
+ offset?: number;
16
+ distinct?: boolean;
17
+ orderBy?: {
18
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
19
+ direction: import("../../types/base.js").OrderDirection;
20
+ }[] | undefined;
21
+ joins?: import("../../types/base.js").JoinClause[];
22
+ ctes?: string[];
23
+ unionQueries?: string[];
24
+ settings?: string;
25
+ };
26
+ addExpressionCondition(conjunction: 'AND' | 'OR', expression: PredicateExpression): {
11
27
  where: import("../../types/base.js").WhereCondition[];
12
28
  parameters: any[];
13
- select?: (string | keyof T)[] | undefined;
29
+ select?: (string | keyof State["output"])[] | undefined;
14
30
  groupBy?: string[];
15
31
  having?: string[];
16
32
  limit?: number;
17
33
  offset?: number;
18
34
  distinct?: boolean;
19
35
  orderBy?: {
20
- column: TableColumn<Schema> | keyof T;
36
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
21
37
  direction: import("../../types/base.js").OrderDirection;
22
38
  }[] | undefined;
23
39
  joins?: import("../../types/base.js").JoinClause[];
@@ -25,20 +41,16 @@ export declare class FilteringFeature<Schema extends {
25
41
  unionQueries?: string[];
26
42
  settings?: string;
27
43
  };
28
- /**
29
- * Adds a group-start marker to start a parenthesized group of conditions with AND conjunction
30
- * @returns The updated query config
31
- */
32
44
  startWhereGroup(): {
33
45
  where: import("../../types/base.js").WhereCondition[];
34
- select?: (string | keyof T)[] | undefined;
46
+ select?: (string | keyof State["output"])[] | undefined;
35
47
  groupBy?: string[];
36
48
  having?: string[];
37
49
  limit?: number;
38
50
  offset?: number;
39
51
  distinct?: boolean;
40
52
  orderBy?: {
41
- column: TableColumn<Schema> | keyof T;
53
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
42
54
  direction: import("../../types/base.js").OrderDirection;
43
55
  }[] | undefined;
44
56
  joins?: import("../../types/base.js").JoinClause[];
@@ -47,20 +59,16 @@ export declare class FilteringFeature<Schema extends {
47
59
  unionQueries?: string[];
48
60
  settings?: string;
49
61
  };
50
- /**
51
- * Adds a group-start marker to start a parenthesized group of conditions with OR conjunction
52
- * @returns The updated query config
53
- */
54
62
  startOrWhereGroup(): {
55
63
  where: import("../../types/base.js").WhereCondition[];
56
- select?: (string | keyof T)[] | undefined;
64
+ select?: (string | keyof State["output"])[] | undefined;
57
65
  groupBy?: string[];
58
66
  having?: string[];
59
67
  limit?: number;
60
68
  offset?: number;
61
69
  distinct?: boolean;
62
70
  orderBy?: {
63
- column: TableColumn<Schema> | keyof T;
71
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
64
72
  direction: import("../../types/base.js").OrderDirection;
65
73
  }[] | undefined;
66
74
  joins?: import("../../types/base.js").JoinClause[];
@@ -69,20 +77,16 @@ export declare class FilteringFeature<Schema extends {
69
77
  unionQueries?: string[];
70
78
  settings?: string;
71
79
  };
72
- /**
73
- * Adds a group-end marker to end a parenthesized group of conditions
74
- * @returns The updated query config
75
- */
76
80
  endWhereGroup(): {
77
81
  where: import("../../types/base.js").WhereCondition[];
78
- select?: (string | keyof T)[] | undefined;
82
+ select?: (string | keyof State["output"])[] | undefined;
79
83
  groupBy?: string[];
80
84
  having?: string[];
81
85
  limit?: number;
82
86
  offset?: number;
83
87
  distinct?: boolean;
84
88
  orderBy?: {
85
- column: TableColumn<Schema> | keyof T;
89
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
86
90
  direction: import("../../types/base.js").OrderDirection;
87
91
  }[] | undefined;
88
92
  joins?: import("../../types/base.js").JoinClause[];
@@ -1 +1 @@
1
- {"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../../src/core/features/filtering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE/E,qBAAa,gBAAgB,CAC3B,MAAM,SAAS;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;CAAE,EAC5E,CAAC,EACD,SAAS,SAAS,OAAO,GAAG,KAAK,EACjC,YAAY,GAAG,EAAE,EACjB,SAAS,GAAG,CAAC;IAED,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IAExF,YAAY,CAAC,CAAC,SAAS,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,EAC1D,WAAW,EAAE,KAAK,GAAG,IAAI,EACzB,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EACf,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;IA4DZ;;;OAGG;IACH,eAAe;;;;;;;;;;;;;;;;;;IAkBf;;;OAGG;IACH,iBAAiB;;;;;;;;;;;;;;;;;;IAkBjB;;;OAGG;IACH,aAAa;;;;;;;;;;;;;;;;;;CAiBd"}
1
+ {"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../../src/core/features/filtering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,qBAAa,gBAAgB,CAC3B,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;IAExF,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAExD,YAAY,CACV,WAAW,EAAE,KAAK,GAAG,IAAI,EACzB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;IAwDZ,sBAAsB,CACpB,WAAW,EAAE,KAAK,GAAG,IAAI,EACzB,UAAU,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;IAsBjC,eAAe;;;;;;;;;;;;;;;;;;IAkBf,iBAAiB;;;;;;;;;;;;;;;;;;IAkBjB,aAAa;;;;;;;;;;;;;;;;;;CAiBd"}
@@ -7,7 +7,6 @@ export class FilteringFeature {
7
7
  const config = this.builder.getConfig();
8
8
  const where = config.where || [];
9
9
  const parameters = config.parameters || [];
10
- // Handle tuple columns
11
10
  const columnString = Array.isArray(column)
12
11
  ? `(${column.map(String).join(', ')})`
13
12
  : String(column);
@@ -18,7 +17,6 @@ export class FilteringFeature {
18
17
  conjunction,
19
18
  type: 'condition'
20
19
  });
21
- // Handle different parameter types based on operator
22
20
  if (operator === 'in' || operator === 'notIn' || operator === 'globalIn' || operator === 'globalNotIn') {
23
21
  if (!Array.isArray(value)) {
24
22
  throw new Error(`Expected an array for ${operator} operator, but got ${typeof value}`);
@@ -37,13 +35,11 @@ export class FilteringFeature {
37
35
  if (typeof value !== 'string') {
38
36
  throw new Error(`Expected a string (subquery) for ${operator} operator, but got ${typeof value}`);
39
37
  }
40
- // No parameters
41
38
  }
42
39
  else if (operator === 'inTable' || operator === 'globalInTable') {
43
40
  if (typeof value !== 'string') {
44
41
  throw new Error(`Expected a string (table name) for ${operator} operator, but got ${typeof value}`);
45
42
  }
46
- // No parameters
47
43
  }
48
44
  else if (operator === 'between') {
49
45
  parameters.push(value[0], value[1]);
@@ -57,17 +53,30 @@ export class FilteringFeature {
57
53
  parameters
58
54
  };
59
55
  }
60
- /**
61
- * Adds a group-start marker to start a parenthesized group of conditions with AND conjunction
62
- * @returns The updated query config
63
- */
56
+ addExpressionCondition(conjunction, expression) {
57
+ const config = this.builder.getConfig();
58
+ const where = config.where || [];
59
+ const parameters = config.parameters || [];
60
+ where.push({
61
+ type: 'expression',
62
+ expression: expression.sql,
63
+ parameters: expression.parameters,
64
+ conjunction
65
+ });
66
+ parameters.push(...expression.parameters);
67
+ return {
68
+ ...config,
69
+ where,
70
+ parameters
71
+ };
72
+ }
64
73
  startWhereGroup() {
65
74
  const config = this.builder.getConfig();
66
75
  const where = config.where || [];
67
76
  where.push({
68
- column: '', // Not used for group markers
69
- operator: 'eq', // Not used for group markers
70
- value: null, // Not used for group markers
77
+ column: '',
78
+ operator: 'eq',
79
+ value: null,
71
80
  conjunction: 'AND',
72
81
  type: 'group-start'
73
82
  });
@@ -76,17 +85,13 @@ export class FilteringFeature {
76
85
  where
77
86
  };
78
87
  }
79
- /**
80
- * Adds a group-start marker to start a parenthesized group of conditions with OR conjunction
81
- * @returns The updated query config
82
- */
83
88
  startOrWhereGroup() {
84
89
  const config = this.builder.getConfig();
85
90
  const where = config.where || [];
86
91
  where.push({
87
- column: '', // Not used for group markers
88
- operator: 'eq', // Not used for group markers
89
- value: null, // Not used for group markers
92
+ column: '',
93
+ operator: 'eq',
94
+ value: null,
90
95
  conjunction: 'OR',
91
96
  type: 'group-start'
92
97
  });
@@ -95,18 +100,14 @@ export class FilteringFeature {
95
100
  where
96
101
  };
97
102
  }
98
- /**
99
- * Adds a group-end marker to end a parenthesized group of conditions
100
- * @returns The updated query config
101
- */
102
103
  endWhereGroup() {
103
104
  const config = this.builder.getConfig();
104
105
  const where = config.where || [];
105
106
  where.push({
106
- column: '', // Not used for group markers
107
- operator: 'eq', // Not used for group markers
108
- value: null, // Not used for group markers
109
- conjunction: 'AND', // Not relevant for end markers
107
+ column: '',
108
+ operator: 'eq',
109
+ value: null,
110
+ conjunction: 'AND',
110
111
  type: 'group-end'
111
112
  });
112
113
  return {
@@ -1,15 +1,12 @@
1
+ import type { BuilderState, SchemaDefinition } from '../types/builder-state.js';
1
2
  import { QueryBuilder } from '../query-builder.js';
2
- import { ColumnType, JoinType } from '../../types/index.js';
3
- export declare class JoinFeature<Schema extends {
4
- [tableName: string]: {
5
- [columnName: string]: ColumnType;
6
- };
7
- }, T, HasSelect extends boolean = false, Aggregations = {}, OriginalT = T> {
3
+ import { JoinType } from '../../types/index.js';
4
+ export declare class JoinFeature<Schema extends SchemaDefinition<Schema>, State extends BuilderState<Schema, string, any, keyof Schema, Partial<Record<string, keyof Schema>>>> {
8
5
  private builder;
9
- constructor(builder: QueryBuilder<Schema, T, HasSelect, Aggregations, OriginalT>);
10
- addJoin<TableName extends keyof Schema>(type: JoinType, table: TableName, leftColumn: keyof OriginalT, rightColumn: `${TableName & string}.${keyof Schema[TableName] & string}`, alias?: string): {
6
+ constructor(builder: QueryBuilder<Schema, State>);
7
+ addJoin<TableName extends keyof Schema>(type: JoinType, table: TableName, leftColumn: string, rightColumn: `${TableName & string}.${keyof Schema[TableName] & string}`, alias?: string): {
11
8
  joins: import("../../types/base.js").JoinClause[];
12
- select?: (string | keyof T)[] | undefined;
9
+ select?: (string | keyof State["output"])[] | undefined;
13
10
  where?: import("../../types/base.js").WhereCondition[];
14
11
  groupBy?: string[];
15
12
  having?: string[];
@@ -17,7 +14,7 @@ export declare class JoinFeature<Schema extends {
17
14
  offset?: number;
18
15
  distinct?: boolean;
19
16
  orderBy?: {
20
- column: keyof T | import("../../types/base.js").TableColumn<Schema>;
17
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
21
18
  direction: import("../../types/base.js").OrderDirection;
22
19
  }[] | undefined;
23
20
  parameters?: any[];
@@ -1 +1 @@
1
- {"version":3,"file":"joins.d.ts","sourceRoot":"","sources":["../../../src/core/features/joins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE5D,qBAAa,WAAW,CACtB,MAAM,SAAS;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;CAAE,EAC5E,CAAC,EACD,SAAS,SAAS,OAAO,GAAG,KAAK,EACjC,YAAY,GAAG,EAAE,EACjB,SAAS,GAAG,CAAC;IAED,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IAExF,OAAO,CAAC,SAAS,SAAS,MAAM,MAAM,EACpC,IAAI,EAAE,QAAQ,EACd,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;;;;;;;;;;;;;;;;;;CAYjB"}
1
+ {"version":3,"file":"joins.d.ts","sourceRoot":"","sources":["../../../src/core/features/joins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,qBAAa,WAAW,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;IAExF,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAExD,OAAO,CAAC,SAAS,SAAS,MAAM,MAAM,EACpC,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,EACxE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;CAYjB"}
@@ -1,23 +1,21 @@
1
+ import type { BuilderState, SchemaDefinition } from '../types/builder-state.js';
1
2
  import { QueryBuilder } from '../query-builder.js';
2
- import { ColumnType, PaginationOptions, PaginatedResult } from '../../types/index.js';
3
- export declare class PaginationFeature<Schema extends {
4
- [tableName: string]: {
5
- [columnName: string]: ColumnType;
6
- };
7
- }, T, HasSelect extends boolean = false, Aggregations = {}, OriginalT = T> {
3
+ import { PaginatedResult, PaginationOptions } from '../../types/index.js';
4
+ export declare class PaginationFeature<Schema extends SchemaDefinition<Schema>, State extends BuilderState<Schema, string, any, keyof Schema, Partial<Record<string, keyof Schema>>>> {
8
5
  private builder;
9
6
  private static cursorStacks;
10
7
  private stackKey;
11
- constructor(builder: QueryBuilder<Schema, T, HasSelect, Aggregations, OriginalT>);
8
+ constructor(builder: QueryBuilder<Schema, State>);
12
9
  private get cursorStack();
13
10
  private set cursorStack(value);
14
11
  private get currentPosition();
15
12
  private set currentPosition(value);
16
13
  private encodeCursor;
17
14
  private decodeCursor;
18
- paginate(options: PaginationOptions<T>): Promise<PaginatedResult<T>>;
15
+ paginate(options: PaginationOptions<State['output']>): Promise<PaginatedResult<State['output']>>;
19
16
  private generateCursor;
20
- firstPage(pageSize: number): Promise<PaginatedResult<T>>;
21
- iteratePages(pageSize: number): AsyncGenerator<PaginatedResult<T>>;
17
+ firstPage(pageSize: number): Promise<PaginatedResult<State['output']>>;
18
+ iteratePages(pageSize: number): AsyncGenerator<PaginatedResult<State['output']>>;
19
+ private paginationGenerator;
22
20
  }
23
21
  //# sourceMappingURL=pagination.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/core/features/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAyB,MAAM,sBAAsB,CAAC;AAE7G,qBAAa,iBAAiB,CAC5B,MAAM,SAAS;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;CAAE,EAC5E,CAAC,EACD,SAAS,SAAS,OAAO,GAAG,KAAK,EACjC,YAAY,GAAG,EAAE,EACjB,SAAS,GAAG,CAAC;IAKD,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAiE;IAC5F,OAAO,CAAC,QAAQ,CAAS;gBAEL,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IAQxF,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,WAAW,QAGtB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,eAAe,QAG1B;IAED,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAId,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IA0I1E,OAAO,CAAC,cAAc;IAmBhB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAIvD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAkB1E"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/core/features/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,qBAAa,iBAAiB,CAC5B,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;IAKxF,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAiE;IAC5F,OAAO,CAAC,QAAQ,CAAS;gBAEL,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAOxD,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,WAAW,QAGtB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,eAAe,QAG1B;IAED,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAId,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IA+GtG,OAAO,CAAC,cAAc;IAkBhB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAI5E,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAIjE,mBAAmB;CAWnC"}
@@ -4,7 +4,6 @@ export class PaginationFeature {
4
4
  stackKey;
5
5
  constructor(builder) {
6
6
  this.builder = builder;
7
- // Create a unique key for this pagination instance based on the table and sort
8
7
  this.stackKey = builder.getTableName();
9
8
  if (!PaginationFeature.cursorStacks.has(this.stackKey)) {
10
9
  PaginationFeature.cursorStacks.set(this.stackKey, { stack: [], position: -1 });
@@ -33,44 +32,34 @@ export class PaginationFeature {
33
32
  async paginate(options) {
34
33
  const { pageSize, after, before, orderBy = [] } = options;
35
34
  const requestSize = pageSize + 1;
36
- // Update cursor stack
37
35
  if (after) {
38
- // Moving forward: add new cursor and update position
39
36
  if (this.currentPosition < this.cursorStack.length - 1) {
40
- // If we're not at the end, truncate the stack
41
37
  this.cursorStack = this.cursorStack.slice(0, this.currentPosition + 1);
42
38
  }
43
39
  this.cursorStack = [...this.cursorStack, after];
44
40
  this.currentPosition = this.cursorStack.length - 1;
45
41
  }
46
42
  else if (before) {
47
- // Moving backward: find the cursor in the stack
48
43
  const cursorIndex = this.cursorStack.indexOf(before);
49
44
  if (cursorIndex === -1) {
50
- // If cursor not found in stack, add it
51
45
  if (this.currentPosition === this.cursorStack.length - 1) {
52
46
  this.cursorStack = [...this.cursorStack, before];
53
47
  }
54
- // Move back one position
55
48
  this.currentPosition = Math.max(-1, this.currentPosition - 1);
56
49
  }
57
50
  else {
58
- // Move to the previous cursor position
59
51
  this.currentPosition = Math.max(-1, cursorIndex - 1);
60
52
  }
61
53
  }
62
54
  else {
63
- // Reset for first page only if we don't have a cursor
64
55
  if (!this.cursorStack.length) {
65
56
  this.cursorStack = [];
66
57
  this.currentPosition = -1;
67
58
  }
68
59
  }
69
- // Apply ordering first
70
60
  orderBy.forEach(({ column, direction }) => {
71
61
  this.builder.orderBy(column, direction);
72
62
  });
73
- // Handle cursor-based pagination
74
63
  const cursor = after || before;
75
64
  if (cursor && orderBy && orderBy.length > 0) {
76
65
  const [{ column, direction }] = orderBy;
@@ -78,46 +67,33 @@ export class PaginationFeature {
78
67
  const cursorValues = this.decodeCursor(cursor);
79
68
  const value = cursorValues[columnName];
80
69
  if (before) {
81
- // For backward pagination:
82
- // If sorting DESC, we want records > cursor
83
- // If sorting ASC, we want records < cursor
84
70
  const operator = direction === 'DESC' ? 'gt' : 'lt';
85
71
  this.builder.where(columnName, operator, value);
86
- // Reverse the order for backward pagination
87
72
  orderBy.forEach(({ column, direction }) => {
88
73
  const reversedDirection = direction === 'DESC' ? 'ASC' : 'DESC';
89
74
  this.builder.orderBy(column, reversedDirection);
90
75
  });
91
76
  }
92
77
  else {
93
- // For forward pagination:
94
- // If sorting DESC, we want records < cursor
95
- // If sorting ASC, we want records > cursor
96
78
  const operator = direction === 'DESC' ? 'lt' : 'gt';
97
79
  this.builder.where(columnName, operator, value);
98
80
  }
99
81
  }
100
82
  this.builder.limit(requestSize);
101
- // Execute query
102
83
  let results = await this.builder.execute();
103
- // For backward pagination, we need to reverse the results
104
84
  if (before) {
105
85
  results = results.reverse();
106
86
  }
107
- // Only take pageSize records for the actual data
108
87
  const data = results.slice(0, pageSize);
109
- // Generate cursors
110
88
  const startCursor = data.length > 0 ? this.generateCursor(data[0], orderBy) : '';
111
89
  const endCursor = data.length > 0 ? this.generateCursor(data[data.length - 1], orderBy) : '';
112
- // Determine if there are more pages
113
90
  const hasMore = results.length > pageSize;
114
- // For the first page
115
91
  if (!cursor) {
116
92
  return {
117
93
  data,
118
94
  pageInfo: {
119
95
  hasNextPage: hasMore,
120
- hasPreviousPage: data.length > 0 && this.currentPosition > 0, // Only true if we have results AND previous cursors
96
+ hasPreviousPage: data.length > 0 && this.currentPosition > 0,
121
97
  startCursor,
122
98
  endCursor,
123
99
  totalCount: 0,
@@ -126,13 +102,12 @@ export class PaginationFeature {
126
102
  }
127
103
  };
128
104
  }
129
- // For pages accessed via 'before' cursor
130
105
  if (before) {
131
106
  return {
132
107
  data,
133
108
  pageInfo: {
134
- hasNextPage: true, // We can always go forward when we've gone back
135
- hasPreviousPage: data.length > 0 && (this.currentPosition >= 0 || hasMore), // Need results to have previous page
109
+ hasNextPage: true,
110
+ hasPreviousPage: data.length > 0 && (this.currentPosition >= 0 || hasMore),
136
111
  startCursor,
137
112
  endCursor,
138
113
  totalCount: 0,
@@ -141,12 +116,11 @@ export class PaginationFeature {
141
116
  }
142
117
  };
143
118
  }
144
- // For pages accessed via 'after' cursor
145
119
  return {
146
120
  data,
147
121
  pageInfo: {
148
- hasNextPage: hasMore, // Can go forward if we have more results
149
- hasPreviousPage: data.length > 0, // Need results to have previous page
122
+ hasNextPage: hasMore,
123
+ hasPreviousPage: data.length > 0,
150
124
  startCursor,
151
125
  endCursor,
152
126
  totalCount: 0,
@@ -164,7 +138,6 @@ export class PaginationFeature {
164
138
  });
165
139
  }
166
140
  else {
167
- // Use primary key or first column as default
168
141
  const [firstColumn] = Object.keys(record);
169
142
  if (firstColumn) {
170
143
  cursorData[firstColumn] = record[firstColumn];
@@ -175,18 +148,17 @@ export class PaginationFeature {
175
148
  async firstPage(pageSize) {
176
149
  return this.paginate({ pageSize });
177
150
  }
178
- async *iteratePages(pageSize) {
179
- let currentCursor;
151
+ iteratePages(pageSize) {
152
+ return this.paginationGenerator(pageSize);
153
+ }
154
+ async *paginationGenerator(pageSize) {
155
+ let cursor;
180
156
  while (true) {
181
- const result = await this.paginate({
182
- pageSize,
183
- after: currentCursor
184
- });
157
+ const result = await this.paginate({ pageSize, after: cursor });
185
158
  yield result;
186
- if (!result.pageInfo.hasNextPage) {
159
+ if (!result.pageInfo.hasNextPage)
187
160
  break;
188
- }
189
- currentCursor = result.pageInfo.endCursor;
161
+ cursor = result.pageInfo.endCursor;
190
162
  }
191
163
  }
192
164
  }
@@ -1,22 +1,19 @@
1
+ import type { BuilderState, SchemaDefinition } from '../types/builder-state.js';
1
2
  import { QueryBuilder } from '../query-builder.js';
2
- import { ColumnType, OrderDirection, TableColumn } from '../../types/index.js';
3
- export declare class QueryModifiersFeature<Schema extends {
4
- [tableName: string]: {
5
- [columnName: string]: ColumnType;
6
- };
7
- }, T, HasSelect extends boolean = false, Aggregations = {}, OriginalT = T> {
3
+ import { OrderDirection } from '../../types/index.js';
4
+ export declare class QueryModifiersFeature<Schema extends SchemaDefinition<Schema>, State extends BuilderState<Schema, string, any, keyof Schema, Partial<Record<string, keyof Schema>>>> {
8
5
  private builder;
9
- constructor(builder: QueryBuilder<Schema, T, HasSelect, Aggregations, OriginalT>);
10
- addGroupBy(columns: (keyof T | TableColumn<Schema>) | Array<keyof T | TableColumn<Schema>>): {
6
+ constructor(builder: QueryBuilder<Schema, State>);
7
+ addGroupBy(columns: string | string[]): {
11
8
  groupBy: string[];
12
- select?: (string | keyof T)[] | undefined;
9
+ select?: (string | keyof State["output"])[] | undefined;
13
10
  where?: import("../../types/base.js").WhereCondition[];
14
11
  having?: string[];
15
12
  limit?: number;
16
13
  offset?: number;
17
14
  distinct?: boolean;
18
15
  orderBy?: {
19
- column: TableColumn<Schema> | keyof T;
16
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
20
17
  direction: OrderDirection;
21
18
  }[] | undefined;
22
19
  joins?: import("../../types/base.js").JoinClause[];
@@ -27,14 +24,14 @@ export declare class QueryModifiersFeature<Schema extends {
27
24
  };
28
25
  addLimit(count: number): {
29
26
  limit: number;
30
- select?: (string | keyof T)[] | undefined;
27
+ select?: (string | keyof State["output"])[] | undefined;
31
28
  where?: import("../../types/base.js").WhereCondition[];
32
29
  groupBy?: string[];
33
30
  having?: string[];
34
31
  offset?: number;
35
32
  distinct?: boolean;
36
33
  orderBy?: {
37
- column: TableColumn<Schema> | keyof T;
34
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
38
35
  direction: OrderDirection;
39
36
  }[] | undefined;
40
37
  joins?: import("../../types/base.js").JoinClause[];
@@ -45,14 +42,14 @@ export declare class QueryModifiersFeature<Schema extends {
45
42
  };
46
43
  addOffset(count: number): {
47
44
  offset: number;
48
- select?: (string | keyof T)[] | undefined;
45
+ select?: (string | keyof State["output"])[] | undefined;
49
46
  where?: import("../../types/base.js").WhereCondition[];
50
47
  groupBy?: string[];
51
48
  having?: string[];
52
49
  limit?: number;
53
50
  distinct?: boolean;
54
51
  orderBy?: {
55
- column: TableColumn<Schema> | keyof T;
52
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
56
53
  direction: OrderDirection;
57
54
  }[] | undefined;
58
55
  joins?: import("../../types/base.js").JoinClause[];
@@ -61,12 +58,12 @@ export declare class QueryModifiersFeature<Schema extends {
61
58
  unionQueries?: string[];
62
59
  settings?: string;
63
60
  };
64
- addOrderBy<K extends keyof T | TableColumn<Schema>>(column: K, direction?: OrderDirection): {
61
+ addOrderBy(column: string, direction?: OrderDirection): {
65
62
  orderBy: {
66
- column: TableColumn<Schema> | keyof T;
63
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
67
64
  direction: OrderDirection;
68
65
  }[];
69
- select?: (string | keyof T)[] | undefined;
66
+ select?: (string | keyof State["output"])[] | undefined;
70
67
  where?: import("../../types/base.js").WhereCondition[];
71
68
  groupBy?: string[];
72
69
  having?: string[];
@@ -82,14 +79,14 @@ export declare class QueryModifiersFeature<Schema extends {
82
79
  addHaving(condition: string, parameters?: any[]): {
83
80
  having: string[];
84
81
  parameters: any[] | undefined;
85
- select?: (string | keyof T)[] | undefined;
82
+ select?: (string | keyof State["output"])[] | undefined;
86
83
  where?: import("../../types/base.js").WhereCondition[];
87
84
  groupBy?: string[];
88
85
  limit?: number;
89
86
  offset?: number;
90
87
  distinct?: boolean;
91
88
  orderBy?: {
92
- column: TableColumn<Schema> | keyof T;
89
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
93
90
  direction: OrderDirection;
94
91
  }[] | undefined;
95
92
  joins?: import("../../types/base.js").JoinClause[];
@@ -99,14 +96,14 @@ export declare class QueryModifiersFeature<Schema extends {
99
96
  };
100
97
  setDistinct(): {
101
98
  distinct: boolean;
102
- select?: (string | keyof T)[] | undefined;
99
+ select?: (string | keyof State["output"])[] | undefined;
103
100
  where?: import("../../types/base.js").WhereCondition[];
104
101
  groupBy?: string[];
105
102
  having?: string[];
106
103
  limit?: number;
107
104
  offset?: number;
108
105
  orderBy?: {
109
- column: TableColumn<Schema> | keyof T;
106
+ column: keyof State["output"] | import("../../types/schema.js").TableColumn<Schema>;
110
107
  direction: OrderDirection;
111
108
  }[] | undefined;
112
109
  joins?: import("../../types/base.js").JoinClause[];
@@ -1 +1 @@
1
- {"version":3,"file":"query-modifiers.d.ts","sourceRoot":"","sources":["../../../src/core/features/query-modifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE/E,qBAAa,qBAAqB,CAChC,MAAM,SAAS;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;CAAE,EAC5E,CAAC,EACD,SAAS,SAAS,OAAO,GAAG,KAAK,EACjC,YAAY,GAAG,EAAE,EACjB,SAAS,GAAG,CAAC;IAED,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IAExF,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;;;;;;;;;;;;;;;;;;IAQ1F,QAAQ,CAAC,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;IAQtB,SAAS,CAAC,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;IAQvB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,GAAE,cAAsB;;;;;;;;;;;;;;;;;;IAQhG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE;;;;;;;;;;;;;;;;;;IAY/C,WAAW;;;;;;;;;;;;;;;;;;CAOZ"}
1
+ {"version":3,"file":"query-modifiers.d.ts","sourceRoot":"","sources":["../../../src/core/features/query-modifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAAa,qBAAqB,CAChC,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;IAExF,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAExD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;;;;;;;;;;;;;;;;;;IAQrC,QAAQ,CAAC,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;IAQtB,SAAS,CAAC,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;IAQvB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,cAAsB;;;;;;;;;;;;;;;;;;IAQ5D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE;;;;;;;;;;;;;;;;;;IAY/C,WAAW;;;;;;;;;;;;;;;;;;CAOZ"}