@hypequery/clickhouse 1.4.0 → 1.6.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 (35) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1 -1
  3. package/dist/cli/generate-types.js +1 -1
  4. package/dist/core/cache/types.d.ts +2 -2
  5. package/dist/core/features/analytics.d.ts +19 -0
  6. package/dist/core/features/analytics.d.ts.map +1 -1
  7. package/dist/core/features/analytics.js +9 -0
  8. package/dist/core/query-builder.d.ts +5 -15
  9. package/dist/core/query-builder.d.ts.map +1 -1
  10. package/dist/core/query-builder.js +31 -22
  11. package/dist/core/tests/integration/setup.d.ts +1 -0
  12. package/dist/core/tests/integration/setup.d.ts.map +1 -1
  13. package/dist/core/tests/integration/setup.js +2 -1
  14. package/dist/core/tests/test-utils.d.ts.map +1 -1
  15. package/dist/core/tests/test-utils.js +4 -2
  16. package/dist/core/types/builder-state.d.ts +7 -5
  17. package/dist/core/types/builder-state.d.ts.map +1 -1
  18. package/dist/core/types/select-types.d.ts +3 -2
  19. package/dist/core/types/select-types.d.ts.map +1 -1
  20. package/dist/core/utils/predicate-builder.d.ts +4 -0
  21. package/dist/core/utils/predicate-builder.d.ts.map +1 -1
  22. package/dist/core/utils/predicate-builder.js +4 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/types/base.d.ts +0 -22
  26. package/dist/types/base.d.ts.map +1 -1
  27. package/dist/types/clickhouse-types.d.ts +1 -1
  28. package/dist/types/clickhouse-types.d.ts.map +1 -1
  29. package/package.json +26 -30
  30. package/dist/core/features/pagination.d.ts +0 -21
  31. package/dist/core/features/pagination.d.ts.map +0 -1
  32. package/dist/core/features/pagination.js +0 -165
  33. package/dist/core/tests/integration/pagination-test-tbc.d.ts +0 -2
  34. package/dist/core/tests/integration/pagination-test-tbc.d.ts.map +0 -1
  35. package/dist/core/tests/integration/pagination-test-tbc.js +0 -190
@@ -9,14 +9,15 @@ export type QualifiedColumnKeys<State extends AnyBuilderState> = {
9
9
  }[TableIdentifiers<State>];
10
10
  export type BaseColumnKeys<State extends AnyBuilderState> = keyof BaseRow<State>;
11
11
  export type OutputColumnKeys<State extends AnyBuilderState> = keyof State['output'];
12
- export type SelectableColumn<State extends AnyBuilderState> = OutputColumnKeys<State> | BaseColumnKeys<State> | QualifiedColumnKeys<State>;
12
+ export type ScalarColumnKeys<State extends AnyBuilderState> = keyof State['scalars'];
13
+ export type SelectableColumn<State extends AnyBuilderState> = OutputColumnKeys<State> | ScalarColumnKeys<State> | BaseColumnKeys<State> | QualifiedColumnKeys<State>;
13
14
  type StringSelectableColumn<State extends AnyBuilderState> = Extract<SelectableColumn<State>, string>;
14
15
  type AsKeyword = 'as' | 'AS' | 'As' | 'aS';
15
16
  type AliasedColumnString<State extends AnyBuilderState> = `${StringSelectableColumn<State>} ${AsKeyword} ${string}`;
16
17
  export type SelectableItem<State extends AnyBuilderState> = SelectableColumn<State> | AliasedColumnString<State> | SqlExpression;
17
18
  export type ColumnSelectionKey<P> = P extends `${string}.${infer C}` ? C : P;
18
19
  type QualifiedColumnValue<State extends AnyBuilderState, P> = P extends `${infer Table}.${infer Column}` ? ResolveTableSchema<State, Table> extends Record<string, ColumnType> ? Column extends keyof ResolveTableSchema<State, Table> ? ResolveTableSchema<State, Table>[Column] extends ColumnType ? InferColumnType<ResolveTableSchema<State, Table>[Column]> : never : never : never : never;
19
- export type ColumnSelectionValue<State extends AnyBuilderState, P> = P extends OutputColumnKeys<State> ? State['output'][P] : P extends BaseColumnKeys<State> ? BaseRow<State>[P] : QualifiedColumnValue<State, P>;
20
+ export type ColumnSelectionValue<State extends AnyBuilderState, P> = P extends OutputColumnKeys<State> ? State['output'][P] : P extends ScalarColumnKeys<State> ? State['scalars'][P] : P extends BaseColumnKeys<State> ? BaseRow<State>[P] : QualifiedColumnValue<State, P>;
20
21
  export type ColumnSelectionRecord<State extends AnyBuilderState, K> = {
21
22
  [P in Extract<K, SelectableColumn<State>> as ColumnSelectionKey<P>]: ColumnSelectionValue<State, P>;
22
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"select-types.d.ts","sourceRoot":"","sources":["../../../src/core/types/select-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-types.d.ts","sourceRoot":"","sources":["../../../src/core/types/select-types.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,9 @@ export interface PredicateLiteral<T = PredicatePrimitive> {
14
14
  }
15
15
  export type ColumnReference<State extends AnyBuilderState> = keyof BaseRow<State> | keyof State['output'] | Extract<SelectableColumn<State>, string>;
16
16
  export type PredicateArg<State extends AnyBuilderState> = ColumnReference<State> | PredicateExpression | PredicateLiteral | PredicateValue | PredicatePrimitive[];
17
+ export interface ClickHousePredicateBuilder<State extends AnyBuilderState> {
18
+ dictGet<T = unknown>(dictionary: string, attribute: string, key: PredicateArg<State>): PredicateExpression<T>;
19
+ }
17
20
  export interface PredicateBuilder<State extends AnyBuilderState> {
18
21
  fn<T = unknown>(name: string, ...args: Array<PredicateArg<State>>): PredicateExpression<T>;
19
22
  col(column: ColumnReference<State>): PredicateExpression;
@@ -23,6 +26,7 @@ export interface PredicateBuilder<State extends AnyBuilderState> {
23
26
  raw(sql: string): PredicateExpression;
24
27
  and(expressions: PredicateExpression[]): PredicateExpression<boolean>;
25
28
  or(expressions: PredicateExpression[]): PredicateExpression<boolean>;
29
+ ch: ClickHousePredicateBuilder<State>;
26
30
  }
27
31
  export declare function createPredicateBuilder<State extends AnyBuilderState>(): PredicateBuilder<State>;
28
32
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"predicate-builder.d.ts","sourceRoot":"","sources":["../../../src/core/utils/predicate-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;AACzE,KAAK,cAAc,GAAG,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,kBAAkB;IACtD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,eAAe,IACrD,MAAM,OAAO,CAAC,KAAK,CAAC,GACpB,MAAM,KAAK,CAAC,QAAQ,CAAC,GACrB,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAE7C,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,eAAe,IAClD,eAAe,CAAC,KAAK,CAAC,GACtB,mBAAmB,GACnB,gBAAgB,GAChB,cAAc,GACd,kBAAkB,EAAE,CAAC;AAEzB,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,eAAe;IAC7D,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC3F,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC;IACzD,KAAK,CAAC,CAAC,SAAS,kBAAkB,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,CAAC,SAAS,kBAAkB,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,GAAG,mBAAmB,CAAC;IACjF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACtC,GAAG,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtE,EAAE,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;CACtE;AA4GD,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,eAAe,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAY/F"}
1
+ {"version":3,"file":"predicate-builder.d.ts","sourceRoot":"","sources":["../../../src/core/utils/predicate-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;AACzE,KAAK,cAAc,GAAG,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,kBAAkB;IACtD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,eAAe,IACrD,MAAM,OAAO,CAAC,KAAK,CAAC,GACpB,MAAM,KAAK,CAAC,QAAQ,CAAC,GACrB,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAE7C,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,eAAe,IAClD,eAAe,CAAC,KAAK,CAAC,GACtB,mBAAmB,GACnB,gBAAgB,GAChB,cAAc,GACd,kBAAkB,EAAE,CAAC;AAEzB,MAAM,WAAW,0BAA0B,CAAC,KAAK,SAAS,eAAe;IACvE,OAAO,CAAC,CAAC,GAAG,OAAO,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,GACvB,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,eAAe;IAC7D,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC3F,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC;IACzD,KAAK,CAAC,CAAC,SAAS,kBAAkB,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,CAAC,SAAS,kBAAkB,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,GAAG,mBAAmB,CAAC;IACjF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACtC,GAAG,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtE,EAAE,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACrE,EAAE,EAAE,0BAA0B,CAAC,KAAK,CAAC,CAAC;CACvC;AA4GD,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,eAAe,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAgB/F"}
@@ -87,6 +87,9 @@ export function createPredicateBuilder() {
87
87
  array: values => buildArrayLiteral(values),
88
88
  raw: sql => createExpression(sql),
89
89
  and: expressions => buildLogical('AND', expressions),
90
- or: expressions => buildLogical('OR', expressions)
90
+ or: expressions => buildLogical('OR', expressions),
91
+ ch: {
92
+ dictGet: (dictionary, attribute, key) => buildFunctionExpression('dictGet', [literal(dictionary), literal(attribute), key])
93
+ }
91
94
  };
92
95
  }
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ export { MemoryCacheProvider } from './core/cache/providers/memory-lru.js';
9
9
  export { MemoryCacheProvider as MemoryLRUCacheProvider } from './core/cache/providers/memory-lru.js';
10
10
  export { NoopCacheProvider } from './core/cache/providers/noop.js';
11
11
  export type { ColumnType, TableColumn, TableSchema, TableRecord, DatabaseSchema, InferColumnType, } from './types/schema.js';
12
- export type { OrderDirection, QueryConfig, PaginationOptions, PaginatedResult, PageInfo, AggregationType } from './types/base.js';
12
+ export type { OrderDirection, QueryConfig, AggregationType } from './types/base.js';
13
13
  export type { FilterOperator, OperatorValueMap, FilterConditionInput } from './types/filters.js';
14
14
  export type { JoinPath, JoinPathOptions } from './core/join-relationships.js';
15
15
  export { CrossFilter } from './core/cross-filter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,IAAI,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,YAAY,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACd,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAE5B,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;AAGhD,OAAO,EACL,GAAG,EACH,KAAK,EACL,UAAU,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACT,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACb,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,IAAI,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,YAAY,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACd,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,cAAc,EACd,WAAW,EACX,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAE5B,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;AAGhD,OAAO,EACL,GAAG,EACH,KAAK,EACL,UAAU,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACT,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACb,MAAM,mCAAmC,CAAC"}
@@ -47,26 +47,4 @@ export interface JoinClause {
47
47
  export type AggregationType<T, Aggregations, Column, A extends string, Suffix extends string, HasSelect extends boolean> = HasSelect extends true ? {
48
48
  [K in keyof T | A]: K extends keyof T ? T[K] : string;
49
49
  } : Aggregations extends Record<string, string> ? Aggregations & Record<A extends undefined ? `${Column & string}_${Suffix}` : A, string> : Record<A extends undefined ? `${Column & string}_${Suffix}` : A, string>;
50
- export interface PaginationOptions<T> {
51
- pageSize: number;
52
- after?: string;
53
- before?: string;
54
- orderBy?: Array<{
55
- column: keyof T | TableColumn<any>;
56
- direction: OrderDirection;
57
- }>;
58
- }
59
- export interface PageInfo {
60
- hasNextPage: boolean;
61
- hasPreviousPage: boolean;
62
- startCursor: string;
63
- endCursor: string;
64
- totalCount: number;
65
- totalPages: number;
66
- pageSize: number;
67
- }
68
- export interface PaginatedResult<T> {
69
- data: T[];
70
- pageInfo: PageInfo;
71
- }
72
50
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export type ClickHouseBoolean = 'Bool' | 'Boolean';
7
7
  export type ClickHouseEnum = `Enum8(${string})` | `Enum16(${string})`;
8
8
  export type ClickHouseBaseType = ClickHouseInteger | ClickHouseFloat | ClickHouseDecimal | ClickHouseDateTime | ClickHouseString | ClickHouseBoolean | ClickHouseEnum;
9
9
  export type ClickHouseType = ClickHouseBaseType | `Array(${ClickHouseBaseType})` | `Array(Nullable(${ClickHouseBaseType}))` | `Array(LowCardinality(String))` | `Array(LowCardinality(${ClickHouseEnum}))` | `Nullable(${ClickHouseBaseType})` | `Nullable(Array(${ClickHouseBaseType}))` | `LowCardinality(${ClickHouseString})` | `LowCardinality(${ClickHouseEnum})` | `LowCardinality(Nullable(${ClickHouseString}))` | `LowCardinality(Nullable(${ClickHouseEnum}))` | `Map(String, ${ClickHouseBaseType})` | `Map(String, Array(${ClickHouseBaseType}))` | `Map(String, Nullable(${ClickHouseBaseType}))` | `Map(LowCardinality(String), ${ClickHouseBaseType})` | `Map(LowCardinality(String), Array(${ClickHouseBaseType}))` | `Map(LowCardinality(String), Nullable(${ClickHouseBaseType}))` | `Map(${ClickHouseInteger}, ${ClickHouseBaseType})` | `Map(${ClickHouseInteger}, Array(${ClickHouseBaseType}))` | `Map(${ClickHouseInteger}, Nullable(${ClickHouseBaseType}))` | `Array(Map(String, ${ClickHouseBaseType}))` | `Array(Map(LowCardinality(String), ${ClickHouseBaseType}))` | `Array(Map(${ClickHouseInteger}, ${ClickHouseBaseType}))` | `Nullable(Map(String, ${ClickHouseBaseType}))` | `Nullable(Map(LowCardinality(String), ${ClickHouseBaseType}))`;
10
- export type InferClickHouseType<T extends ClickHouseType, Depth extends number = 0> = Depth extends 5 ? unknown : T extends ClickHouseInteger ? number : T extends ClickHouseFloat ? number : T extends ClickHouseDecimal ? number : T extends ClickHouseDateTime ? Date : T extends ClickHouseString ? string : T extends ClickHouseEnum ? string : T extends ClickHouseBoolean ? boolean : T extends `Array(${infer U})` ? U extends ClickHouseType ? Array<InferClickHouseType<U, Add1<Depth>>> : unknown[] : T extends `Nullable(${infer U})` ? U extends ClickHouseType ? InferClickHouseType<U, Add1<Depth>> | null : unknown | null : T extends `LowCardinality(${infer U})` ? U extends `Nullable(${infer V})` ? V extends ClickHouseString | ClickHouseEnum ? InferClickHouseType<V, Add1<Depth>> | null : unknown | null : U extends ClickHouseString | ClickHouseEnum ? InferClickHouseType<U, Add1<Depth>> : unknown : T extends `Map(${string}, ${infer V})` ? V extends ClickHouseType ? Record<string, InferClickHouseType<V, Add1<Depth>>> : Record<string, unknown> : unknown;
10
+ export type InferClickHouseType<T extends ClickHouseType, Depth extends number = 0> = Depth extends 5 ? unknown : T extends ClickHouseInteger ? number : T extends ClickHouseFloat ? number : T extends ClickHouseDecimal ? number : T extends ClickHouseDateTime ? string : T extends ClickHouseString ? string : T extends ClickHouseEnum ? string : T extends ClickHouseBoolean ? boolean : T extends `Array(${infer U})` ? U extends ClickHouseType ? Array<InferClickHouseType<U, Add1<Depth>>> : unknown[] : T extends `Nullable(${infer U})` ? U extends ClickHouseType ? InferClickHouseType<U, Add1<Depth>> | null : unknown | null : T extends `LowCardinality(${infer U})` ? U extends `Nullable(${infer V})` ? V extends ClickHouseString | ClickHouseEnum ? InferClickHouseType<V, Add1<Depth>> | null : unknown | null : U extends ClickHouseString | ClickHouseEnum ? InferClickHouseType<U, Add1<Depth>> : unknown : T extends `Map(${string}, ${infer V})` ? V extends ClickHouseType ? Record<string, InferClickHouseType<V, Add1<Depth>>> : Record<string, unknown> : unknown;
11
11
  type Add1<T extends number> = T extends 0 ? 1 : T extends 1 ? 2 : T extends 2 ? 3 : T extends 3 ? 4 : 5;
12
12
  export type ClickHouseSchema = Record<string, ClickHouseType>;
13
13
  export type InferSchemaType<T extends ClickHouseSchema> = {
@@ -1 +1 @@
1
- {"version":3,"file":"clickhouse-types.d.ts","sourceRoot":"","sources":["../../src/types/clickhouse-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clickhouse-types.d.ts","sourceRoot":"","sources":["../../src/types/clickhouse-types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypequery/clickhouse",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "ClickHouse typescript query builder",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,30 +13,14 @@
13
13
  "types": "./dist/index.d.ts",
14
14
  "import": "./dist/index.js",
15
15
  "require": "./dist/index.js"
16
+ },
17
+ "./cli": {
18
+ "types": "./dist/cli/index.d.ts",
19
+ "import": "./dist/cli/index.js",
20
+ "require": "./dist/cli/index.js"
16
21
  }
17
22
  },
18
23
  "license": "Apache-2.0",
19
- "scripts": {
20
- "build": "npm run build:main && npm run build:cli && npm run verify-build || npm run diagnose-ci",
21
- "build:main": "tsc --project tsconfig.json",
22
- "build:cli": "node scripts/ensure-core-files.js && node scripts/handle-cli-files.js",
23
- "build:ci": "npm run build:main && node scripts/ensure-core-files.js && node scripts/handle-cli-files.js && npm run verify-build || npm run diagnose-ci",
24
- "verify-build": "node scripts/verify-build.js",
25
- "diagnose-ci": "node scripts/diagnose-ci.js",
26
- "dev": "tsc --watch",
27
- "test": "npm run test:types && npm run test:unit",
28
- "test:unit": "vitest run --config vitest.config.ts",
29
- "test:types": "tsc --project tsconfig.type-tests.json",
30
- "test:integration": "node scripts/run-integration-tests.js",
31
- "test:watch": "vitest watch --config vitest.config.ts",
32
- "test:coverage": "vitest run --coverage --config vitest.config.ts",
33
- "test:cli": "node scripts/test-cli-integration.js",
34
- "lint": "eslint src/**/*.ts",
35
- "semantic-release": "npx semantic-release",
36
- "release": "npx semantic-release --extends ./.releaserc.cjs --no-ci",
37
- "docs:api": "typedoc --options typedoc.json",
38
- "docs:mdx": "npm run docs:api && node scripts/process-typedoc-markdown.js"
39
- },
40
24
  "bin": {
41
25
  "hypequery-generate-types": "./dist/cli/bin.js"
42
26
  },
@@ -60,15 +44,8 @@
60
44
  "@clickhouse/client": "^1.11.2",
61
45
  "@clickhouse/client-common": "^1.11.2",
62
46
  "@clickhouse/client-web": "^1.11.2",
63
- "@semantic-release/changelog": "^6.0.3",
64
- "@semantic-release/commit-analyzer": "^11.1.0",
65
- "@semantic-release/git": "^10.0.1",
66
- "@semantic-release/github": "^9.2.6",
67
- "@semantic-release/npm": "^11.0.2",
68
- "@semantic-release/release-notes-generator": "^12.1.0",
69
47
  "@types/node": "^18.19.80",
70
48
  "glob": "^11.0.3",
71
- "semantic-release": "^23.0.2",
72
49
  "ts-node": "^10.9.0",
73
50
  "typedoc": "^0.28.1",
74
51
  "typedoc-plugin-markdown": "^4.6.0",
@@ -90,5 +67,24 @@
90
67
  },
91
68
  "publishConfig": {
92
69
  "access": "public"
70
+ },
71
+ "scripts": {
72
+ "build": "npm run build:main && npm run build:cli && npm run verify-build || npm run diagnose-ci",
73
+ "build:main": "tsc --project tsconfig.json",
74
+ "build:cli": "node scripts/ensure-core-files.js && node scripts/handle-cli-files.js",
75
+ "build:ci": "npm run build:main && node scripts/ensure-core-files.js && node scripts/handle-cli-files.js && npm run verify-build || npm run diagnose-ci",
76
+ "verify-build": "node scripts/verify-build.js",
77
+ "diagnose-ci": "node scripts/diagnose-ci.js",
78
+ "dev": "tsc --watch",
79
+ "test": "npm run test:types && npm run test:unit",
80
+ "test:unit": "vitest run --config vitest.config.ts",
81
+ "test:types": "tsc --project tsconfig.type-tests.json",
82
+ "test:integration": "node scripts/run-integration-tests.js",
83
+ "test:watch": "vitest watch --config vitest.config.ts",
84
+ "test:coverage": "vitest run --coverage --config vitest.config.ts",
85
+ "test:cli": "node scripts/test-cli-integration.js",
86
+ "lint": "eslint --ext .ts \"src/**/*.ts\"",
87
+ "docs:api": "typedoc --options typedoc.json",
88
+ "docs:mdx": "npm run docs:api && node scripts/process-typedoc-markdown.js"
93
89
  }
94
- }
90
+ }
@@ -1,21 +0,0 @@
1
- import type { BuilderState, SchemaDefinition } from '../types/builder-state.js';
2
- import { QueryBuilder } from '../query-builder.js';
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>>>> {
5
- private builder;
6
- private static cursorStacks;
7
- private stackKey;
8
- constructor(builder: QueryBuilder<Schema, State>);
9
- private get cursorStack();
10
- private set cursorStack(value);
11
- private get currentPosition();
12
- private set currentPosition(value);
13
- private encodeCursor;
14
- private decodeCursor;
15
- paginate(options: PaginationOptions<State['output']>): Promise<PaginatedResult<State['output']>>;
16
- private generateCursor;
17
- firstPage(pageSize: number): Promise<PaginatedResult<State['output']>>;
18
- iteratePages(pageSize: number): AsyncGenerator<PaginatedResult<State['output']>>;
19
- private paginationGenerator;
20
- }
21
- //# sourceMappingURL=pagination.d.ts.map
@@ -1 +0,0 @@
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;IAgHtG,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"}
@@ -1,165 +0,0 @@
1
- export class PaginationFeature {
2
- builder;
3
- static cursorStacks = new Map();
4
- stackKey;
5
- constructor(builder) {
6
- this.builder = builder;
7
- this.stackKey = builder.getTableName();
8
- if (!PaginationFeature.cursorStacks.has(this.stackKey)) {
9
- PaginationFeature.cursorStacks.set(this.stackKey, { stack: [], position: -1 });
10
- }
11
- }
12
- get cursorStack() {
13
- return PaginationFeature.cursorStacks.get(this.stackKey).stack;
14
- }
15
- set cursorStack(value) {
16
- const current = PaginationFeature.cursorStacks.get(this.stackKey);
17
- PaginationFeature.cursorStacks.set(this.stackKey, { ...current, stack: value });
18
- }
19
- get currentPosition() {
20
- return PaginationFeature.cursorStacks.get(this.stackKey).position;
21
- }
22
- set currentPosition(value) {
23
- const current = PaginationFeature.cursorStacks.get(this.stackKey);
24
- PaginationFeature.cursorStacks.set(this.stackKey, { ...current, position: value });
25
- }
26
- encodeCursor(values) {
27
- return Buffer.from(JSON.stringify(values)).toString('base64');
28
- }
29
- decodeCursor(cursor) {
30
- return JSON.parse(Buffer.from(cursor, 'base64').toString());
31
- }
32
- async paginate(options) {
33
- const { pageSize, after, before, orderBy = [] } = options;
34
- const requestSize = pageSize + 1;
35
- if (after) {
36
- if (this.currentPosition < this.cursorStack.length - 1) {
37
- this.cursorStack = this.cursorStack.slice(0, this.currentPosition + 1);
38
- }
39
- this.cursorStack = [...this.cursorStack, after];
40
- this.currentPosition = this.cursorStack.length - 1;
41
- }
42
- else if (before) {
43
- const cursorIndex = this.cursorStack.indexOf(before);
44
- if (cursorIndex === -1) {
45
- if (this.currentPosition === this.cursorStack.length - 1) {
46
- this.cursorStack = [...this.cursorStack, before];
47
- }
48
- this.currentPosition = Math.max(-1, this.currentPosition - 1);
49
- }
50
- else {
51
- this.currentPosition = Math.max(-1, cursorIndex - 1);
52
- }
53
- }
54
- else {
55
- if (!this.cursorStack.length) {
56
- this.cursorStack = [];
57
- this.currentPosition = -1;
58
- }
59
- }
60
- orderBy.forEach(({ column, direction }) => {
61
- this.builder.orderBy(column, direction);
62
- });
63
- const cursor = after || before;
64
- if (cursor && orderBy && orderBy.length > 0) {
65
- const [{ column, direction }] = orderBy;
66
- const columnName = String(column);
67
- const cursorValues = this.decodeCursor(cursor);
68
- const value = cursorValues[columnName];
69
- if (before) {
70
- const operator = direction === 'DESC' ? 'gt' : 'lt';
71
- this.builder.where(columnName, operator, value);
72
- orderBy.forEach(({ column, direction }) => {
73
- const reversedDirection = direction === 'DESC' ? 'ASC' : 'DESC';
74
- this.builder.orderBy(column, reversedDirection);
75
- });
76
- }
77
- else {
78
- const operator = direction === 'DESC' ? 'lt' : 'gt';
79
- this.builder.where(columnName, operator, value);
80
- }
81
- }
82
- this.builder.limit(requestSize);
83
- // Pagination mutates builder state per page; bypass caching until pagination-specific caching is designed.
84
- let results = await this.builder.execute({ cache: { mode: 'no-store' } });
85
- if (before) {
86
- results = results.reverse();
87
- }
88
- const data = results.slice(0, pageSize);
89
- const startCursor = data.length > 0 ? this.generateCursor(data[0], orderBy) : '';
90
- const endCursor = data.length > 0 ? this.generateCursor(data[data.length - 1], orderBy) : '';
91
- const hasMore = results.length > pageSize;
92
- if (!cursor) {
93
- return {
94
- data,
95
- pageInfo: {
96
- hasNextPage: hasMore,
97
- hasPreviousPage: data.length > 0 && this.currentPosition > 0,
98
- startCursor,
99
- endCursor,
100
- totalCount: 0,
101
- totalPages: 0,
102
- pageSize
103
- }
104
- };
105
- }
106
- if (before) {
107
- return {
108
- data,
109
- pageInfo: {
110
- hasNextPage: true,
111
- hasPreviousPage: data.length > 0 && (this.currentPosition >= 0 || hasMore),
112
- startCursor,
113
- endCursor,
114
- totalCount: 0,
115
- totalPages: 0,
116
- pageSize
117
- }
118
- };
119
- }
120
- return {
121
- data,
122
- pageInfo: {
123
- hasNextPage: hasMore,
124
- hasPreviousPage: data.length > 0,
125
- startCursor,
126
- endCursor,
127
- totalCount: 0,
128
- totalPages: 0,
129
- pageSize
130
- }
131
- };
132
- }
133
- generateCursor(record, orderBy) {
134
- const cursorData = {};
135
- if (orderBy) {
136
- orderBy.forEach(({ column }) => {
137
- const columnName = String(column);
138
- cursorData[columnName] = record[columnName];
139
- });
140
- }
141
- else {
142
- const [firstColumn] = Object.keys(record);
143
- if (firstColumn) {
144
- cursorData[firstColumn] = record[firstColumn];
145
- }
146
- }
147
- return this.encodeCursor(cursorData);
148
- }
149
- async firstPage(pageSize) {
150
- return this.paginate({ pageSize });
151
- }
152
- iteratePages(pageSize) {
153
- return this.paginationGenerator(pageSize);
154
- }
155
- async *paginationGenerator(pageSize) {
156
- let cursor;
157
- while (true) {
158
- const result = await this.paginate({ pageSize, after: cursor });
159
- yield result;
160
- if (!result.pageInfo.hasNextPage)
161
- break;
162
- cursor = result.pageInfo.endCursor;
163
- }
164
- }
165
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pagination-test-tbc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination-test-tbc.d.ts","sourceRoot":"","sources":["../../../../src/core/tests/integration/pagination-test-tbc.ts"],"names":[],"mappings":""}