@taylordb/query-builder 0.1.4 → 0.3.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 (133) hide show
  1. package/dist/{src → cjs}/__tests__/query-builder.spec.js +1 -1
  2. package/dist/{src → cjs}/__tests__/query-builder.spec.js.map +1 -1
  3. package/dist/{src → cjs}/aggregation-query-builder.d.ts +1 -0
  4. package/dist/{src → cjs}/aggregation-query-builder.js +4 -1
  5. package/dist/{src → cjs}/aggregation-query-builder.js.map +1 -1
  6. package/dist/cjs/batch-query-builder.d.ts +27 -0
  7. package/dist/{src → cjs}/batch-query-builder.js +10 -0
  8. package/dist/cjs/batch-query-builder.js.map +1 -0
  9. package/dist/cjs/executor.d.ts +15 -0
  10. package/dist/cjs/executor.js +67 -0
  11. package/dist/cjs/executor.js.map +1 -0
  12. package/dist/{src → cjs}/insert-query-builder.d.ts +8 -6
  13. package/dist/{src → cjs}/insert-query-builder.js +2 -1
  14. package/dist/cjs/insert-query-builder.js.map +1 -0
  15. package/dist/{src → cjs}/query-builder.d.ts +4 -2
  16. package/dist/{src → cjs}/query-builder.js +7 -0
  17. package/dist/cjs/query-builder.js.map +1 -0
  18. package/dist/cjs/subscription-manager.d.ts +19 -0
  19. package/dist/cjs/subscription-manager.js +105 -0
  20. package/dist/cjs/subscription-manager.js.map +1 -0
  21. package/dist/esm/@types/aggregate.d.ts +28 -0
  22. package/dist/esm/@types/aggregate.js +2 -0
  23. package/dist/esm/@types/aggregate.js.map +1 -0
  24. package/dist/esm/@types/delete.d.ts +2 -0
  25. package/dist/esm/@types/delete.js +2 -0
  26. package/dist/esm/@types/delete.js.map +1 -0
  27. package/dist/esm/@types/insert.d.ts +8 -0
  28. package/dist/esm/@types/insert.js +2 -0
  29. package/dist/esm/@types/insert.js.map +1 -0
  30. package/dist/esm/@types/internal-types.d.ts +24 -0
  31. package/dist/esm/@types/internal-types.js +2 -0
  32. package/dist/esm/@types/internal-types.js.map +1 -0
  33. package/dist/esm/@types/query-builder.d.ts +7 -0
  34. package/dist/esm/@types/query-builder.js +2 -0
  35. package/dist/esm/@types/query-builder.js.map +1 -0
  36. package/dist/esm/@types/type-helpers.d.ts +27 -0
  37. package/dist/esm/@types/type-helpers.js +2 -0
  38. package/dist/esm/@types/type-helpers.js.map +1 -0
  39. package/dist/esm/@types/update.d.ts +5 -0
  40. package/dist/esm/@types/update.js +2 -0
  41. package/dist/esm/@types/update.js.map +1 -0
  42. package/dist/esm/__tests__/query-builder.spec.js +127 -0
  43. package/dist/esm/__tests__/query-builder.spec.js.map +1 -0
  44. package/dist/{sample/sample-1 → esm/__tests__}/taylorclient.types.d.ts +0 -21
  45. package/dist/{src → esm}/__tests__/taylorclient.types.js +1 -2
  46. package/dist/esm/__tests__/taylorclient.types.js.map +1 -0
  47. package/dist/esm/aggregation-query-builder.d.ts +28 -0
  48. package/dist/esm/aggregation-query-builder.js +79 -0
  49. package/dist/esm/aggregation-query-builder.js.map +1 -0
  50. package/dist/esm/batch-query-builder.d.ts +27 -0
  51. package/dist/esm/batch-query-builder.js +34 -0
  52. package/dist/esm/batch-query-builder.js.map +1 -0
  53. package/dist/esm/delete-query-builder.d.ts +16 -0
  54. package/dist/esm/delete-query-builder.js +32 -0
  55. package/dist/esm/delete-query-builder.js.map +1 -0
  56. package/dist/esm/executor.d.ts +15 -0
  57. package/dist/esm/executor.js +63 -0
  58. package/dist/esm/executor.js.map +1 -0
  59. package/dist/esm/index.d.ts +1 -0
  60. package/dist/esm/index.js +2 -0
  61. package/dist/esm/index.js.map +1 -0
  62. package/dist/esm/insert-query-builder.d.ts +19 -0
  63. package/dist/esm/insert-query-builder.js +65 -0
  64. package/dist/esm/insert-query-builder.js.map +1 -0
  65. package/dist/esm/query-builder.d.ts +54 -0
  66. package/dist/esm/query-builder.js +203 -0
  67. package/dist/esm/query-builder.js.map +1 -0
  68. package/dist/esm/selection-builder.d.ts +10 -0
  69. package/dist/esm/selection-builder.js +16 -0
  70. package/dist/esm/selection-builder.js.map +1 -0
  71. package/dist/esm/subscription-manager.d.ts +19 -0
  72. package/dist/esm/subscription-manager.js +98 -0
  73. package/dist/esm/subscription-manager.js.map +1 -0
  74. package/dist/esm/update-query-builder.d.ts +17 -0
  75. package/dist/esm/update-query-builder.js +39 -0
  76. package/dist/esm/update-query-builder.js.map +1 -0
  77. package/dist/esm/where-query-builder.d.ts +14 -0
  78. package/dist/esm/where-query-builder.js +63 -0
  79. package/dist/esm/where-query-builder.js.map +1 -0
  80. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  81. package/package.json +12 -9
  82. package/dist/sample/sample-1/index.js +0 -71
  83. package/dist/sample/sample-1/index.js.map +0 -1
  84. package/dist/sample/sample-1/taylorclient.types.js.map +0 -1
  85. package/dist/src/batch-query-builder.d.ts +0 -16
  86. package/dist/src/batch-query-builder.js.map +0 -1
  87. package/dist/src/executor.d.ts +0 -12
  88. package/dist/src/executor.js +0 -37
  89. package/dist/src/executor.js.map +0 -1
  90. package/dist/src/insert-query-builder.js.map +0 -1
  91. package/dist/src/query-builder.js.map +0 -1
  92. package/dist/tsconfig.tsbuildinfo +0 -1
  93. /package/dist/{src → cjs}/@types/aggregate.d.ts +0 -0
  94. /package/dist/{src → cjs}/@types/aggregate.js +0 -0
  95. /package/dist/{src → cjs}/@types/aggregate.js.map +0 -0
  96. /package/dist/{src → cjs}/@types/delete.d.ts +0 -0
  97. /package/dist/{src → cjs}/@types/delete.js +0 -0
  98. /package/dist/{src → cjs}/@types/delete.js.map +0 -0
  99. /package/dist/{src → cjs}/@types/insert.d.ts +0 -0
  100. /package/dist/{src → cjs}/@types/insert.js +0 -0
  101. /package/dist/{src → cjs}/@types/insert.js.map +0 -0
  102. /package/dist/{src → cjs}/@types/internal-types.d.ts +0 -0
  103. /package/dist/{src → cjs}/@types/internal-types.js +0 -0
  104. /package/dist/{src → cjs}/@types/internal-types.js.map +0 -0
  105. /package/dist/{src → cjs}/@types/query-builder.d.ts +0 -0
  106. /package/dist/{src → cjs}/@types/query-builder.js +0 -0
  107. /package/dist/{src → cjs}/@types/query-builder.js.map +0 -0
  108. /package/dist/{src → cjs}/@types/type-helpers.d.ts +0 -0
  109. /package/dist/{src → cjs}/@types/type-helpers.js +0 -0
  110. /package/dist/{src → cjs}/@types/type-helpers.js.map +0 -0
  111. /package/dist/{src → cjs}/@types/update.d.ts +0 -0
  112. /package/dist/{src → cjs}/@types/update.js +0 -0
  113. /package/dist/{src → cjs}/@types/update.js.map +0 -0
  114. /package/dist/{src → cjs}/__tests__/query-builder.spec.d.ts +0 -0
  115. /package/dist/{src → cjs}/__tests__/taylorclient.types.d.ts +0 -0
  116. /package/dist/{sample/sample-1 → cjs/__tests__}/taylorclient.types.js +0 -0
  117. /package/dist/{src → cjs}/__tests__/taylorclient.types.js.map +0 -0
  118. /package/dist/{src → cjs}/delete-query-builder.d.ts +0 -0
  119. /package/dist/{src → cjs}/delete-query-builder.js +0 -0
  120. /package/dist/{src → cjs}/delete-query-builder.js.map +0 -0
  121. /package/dist/{src → cjs}/index.d.ts +0 -0
  122. /package/dist/{src → cjs}/index.js +0 -0
  123. /package/dist/{src → cjs}/index.js.map +0 -0
  124. /package/dist/{src → cjs}/selection-builder.d.ts +0 -0
  125. /package/dist/{src → cjs}/selection-builder.js +0 -0
  126. /package/dist/{src → cjs}/selection-builder.js.map +0 -0
  127. /package/dist/{src → cjs}/update-query-builder.d.ts +0 -0
  128. /package/dist/{src → cjs}/update-query-builder.js +0 -0
  129. /package/dist/{src → cjs}/update-query-builder.js.map +0 -0
  130. /package/dist/{src → cjs}/where-query-builder.d.ts +0 -0
  131. /package/dist/{src → cjs}/where-query-builder.js +0 -0
  132. /package/dist/{src → cjs}/where-query-builder.js.map +0 -0
  133. /package/dist/{sample/sample-1/index.d.ts → esm/__tests__/query-builder.spec.d.ts} +0 -0
@@ -0,0 +1,5 @@
1
+ import { ColumnType, MetadataWithTableName, UpdateMutationMetaData } from '@taylordb/shared';
2
+ export type UpdateNode = MetadataWithTableName<UpdateMutationMetaData>;
3
+ export type Updatable<T> = {
4
+ [K in keyof T]?: T[K] extends ColumnType<any, any, infer I, any> ? I : never;
5
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/@types/update.ts"],"names":[],"mappings":""}
@@ -0,0 +1,127 @@
1
+ import { createQueryBuilder } from '../index.js';
2
+ describe('QueryBuilder', () => {
3
+ // @ts-ignore
4
+ const qb = createQueryBuilder({
5
+ baseUrl: 'http://localhost',
6
+ apiKey: 'test',
7
+ });
8
+ it('should compile a select query', () => {
9
+ const { variables } = qb
10
+ .selectFrom('customers')
11
+ .select(['firstName', 'lastName'])
12
+ .where('firstName', '=', 'John')
13
+ .orderBy('lastName', 'asc')
14
+ .paginate(1, 10)
15
+ .compile();
16
+ expect(variables.metadata[0]).toMatchObject({
17
+ type: 'select',
18
+ tableName: 'customers',
19
+ fields: ['firstName', 'lastName'],
20
+ filtersSet: {
21
+ conjunction: 'and',
22
+ filtersSet: [
23
+ {
24
+ field: 'firstName',
25
+ operator: '=',
26
+ value: 'John',
27
+ },
28
+ ],
29
+ },
30
+ sorting: [{ field: 'lastName', direction: 'asc' }],
31
+ pagination: { offset: 0, limit: 10 },
32
+ });
33
+ });
34
+ it('should compile an insert query', () => {
35
+ const { variables } = qb
36
+ .insertInto('customers')
37
+ .values({
38
+ firstName: 'Jane',
39
+ lastName: 'Doe',
40
+ })
41
+ .compile();
42
+ expect(variables.metadata[0]).toMatchObject({
43
+ type: 'create',
44
+ tableName: 'customers',
45
+ createdRecords: [{ firstName: 'Jane', lastName: 'Doe' }],
46
+ });
47
+ });
48
+ it('should compile an update query', () => {
49
+ const { variables } = qb
50
+ .update('customers')
51
+ .set({ lastName: 'Smith' })
52
+ .where('id', '=', 1)
53
+ .compile();
54
+ expect(variables.metadata[0]).toMatchObject({
55
+ type: 'update',
56
+ tableName: 'customers',
57
+ values: { lastName: 'Smith' },
58
+ filtersSet: {
59
+ conjunction: 'and',
60
+ filtersSet: [
61
+ {
62
+ field: 'id',
63
+ operator: '=',
64
+ value: 1,
65
+ },
66
+ ],
67
+ },
68
+ });
69
+ });
70
+ it('should compile a delete query', () => {
71
+ const { variables } = qb
72
+ .deleteFrom('customers')
73
+ .where('id', '=', 1)
74
+ .compile();
75
+ expect(variables.metadata[0]).toMatchObject({
76
+ type: 'delete',
77
+ tableName: 'customers',
78
+ filtersSet: {
79
+ conjunction: 'and',
80
+ filtersSet: [
81
+ {
82
+ field: 'id',
83
+ operator: '=',
84
+ value: 1,
85
+ },
86
+ ],
87
+ },
88
+ });
89
+ });
90
+ it('should compile a batch query', () => {
91
+ const { variables } = qb
92
+ .batch([
93
+ qb.selectFrom('customers').select(['firstName', 'lastName']),
94
+ qb
95
+ .insertInto('customers')
96
+ .values({ firstName: 'John', lastName: 'Doe' }),
97
+ ])
98
+ .compile();
99
+ expect(variables.metadata).toHaveLength(2);
100
+ expect(variables.metadata[0]).toMatchObject({
101
+ type: 'select',
102
+ tableName: 'customers',
103
+ });
104
+ expect(variables.metadata[1]).toMatchObject({
105
+ type: 'create',
106
+ tableName: 'customers',
107
+ });
108
+ });
109
+ it('should compile an aggregate query', () => {
110
+ const { variables } = qb
111
+ .aggregateFrom('customers')
112
+ .groupBy('firstName', 'asc')
113
+ .withAggregates({
114
+ id: ['sum'],
115
+ })
116
+ .compile();
117
+ expect(variables.metadata[0]).toMatchObject({
118
+ type: 'aggregation',
119
+ tableName: 'customers',
120
+ groupings: [{ field: 'firstName', direction: 'asc' }],
121
+ aggregations: {
122
+ id: ['sum'],
123
+ },
124
+ });
125
+ });
126
+ });
127
+ //# sourceMappingURL=query-builder.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.spec.js","sourceRoot":"","sources":["../../../src/__tests__/query-builder.spec.ts"],"names":[],"mappings":"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"}
@@ -134,8 +134,6 @@ export interface Tables {
134
134
  attachmentTable: AttachmentTable;
135
135
  collaboratorsTable: CollaboratorsTable;
136
136
  customers: CustomersTable;
137
- orders: OrdersTable;
138
- products: ProductsTable;
139
137
  }
140
138
  export interface TaylorDatabase {
141
139
  filters: Filters;
@@ -147,25 +145,6 @@ interface CustomersTable {
147
145
  createdAt: DateColumnType;
148
146
  updatedAt: DateColumnType;
149
147
  firstName: TextColumnType;
150
- phoneNumber: TextColumnType;
151
148
  lastName: TextColumnType;
152
- avatar: LinkColumnType<'attachmentTable'>;
153
- orders: LinkColumnType<'orders'>;
154
- }
155
- interface OrdersTable {
156
- id: NumberColumnType;
157
- createdAt: DateColumnType;
158
- updatedAt: DateColumnType;
159
- address: TextColumnType;
160
- customer: LinkColumnType<'customers'>;
161
- products: LinkColumnType<'products'>;
162
- }
163
- interface ProductsTable {
164
- id: NumberColumnType;
165
- createdAt: DateColumnType;
166
- updatedAt: DateColumnType;
167
- name: TextColumnType;
168
- sku: TextColumnType;
169
- orders1: LinkColumnType<'orders'>;
170
149
  }
171
150
  export {};
@@ -1,9 +1,8 @@
1
- "use strict";
2
1
  /**
3
2
  * Copyright (c) 2025 TaylorDB
4
3
  *
5
4
  * This source code is licensed under the MIT license found in the
6
5
  * LICENSE file in the root directory of this source tree.
7
6
  */
8
- Object.defineProperty(exports, "__esModule", { value: true });
7
+ export {};
9
8
  //# sourceMappingURL=taylorclient.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taylorclient.types.js","sourceRoot":"","sources":["../../../src/__tests__/taylorclient.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,28 @@
1
+ import type { AggregateNode, AggregateRecord } from './@types/aggregate.js';
2
+ import type { AnyDB } from './@types/internal-types.js';
3
+ import { Executor } from './executor.js';
4
+ import { FilterableQueryBuilder } from './where-query-builder.js';
5
+ export declare class AggregationQueryBuilder<DB extends AnyDB, TableName extends keyof DB['tables'], TGroupBy extends readonly (keyof DB['tables'][TableName] & string)[] = [], TAggregations extends {
6
+ [K in keyof DB['tables'][TableName] & string]?: readonly (keyof DB['aggregates'][DB['tables'][TableName][K]['type']])[];
7
+ } = object> extends FilterableQueryBuilder<DB, TableName> {
8
+ #private;
9
+ constructor(node: AggregateNode, executor: Executor);
10
+ groupBy<const TField extends keyof DB['tables'][TableName] & string>(field: TField, direction?: 'asc' | 'desc'): AggregationQueryBuilder<DB, TableName, [
11
+ ...TGroupBy,
12
+ TField
13
+ ], TAggregations>;
14
+ withAggregates<const T extends {
15
+ [K in keyof DB['tables'][TableName] & string]?: readonly (keyof DB['aggregates'][DB['tables'][TableName][K]['type']])[];
16
+ }>(aggregates: T): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations & T>;
17
+ limit(count: number): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations>;
18
+ offset(count: number): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations>;
19
+ paginate(page: number, limit: number): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations>;
20
+ orderBy(field: keyof DB['tables'][TableName], direction?: 'asc' | 'desc'): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations>;
21
+ execute(): Promise<AggregateRecord<DB, TableName, TGroupBy, TAggregations>[]>;
22
+ subscribe(callback: (result: AggregateRecord<DB, TableName, TGroupBy, TAggregations>[]) => void): Promise<void>;
23
+ compile(): {
24
+ query: string;
25
+ variables: Record<string, any>;
26
+ };
27
+ _prepareMetadata(): any;
28
+ }
@@ -0,0 +1,79 @@
1
+ import { FilterableQueryBuilder } from './where-query-builder.js';
2
+ export class AggregationQueryBuilder extends FilterableQueryBuilder {
3
+ #node;
4
+ constructor(node, executor) {
5
+ super(node, executor);
6
+ this.#node = node;
7
+ }
8
+ groupBy(field, direction = 'asc') {
9
+ const newGrouping = {
10
+ field,
11
+ direction,
12
+ };
13
+ return new AggregationQueryBuilder({
14
+ ...this.#node,
15
+ groupings: [...(this.#node.groupings || []), newGrouping],
16
+ }, this._executor);
17
+ }
18
+ withAggregates(aggregates) {
19
+ const newAggregates = { ...this.#node.aggregations };
20
+ for (const key in aggregates) {
21
+ newAggregates[key] = aggregates[key].map(aggregate => aggregate);
22
+ }
23
+ return new AggregationQueryBuilder({
24
+ ...this.#node,
25
+ aggregations: newAggregates,
26
+ }, this._executor);
27
+ }
28
+ limit(count) {
29
+ return new AggregationQueryBuilder({
30
+ ...this.#node,
31
+ pagination: { ...this.#node.pagination, limit: count },
32
+ }, this._executor);
33
+ }
34
+ offset(count) {
35
+ return new AggregationQueryBuilder({
36
+ ...this.#node,
37
+ pagination: { ...this.#node.pagination, offset: count },
38
+ }, this._executor);
39
+ }
40
+ paginate(page, limit) {
41
+ return this.offset((page - 1) * limit).limit(limit);
42
+ }
43
+ orderBy(field, direction = 'asc') {
44
+ const newSorting = {
45
+ field: field,
46
+ direction,
47
+ };
48
+ return new AggregationQueryBuilder({
49
+ ...this.#node,
50
+ sorting: [...(this.#node.sorting || []), newSorting],
51
+ }, this._executor);
52
+ }
53
+ async execute() {
54
+ const response = await this._executor.execute(this);
55
+ return response;
56
+ }
57
+ subscribe(callback) {
58
+ return this._executor.subscribe([this], callback);
59
+ }
60
+ compile() {
61
+ const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
62
+ const metadata = [this._prepareMetadata()];
63
+ return { query, variables: { metadata } };
64
+ }
65
+ _prepareMetadata() {
66
+ return {
67
+ type: 'aggregation',
68
+ tableName: this.#node.tableName,
69
+ groupings: this.#node.groupings,
70
+ aggregations: this.#node.aggregations,
71
+ ...(this.#node.filtersSet.filtersSet.length > 0
72
+ ? { filtersSet: this.#node.filtersSet }
73
+ : {}),
74
+ ...(this.#node.pagination ? { pagination: this.#node.pagination } : {}),
75
+ ...(this.#node.sorting ? { sorting: this.#node.sorting } : {}),
76
+ };
77
+ }
78
+ }
79
+ //# sourceMappingURL=aggregation-query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregation-query-builder.js","sourceRoot":"","sources":["../../src/aggregation-query-builder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,OAAO,uBAQX,SAAQ,sBAAqC;IAC7C,KAAK,CAAgB;IAErB,YAAY,IAAmB,EAAE,QAAkB;QACjD,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO,CACL,KAAa,EACb,YAA4B,KAAK;QAOjC,MAAM,WAAW,GAAkC;YACjD,KAAK;YACL,SAAS;SACV,CAAC;QAEF,OAAO,IAAI,uBAAuB,CAChC;YACE,GAAG,IAAI,CAAC,KAAK;YACb,SAAS,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC;SAC1D,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,cAAc,CAMZ,UAAa;QAEb,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACrD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,aAAa,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAE,CAAC,GAAG,CACvC,SAAS,CAAC,EAAE,CAAC,SAAmB,CACjC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,uBAAuB,CAChC;YACE,GAAG,IAAI,CAAC,KAAK;YACb,YAAY,EAAE,aAAa;SAC5B,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CACH,KAAa;QAEb,OAAO,IAAI,uBAAuB,CAChC;YACE,GAAG,IAAI,CAAC,KAAK;YACb,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;SACvD,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,MAAM,CACJ,KAAa;QAEb,OAAO,IAAI,uBAAuB,CAChC;YACE,GAAG,IAAI,CAAC,KAAK;YACb,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;SACxD,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,QAAQ,CACN,IAAY,EACZ,KAAa;QAEb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CACL,KAAoC,EACpC,YAA4B,KAAK;QAEjC,MAAM,UAAU,GAA+B;YAC7C,KAAK,EAAE,KAAe;YACtB,SAAS;SACV,CAAC;QAEF,OAAO,IAAI,uBAAuB,CAChC;YACE,GAAG,IAAI,CAAC,KAAK;YACb,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC;SACrD,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QAGX,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAE1B,IAAI,CAAC,CAAC;QACV,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS,CACP,QAES;QAET,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,6DAA6D,CAAC;QAC5E,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC3C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;IAC5C,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;YACrC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC7C,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import { AggregationQueryBuilder } from './aggregation-query-builder.js';
2
+ import { DeleteQueryBuilder } from './delete-query-builder.js';
3
+ import { Executor } from './executor.js';
4
+ import { InsertQueryBuilder } from './insert-query-builder.js';
5
+ import { QueryBuilder } from './query-builder.js';
6
+ import { UpdateQueryBuilder } from './update-query-builder.js';
7
+ export type AnySubscribableQueryBuilder = QueryBuilder<any, any, any, any> | AggregationQueryBuilder<any, any, any, any>;
8
+ export type AnyQueryBuilder = AnySubscribableQueryBuilder | InsertQueryBuilder<any, any, any> | UpdateQueryBuilder<any, any> | DeleteQueryBuilder<any, any>;
9
+ type InferExecuteResult<TBuilder> = TBuilder extends {
10
+ execute: () => Promise<any>;
11
+ } ? Awaited<ReturnType<TBuilder['execute']>> : never;
12
+ export type AreAllBuildersSubscribable<TBuilders extends readonly AnyQueryBuilder[]> = TBuilders[number] extends AnySubscribableQueryBuilder ? true : false;
13
+ export declare class BatchQueryBuilder<const TBuilders extends readonly AnyQueryBuilder[]> {
14
+ #private;
15
+ constructor(builders: TBuilders, executor: Executor);
16
+ execute(): Promise<{
17
+ -readonly [K in keyof TBuilders]: InferExecuteResult<TBuilders[K]>;
18
+ }>;
19
+ subscribe(callback: (...results: {
20
+ -readonly [K in keyof TBuilders]: InferExecuteResult<TBuilders[K]>;
21
+ }) => void): Promise<void>;
22
+ compile(): {
23
+ query: string;
24
+ variables: Record<string, any>;
25
+ };
26
+ }
27
+ export {};
@@ -0,0 +1,34 @@
1
+ import { AggregationQueryBuilder } from './aggregation-query-builder.js';
2
+ import { QueryBuilder } from './query-builder.js';
3
+ export class BatchQueryBuilder {
4
+ #builders;
5
+ #executor;
6
+ constructor(builders, executor) {
7
+ this.#builders = builders;
8
+ this.#executor = executor;
9
+ }
10
+ async execute() {
11
+ return this.#executor.execute(this);
12
+ }
13
+ subscribe(callback) {
14
+ const builders = this.#builders.filter(builder => builder instanceof AggregationQueryBuilder ||
15
+ builder instanceof QueryBuilder);
16
+ if (builders.length !== this.#builders.length) {
17
+ throw new Error('Batch contains non-subscribable queries (e.g., insert, update, delete)');
18
+ }
19
+ return this.#executor.subscribe(builders, callback);
20
+ }
21
+ compile() {
22
+ const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
23
+ const metadata = this.#builders.map(builder => {
24
+ return builder._prepareMetadata();
25
+ });
26
+ return {
27
+ query,
28
+ variables: {
29
+ metadata,
30
+ },
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=batch-query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-query-builder.js","sourceRoot":"","sources":["../../src/batch-query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAIzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAuBlD,MAAM,OAAO,iBAAiB;IAG5B,SAAS,CAAY;IACrB,SAAS,CAAW;IAEpB,YAAY,QAAmB,EAAE,QAAkB;QACjD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QAGX,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,CACP,QAIS;QAET,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CACpC,OAAO,CAAC,EAAE,CACR,OAAO,YAAY,uBAAuB;YAC1C,OAAO,YAAY,YAAY,CAClC,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAe,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,6DAA6D,CAAC;QAE5E,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC5C,OAAO,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,SAAS,EAAE;gBACT,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import type { DeleteNode } from './@types/delete.js';
2
+ import type { AnyDB } from './@types/internal-types.js';
3
+ import { Executor } from './executor.js';
4
+ import { FilterableQueryBuilder } from './where-query-builder.js';
5
+ export declare class DeleteQueryBuilder<DB extends AnyDB, TableName extends keyof DB['tables']> extends FilterableQueryBuilder<DB, TableName> {
6
+ #private;
7
+ constructor(node: DeleteNode, executor: Executor);
8
+ execute(): Promise<{
9
+ affectedRecords: number;
10
+ }>;
11
+ compile(): {
12
+ query: string;
13
+ variables: Record<string, any>;
14
+ };
15
+ _prepareMetadata(): any;
16
+ }
@@ -0,0 +1,32 @@
1
+ import { FilterableQueryBuilder } from './where-query-builder.js';
2
+ export class DeleteQueryBuilder extends FilterableQueryBuilder {
3
+ #node;
4
+ constructor(node, executor) {
5
+ super(node, executor);
6
+ this.#node = node;
7
+ }
8
+ async execute() {
9
+ const response = await this._executor.execute(this);
10
+ return response[0];
11
+ }
12
+ compile() {
13
+ const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
14
+ const metadata = [this._prepareMetadata()];
15
+ return {
16
+ query,
17
+ variables: {
18
+ metadata,
19
+ },
20
+ };
21
+ }
22
+ _prepareMetadata() {
23
+ return {
24
+ type: 'delete',
25
+ tableName: this.#node.tableName,
26
+ ...(this.#node.filtersSet.filtersSet.length > 0
27
+ ? { filtersSet: this.#node.filtersSet }
28
+ : {}),
29
+ };
30
+ }
31
+ }
32
+ //# sourceMappingURL=delete-query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-query-builder.js","sourceRoot":"","sources":["../../src/delete-query-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,OAAO,kBAGX,SAAQ,sBAAqC;IAC7C,KAAK,CAAa;IAElB,YAAY,IAAgB,EAAE,QAAkB;QAC9C,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAgC,IAAI,CAAC,CAAC;QAEpE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,6DAA6D,CAAC;QAE5E,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAE3C,OAAO;YACL,KAAK;YACL,SAAS,EAAE;gBACT,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC7C,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { AnySubscribableQueryBuilder } from './batch-query-builder.js';
2
+ interface Compilable {
3
+ compile(): {
4
+ query: string;
5
+ variables: Record<string, any>;
6
+ };
7
+ }
8
+ export declare class Executor {
9
+ #private;
10
+ constructor(baseUrl: string, apiKey: string);
11
+ execute<T>(builder: Compilable): Promise<T>;
12
+ rawRequest<T>(query: string, variables: Record<string, any>, headers?: Record<string, string>): Promise<T>;
13
+ subscribe<TResult>(builders: AnySubscribableQueryBuilder[], callback: (result: TResult) => void): Promise<void>;
14
+ }
15
+ export {};
@@ -0,0 +1,63 @@
1
+ import { SubscriptionManager } from './subscription-manager.js';
2
+ const generateUUID = () => {
3
+ if (globalThis.crypto && globalThis.crypto.randomUUID) {
4
+ return globalThis.crypto.randomUUID();
5
+ }
6
+ // A simple fallback for environments without crypto.randomUUID
7
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
8
+ const r = (Math.random() * 16) | 0;
9
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
10
+ return v.toString(16);
11
+ });
12
+ };
13
+ export class Executor {
14
+ #baseUrl;
15
+ #apiKey;
16
+ #subscriptionManager;
17
+ constructor(baseUrl, apiKey) {
18
+ this.#baseUrl = baseUrl;
19
+ this.#apiKey = apiKey;
20
+ this.#subscriptionManager = new SubscriptionManager(this, {
21
+ baseUrl,
22
+ apiKey,
23
+ clientId: generateUUID(),
24
+ });
25
+ }
26
+ async execute(builder) {
27
+ const { query, variables } = builder.compile();
28
+ return this.rawRequest(query, variables);
29
+ }
30
+ async rawRequest(query, variables, headers) {
31
+ const response = await fetch(this.#baseUrl, {
32
+ method: 'POST',
33
+ headers: {
34
+ 'Content-Type': 'application/json',
35
+ Authorization: `Bearer ${this.#apiKey}`,
36
+ schema: 'readable',
37
+ ...(headers ? { ...headers } : {}),
38
+ },
39
+ body: JSON.stringify({ query, variables }),
40
+ });
41
+ if (!response.ok) {
42
+ const errorText = await response.text();
43
+ throw new Error(`Request failed with status ${response.status}: ${errorText}`);
44
+ }
45
+ const jsonResponse = await response.json();
46
+ if (jsonResponse.errors) {
47
+ throw new Error(`GraphQL errors: ${JSON.stringify(jsonResponse.errors)}`);
48
+ }
49
+ if (jsonResponse.data) {
50
+ const [firstKey] = Object.keys(jsonResponse.data);
51
+ if (Array.isArray(jsonResponse.data[firstKey])) {
52
+ return jsonResponse.data[firstKey];
53
+ }
54
+ return jsonResponse.data;
55
+ }
56
+ throw new Error('Unexpected response format');
57
+ }
58
+ async subscribe(builders, callback) {
59
+ const metadatas = builders.map(b => b._prepareMetadata());
60
+ return this.#subscriptionManager.subscribe(metadatas, callback);
61
+ }
62
+ }
63
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { createQueryBuilder } from './query-builder.js';
@@ -0,0 +1,2 @@
1
+ export { createQueryBuilder } from './query-builder.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { Insertable, InsertNode } from './@types/insert.js';
2
+ import type { AnyDB } from './@types/internal-types.js';
3
+ import { NonLinkColumnNames } from './@types/query-builder.js';
4
+ import { ResolveSelection } from './@types/type-helpers.js';
5
+ import { Executor } from './executor.js';
6
+ export declare class InsertQueryBuilder<DB extends AnyDB, TableName extends keyof DB['tables'], Selection = {
7
+ id: number;
8
+ }> {
9
+ #private;
10
+ constructor(node: InsertNode, executor: Executor);
11
+ values(values: Insertable<DB['tables'][TableName]> | Insertable<DB['tables'][TableName]>[]): InsertQueryBuilder<DB, TableName, Selection>;
12
+ returning<const TFields extends readonly NonLinkColumnNames<DB['tables'][TableName]>[]>(fields: TFields): InsertQueryBuilder<DB, TableName, ResolveSelection<DB, TableName, TFields, object>>;
13
+ execute(): Promise<Selection[]>;
14
+ compile(): {
15
+ query: string;
16
+ variables: Record<string, any>;
17
+ };
18
+ _prepareMetadata(): any;
19
+ }
@@ -0,0 +1,65 @@
1
+ import { QueryBuilder } from './query-builder.js';
2
+ import { SelectionBuilder } from './selection-builder.js';
3
+ export class InsertQueryBuilder {
4
+ #node;
5
+ #executor;
6
+ constructor(node, executor) {
7
+ this.#node = node;
8
+ this.#executor = executor;
9
+ }
10
+ values(values) {
11
+ return new InsertQueryBuilder({
12
+ ...this.#node,
13
+ createdRecords: Array.isArray(values) ? values : [values],
14
+ }, this.#executor);
15
+ }
16
+ returning(fields) {
17
+ const newSelects = fields.map(field => {
18
+ if (typeof field === 'function') {
19
+ const builder = new SelectionBuilder(this.#executor);
20
+ // @ts-ignore
21
+ const subQuery = field(builder);
22
+ return subQuery._node;
23
+ }
24
+ return field;
25
+ });
26
+ return new InsertQueryBuilder({
27
+ ...this.#node,
28
+ returning: [...this.#node.returning, ...newSelects],
29
+ }, this.#executor);
30
+ }
31
+ async execute() {
32
+ return (await this.#executor.execute(this))[0];
33
+ }
34
+ compile() {
35
+ const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
36
+ const metadata = [this._prepareMetadata()];
37
+ return {
38
+ query,
39
+ variables: {
40
+ metadata,
41
+ },
42
+ };
43
+ }
44
+ _prepareMetadata() {
45
+ const buildSelects = (selects) => {
46
+ return selects.map(field => {
47
+ if (typeof field === 'string') {
48
+ return field;
49
+ }
50
+ const subQueryBuilder = new QueryBuilder(field, this.#executor);
51
+ return subQueryBuilder._prepareMetadata();
52
+ });
53
+ };
54
+ const returningSelection = this.#node.returning.length
55
+ ? buildSelects(this.#node.returning)
56
+ : ['id'];
57
+ return {
58
+ type: 'create',
59
+ tableName: this.#node.tableName,
60
+ createdRecords: this.#node.createdRecords,
61
+ returning: returningSelection,
62
+ };
63
+ }
64
+ }
65
+ //# sourceMappingURL=insert-query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-query-builder.js","sourceRoot":"","sources":["../../src/insert-query-builder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,kBAAkB;IAK7B,KAAK,CAAa;IAClB,SAAS,CAAW;IAEpB,YAAY,IAAgB,EAAE,QAAkB;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,MAAM,CACJ,MAEyC;QAEzC,OAAO,IAAI,kBAAkB,CAC3B;YACE,GAAG,IAAI,CAAC,KAAK;YACb,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SAC1D,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,SAAS,CAKP,MAAe;QAMf,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAgB,IAAI,CAAC,SAAS,CAAC,CAAC;gBACpE,aAAa;gBACb,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gBAChC,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,OAAO,KAAe,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,kBAAkB,CAC3B;YACE,GAAG,IAAI,CAAC,KAAK;YACb,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC;SACpD,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,6DAA6D,CAAC;QAE5E,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAE3C,OAAO;YACL,KAAK;YACL,SAAS,EAAE;gBACT,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,MAAM,YAAY,GAAG,CAAC,OAA+B,EAAS,EAAE;YAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,MAAM,eAAe,GAAG,IAAI,YAAY,CACtC,KAAkB,EAClB,IAAI,CAAC,SAAS,CACf,CAAC;gBACF,OAAO,eAAe,CAAC,gBAAgB,EAAE,CAAC;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;YACpD,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACpC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEX,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;YACzC,SAAS,EAAE,kBAAkB;SAC9B,CAAC;IACJ,CAAC;CACF"}