@zhin.js/database 1.0.4 → 1.0.6

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 (115) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1360 -34
  3. package/lib/base/database.d.ts +71 -13
  4. package/lib/base/database.d.ts.map +1 -1
  5. package/lib/base/database.js +128 -4
  6. package/lib/base/database.js.map +1 -1
  7. package/lib/base/dialect.d.ts +27 -10
  8. package/lib/base/dialect.d.ts.map +1 -1
  9. package/lib/base/dialect.js +32 -0
  10. package/lib/base/dialect.js.map +1 -1
  11. package/lib/base/index.d.ts +1 -0
  12. package/lib/base/index.d.ts.map +1 -1
  13. package/lib/base/index.js +1 -0
  14. package/lib/base/index.js.map +1 -1
  15. package/lib/base/model.d.ts +105 -12
  16. package/lib/base/model.d.ts.map +1 -1
  17. package/lib/base/model.js +224 -3
  18. package/lib/base/model.js.map +1 -1
  19. package/lib/base/query-classes.d.ts +204 -33
  20. package/lib/base/query-classes.d.ts.map +1 -1
  21. package/lib/base/query-classes.js +276 -0
  22. package/lib/base/query-classes.js.map +1 -1
  23. package/lib/base/thenable.d.ts +7 -7
  24. package/lib/base/thenable.d.ts.map +1 -1
  25. package/lib/base/thenable.js +5 -4
  26. package/lib/base/thenable.js.map +1 -1
  27. package/lib/base/transaction.d.ts +46 -0
  28. package/lib/base/transaction.d.ts.map +1 -0
  29. package/lib/base/transaction.js +186 -0
  30. package/lib/base/transaction.js.map +1 -0
  31. package/lib/dialects/memory.d.ts +12 -7
  32. package/lib/dialects/memory.d.ts.map +1 -1
  33. package/lib/dialects/memory.js +7 -4
  34. package/lib/dialects/memory.js.map +1 -1
  35. package/lib/dialects/mongodb.d.ts +11 -7
  36. package/lib/dialects/mongodb.d.ts.map +1 -1
  37. package/lib/dialects/mongodb.js +18 -15
  38. package/lib/dialects/mongodb.js.map +1 -1
  39. package/lib/dialects/mysql.d.ts +35 -6
  40. package/lib/dialects/mysql.d.ts.map +1 -1
  41. package/lib/dialects/mysql.js +137 -18
  42. package/lib/dialects/mysql.js.map +1 -1
  43. package/lib/dialects/pg.d.ts +35 -6
  44. package/lib/dialects/pg.d.ts.map +1 -1
  45. package/lib/dialects/pg.js +137 -18
  46. package/lib/dialects/pg.js.map +1 -1
  47. package/lib/dialects/redis.d.ts +11 -6
  48. package/lib/dialects/redis.d.ts.map +1 -1
  49. package/lib/dialects/redis.js +11 -8
  50. package/lib/dialects/redis.js.map +1 -1
  51. package/lib/dialects/sqlite.d.ts +19 -6
  52. package/lib/dialects/sqlite.d.ts.map +1 -1
  53. package/lib/dialects/sqlite.js +63 -10
  54. package/lib/dialects/sqlite.js.map +1 -1
  55. package/lib/index.d.ts +1 -0
  56. package/lib/index.d.ts.map +1 -1
  57. package/lib/index.js +1 -0
  58. package/lib/index.js.map +1 -1
  59. package/lib/migration.d.ts +132 -0
  60. package/lib/migration.d.ts.map +1 -0
  61. package/lib/migration.js +475 -0
  62. package/lib/migration.js.map +1 -0
  63. package/lib/registry.d.ts +26 -23
  64. package/lib/registry.d.ts.map +1 -1
  65. package/lib/registry.js +1 -5
  66. package/lib/registry.js.map +1 -1
  67. package/lib/type/document/database.d.ts +11 -11
  68. package/lib/type/document/database.d.ts.map +1 -1
  69. package/lib/type/document/database.js.map +1 -1
  70. package/lib/type/document/model.d.ts +7 -7
  71. package/lib/type/document/model.d.ts.map +1 -1
  72. package/lib/type/document/model.js.map +1 -1
  73. package/lib/type/keyvalue/database.d.ts +11 -11
  74. package/lib/type/keyvalue/database.d.ts.map +1 -1
  75. package/lib/type/keyvalue/database.js.map +1 -1
  76. package/lib/type/keyvalue/model.d.ts +2 -2
  77. package/lib/type/keyvalue/model.d.ts.map +1 -1
  78. package/lib/type/keyvalue/model.js.map +1 -1
  79. package/lib/type/related/database.d.ts +48 -13
  80. package/lib/type/related/database.d.ts.map +1 -1
  81. package/lib/type/related/database.js +258 -27
  82. package/lib/type/related/database.js.map +1 -1
  83. package/lib/type/related/model.d.ts +251 -15
  84. package/lib/type/related/model.d.ts.map +1 -1
  85. package/lib/type/related/model.js +647 -22
  86. package/lib/type/related/model.js.map +1 -1
  87. package/lib/types.d.ts +475 -37
  88. package/lib/types.d.ts.map +1 -1
  89. package/lib/types.js +6 -0
  90. package/lib/types.js.map +1 -1
  91. package/package.json +14 -5
  92. package/src/base/database.ts +168 -24
  93. package/src/base/dialect.ts +49 -10
  94. package/src/base/index.ts +2 -1
  95. package/src/base/model.ts +258 -18
  96. package/src/base/query-classes.ts +471 -63
  97. package/src/base/thenable.ts +12 -11
  98. package/src/base/transaction.ts +213 -0
  99. package/src/dialects/memory.ts +14 -13
  100. package/src/dialects/mongodb.ts +40 -38
  101. package/src/dialects/mysql.ts +151 -22
  102. package/src/dialects/pg.ts +148 -21
  103. package/src/dialects/redis.ts +40 -38
  104. package/src/dialects/sqlite.ts +73 -15
  105. package/src/index.ts +1 -2
  106. package/src/migration.ts +544 -0
  107. package/src/registry.ts +33 -33
  108. package/src/type/document/database.ts +32 -32
  109. package/src/type/document/model.ts +14 -14
  110. package/src/type/keyvalue/database.ts +32 -32
  111. package/src/type/keyvalue/model.ts +18 -18
  112. package/src/type/related/database.ts +309 -34
  113. package/src/type/related/model.ts +800 -33
  114. package/src/types.ts +559 -44
  115. package/tests/database.test.ts +1738 -0
package/lib/base/model.js CHANGED
@@ -1,13 +1,129 @@
1
+ /** 默认软删除字段名 */
2
+ const DEFAULT_DELETED_AT = 'deletedAt';
3
+ /** 默认创建时间字段名 */
4
+ const DEFAULT_CREATED_AT = 'createdAt';
5
+ /** 默认更新时间字段名 */
6
+ const DEFAULT_UPDATED_AT = 'updatedAt';
1
7
  /**
2
8
  * 基础模型抽象类
3
9
  * 定义所有模型类型的通用接口和行为
10
+ * 支持软删除、自动时间戳和生命周期钩子
4
11
  */
5
12
  export class Model {
6
13
  database;
7
14
  name;
8
- constructor(database, name) {
15
+ /** 模型配置选项 */
16
+ options;
17
+ /** 生命周期钩子注册表 */
18
+ hooks = new Map();
19
+ constructor(database, name, options) {
9
20
  this.database = database;
10
21
  this.name = name;
22
+ this.options = options ?? {};
23
+ }
24
+ // ============================================================================
25
+ // Lifecycle Hooks
26
+ // ============================================================================
27
+ /**
28
+ * 注册生命周期钩子
29
+ * @param hookName 钩子名称
30
+ * @param fn 钩子函数
31
+ * @returns this(支持链式调用)
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * userModel
36
+ * .addHook('beforeCreate', (ctx) => {
37
+ * ctx.data.createdBy = 'system';
38
+ * })
39
+ * .addHook('afterDelete', async (ctx) => {
40
+ * await logService.log('User deleted', ctx.result);
41
+ * });
42
+ * ```
43
+ */
44
+ addHook(hookName, fn) {
45
+ const fns = this.hooks.get(hookName) ?? [];
46
+ fns.push(fn);
47
+ this.hooks.set(hookName, fns);
48
+ return this;
49
+ }
50
+ /**
51
+ * addHook 的别名
52
+ */
53
+ on(hookName, fn) {
54
+ return this.addHook(hookName, fn);
55
+ }
56
+ /**
57
+ * 批量注册钩子
58
+ * @example
59
+ * ```ts
60
+ * userModel.registerHooks({
61
+ * beforeCreate: (ctx) => { ... },
62
+ * afterUpdate: [(ctx) => { ... }, (ctx) => { ... }]
63
+ * });
64
+ * ```
65
+ */
66
+ registerHooks(hooks) {
67
+ for (const [name, fn] of Object.entries(hooks)) {
68
+ if (Array.isArray(fn)) {
69
+ fn.forEach(f => this.addHook(name, f));
70
+ }
71
+ else if (fn) {
72
+ this.addHook(name, fn);
73
+ }
74
+ }
75
+ return this;
76
+ }
77
+ /**
78
+ * 移除指定钩子
79
+ */
80
+ removeHook(hookName, fn) {
81
+ if (!fn) {
82
+ this.hooks.delete(hookName);
83
+ }
84
+ else {
85
+ const fns = this.hooks.get(hookName);
86
+ if (fns) {
87
+ const index = fns.indexOf(fn);
88
+ if (index > -1) {
89
+ fns.splice(index, 1);
90
+ }
91
+ }
92
+ }
93
+ return this;
94
+ }
95
+ /**
96
+ * 清除所有钩子
97
+ */
98
+ clearHooks() {
99
+ this.hooks.clear();
100
+ return this;
101
+ }
102
+ /**
103
+ * 触发钩子
104
+ * @returns 如果任何 before 钩子返回 false,则返回 false
105
+ */
106
+ async runHooks(hookName, context) {
107
+ const fns = this.hooks.get(hookName);
108
+ if (!fns || fns.length === 0)
109
+ return true;
110
+ for (const fn of fns) {
111
+ const result = await fn(context);
112
+ // before 钩子返回 false 可以取消操作
113
+ if (hookName.startsWith('before') && result === false) {
114
+ return false;
115
+ }
116
+ }
117
+ return true;
118
+ }
119
+ /**
120
+ * 创建钩子上下文
121
+ */
122
+ createHookContext(options = {}) {
123
+ return {
124
+ modelName: String(this.name),
125
+ ...options
126
+ };
11
127
  }
12
128
  /**
13
129
  * 获取数据库方言
@@ -27,21 +143,126 @@ export class Model {
27
143
  get modelName() {
28
144
  return this.name;
29
145
  }
146
+ /**
147
+ * 是否启用软删除
148
+ */
149
+ get isSoftDelete() {
150
+ return this.options.softDelete === true;
151
+ }
152
+ /**
153
+ * 软删除字段名
154
+ */
155
+ get deletedAtField() {
156
+ return this.options.deletedAtField ?? DEFAULT_DELETED_AT;
157
+ }
30
158
  alter(alterations) {
31
159
  return this.database.alter(this.name, alterations);
32
160
  }
161
+ /**
162
+ * 查询(软删除模式下自动排除已删除记录)
163
+ */
33
164
  select(...fields) {
165
+ const selection = this.database.select(this.name, fields);
166
+ // 软删除模式下自动添加条件
167
+ if (this.isSoftDelete) {
168
+ selection.where({ [this.deletedAtField]: null });
169
+ }
170
+ return selection;
171
+ }
172
+ /**
173
+ * 查询(包含已删除的记录)
174
+ */
175
+ selectWithTrashed(...fields) {
34
176
  return this.database.select(this.name, fields);
35
177
  }
178
+ /**
179
+ * 仅查询已删除的记录
180
+ */
181
+ selectOnlyTrashed(...fields) {
182
+ const selection = this.database.select(this.name, fields);
183
+ selection.where({ [this.deletedAtField]: { $ne: null } });
184
+ return selection;
185
+ }
36
186
  insert(data) {
187
+ // 自动添加时间戳
188
+ if (this.options.timestamps) {
189
+ const now = new Date();
190
+ const createdAtField = this.options.createdAtField ?? DEFAULT_CREATED_AT;
191
+ const updatedAtField = this.options.updatedAtField ?? DEFAULT_UPDATED_AT;
192
+ data[createdAtField] = now;
193
+ data[updatedAtField] = now;
194
+ }
37
195
  return this.database.insert(this.name, data);
38
196
  }
39
197
  update(update) {
40
- return this.database.update(this.name, update);
198
+ // 自动更新时间戳
199
+ if (this.options.timestamps) {
200
+ const updatedAtField = this.options.updatedAtField ?? DEFAULT_UPDATED_AT;
201
+ update[updatedAtField] = new Date();
202
+ }
203
+ const updation = this.database.update(this.name, update);
204
+ // 软删除模式下只更新未删除的记录
205
+ if (this.isSoftDelete) {
206
+ updation.where({ [this.deletedAtField]: null });
207
+ }
208
+ return updation;
41
209
  }
210
+ /**
211
+ * 删除(软删除模式下执行软删除)
212
+ */
42
213
  delete(condition) {
214
+ if (this.isSoftDelete) {
215
+ // 软删除:UPDATE SET deletedAt = NOW()
216
+ return this.database.update(this.name, {
217
+ [this.deletedAtField]: new Date()
218
+ }).where(condition);
219
+ }
43
220
  return this.database.delete(this.name, condition);
44
221
  }
222
+ /**
223
+ * 强制删除(忽略软删除,直接物理删除)
224
+ */
225
+ forceDelete(condition) {
226
+ return this.database.delete(this.name, condition);
227
+ }
228
+ /**
229
+ * 恢复软删除的记录
230
+ */
231
+ restore(condition) {
232
+ if (!this.isSoftDelete) {
233
+ throw new Error(`Model ${String(this.name)} does not have soft delete enabled`);
234
+ }
235
+ return this.database.update(this.name, {
236
+ [this.deletedAtField]: null
237
+ }).where(condition);
238
+ }
239
+ /**
240
+ * 批量插入
241
+ */
242
+ insertMany(data) {
243
+ // 自动添加时间戳
244
+ if (this.options.timestamps) {
245
+ const now = new Date();
246
+ const createdAtField = this.options.createdAtField ?? DEFAULT_CREATED_AT;
247
+ const updatedAtField = this.options.updatedAtField ?? DEFAULT_UPDATED_AT;
248
+ data.forEach(item => {
249
+ item[createdAtField] = now;
250
+ item[updatedAtField] = now;
251
+ });
252
+ }
253
+ return this.database.insertMany(this.name, data);
254
+ }
255
+ /**
256
+ * 聚合查询
257
+ */
258
+ aggregate() {
259
+ const agg = this.database.aggregate(this.name);
260
+ // 软删除模式下自动排除已删除记录
261
+ if (this.isSoftDelete) {
262
+ agg.where({ [this.deletedAtField]: null });
263
+ }
264
+ return agg;
265
+ }
45
266
  /**
46
267
  * 验证查询条件
47
268
  */
@@ -58,7 +279,7 @@ export class Model {
58
279
  * 处理错误
59
280
  */
60
281
  handleError(error, operation) {
61
- const message = `Model ${this.name} ${operation} failed: ${error.message}`;
282
+ const message = `Model ${String(this.name)} ${operation} failed: ${error.message}`;
62
283
  throw new Error(message);
63
284
  }
64
285
  }
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/base/model.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,OAAgB,KAAK;IAEP;IACA;IAFlB,YACkB,QAA6B,EAC7B,IAAY;QADZ,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,SAAI,GAAJ,IAAI,CAAQ;IAC3B,CAAC;IAEJ;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAA+B;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAI,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,CAAoB,GAAG,MAAgB;QAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAO,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,IAAO;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,MAAkB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,SAAuB;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAI,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IACD;;OAEG;IACO,aAAa,CAAC,KAAU;QAChC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,IAAS;QAC9B,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC;IAC7C,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,KAAY,EAAE,SAAiB;QACnD,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,IAAI,IAAI,SAAS,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/base/model.ts"],"names":[],"mappings":"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"}
@@ -1,68 +1,239 @@
1
1
  import type { Database } from './database.js';
2
2
  import { ThenableQuery } from './thenable.js';
3
- import { QueryParams, AlterDefinition, Condition, Definition } from '../types.js';
4
- export declare class Alteration<T extends object, C = any, D = string> extends ThenableQuery<void, C, D> {
3
+ import { QueryParams, AlterDefinition, Condition, Ordering, Definition, Subquery, JoinType } from '../types.js';
4
+ /** 软删除查询模式 */
5
+ export type SoftDeleteMode = 'default' | 'withTrashed' | 'onlyTrashed';
6
+ export declare class Alteration<S extends Record<string, object>, T extends keyof S, C = any, D = string> extends ThenableQuery<void, S, T, C, D> {
5
7
  private readonly tableName;
6
8
  private readonly alterations;
7
- constructor(database: Database<C, Record<string, object>, D>, tableName: string, alterations: AlterDefinition<T>);
8
- protected getQueryParams(): QueryParams<T>;
9
+ constructor(database: Database<C, S, D>, tableName: T, alterations: AlterDefinition<S[T]>);
10
+ protected getQueryParams(): QueryParams<S, T>;
9
11
  }
10
- export declare class DroppingTable<T extends object = any, C = any, D = string> extends ThenableQuery<number, C, D> {
12
+ export declare class DroppingTable<S extends Record<string, object>, T extends keyof S, C = any, D = string> extends ThenableQuery<number, S, T, C, D> {
11
13
  private readonly tableName;
12
14
  private conditions;
13
- constructor(database: Database<C, Record<string, object>, any>, tableName: string);
14
- where(query: Condition<T>): this;
15
- protected getQueryParams(): QueryParams<T>;
15
+ constructor(database: Database<C, S, any>, tableName: T);
16
+ where(query: Condition<S[T]>): this;
17
+ protected getQueryParams(): QueryParams<S, T>;
16
18
  }
17
- export declare class DroppingIndex<C = any, D = string> extends ThenableQuery<number, C, D> {
19
+ export declare class DroppingIndex<S extends Record<string, object>, T extends keyof S, C = any, D = string> extends ThenableQuery<number, S, T, C, D> {
18
20
  private readonly indexName;
19
21
  private readonly tableName;
20
22
  private conditions;
21
- constructor(database: Database<C, Record<string, object>, D>, indexName: string, tableName: string);
22
- where(query: Condition<any>): this;
23
- protected getQueryParams(): QueryParams<any>;
23
+ constructor(database: Database<C, S, D>, indexName: string, tableName: T);
24
+ where(query: Condition<S[T]>): this;
25
+ protected getQueryParams(): QueryParams<S, T>;
24
26
  }
25
- export declare class Creation<T extends object, C = any, D = string> extends ThenableQuery<void, C, D> {
27
+ export declare class Creation<S extends Record<string, object>, T extends keyof S, C = any, D = string> extends ThenableQuery<void, S, T, C, D> {
26
28
  private readonly tableName;
27
29
  private readonly definition;
28
- constructor(database: Database<C, Record<string, object>, D>, tableName: string, definition: Definition<T>);
29
- protected getQueryParams(): QueryParams<T>;
30
+ constructor(database: Database<C, S, D>, tableName: T, definition: Definition<S[T]>);
31
+ protected getQueryParams(): QueryParams<S, T>;
30
32
  }
31
- export declare class Selection<T extends object, K extends keyof T, C = any, D = string> extends ThenableQuery<Pick<T, K>[], C, D> {
33
+ /**
34
+ * SELECT 查询类
35
+ * 实现 Subquery<S[T][K]> 以支持类型安全的子查询
36
+ *
37
+ * @template S Schema 类型
38
+ * @template T 表名
39
+ * @template K 选择的字段
40
+ * @template C 连接类型
41
+ * @template D 方言类型
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * // 子查询类型推断示例
46
+ * interface Schema {
47
+ * users: { id: number; name: string };
48
+ * orders: { id: number; userId: number; amount: number };
49
+ * }
50
+ *
51
+ * // ✅ 正确:userId 是 number,匹配 users.id
52
+ * db.select('users', ['id']).where({
53
+ * id: { $in: db.select('orders', ['userId']) }
54
+ * });
55
+ *
56
+ * // ❌ 类型错误:name 是 string,不能与 number 的 id 匹配
57
+ * db.select('users', ['id']).where({
58
+ * id: { $in: db.select('users', ['name']) } // Type error!
59
+ * });
60
+ * ```
61
+ */
62
+ export declare class Selection<S extends Record<string, object>, T extends keyof S, K extends keyof S[T], C = any, D = string> extends ThenableQuery<Pick<S[T], K>[], S, T, C, D> implements Subquery<S[T][K]> {
63
+ protected readonly modelName: T;
64
+ protected readonly fields: Array<K>;
65
+ readonly __isSubquery: true;
66
+ readonly __returnType?: S[T][K];
67
+ protected conditions: Condition<S[T]>;
68
+ protected groupings: (keyof S[T])[];
69
+ protected orderings: Ordering<S[T]>[];
70
+ protected limitCount?: number;
71
+ protected offsetCount?: number;
72
+ constructor(database: Database<C, S, D>, modelName: T, fields: Array<K>);
73
+ where(query: Condition<S[T]>): this;
74
+ groupBy(...fields: (keyof S[T])[]): this;
75
+ orderBy(field: keyof S[T], direction?: "ASC" | "DESC"): this;
76
+ limit(count: number): this;
77
+ offset(count: number): this;
78
+ /**
79
+ * INNER JOIN - 只返回两表都有匹配的行
80
+ * 返回类型扩展为包含关联表字段
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * const result = await db.select('users', ['id', 'name'])
85
+ * .join('orders', 'id', 'userId');
86
+ * // result 类型: { users: { id, name }, orders: { id, userId, amount } }[]
87
+ * ```
88
+ */
89
+ join<J extends keyof S>(table: J, leftField: keyof S[T], rightField: keyof S[J]): JoinedSelection<S, T, K, J, C, D>;
90
+ /**
91
+ * LEFT JOIN - 返回左表所有行,右表无匹配则为 NULL
92
+ */
93
+ leftJoin<J extends keyof S>(table: J, leftField: keyof S[T], rightField: keyof S[J]): JoinedSelection<S, T, K, J, C, D, true>;
94
+ /**
95
+ * RIGHT JOIN - 返回右表所有行,左表无匹配则为 NULL
96
+ */
97
+ rightJoin<J extends keyof S>(table: J, leftField: keyof S[T], rightField: keyof S[J]): JoinedSelection<S, T, K, J, C, D, false, true>;
98
+ /**
99
+ * 转换为子查询 SQL
100
+ * 用于 $in / $nin 等操作符中嵌套查询
101
+ */
102
+ toSQL(): {
103
+ sql: string;
104
+ params: any[];
105
+ };
106
+ protected getQueryParams(): QueryParams<S, T>;
107
+ }
108
+ /**
109
+ * JOIN 结果类型 - 根据表名命名空间化
110
+ */
111
+ type JoinResult<S extends Record<string, object>, T extends keyof S, K extends keyof S[T], J extends keyof S, LeftNullable extends boolean = false, RightNullable extends boolean = false> = {
112
+ [P in T]: LeftNullable extends true ? Partial<Pick<S[T], K>> : Pick<S[T], K>;
113
+ } & {
114
+ [P in J]: RightNullable extends true ? Partial<S[J]> | null : S[J];
115
+ };
116
+ /**
117
+ * JOIN 查询类 - 支持类型安全的关联查询
118
+ *
119
+ * @template S Schema 类型
120
+ * @template T 主表名
121
+ * @template K 主表选择的字段
122
+ * @template J 关联表名
123
+ * @template LeftNullable LEFT JOIN 时主表可能为 null
124
+ * @template RightNullable RIGHT JOIN 时关联表可能为 null
125
+ */
126
+ export declare class JoinedSelection<S extends Record<string, object>, T extends keyof S, K extends keyof S[T], J extends keyof S, C = any, D = string, LeftNullable extends boolean = false, RightNullable extends boolean = false> extends ThenableQuery<JoinResult<S, T, K, J, LeftNullable, RightNullable>[], S, T, C, D> {
32
127
  private readonly modelName;
33
128
  private readonly fields;
34
129
  private conditions;
35
- private groupings;
36
130
  private orderings;
131
+ private groupings;
37
132
  private limitCount?;
38
133
  private offsetCount?;
39
- constructor(database: Database<C, Record<string, object>, D>, modelName: string, fields: Array<K>);
40
- where(query: Condition<T>): this;
41
- groupBy(...fields: (keyof T)[]): this;
42
- orderBy(field: keyof T, direction?: "ASC" | "DESC"): this;
134
+ private joinClauses;
135
+ constructor(database: Database<C, S, D>, modelName: T, fields: Array<K>, joinTable: J, joinType: JoinType, leftField: keyof S[T], rightField: keyof S[J], conditions?: Condition<S[T]>, orderings?: Ordering<S[T]>[], groupings?: (keyof S[T])[], limitCount?: number | undefined, offsetCount?: number | undefined);
136
+ where(query: Condition<S[T]>): this;
137
+ orderBy(field: keyof S[T], direction?: "ASC" | "DESC"): this;
43
138
  limit(count: number): this;
44
139
  offset(count: number): this;
45
- protected getQueryParams(): QueryParams<T>;
140
+ /**
141
+ * 继续 JOIN 更多表
142
+ */
143
+ join<J2 extends keyof S>(table: J2, leftField: keyof S[T], rightField: keyof S[J2]): this;
144
+ leftJoin<J2 extends keyof S>(table: J2, leftField: keyof S[T], rightField: keyof S[J2]): this;
145
+ rightJoin<J2 extends keyof S>(table: J2, leftField: keyof S[T], rightField: keyof S[J2]): this;
146
+ protected getQueryParams(): QueryParams<S, T>;
46
147
  }
47
- export declare class Insertion<T extends object, C = any, D = string> extends ThenableQuery<T, C, D> {
148
+ export declare class Insertion<S extends Record<string, object>, T extends keyof S, C = any, D = string> extends ThenableQuery<S[T], S, T, C, D> {
48
149
  private readonly modelName;
49
150
  private readonly data;
50
- constructor(database: Database<C, Record<string, object>, D>, modelName: string, data: T);
51
- protected getQueryParams(): QueryParams<T>;
151
+ constructor(database: Database<C, S, D>, modelName: T, data: S[T]);
152
+ protected getQueryParams(): QueryParams<S, T>;
52
153
  }
53
- export declare class Updation<T extends object, C = any, D = string> extends ThenableQuery<number, C, D> {
154
+ export declare class Updation<S extends Record<string, object>, T extends keyof S, C = any, D = string> extends ThenableQuery<number, S, T, C, D> {
54
155
  private readonly modelName;
55
156
  private readonly update;
56
157
  private conditions;
57
- constructor(database: Database<C, Record<string, object>, D>, modelName: string, update: Partial<T>);
58
- where(query: Condition<T>): this;
59
- protected getQueryParams(): QueryParams<T>;
158
+ constructor(database: Database<C, S, D>, modelName: T, update: Partial<S[T]>);
159
+ where(query: Condition<S[T]>): this;
160
+ protected getQueryParams(): QueryParams<S, T>;
60
161
  }
61
- export declare class Deletion<T extends object = any, C = any, D = string> extends ThenableQuery<number, C, D> {
162
+ export declare class Deletion<S extends Record<string, object>, T extends keyof S, C = any, D = string> extends ThenableQuery<S[T][], S, T, C, D> {
62
163
  private readonly modelName;
63
164
  private conditions;
64
- constructor(database: Database<C, Record<string, object>, D>, modelName: string);
65
- where(query: Condition<T>): this;
66
- protected getQueryParams(): QueryParams<T>;
165
+ constructor(database: Database<C, S, D>, modelName: T);
166
+ where(query: Condition<S[T]>): this;
167
+ protected getQueryParams(): QueryParams<S, T>;
168
+ }
169
+ /**
170
+ * 批量插入查询类
171
+ */
172
+ export declare class BatchInsertion<S extends Record<string, object>, T extends keyof S, C = any, D = string> extends ThenableQuery<{
173
+ affectedRows: number;
174
+ insertIds?: (number | string)[];
175
+ }, S, T, C, D> {
176
+ private readonly modelName;
177
+ private readonly data;
178
+ constructor(database: Database<C, S, D>, modelName: T, data: S[T][]);
179
+ then<TResult1 = {
180
+ affectedRows: number;
181
+ insertIds?: (number | string)[];
182
+ }, TResult2 = never>(onfulfilled?: ((value: {
183
+ affectedRows: number;
184
+ insertIds?: (number | string)[];
185
+ }) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
186
+ protected getQueryParams(): QueryParams<S, T>;
187
+ }
188
+ /**
189
+ * 聚合查询结果类型
190
+ */
191
+ export interface AggregateResult {
192
+ [key: string]: number | string | null;
193
+ }
194
+ /**
195
+ * 聚合查询类
196
+ */
197
+ export declare class Aggregation<S extends Record<string, object>, T extends keyof S, C = any, D = string> extends ThenableQuery<AggregateResult[], S, T, C, D> {
198
+ private readonly modelName;
199
+ private conditions;
200
+ private groupings;
201
+ private havingConditions;
202
+ private aggregates;
203
+ constructor(database: Database<C, S, D>, modelName: T);
204
+ /**
205
+ * COUNT 聚合
206
+ */
207
+ count(field?: keyof S[T] | '*', alias?: string): this;
208
+ /**
209
+ * SUM 聚合
210
+ */
211
+ sum(field: keyof S[T], alias?: string): this;
212
+ /**
213
+ * AVG 聚合
214
+ */
215
+ avg(field: keyof S[T], alias?: string): this;
216
+ /**
217
+ * MIN 聚合
218
+ */
219
+ min(field: keyof S[T], alias?: string): this;
220
+ /**
221
+ * MAX 聚合
222
+ */
223
+ max(field: keyof S[T], alias?: string): this;
224
+ /**
225
+ * WHERE 条件
226
+ */
227
+ where(query: Condition<S[T]>): this;
228
+ /**
229
+ * GROUP BY
230
+ */
231
+ groupBy(...fields: (keyof S[T])[]): this;
232
+ /**
233
+ * HAVING 条件(用于聚合后的过滤)
234
+ */
235
+ having(query: Condition<S[T]>): this;
236
+ protected getQueryParams(): QueryParams<S, T>;
67
237
  }
238
+ export {};
68
239
  //# sourceMappingURL=query-classes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-classes.d.ts","sourceRoot":"","sources":["../../src/base/query-classes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-classes.d.ts","sourceRoot":"","sources":["../../src/base/query-classes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAqC,QAAQ,EAAc,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAE7K,cAAc;AACd,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAEvE,qBAAa,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAGnI,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAF5B,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACV,SAAS,EAAE,CAAC,EACZ,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAKrD,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC;CAO7C;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,MAAM,EAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAKxI,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,OAAO,CAAC,UAAU,CAAuB;gBAGvC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACZ,SAAS,EAAE,CAAC;IAK/B,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAKnC,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC;CAO7C;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,MAAM,EAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAKvI,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,UAAU,CAAsB;gBAGtC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC;IAK/B,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAKnC,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC;CAQ7C;AAED,qBAAa,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAGjI,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAF3B,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACV,SAAS,EAAE,CAAC,EACZ,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAK/C,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC;CAO7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,SAAS,CACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EACnD,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAC,EACpB,CAAC,GAAG,GAAG,EACP,CAAC,GAAG,MAAM,CACV,SAAQ,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAY3E,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC/B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAZrC,QAAQ,CAAC,YAAY,EAAG,IAAI,CAAU;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAM;IAC3C,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAM;IACzC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAM;IAC3C,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAG7B,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACR,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAKrC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAKnC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAKxC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAKnE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS3B;;;;;;;;;;OAUG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,EACpB,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GACrB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAiBpC;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EACxB,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GACrB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAiB1C;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EACzB,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GACrB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;IAiBjD;;;OAGG;IACH,KAAK,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,EAAE,CAAA;KAAE;IAKvC,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC;CAY7C;AAED;;GAEG;AACH,KAAK,UAAU,CACb,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,SAAS,MAAM,CAAC,EACjB,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAC,EACpB,CAAC,SAAS,MAAM,CAAC,EACjB,YAAY,SAAS,OAAO,GAAG,KAAK,EACpC,aAAa,SAAS,OAAO,GAAG,KAAK,IACnC;KACD,CAAC,IAAI,CAAC,GAAG,YAAY,SAAS,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC7E,GAAG;KACD,CAAC,IAAI,CAAC,GAAG,aAAa,SAAS,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;CACnE,CAAC;AAEF;;;;;;;;;GASG;AACH,qBAAa,eAAe,CAC1B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,SAAS,MAAM,CAAC,EACjB,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAC,EACpB,CAAC,SAAS,MAAM,CAAC,EACjB,CAAC,GAAG,GAAG,EACP,CAAC,GAAG,MAAM,EACV,YAAY,SAAS,OAAO,GAAG,KAAK,EACpC,aAAa,SAAS,OAAO,GAAG,KAAK,CACrC,SAAQ,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAMtF,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAKvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,WAAW,CAAC;IAdtB,OAAO,CAAC,WAAW,CAAmC;gBAGpD,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACV,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EACjC,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACd,UAAU,GAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAM,EAChC,SAAS,GAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAO,EAChC,SAAS,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAO,EAC9B,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,WAAW,CAAC,EAAE,MAAM,YAAA;IAW9B,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAKnC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAKnE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3B;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,MAAM,CAAC,EACrB,KAAK,EAAE,EAAE,EACT,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,GACtB,IAAI;IAUP,QAAQ,CAAC,EAAE,SAAS,MAAM,CAAC,EACzB,KAAK,EAAE,EAAE,EACT,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,GACtB,IAAI;IAUP,SAAS,CAAC,EAAE,SAAS,MAAM,CAAC,EAC1B,KAAK,EAAE,EAAE,EACT,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,GACtB,IAAI;IAUP,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;CAa9C;AAED,qBAAa,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAGpI,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFrB,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACV,SAAS,EAAE,CAAC,EACZ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAK7B,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC;CAO7C;AAED,qBAAa,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,MAAM,EAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAKnI,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,UAAU,CAAuB;gBAGvC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACV,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAKxC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAKnC,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC;CAQ7C;AAED,qBAAa,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAKnI,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,OAAO,CAAC,UAAU,CAAuB;gBAGvC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACV,SAAS,EAAE,CAAC;IAK/B,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAKnC,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC;CAO7C;AAED;;GAEG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAG9L,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFrB,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACV,SAAS,EAAE,CAAC,EACZ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;IAM/B,IAAI,CAAC,QAAQ,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,QAAQ,GAAG,KAAK,EACzF,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,EACzI,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,GAClF,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAc/B,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC;CAO7C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAQnJ,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,UAAU,CAA8B;gBAG9C,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACV,SAAS,EAAE,CAAC;IAK/B;;OAEG;IACH,KAAK,CAAC,KAAK,GAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAK1D;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5C;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAKnC;;OAEG;IACH,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAKxC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAKpC,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC;CAU7C"}