@taylordb/query-builder 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/cjs/aggregation-query-builder.d.ts +92 -0
  4. package/dist/cjs/aggregation-query-builder.js +92 -0
  5. package/dist/cjs/aggregation-query-builder.js.map +1 -1
  6. package/dist/cjs/batch-query-builder.d.ts +36 -0
  7. package/dist/cjs/batch-query-builder.js +36 -0
  8. package/dist/cjs/batch-query-builder.js.map +1 -1
  9. package/dist/cjs/delete-query-builder.d.ts +17 -0
  10. package/dist/cjs/delete-query-builder.js +17 -0
  11. package/dist/cjs/delete-query-builder.js.map +1 -1
  12. package/dist/cjs/insert-query-builder.d.ts +68 -0
  13. package/dist/cjs/insert-query-builder.js +71 -0
  14. package/dist/cjs/insert-query-builder.js.map +1 -1
  15. package/dist/cjs/query-builder.d.ts +217 -0
  16. package/dist/cjs/query-builder.js +188 -0
  17. package/dist/cjs/query-builder.js.map +1 -1
  18. package/dist/cjs/selection-builder.d.ts +11 -0
  19. package/dist/cjs/selection-builder.js +11 -0
  20. package/dist/cjs/selection-builder.js.map +1 -1
  21. package/dist/cjs/update-query-builder.d.ts +32 -0
  22. package/dist/cjs/update-query-builder.js +32 -0
  23. package/dist/cjs/update-query-builder.js.map +1 -1
  24. package/dist/cjs/where-query-builder.d.ts +59 -0
  25. package/dist/cjs/where-query-builder.js +6 -0
  26. package/dist/cjs/where-query-builder.js.map +1 -1
  27. package/dist/esm/aggregation-query-builder.d.ts +92 -0
  28. package/dist/esm/aggregation-query-builder.js +92 -0
  29. package/dist/esm/aggregation-query-builder.js.map +1 -1
  30. package/dist/esm/batch-query-builder.d.ts +36 -0
  31. package/dist/esm/batch-query-builder.js +36 -0
  32. package/dist/esm/batch-query-builder.js.map +1 -1
  33. package/dist/esm/delete-query-builder.d.ts +17 -0
  34. package/dist/esm/delete-query-builder.js +17 -0
  35. package/dist/esm/delete-query-builder.js.map +1 -1
  36. package/dist/esm/insert-query-builder.d.ts +68 -0
  37. package/dist/esm/insert-query-builder.js +71 -0
  38. package/dist/esm/insert-query-builder.js.map +1 -1
  39. package/dist/esm/query-builder.d.ts +217 -0
  40. package/dist/esm/query-builder.js +188 -0
  41. package/dist/esm/query-builder.js.map +1 -1
  42. package/dist/esm/selection-builder.d.ts +11 -0
  43. package/dist/esm/selection-builder.js +11 -0
  44. package/dist/esm/selection-builder.js.map +1 -1
  45. package/dist/esm/update-query-builder.d.ts +32 -0
  46. package/dist/esm/update-query-builder.js +32 -0
  47. package/dist/esm/update-query-builder.js.map +1 -1
  48. package/dist/esm/where-query-builder.d.ts +59 -0
  49. package/dist/esm/where-query-builder.js +6 -0
  50. package/dist/esm/where-query-builder.js.map +1 -1
  51. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  52. package/package.json +2 -2
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InsertQueryBuilder = void 0;
4
4
  const query_builder_js_1 = require("./query-builder.js");
5
5
  const selection_builder_js_1 = require("./selection-builder.js");
6
+ /**
7
+ * A query builder for creating new records in the database.
8
+ * @template DB - The database type.
9
+ * @template TableName - The name of the table to insert into.
10
+ * @template Selection - The type of the selected fields.
11
+ */
6
12
  class InsertQueryBuilder {
7
13
  #node;
8
14
  #executor;
@@ -10,12 +16,47 @@ class InsertQueryBuilder {
10
16
  this.#node = node;
11
17
  this.#executor = executor;
12
18
  }
19
+ /**
20
+ * The values to insert into the table.
21
+ * @param values - An object or array of objects representing the records to create.
22
+ * @returns The `InsertQueryBuilder` instance for chaining.
23
+ *
24
+ * @example Single Record Insertion
25
+ * ```typescript
26
+ * const newUser = await qb
27
+ * .insertInto('users')
28
+ * .values({ name: 'John Doe', email: 'john.doe@example.com' })
29
+ * .executeTakeFirst();
30
+ * ```
31
+ *
32
+ * @example Multiple Record Insertion
33
+ * ```typescript
34
+ * const newUsers = await qb
35
+ * .insertInto('users')
36
+ * .values([{ name: 'John Doe' }, { name: 'Jane Doe' }])
37
+ * .execute();
38
+ * ```
39
+ */
13
40
  values(values) {
14
41
  return new InsertQueryBuilder({
15
42
  ...this.#node,
16
43
  createdRecords: Array.isArray(values) ? values : [values],
17
44
  }, this.#executor);
18
45
  }
46
+ /**
47
+ * The fields to return after the insert operation.
48
+ * @param fields - An array of field names to return.
49
+ * @returns The `InsertQueryBuilder` instance for chaining.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const newUser = await qb
54
+ * .insertInto('users')
55
+ * .values({ name: 'John Doe' })
56
+ * .returning(['id', 'name'])
57
+ * .executeTakeFirst();
58
+ * ```
59
+ */
19
60
  returning(fields) {
20
61
  const newSelects = fields.map(field => {
21
62
  if (typeof field === 'function') {
@@ -31,9 +72,39 @@ class InsertQueryBuilder {
31
72
  returning: [...this.#node.returning, ...newSelects],
32
73
  }, this.#executor);
33
74
  }
75
+ /**
76
+ * Executes the insert query.
77
+ * @returns A promise that resolves with an array of the selected fields from the inserted records.
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * const newUsers = await qb
82
+ * .insertInto('users')
83
+ * .values([{ name: 'John Doe' }, { name: 'Jane Doe' }])
84
+ * .returning(['id', 'name'])
85
+ * .execute();
86
+ * ```
87
+ */
34
88
  async execute() {
35
89
  return (await this.#executor.execute(this))[0];
36
90
  }
91
+ /**
92
+ * Executes the insert query and returns the first result.
93
+ * @returns A promise that resolves with the first inserted record, or `null` if no records were inserted.
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const newUser = await qb
98
+ * .insertInto('users')
99
+ * .values({ name: 'John Doe' })
100
+ * .returning(['id', 'name'])
101
+ * .executeTakeFirst();
102
+ * ```
103
+ */
104
+ async executeTakeFirst() {
105
+ const response = await this.execute();
106
+ return response[0] ?? null;
107
+ }
37
108
  compile() {
38
109
  const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
39
110
  const metadata = [this._prepareMetadata()];
@@ -1 +1 @@
1
- {"version":3,"file":"insert-query-builder.js","sourceRoot":"","sources":["../../src/insert-query-builder.ts"],"names":[],"mappings":";;;AAKA,yDAAkD;AAClD,iEAA0D;AAE1D,MAAa,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,MAA+D;QAE/D,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,CACP,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,uCAAgB,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,+BAAY,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;AA7FD,gDA6FC"}
1
+ {"version":3,"file":"insert-query-builder.js","sourceRoot":"","sources":["../../src/insert-query-builder.ts"],"names":[],"mappings":"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"}
@@ -9,22 +9,166 @@ import { Executor } from './executor.js';
9
9
  import { InsertQueryBuilder } from './insert-query-builder.js';
10
10
  import { UpdateQueryBuilder } from './update-query-builder.js';
11
11
  import { FilterableQueryBuilder } from './where-query-builder.js';
12
+ /**
13
+ * The main query builder class for constructing and executing select queries.
14
+ * @template DB - The database type.
15
+ * @template TableName - The name of the table to query.
16
+ * @template Selection - The type of the selected fields.
17
+ * @template LinkName - The name of the link field if this is a subquery.
18
+ */
12
19
  export declare class QueryBuilder<DB extends AnyDB, TableName extends keyof DB, Selection = object, LinkName = null> extends FilterableQueryBuilder<DB, TableName> {
13
20
  _node: QueryNode;
14
21
  constructor(node: QueryNode, executor: Executor);
22
+ /**
23
+ * Selects a set of fields from the table.
24
+ * @param fields - An array of field names to select.
25
+ * @returns A new `QueryBuilder` instance with the specified fields selected.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const users = await qb
30
+ * .selectFrom('users')
31
+ * .select(['id', 'name'])
32
+ * .execute();
33
+ * ```
34
+ */
15
35
  select<const TFields extends readonly NonLinkColumnNames<DB[TableName]>[]>(fields: TFields): QueryBuilder<DB, TableName, ResolveSelection<DB, TableName, TFields, Selection>>;
36
+ /**
37
+ * Selects all fields from the table.
38
+ * @returns A new `QueryBuilder` instance with all fields selected.
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const users = await qb
43
+ * .selectFrom('users')
44
+ * .selectAll()
45
+ * .execute();
46
+ * ```
47
+ */
16
48
  selectAll(): QueryBuilder<DB, TableName, Selection & {
17
49
  [K in keyof DB[TableName]]: InferDataType<DB[TableName][K]>;
18
50
  }>;
51
+ /**
52
+ * Includes related records from a linked table.
53
+ * This method has two overloads:
54
+ * 1. Pass an array of link field names to include all fields from the related records.
55
+ * 2. Pass an object to specify subqueries for each link field.
56
+ *
57
+ * @param relations - The relations to include.
58
+ * @returns A new `QueryBuilder` instance with the specified relations included.
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const usersWithPosts = await qb
63
+ * .selectFrom('users')
64
+ * .select(['id', 'name'])
65
+ * .with(['posts']) // Assuming 'posts' is a link field on the 'users' table
66
+ * .execute();
67
+ * ```
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * const usersWithPublishedPosts = await qb
72
+ * .selectFrom('users')
73
+ * .select(['id', 'name'])
74
+ * .with({
75
+ * posts: (qb) => qb.select(['title', 'content']).where('isPublished', '=', true),
76
+ * })
77
+ * .execute();
78
+ * ```
79
+ */
19
80
  with<const TArg extends (LinkColumnNames<DB[TableName]> & string) | readonly (LinkColumnNames<DB[TableName]> & string)[]>(relations: TArg): QueryBuilder<DB, TableName, ResolveWithPlain<DB, TableName, TArg, Selection>>;
20
81
  with<const TArg extends {
21
82
  [K in LinkColumnNames<DB[TableName]>]?: (qb: QueryBuilder<DB, DB[TableName][K] extends LinkColumnType<any, boolean> ? DB[TableName][K]['linkedTo'] : never, object, K>) => QueryBuilder<DB, any, any, any>;
22
83
  }>(relations: TArg): QueryBuilder<DB, TableName, ResolveWithObject<TArg, Selection>>;
84
+ /**
85
+ * Sets the maximum number of records to return.
86
+ * @param count - The maximum number of records.
87
+ * @returns A new `QueryBuilder` instance with the limit applied.
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * const users = await qb
92
+ * .selectFrom('users')
93
+ * .select(['id', 'name'])
94
+ * .limit(10)
95
+ * .execute();
96
+ * ```
97
+ */
23
98
  limit(count: number): QueryBuilder<DB, TableName, Selection, LinkName>;
99
+ /**
100
+ * Sets the number of records to skip.
101
+ * @param count - The number of records to skip.
102
+ * @returns A new `QueryBuilder` instance with the offset applied.
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const users = await qb
107
+ * .selectFrom('users')
108
+ * .select(['id', 'name'])
109
+ * .offset(10)
110
+ * .execute();
111
+ * ```
112
+ */
24
113
  offset(count: number): QueryBuilder<DB, TableName, Selection, LinkName>;
114
+ /**
115
+ * Paginates the results.
116
+ * @param page - The page number to retrieve.
117
+ * @param limit - The number of records per page.
118
+ * @returns A new `QueryBuilder` instance with pagination applied.
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * const users = await qb
123
+ * .selectFrom('users')
124
+ * .select(['id', 'name'])
125
+ * .paginate(2, 25) // Retrieves page 2 with 25 records per page
126
+ * .execute();
127
+ * ```
128
+ */
25
129
  paginate(page: number, limit: number): QueryBuilder<DB, TableName, Selection, LinkName>;
130
+ /**
131
+ * Sorts the results by a specified field.
132
+ * @param field - The field to sort by.
133
+ * @param direction - The sort direction ('asc' or 'desc').
134
+ * @returns A new `QueryBuilder` instance with the sorting applied.
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const users = await qb
139
+ * .selectFrom('users')
140
+ * .select(['id', 'name'])
141
+ * .orderBy('name', 'asc')
142
+ * .execute();
143
+ * ```
144
+ */
26
145
  orderBy(field: keyof DB[TableName], direction?: 'asc' | 'desc'): QueryBuilder<DB, TableName, Selection, LinkName>;
146
+ /**
147
+ * Executes the select query.
148
+ * @returns A promise that resolves with an array of the selected records.
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * const users = await qb
153
+ * .selectFrom('users')
154
+ * .select(['id', 'name'])
155
+ * .execute();
156
+ * ```
157
+ */
27
158
  execute(): Promise<Selection[]>;
159
+ /**
160
+ * Executes the select query and returns the first result.
161
+ * @returns A promise that resolves with the first record, or `null` if no records were found.
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * const user = await qb
166
+ * .selectFrom('users')
167
+ * .where('id', '=', 1)
168
+ * .select(['id', 'name'])
169
+ * .executeTakeFirst();
170
+ * ```
171
+ */
28
172
  executeTakeFirst(): Promise<Selection | null>;
29
173
  subscribe(callback: (result: Selection[]) => void): Promise<{
30
174
  unsubscribe: () => Promise<void>;
@@ -37,17 +181,90 @@ export declare class QueryBuilder<DB extends AnyDB, TableName extends keyof DB,
37
181
  isSelectionQueryNode(node: QueryNode): node is SelectionQueryNode;
38
182
  isRootQueryNode(node: QueryNode): node is RootQueryNode;
39
183
  }
184
+ /**
185
+ * The root query builder class that provides entry points for all query types.
186
+ */
40
187
  export declare class RootQueryBuilder<DB extends AnyDB> {
41
188
  #private;
42
189
  constructor(config: {
43
190
  baseUrl: string;
44
191
  apiKey: string;
45
192
  });
193
+ /**
194
+ * Creates a new select query builder for the specified table.
195
+ * @param from - The name of the table to select from.
196
+ * @returns A new `QueryBuilder` instance.
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
201
+ * const userQuery = qb.selectFrom('users');
202
+ * ```
203
+ */
46
204
  selectFrom<TableName extends keyof Omit<DB, 'selectTable' | 'attachmentTable' | 'collaboratorsTable'> & string>(from: TableName): QueryBuilder<DB, TableName>;
205
+ /**
206
+ * Creates a new insert query builder for the specified table.
207
+ * @param into - The name of the table to insert into.
208
+ * @returns A new `InsertQueryBuilder` instance.
209
+ *
210
+ * @example
211
+ * ```typescript
212
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
213
+ * const insertQuery = qb.insertInto('users');
214
+ * ```
215
+ */
47
216
  insertInto<TableName extends keyof Omit<DB, 'selectTable' | 'attachmentTable' | 'collaboratorsTable'> & string>(into: TableName): InsertQueryBuilder<DB, TableName>;
217
+ /**
218
+ * Creates a new update query builder for the specified table.
219
+ * @param tableName - The name of the table to update.
220
+ * @returns A new `UpdateQueryBuilder` instance.
221
+ *
222
+ * @example
223
+ * ```typescript
224
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
225
+ * const updateQuery = qb.update('users');
226
+ * ```
227
+ */
48
228
  update<TableName extends keyof Omit<DB, 'selectTable' | 'attachmentTable' | 'collaboratorsTable'> & string>(tableName: TableName): UpdateQueryBuilder<DB, TableName>;
229
+ /**
230
+ * Creates a new delete query builder for the specified table.
231
+ * @param tableName - The name of the table to delete from.
232
+ * @returns A new `DeleteQueryBuilder` instance.
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
237
+ * const deleteQuery = qb.deleteFrom('users');
238
+ * ```
239
+ */
49
240
  deleteFrom<TableName extends keyof Omit<DB, 'selectTable' | 'attachmentTable' | 'collaboratorsTable'> & string>(tableName: TableName): DeleteQueryBuilder<DB, TableName>;
241
+ /**
242
+ * Creates a new batch query builder.
243
+ * @param builders - An array of query builders to execute in a batch.
244
+ * @returns A new `BatchQueryBuilder` instance.
245
+ *
246
+ * @example
247
+ * ```typescript
248
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
249
+ * const batchQuery = qb.batch([
250
+ * qb.selectFrom('users').select(['id', 'name']),
251
+ * qb.insertInto('users').values({ name: 'New User' }),
252
+ * ]);
253
+ * const [users, newUser] = await batchQuery.execute();
254
+ * ```
255
+ */
50
256
  batch<const TBuilders extends readonly AnyQueryBuilder[]>(builders: TBuilders): AreAllBuildersSubscribable<TBuilders> extends true ? BatchQueryBuilder<TBuilders> : Omit<BatchQueryBuilder<TBuilders>, 'subscribe'>;
257
+ /**
258
+ * Creates a new aggregation query builder for the specified table.
259
+ * @param tableName - The name of the table to aggregate from.
260
+ * @returns A new `AggregationQueryBuilder` instance.
261
+ *
262
+ * @example
263
+ * ```typescript
264
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
265
+ * const aggregateQuery = qb.aggregateFrom('users');
266
+ * ```
267
+ */
51
268
  aggregateFrom<TableName extends keyof Omit<DB, 'selectTable' | 'attachmentTable' | 'collaboratorsTable'> & string>(tableName: TableName): AggregationQueryBuilder<DB, TableName>;
52
269
  }
53
270
  export declare function createQueryBuilder<DB extends AnyDB>(config: {
@@ -12,6 +12,13 @@ const selection_builder_js_1 = require("./selection-builder.js");
12
12
  const update_query_builder_js_1 = require("./update-query-builder.js");
13
13
  const where_query_builder_js_1 = require("./where-query-builder.js");
14
14
  const DEFAULT_LIMIT = 50;
15
+ /**
16
+ * The main query builder class for constructing and executing select queries.
17
+ * @template DB - The database type.
18
+ * @template TableName - The name of the table to query.
19
+ * @template Selection - The type of the selected fields.
20
+ * @template LinkName - The name of the link field if this is a subquery.
21
+ */
15
22
  class QueryBuilder extends where_query_builder_js_1.FilterableQueryBuilder {
16
23
  constructor(node, executor) {
17
24
  super(node, executor);
@@ -20,12 +27,37 @@ class QueryBuilder extends where_query_builder_js_1.FilterableQueryBuilder {
20
27
  pagination: { limit: DEFAULT_LIMIT, offset: 0, ...node.pagination },
21
28
  };
22
29
  }
30
+ /**
31
+ * Selects a set of fields from the table.
32
+ * @param fields - An array of field names to select.
33
+ * @returns A new `QueryBuilder` instance with the specified fields selected.
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const users = await qb
38
+ * .selectFrom('users')
39
+ * .select(['id', 'name'])
40
+ * .execute();
41
+ * ```
42
+ */
23
43
  select(fields) {
24
44
  return new QueryBuilder({
25
45
  ...this._node,
26
46
  fields: [...this._node.fields, ...fields],
27
47
  }, this._executor);
28
48
  }
49
+ /**
50
+ * Selects all fields from the table.
51
+ * @returns A new `QueryBuilder` instance with all fields selected.
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * const users = await qb
56
+ * .selectFrom('users')
57
+ * .selectAll()
58
+ * .execute();
59
+ * ```
60
+ */
29
61
  selectAll() {
30
62
  return new QueryBuilder({
31
63
  ...this._node,
@@ -59,21 +91,79 @@ class QueryBuilder extends where_query_builder_js_1.FilterableQueryBuilder {
59
91
  fields: [...this._node.fields, ...newSelects],
60
92
  }, this._executor);
61
93
  }
94
+ /**
95
+ * Sets the maximum number of records to return.
96
+ * @param count - The maximum number of records.
97
+ * @returns A new `QueryBuilder` instance with the limit applied.
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * const users = await qb
102
+ * .selectFrom('users')
103
+ * .select(['id', 'name'])
104
+ * .limit(10)
105
+ * .execute();
106
+ * ```
107
+ */
62
108
  limit(count) {
63
109
  return new QueryBuilder({
64
110
  ...this._node,
65
111
  pagination: { ...this._node.pagination, limit: count },
66
112
  }, this._executor);
67
113
  }
114
+ /**
115
+ * Sets the number of records to skip.
116
+ * @param count - The number of records to skip.
117
+ * @returns A new `QueryBuilder` instance with the offset applied.
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * const users = await qb
122
+ * .selectFrom('users')
123
+ * .select(['id', 'name'])
124
+ * .offset(10)
125
+ * .execute();
126
+ * ```
127
+ */
68
128
  offset(count) {
69
129
  return new QueryBuilder({
70
130
  ...this._node,
71
131
  pagination: { ...this._node.pagination, offset: count },
72
132
  }, this._executor);
73
133
  }
134
+ /**
135
+ * Paginates the results.
136
+ * @param page - The page number to retrieve.
137
+ * @param limit - The number of records per page.
138
+ * @returns A new `QueryBuilder` instance with pagination applied.
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * const users = await qb
143
+ * .selectFrom('users')
144
+ * .select(['id', 'name'])
145
+ * .paginate(2, 25) // Retrieves page 2 with 25 records per page
146
+ * .execute();
147
+ * ```
148
+ */
74
149
  paginate(page, limit) {
75
150
  return this.offset((page - 1) * limit).limit(limit);
76
151
  }
152
+ /**
153
+ * Sorts the results by a specified field.
154
+ * @param field - The field to sort by.
155
+ * @param direction - The sort direction ('asc' or 'desc').
156
+ * @returns A new `QueryBuilder` instance with the sorting applied.
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * const users = await qb
161
+ * .selectFrom('users')
162
+ * .select(['id', 'name'])
163
+ * .orderBy('name', 'asc')
164
+ * .execute();
165
+ * ```
166
+ */
77
167
  orderBy(field, direction = 'asc') {
78
168
  const newSorting = {
79
169
  field: field,
@@ -84,10 +174,35 @@ class QueryBuilder extends where_query_builder_js_1.FilterableQueryBuilder {
84
174
  sorting: [...(this._node.sorting || []), newSorting],
85
175
  }, this._executor);
86
176
  }
177
+ /**
178
+ * Executes the select query.
179
+ * @returns A promise that resolves with an array of the selected records.
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * const users = await qb
184
+ * .selectFrom('users')
185
+ * .select(['id', 'name'])
186
+ * .execute();
187
+ * ```
188
+ */
87
189
  async execute() {
88
190
  const response = await this._executor.execute(this);
89
191
  return response[0];
90
192
  }
193
+ /**
194
+ * Executes the select query and returns the first result.
195
+ * @returns A promise that resolves with the first record, or `null` if no records were found.
196
+ *
197
+ * @example
198
+ * ```typescript
199
+ * const user = await qb
200
+ * .selectFrom('users')
201
+ * .where('id', '=', 1)
202
+ * .select(['id', 'name'])
203
+ * .executeTakeFirst();
204
+ * ```
205
+ */
91
206
  async executeTakeFirst() {
92
207
  const response = await this._executor.execute(this);
93
208
  return response[0]?.[0] ?? null;
@@ -149,11 +264,25 @@ class QueryBuilder extends where_query_builder_js_1.FilterableQueryBuilder {
149
264
  }
150
265
  }
151
266
  exports.QueryBuilder = QueryBuilder;
267
+ /**
268
+ * The root query builder class that provides entry points for all query types.
269
+ */
152
270
  class RootQueryBuilder {
153
271
  #executor;
154
272
  constructor(config) {
155
273
  this.#executor = new executor_js_1.Executor(config.baseUrl, config.apiKey);
156
274
  }
275
+ /**
276
+ * Creates a new select query builder for the specified table.
277
+ * @param from - The name of the table to select from.
278
+ * @returns A new `QueryBuilder` instance.
279
+ *
280
+ * @example
281
+ * ```typescript
282
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
283
+ * const userQuery = qb.selectFrom('users');
284
+ * ```
285
+ */
157
286
  selectFrom(from) {
158
287
  return new QueryBuilder({
159
288
  tableName: from,
@@ -163,6 +292,17 @@ class RootQueryBuilder {
163
292
  queryType: 'root',
164
293
  }, this.#executor);
165
294
  }
295
+ /**
296
+ * Creates a new insert query builder for the specified table.
297
+ * @param into - The name of the table to insert into.
298
+ * @returns A new `InsertQueryBuilder` instance.
299
+ *
300
+ * @example
301
+ * ```typescript
302
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
303
+ * const insertQuery = qb.insertInto('users');
304
+ * ```
305
+ */
166
306
  insertInto(into) {
167
307
  return new insert_query_builder_js_1.InsertQueryBuilder({
168
308
  tableName: into,
@@ -171,6 +311,17 @@ class RootQueryBuilder {
171
311
  type: 'create',
172
312
  }, this.#executor);
173
313
  }
314
+ /**
315
+ * Creates a new update query builder for the specified table.
316
+ * @param tableName - The name of the table to update.
317
+ * @returns A new `UpdateQueryBuilder` instance.
318
+ *
319
+ * @example
320
+ * ```typescript
321
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
322
+ * const updateQuery = qb.update('users');
323
+ * ```
324
+ */
174
325
  update(tableName) {
175
326
  return new update_query_builder_js_1.UpdateQueryBuilder({
176
327
  tableName: tableName,
@@ -179,6 +330,17 @@ class RootQueryBuilder {
179
330
  type: 'update',
180
331
  }, this.#executor);
181
332
  }
333
+ /**
334
+ * Creates a new delete query builder for the specified table.
335
+ * @param tableName - The name of the table to delete from.
336
+ * @returns A new `DeleteQueryBuilder` instance.
337
+ *
338
+ * @example
339
+ * ```typescript
340
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
341
+ * const deleteQuery = qb.deleteFrom('users');
342
+ * ```
343
+ */
182
344
  deleteFrom(tableName) {
183
345
  return new delete_query_builder_js_1.DeleteQueryBuilder({
184
346
  tableName: tableName,
@@ -187,9 +349,35 @@ class RootQueryBuilder {
187
349
  type: 'delete',
188
350
  }, this.#executor);
189
351
  }
352
+ /**
353
+ * Creates a new batch query builder.
354
+ * @param builders - An array of query builders to execute in a batch.
355
+ * @returns A new `BatchQueryBuilder` instance.
356
+ *
357
+ * @example
358
+ * ```typescript
359
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
360
+ * const batchQuery = qb.batch([
361
+ * qb.selectFrom('users').select(['id', 'name']),
362
+ * qb.insertInto('users').values({ name: 'New User' }),
363
+ * ]);
364
+ * const [users, newUser] = await batchQuery.execute();
365
+ * ```
366
+ */
190
367
  batch(builders) {
191
368
  return new batch_query_builder_js_1.BatchQueryBuilder(builders, this.#executor);
192
369
  }
370
+ /**
371
+ * Creates a new aggregation query builder for the specified table.
372
+ * @param tableName - The name of the table to aggregate from.
373
+ * @returns A new `AggregationQueryBuilder` instance.
374
+ *
375
+ * @example
376
+ * ```typescript
377
+ * const qb = createQueryBuilder<MyDatabase>({ ... });
378
+ * const aggregateQuery = qb.aggregateFrom('users');
379
+ * ```
380
+ */
193
381
  aggregateFrom(tableName) {
194
382
  const node = {
195
383
  tableName: tableName,
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query-builder.ts"],"names":[],"mappings":";;;AAsmBA,gDAMC;AA3mBD,6BAAwB;AAexB,iFAAyE;AACzE,qEAIkC;AAClC,uEAA+D;AAC/D,+CAAyC;AACzC,uEAA+D;AAC/D,iEAA0D;AAC1D,uEAA+D;AAC/D,qEAAkE;AAElE,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB;;;;;;GAMG;AACH,MAAa,YAKX,SAAQ,+CAAqC;IAG7C,YAAY,IAAe,EAAE,QAAkB;QAC7C,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,IAAI;YACP,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;SACpE,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CACJ,MAAe;QAMf,OAAO,IAAI,YAAY,CACrB;YACE,GAAG,IAAI,CAAC,KAAK;YACb,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC;SAC7B,EACd,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,SAAS;QAOP,OAAO,IAAI,YAAY,CACrB;YACE,GAAG,IAAI,CAAC,KAAK;YACb,MAAM,EAAE,CAAC,GAAG,CAAC;SACD,EACd,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IA0DD,IAAI,CACF,GAGoC;QAEpC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAa,CAAC;YACrE,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gBAClD,MAAM,gBAAgB,GAAG,IAAI,uCAAgB,CAC3C,IAAI,CAAC,SAAS,CACf,CAAC;gBACF,MAAM,QAAQ,GAAG,gBAAgB;qBAC9B,OAAO,CAAC,YAAmB,CAAC;qBAC5B,SAAS,EAAE,CAAC;gBACf,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,OAAO,IAAI,YAAY,CACrB;gBACE,GAAG,IAAI,CAAC,KAAK;gBACb,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;aACjC,EACd,IAAI,CAAC,SAAS,CACf,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,GAAuC,CAAC;QAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAC9C,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC3B,MAAM,gBAAgB,GAAG,IAAI,uCAAgB,CAC3C,IAAI,CAAC,SAAS,CACf,CAAC;YACF,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,OAAO,CACrD,YAAmB,CACpB,CAAC;YACF,MAAM,yBAAyB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAAC;YACnE,OAAO,yBAAyB,CAAC,KAAK,CAAC;QACzC,CAAC,CACF,CAAC;QAEF,OAAO,IAAI,YAAY,CACrB;YACE,GAAG,IAAI,CAAC,KAAK;YACb,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;SACjC,EACd,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,YAAY,CACrB;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;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAa;QAClB,OAAO,IAAI,YAAY,CACrB;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;;;;;;;;;;;;;;OAcG;IACH,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;;;;;;;;;;;;;;OAcG;IACH,OAAO,CACL,KAA0B,EAC1B,YAA4B,KAAK;QAEjC,MAAM,UAAU,GAA+B;YAC7C,KAAK,EAAE,KAAe;YACtB,SAAS;SACV,CAAC;QAEF,OAAO,IAAI,YAAY,CACrB;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;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAY,IAAI,CAAC,CAAC;QAE/D,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAc,IAAI,CAAC,CAAC;QAEjE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,QAAuC;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD,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,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC9B,OAAO,KAAK,CAAC;oBACf,CAAC;oBAED,OAAO,IAAI,YAAY,CACrB,KAAkB,EAClB,IAAI,CAAC,SAAS,CACf,CAAC,gBAAgB,EAAE,CAAC;gBACvB,CAAC,CAAC;gBAEF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;oBAC7C,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC/B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC9B,OAAO,KAAK,CAAC;oBACf,CAAC;oBAED,OAAO,IAAI,YAAY,CACrB,KAAkB,EAClB,IAAI,CAAC,SAAS,CACf,CAAC,gBAAgB,EAAE,CAAC;gBACvB,CAAC,CAAC;gBACF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;oBAC7C,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,oBAAoB,CAAC,IAAe;QAClC,OAAO,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;IACnC,CAAC;IAED,eAAe,CAAC,IAAe;QAC7B,OAAO,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;IACnC,CAAC;CACF;AAvYD,oCAuYC;AAED;;GAEG;AACH,MAAa,gBAAgB;IAC3B,SAAS,CAAW;IAEpB,YAAY,MAA2C;QACrD,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IACD;;;;;;;;;;OAUG;IACH,UAAU,CAMR,IAAe;QACf,OAAO,IAAI,YAAY,CACrB;YACE,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;YAClD,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM;SAClB,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,UAAU,CAMR,IAAe;QACf,OAAO,IAAI,4CAAkB,CAC3B;YACE,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,QAAQ;SACf,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAMJ,SAAoB;QACpB,OAAO,IAAI,4CAAkB,CAC3B;YACE,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;YAClD,IAAI,EAAE,QAAQ;SACf,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,UAAU,CAMR,SAAoB;QACpB,OAAO,IAAI,4CAAkB,CAC3B;YACE,SAAS,EAAE,SAAS;YACpB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;YAClD,IAAI,EAAE,QAAQ;SACf,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CACH,QAAmB;QAInB,OAAO,IAAI,0CAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;;;;OAUG;IACH,aAAa,CAMX,SAAoB;QACpB,MAAM,IAAI,GAAkB;YAC1B,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;YAClD,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;SACjB,CAAC;QACF,OAAO,IAAI,sDAAuB,CAAgB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1E,CAAC;CACF;AA7KD,4CA6KC;AAED,MAAM,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,SAAgB,kBAAkB,CAAmB,MAGpD;IACC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,IAAI,gBAAgB,CAAK,MAAM,CAAC,CAAC;AAC1C,CAAC"}