@fett/sql-translator 0.0.1-beta

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 (199) hide show
  1. package/README.md +191 -0
  2. package/lib/client/client.d.ts +59 -0
  3. package/lib/client/client.d.ts.map +1 -0
  4. package/lib/client/client.js +201 -0
  5. package/lib/client/client.js.map +1 -0
  6. package/lib/client/index.d.ts +15 -0
  7. package/lib/client/index.d.ts.map +1 -0
  8. package/lib/client/index.js +15 -0
  9. package/lib/client/index.js.map +1 -0
  10. package/lib/client/manager.d.ts +27 -0
  11. package/lib/client/manager.d.ts.map +1 -0
  12. package/lib/client/manager.js +73 -0
  13. package/lib/client/manager.js.map +1 -0
  14. package/lib/client/registry.d.ts +31 -0
  15. package/lib/client/registry.d.ts.map +1 -0
  16. package/lib/client/registry.js +128 -0
  17. package/lib/client/registry.js.map +1 -0
  18. package/lib/core/cache.d.ts +28 -0
  19. package/lib/core/cache.d.ts.map +1 -0
  20. package/lib/core/cache.js +58 -0
  21. package/lib/core/cache.js.map +1 -0
  22. package/lib/core/config.d.ts +16 -0
  23. package/lib/core/config.d.ts.map +1 -0
  24. package/lib/core/config.js +47 -0
  25. package/lib/core/config.js.map +1 -0
  26. package/lib/core/field-mapper/mysql.d.ts +42 -0
  27. package/lib/core/field-mapper/mysql.d.ts.map +1 -0
  28. package/lib/core/field-mapper/mysql.js +129 -0
  29. package/lib/core/field-mapper/mysql.js.map +1 -0
  30. package/lib/core/field-mapper/postgresql.d.ts +25 -0
  31. package/lib/core/field-mapper/postgresql.d.ts.map +1 -0
  32. package/lib/core/field-mapper/postgresql.js +121 -0
  33. package/lib/core/field-mapper/postgresql.js.map +1 -0
  34. package/lib/core/sql/normalize.d.ts +10 -0
  35. package/lib/core/sql/normalize.d.ts.map +1 -0
  36. package/lib/core/sql/normalize.js +121 -0
  37. package/lib/core/sql/normalize.js.map +1 -0
  38. package/lib/core/sql/pagination.d.ts +22 -0
  39. package/lib/core/sql/pagination.d.ts.map +1 -0
  40. package/lib/core/sql/pagination.js +61 -0
  41. package/lib/core/sql/pagination.js.map +1 -0
  42. package/lib/core/sql/statement.d.ts +28 -0
  43. package/lib/core/sql/statement.d.ts.map +1 -0
  44. package/lib/core/sql/statement.js +155 -0
  45. package/lib/core/sql/statement.js.map +1 -0
  46. package/lib/core/sql/table-mapper.d.ts +24 -0
  47. package/lib/core/sql/table-mapper.d.ts.map +1 -0
  48. package/lib/core/sql/table-mapper.js +113 -0
  49. package/lib/core/sql/table-mapper.js.map +1 -0
  50. package/lib/core/task-queue.d.ts +31 -0
  51. package/lib/core/task-queue.d.ts.map +1 -0
  52. package/lib/core/task-queue.js +185 -0
  53. package/lib/core/task-queue.js.map +1 -0
  54. package/lib/core/worker/bun-worker.d.ts +21 -0
  55. package/lib/core/worker/bun-worker.d.ts.map +1 -0
  56. package/lib/core/worker/bun-worker.js +93 -0
  57. package/lib/core/worker/bun-worker.js.map +1 -0
  58. package/lib/core/worker/index.d.ts +16 -0
  59. package/lib/core/worker/index.d.ts.map +1 -0
  60. package/lib/core/worker/index.js +16 -0
  61. package/lib/core/worker/index.js.map +1 -0
  62. package/lib/core/worker/node-worker.d.ts +19 -0
  63. package/lib/core/worker/node-worker.d.ts.map +1 -0
  64. package/lib/core/worker/node-worker.js +94 -0
  65. package/lib/core/worker/node-worker.js.map +1 -0
  66. package/lib/core/worker/task-runner-bun.d.ts +2 -0
  67. package/lib/core/worker/task-runner-bun.d.ts.map +1 -0
  68. package/lib/core/worker/task-runner-bun.js +18 -0
  69. package/lib/core/worker/task-runner-bun.js.map +1 -0
  70. package/lib/core/worker/task-runner.d.ts +2 -0
  71. package/lib/core/worker/task-runner.d.ts.map +1 -0
  72. package/lib/core/worker/task-runner.js +21 -0
  73. package/lib/core/worker/task-runner.js.map +1 -0
  74. package/lib/driver/index.d.ts +3 -0
  75. package/lib/driver/index.d.ts.map +1 -0
  76. package/lib/driver/index.js +16 -0
  77. package/lib/driver/index.js.map +1 -0
  78. package/lib/driver/interface.d.ts +39 -0
  79. package/lib/driver/interface.d.ts.map +1 -0
  80. package/lib/driver/interface.js +2 -0
  81. package/lib/driver/interface.js.map +1 -0
  82. package/lib/driver/mongodb/dml-translator.d.ts +21 -0
  83. package/lib/driver/mongodb/dml-translator.d.ts.map +1 -0
  84. package/lib/driver/mongodb/dml-translator.js +127 -0
  85. package/lib/driver/mongodb/dml-translator.js.map +1 -0
  86. package/lib/driver/mongodb/index.d.ts +27 -0
  87. package/lib/driver/mongodb/index.d.ts.map +1 -0
  88. package/lib/driver/mongodb/index.js +263 -0
  89. package/lib/driver/mongodb/index.js.map +1 -0
  90. package/lib/driver/mongodb/pool.d.ts +31 -0
  91. package/lib/driver/mongodb/pool.d.ts.map +1 -0
  92. package/lib/driver/mongodb/pool.js +96 -0
  93. package/lib/driver/mongodb/pool.js.map +1 -0
  94. package/lib/driver/mongodb/schema.d.ts +37 -0
  95. package/lib/driver/mongodb/schema.d.ts.map +1 -0
  96. package/lib/driver/mongodb/schema.js +238 -0
  97. package/lib/driver/mongodb/schema.js.map +1 -0
  98. package/lib/driver/mongodb/sql-translator.d.ts +19 -0
  99. package/lib/driver/mongodb/sql-translator.d.ts.map +1 -0
  100. package/lib/driver/mongodb/sql-translator.js +30 -0
  101. package/lib/driver/mongodb/sql-translator.js.map +1 -0
  102. package/lib/driver/mysql/index.d.ts +41 -0
  103. package/lib/driver/mysql/index.d.ts.map +1 -0
  104. package/lib/driver/mysql/index.js +338 -0
  105. package/lib/driver/mysql/index.js.map +1 -0
  106. package/lib/driver/mysql/pool.d.ts +46 -0
  107. package/lib/driver/mysql/pool.d.ts.map +1 -0
  108. package/lib/driver/mysql/pool.js +141 -0
  109. package/lib/driver/mysql/pool.js.map +1 -0
  110. package/lib/driver/mysql/version.d.ts +27 -0
  111. package/lib/driver/mysql/version.d.ts.map +1 -0
  112. package/lib/driver/mysql/version.js +77 -0
  113. package/lib/driver/mysql/version.js.map +1 -0
  114. package/lib/driver/postgresql/index.d.ts +34 -0
  115. package/lib/driver/postgresql/index.d.ts.map +1 -0
  116. package/lib/driver/postgresql/index.js +383 -0
  117. package/lib/driver/postgresql/index.js.map +1 -0
  118. package/lib/driver/postgresql/pool.d.ts +33 -0
  119. package/lib/driver/postgresql/pool.d.ts.map +1 -0
  120. package/lib/driver/postgresql/pool.js +104 -0
  121. package/lib/driver/postgresql/pool.js.map +1 -0
  122. package/lib/driver/registry.d.ts +16 -0
  123. package/lib/driver/registry.d.ts.map +1 -0
  124. package/lib/driver/registry.js +27 -0
  125. package/lib/driver/registry.js.map +1 -0
  126. package/lib/driver/sqlite/backend.d.ts +19 -0
  127. package/lib/driver/sqlite/backend.d.ts.map +1 -0
  128. package/lib/driver/sqlite/backend.js +5 -0
  129. package/lib/driver/sqlite/backend.js.map +1 -0
  130. package/lib/driver/sqlite/bun.d.ts +10 -0
  131. package/lib/driver/sqlite/bun.d.ts.map +1 -0
  132. package/lib/driver/sqlite/bun.js +36 -0
  133. package/lib/driver/sqlite/bun.js.map +1 -0
  134. package/lib/driver/sqlite/index.d.ts +49 -0
  135. package/lib/driver/sqlite/index.d.ts.map +1 -0
  136. package/lib/driver/sqlite/index.js +421 -0
  137. package/lib/driver/sqlite/index.js.map +1 -0
  138. package/lib/driver/sqlite/node.d.ts +10 -0
  139. package/lib/driver/sqlite/node.d.ts.map +1 -0
  140. package/lib/driver/sqlite/node.js +37 -0
  141. package/lib/driver/sqlite/node.js.map +1 -0
  142. package/lib/driver/sqlite/store.d.ts +13 -0
  143. package/lib/driver/sqlite/store.d.ts.map +1 -0
  144. package/lib/driver/sqlite/store.js +57 -0
  145. package/lib/driver/sqlite/store.js.map +1 -0
  146. package/lib/errors.d.ts +18 -0
  147. package/lib/errors.d.ts.map +1 -0
  148. package/lib/errors.js +24 -0
  149. package/lib/errors.js.map +1 -0
  150. package/lib/facade/engine.d.ts +29 -0
  151. package/lib/facade/engine.d.ts.map +1 -0
  152. package/lib/facade/engine.js +107 -0
  153. package/lib/facade/engine.js.map +1 -0
  154. package/lib/index.d.ts +41 -0
  155. package/lib/index.d.ts.map +1 -0
  156. package/lib/index.js +40 -0
  157. package/lib/index.js.map +1 -0
  158. package/lib/optional/static-source.d.ts +36 -0
  159. package/lib/optional/static-source.d.ts.map +1 -0
  160. package/lib/optional/static-source.js +141 -0
  161. package/lib/optional/static-source.js.map +1 -0
  162. package/lib/runtime.d.ts +12 -0
  163. package/lib/runtime.d.ts.map +1 -0
  164. package/lib/runtime.js +26 -0
  165. package/lib/runtime.js.map +1 -0
  166. package/lib/types/config.d.ts +146 -0
  167. package/lib/types/config.d.ts.map +1 -0
  168. package/lib/types/config.js +5 -0
  169. package/lib/types/config.js.map +1 -0
  170. package/lib/types/index.d.ts +7 -0
  171. package/lib/types/index.d.ts.map +1 -0
  172. package/lib/types/index.js +7 -0
  173. package/lib/types/index.js.map +1 -0
  174. package/lib/types/manager.d.ts +37 -0
  175. package/lib/types/manager.d.ts.map +1 -0
  176. package/lib/types/manager.js +5 -0
  177. package/lib/types/manager.js.map +1 -0
  178. package/lib/types/queue.d.ts +45 -0
  179. package/lib/types/queue.d.ts.map +1 -0
  180. package/lib/types/queue.js +5 -0
  181. package/lib/types/queue.js.map +1 -0
  182. package/lib/types/result.d.ts +61 -0
  183. package/lib/types/result.d.ts.map +1 -0
  184. package/lib/types/result.js +16 -0
  185. package/lib/types/result.js.map +1 -0
  186. package/lib/types/schema.d.ts +51 -0
  187. package/lib/types/schema.d.ts.map +1 -0
  188. package/lib/types/schema.js +5 -0
  189. package/lib/types/schema.js.map +1 -0
  190. package/lib/types/task.d.ts +48 -0
  191. package/lib/types/task.d.ts.map +1 -0
  192. package/lib/types/task.js +136 -0
  193. package/lib/types/task.js.map +1 -0
  194. package/lib/types/transaction.d.ts +13 -0
  195. package/lib/types/transaction.d.ts.map +1 -0
  196. package/lib/types/transaction.js +2 -0
  197. package/lib/types/transaction.js.map +1 -0
  198. package/package.json +93 -0
  199. package/patches/bson@7.3.2.patch +105 -0
@@ -0,0 +1,21 @@
1
+ import type { Document } from 'mongodb';
2
+ export interface MongoDmlSpec {
3
+ type: 'insert' | 'update' | 'delete';
4
+ collection: string;
5
+ /** insert */
6
+ documents?: Document[];
7
+ /** update/delete:WHERE 翻译 */
8
+ filter?: Document;
9
+ /** update:{ $set, $inc } */
10
+ updateDoc?: Document;
11
+ }
12
+ /** 参数内联:'?' → 字面量(数字/布尔/null 原样,字符串单引号转义) */
13
+ export declare function inlineParams(sql: string, params: unknown[]): string;
14
+ /**
15
+ * 翻译 DML 语句
16
+ * @returns spec(filter 由外部通过 extractDmlWhere + noql 翻译注入,见 MongoDriver.runDml)
17
+ */
18
+ export declare function translateDml(sql: string, params: unknown[]): MongoDmlSpec;
19
+ /** 翻译 UPDATE/DELETE 的 WHERE → filter(无 WHERE 返回 {}) */
20
+ export declare function translateDmlFilter(sql: string): Document;
21
+ //# sourceMappingURL=dml-translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dml-translator.d.ts","sourceRoot":"","sources":["../../../src/driver/mongodb/dml-translator.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKxC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,QAAQ,CAAC;CACtB;AAED,6CAA6C;AAC7C,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAUnE;AA6ED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAYzE;AAED,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAGxD"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * MongoDB DML 翻译:INSERT/UPDATE/DELETE → Mongo 写操作(node-sql-parser 解析)
3
+ *
4
+ * 分工:
5
+ * - node-sql-parser:INSERT 的 columns/values、UPDATE 的 SET($set vs $inc 识别)
6
+ * - WHERE 子句:从原始 SQL 提取原文 → noql 翻译(与 SELECT 路径一致)
7
+ * - 参数(?):先内联进 SQL 再解析(Mongo 无参数化概念,值直接进文档)
8
+ */
9
+ import pkg from 'node-sql-parser';
10
+ import { SqlEngineError } from '../../errors.js';
11
+ import { extractDmlWhere } from '../../core/sql/statement.js';
12
+ import { translateWhereToMatch } from './sql-translator.js';
13
+ const { Parser } = pkg;
14
+ const parser = new Parser();
15
+ /** 参数内联:'?' → 字面量(数字/布尔/null 原样,字符串单引号转义) */
16
+ export function inlineParams(sql, params) {
17
+ if (!params?.length)
18
+ return sql;
19
+ let i = 0;
20
+ return sql.replace(/\?/g, () => {
21
+ const v = params[i++];
22
+ if (v === null || v === undefined)
23
+ return 'NULL';
24
+ if (typeof v === 'number')
25
+ return String(v);
26
+ if (typeof v === 'boolean')
27
+ return v ? 'TRUE' : 'FALSE';
28
+ return `'${String(v).replace(/'/g, "''")}'`;
29
+ });
30
+ }
31
+ /** AST 值节点 → JS 值 */
32
+ function astValueToJs(node) {
33
+ if (!node)
34
+ return null;
35
+ switch (node.type) {
36
+ case 'number':
37
+ return Number(node.value);
38
+ case 'single_quote_string':
39
+ case 'double_quote_string':
40
+ return String(node.value);
41
+ case 'null':
42
+ return null;
43
+ case 'boolean':
44
+ return node.value === true || String(node.value).toLowerCase() === 'true';
45
+ case 'origin':
46
+ // 内联后 '?' 应已被替换;裸标识符视为字符串
47
+ return String(node.value);
48
+ default:
49
+ throw new SqlEngineError('DML_UNSUPPORTED_EXPRESSION', `不支持的表达式节点: ${node.type}(仅支持字面量值)`);
50
+ }
51
+ }
52
+ /** INSERT → documents */
53
+ function translateInsert(ast) {
54
+ const collection = ast.table?.[0]?.table;
55
+ if (!collection)
56
+ throw new SqlEngineError('QUERY_FAILED', '无法解析 INSERT 目标集合');
57
+ const columns = ast.columns || [];
58
+ const rows = ast.values?.values || [];
59
+ if (!columns.length || !rows.length) {
60
+ throw new SqlEngineError('DML_UNSUPPORTED_EXPRESSION', 'INSERT 需要显式列与 VALUES');
61
+ }
62
+ const documents = rows.map((row) => {
63
+ const values = row.value || [];
64
+ const doc = {};
65
+ columns.forEach((col, i) => {
66
+ doc[col] = astValueToJs(values[i]);
67
+ });
68
+ return doc;
69
+ });
70
+ return { type: 'insert', collection, documents };
71
+ }
72
+ /** UPDATE → { $set, $inc } */
73
+ function translateUpdate(ast) {
74
+ const collection = ast.table?.[0]?.table;
75
+ if (!collection)
76
+ throw new SqlEngineError('QUERY_FAILED', '无法解析 UPDATE 目标集合');
77
+ const $set = {};
78
+ const $inc = {};
79
+ for (const s of ast.set || []) {
80
+ const col = s.column;
81
+ const v = s.value;
82
+ // SET n = n + k / n = n - k → $inc
83
+ if (v?.type === 'binary_expr' &&
84
+ (v.operator === '+' || v.operator === '-') &&
85
+ v.left?.type === 'column_ref' &&
86
+ v.left?.column === col &&
87
+ v.right?.type === 'number') {
88
+ $inc[col] = v.operator === '+' ? Number(v.right.value) : -Number(v.right.value);
89
+ continue;
90
+ }
91
+ $set[col] = astValueToJs(v);
92
+ }
93
+ const updateDoc = {};
94
+ if (Object.keys($set).length)
95
+ updateDoc.$set = $set;
96
+ if (Object.keys($inc).length)
97
+ updateDoc.$inc = $inc;
98
+ if (!Object.keys(updateDoc).length) {
99
+ throw new SqlEngineError('QUERY_FAILED', 'UPDATE 没有可执行的 SET 子句');
100
+ }
101
+ return { type: 'update', collection, updateDoc };
102
+ }
103
+ /**
104
+ * 翻译 DML 语句
105
+ * @returns spec(filter 由外部通过 extractDmlWhere + noql 翻译注入,见 MongoDriver.runDml)
106
+ */
107
+ export function translateDml(sql, params) {
108
+ const inlined = inlineParams(sql, params);
109
+ const ast = parser.astify(inlined, { database: 'mysql' });
110
+ if (ast.type === 'insert')
111
+ return translateInsert(ast);
112
+ if (ast.type === 'update')
113
+ return translateUpdate(ast);
114
+ if (ast.type === 'delete') {
115
+ const collection = ast.from?.[0]?.table ?? ast.table?.[0]?.table;
116
+ if (!collection)
117
+ throw new SqlEngineError('QUERY_FAILED', '无法解析 DELETE 目标集合');
118
+ return { type: 'delete', collection };
119
+ }
120
+ throw new SqlEngineError('DML_UNSUPPORTED_EXPRESSION', `不支持的 DML 语句类型: ${ast.type}`);
121
+ }
122
+ /** 翻译 UPDATE/DELETE 的 WHERE → filter(无 WHERE 返回 {}) */
123
+ export function translateDmlFilter(sql) {
124
+ const where = extractDmlWhere(sql);
125
+ return where ? translateWhereToMatch(where) : {};
126
+ }
127
+ //# sourceMappingURL=dml-translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dml-translator.js","sourceRoot":"","sources":["../../../src/driver/mongodb/dml-translator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;AACvB,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAa5B,6CAA6C;AAC7C,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAiB;IACzD,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO,GAAG,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE;QAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACjD,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACxD,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qBAAqB;AACrB,SAAS,YAAY,CAAC,IAAS;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,qBAAqB,CAAC;QAC3B,KAAK,qBAAqB;YACxB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;QAC5E,KAAK,QAAQ;YACX,0BAA0B;YAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B;YACE,MAAM,IAAI,cAAc,CACtB,4BAA4B,EAC5B,cAAc,IAAI,CAAC,IAAI,WAAW,CACnC,CAAC;IACN,CAAC;AACH,CAAC;AAED,yBAAyB;AACzB,SAAS,eAAe,CAAC,GAAQ;IAC/B,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACzC,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAa,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAU,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,cAAc,CAAC,4BAA4B,EAAE,sBAAsB,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACzB,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnD,CAAC;AAED,8BAA8B;AAC9B,SAAS,eAAe,CAAC,GAAQ;IAC/B,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACzC,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAW,CAAC,CAAC,MAAM,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAClB,mCAAmC;QACnC,IACE,CAAC,EAAE,IAAI,KAAK,aAAa;YACzB,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC;YAC1C,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY;YAC7B,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG;YACtB,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,QAAQ,EAC1B,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChF,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;QAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;IACpD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;QAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAiB;IACzD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAE/D,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QACjE,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAC9E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,cAAc,CAAC,4BAA4B,EAAE,kBAAkB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { SqlDriver, PoolHandle } from '../interface.js';
2
+ import type { MongodbConfig, SchemaOptions } from '../../types/config.js';
3
+ import type { ExecResult, Field, RunSqlRequest, TestResult } from '../../types/result.js';
4
+ import type { TableSchema } from '../../types/schema.js';
5
+ import type { IntrospectTask } from '../../types/task.js';
6
+ import type { TransactionHandle } from '../../types/transaction.js';
7
+ import { MongoPoolHandle } from './pool.js';
8
+ export declare class MongoDriver implements SqlDriver {
9
+ readonly dialect = "mongodb";
10
+ createPool(config: MongodbConfig): Promise<PoolHandle>;
11
+ testConnection(config: MongodbConfig): Promise<TestResult>;
12
+ getTableList(pool: PoolHandle): Promise<string[]>;
13
+ getPreviewRows(pool: PoolHandle, table: string, offset: number, limit: number, whereClause?: string): Promise<any[]>;
14
+ getColumns(pool: PoolHandle, table: string): Promise<Field[]>;
15
+ getRowsCount(pool: PoolHandle, table: string, whereClause?: string): Promise<number>;
16
+ runSql(pool: PoolHandle, request: RunSqlRequest): Promise<ExecResult>;
17
+ /** 事务/常规共用执行核心(session 可指定为事务会话) */
18
+ runSqlInternal(handle: MongoPoolHandle, request: RunSqlRequest, session?: import('mongodb').ClientSession): Promise<ExecResult>;
19
+ /** 事务:session.withTransaction(需要副本集/分片集群,单实例不支持) */
20
+ withTransaction<T>(pool: PoolHandle, fn: (tx: TransactionHandle) => Promise<T>): Promise<T>;
21
+ private runSelect;
22
+ private runDml;
23
+ getTableSchema(pool: PoolHandle, table: string, opts?: SchemaOptions): Promise<TableSchema>;
24
+ getAllTableSchemas(pool: PoolHandle, opts?: SchemaOptions): IntrospectTask<TableSchema[]>;
25
+ }
26
+ export declare const mongodbDriver: MongoDriver;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/driver/mongodb/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EACV,UAAU,EACV,KAAK,EAEL,aAAa,EACb,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAgB5C,qBAAa,WAAY,YAAW,SAAS;IAC3C,QAAQ,CAAC,OAAO,aAAa;IAEvB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAStD,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAkB1D,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMjD,cAAc,CAClB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,GAAG,EAAE,CAAC;IAMX,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAO7D,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQpF,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAK3E,oCAAoC;IACpC,cAAc,CACZ,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,OAAO,SAAS,EAAE,aAAa,GACxC,OAAO,CAAC,UAAU,CAAC;IAiBtB,oDAAoD;IAC9C,eAAe,CAAC,CAAC,EACrB,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC;YA8BC,SAAS;YAsET,MAAM;IAyDpB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAa3F,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;CAuB1F;AAED,eAAO,MAAM,aAAa,aAAoB,CAAC"}
@@ -0,0 +1,263 @@
1
+ /**
2
+ * MongoDB 驱动(SQL → Query / DML 翻译)
3
+ * SELECT 走 @synatic/noql;DML 走 node-sql-parser + noql WHERE 翻译;
4
+ * 结构检出为长任务(采样分批 + 进度 + 取消)
5
+ */
6
+ import { SqlEngineError, wrapError } from '../../errors.js';
7
+ import { normalizeSql } from '../../core/sql/normalize.js';
8
+ import { detectStatementType, isDmlStatement, hasDmlWhere, countInsertValueRows } from '../../core/sql/statement.js';
9
+ import { createTask } from '../../types/task.js';
10
+ import { MongoPoolHandle } from './pool.js';
11
+ import { translateSelect, translateWhereToMatch, mergeMatch } from './sql-translator.js';
12
+ import { translateDml, translateDmlFilter } from './dml-translator.js';
13
+ import { analyzeCollection, analysisToTableSchema, analysisToFields, inferFieldsFromRows } from './schema.js';
14
+ /** noql 投影({field: '$field'})→ Mongo 投影({field: 1},排除默认 _id) */
15
+ function toMongoProjection(projection) {
16
+ if (!projection)
17
+ return {};
18
+ const out = {};
19
+ for (const [k, v] of Object.entries(projection)) {
20
+ out[k] = 1;
21
+ }
22
+ if (!('_id' in out))
23
+ out._id = 0;
24
+ return out;
25
+ }
26
+ export class MongoDriver {
27
+ dialect = 'mongodb';
28
+ async createPool(config) {
29
+ if (config.type !== 'mongodb') {
30
+ throw new SqlEngineError('UNSUPPORTED_DIALECT', `mongodb 驱动收到 ${config.type} 配置`);
31
+ }
32
+ return new MongoPoolHandle(config);
33
+ }
34
+ // ==================== 连接测试 ====================
35
+ async testConnection(config) {
36
+ let handle = null;
37
+ try {
38
+ handle = new MongoPoolHandle(config);
39
+ const client = await handle.getClient();
40
+ const result = await client.db().command({ ping: 1 });
41
+ if (result.ok !== 1)
42
+ throw new Error('ping command failed');
43
+ return { success: true, message: 'MongoDB connection test successful' };
44
+ }
45
+ catch (err) {
46
+ const e = err;
47
+ return { success: false, message: `MongoDB connection test failed: ${e.message}` };
48
+ }
49
+ finally {
50
+ if (handle)
51
+ await handle.destroy();
52
+ }
53
+ }
54
+ // ==================== 元信息 ====================
55
+ async getTableList(pool) {
56
+ const db = await pool.getDb();
57
+ const collections = await db.listCollections().toArray();
58
+ return collections.map((c) => c.name);
59
+ }
60
+ async getPreviewRows(pool, table, offset, limit, whereClause) {
61
+ const db = await pool.getDb();
62
+ const query = translateWhereToMatch(whereClause ?? '');
63
+ return db.collection(table).find(query).skip(offset).limit(limit).toArray();
64
+ }
65
+ async getColumns(pool, table) {
66
+ const db = await pool.getDb();
67
+ const opts = pool.config.introspect ?? {};
68
+ const analysis = await analyzeCollection(db, table, { ...opts, sampleSize: opts.sampleSize ?? 50 }).promise;
69
+ return analysisToFields(analysis);
70
+ }
71
+ async getRowsCount(pool, table, whereClause) {
72
+ const db = await pool.getDb();
73
+ const query = translateWhereToMatch(whereClause ?? '');
74
+ return db.collection(table).countDocuments(query);
75
+ }
76
+ // ==================== SQL 执行 ====================
77
+ async runSql(pool, request) {
78
+ const handle = pool;
79
+ return this.runSqlInternal(handle, request, undefined);
80
+ }
81
+ /** 事务/常规共用执行核心(session 可指定为事务会话) */
82
+ runSqlInternal(handle, request, session) {
83
+ const sql = normalizeSql(request.sql);
84
+ const type = detectStatementType(sql);
85
+ try {
86
+ if (isDmlStatement(type)) {
87
+ return this.runDml(handle, sql, request.params, type, request.dml, session);
88
+ }
89
+ if (type === 'SELECT') {
90
+ return this.runSelect(handle, sql, request, session);
91
+ }
92
+ throw new SqlEngineError('QUERY_FAILED', `MongoDB 不支持执行 ${type} 语句`);
93
+ }
94
+ catch (err) {
95
+ if (err instanceof SqlEngineError)
96
+ return Promise.reject(err);
97
+ return Promise.reject(wrapError('QUERY_FAILED', err));
98
+ }
99
+ }
100
+ /** 事务:session.withTransaction(需要副本集/分片集群,单实例不支持) */
101
+ async withTransaction(pool, fn) {
102
+ const handle = pool;
103
+ const client = await handle.getClient();
104
+ const session = client.startSession();
105
+ const self = this;
106
+ try {
107
+ let result;
108
+ await session.withTransaction(async () => {
109
+ const tx = {
110
+ runSql: (req) => self.runSqlInternal(handle, req, session),
111
+ query: (sql, params) => self.runSqlInternal(handle, { sql, params }, session),
112
+ execute: (sql, params) => self.runSqlInternal(handle, { sql, params }, session),
113
+ commit: async () => {
114
+ await session.commitTransaction();
115
+ },
116
+ rollback: async () => {
117
+ await session.abortTransaction();
118
+ },
119
+ };
120
+ result = await fn(tx);
121
+ });
122
+ return result;
123
+ }
124
+ finally {
125
+ await session.endSession().catch(() => undefined);
126
+ }
127
+ }
128
+ // ---- SELECT(noql:query / aggregate) ----
129
+ async runSelect(handle, sql, request, session) {
130
+ const db = await handle.getDb();
131
+ const parsed = translateSelect(sql);
132
+ const additionalMatch = translateWhereToMatch(request.whereClause ?? '');
133
+ // SQL 自带分页 → 用 noql 解析出的 limit/offset;否则用请求级标准分页
134
+ const sqlHasPagination = !!parsed.limit || !!parsed.offset;
135
+ const standardPagination = !sqlHasPagination;
136
+ const offset = Math.max(Number(parsed.offset ?? request.offset ?? 0), 0);
137
+ const limit = Math.max(Number(parsed.limit ?? request.limit ?? 100), 0);
138
+ const projection = toMongoProjection(parsed.projection);
139
+ if (parsed.type === 'query' && parsed.collection) {
140
+ const query = mergeMatch(parsed.query, additionalMatch);
141
+ const findOpts = session ? { session } : {};
142
+ const docs = await db
143
+ .collection(parsed.collection)
144
+ .find(query, Object.keys(projection).length ? { projection, ...findOpts } : findOpts)
145
+ .skip(offset)
146
+ .limit(limit)
147
+ .toArray();
148
+ const total = standardPagination
149
+ ? await db.collection(parsed.collection).countDocuments(query, session ? { session } : undefined)
150
+ : docs.length;
151
+ return {
152
+ rows: docs,
153
+ fields: inferFieldsFromRows(docs),
154
+ total,
155
+ offset,
156
+ limit,
157
+ };
158
+ }
159
+ if (parsed.type === 'aggregate' && parsed.collections?.[0]) {
160
+ const pipeline = [...(parsed.pipeline ?? [])];
161
+ if (Object.keys(additionalMatch).length) {
162
+ pipeline.push({ $match: additionalMatch });
163
+ }
164
+ const total = standardPagination
165
+ ? await db
166
+ .collection(parsed.collections[0])
167
+ .aggregate([...pipeline, { $count: 'total' }], session ? { session } : undefined)
168
+ .toArray()
169
+ .then((r) => Number(r[0]?.total ?? 0))
170
+ : 0;
171
+ if (standardPagination) {
172
+ pipeline.push({ $skip: offset }, { $limit: limit });
173
+ }
174
+ const docs = await db
175
+ .collection(parsed.collections[0])
176
+ .aggregate(pipeline, session ? { session } : undefined)
177
+ .toArray();
178
+ return {
179
+ rows: docs,
180
+ fields: inferFieldsFromRows(docs),
181
+ total,
182
+ offset,
183
+ limit,
184
+ };
185
+ }
186
+ throw new SqlEngineError('QUERY_FAILED', `无法翻译 SQL: ${sql}`);
187
+ }
188
+ // ---- DML(node-sql-parser + noql WHERE) ----
189
+ async runDml(handle, sql, params, type, dmlOverride, session) {
190
+ const db = await handle.getDb();
191
+ const dml = dmlOverride ?? handle.config.dml ?? {};
192
+ if ((type === 'UPDATE' || type === 'DELETE') && dml.requireWhereForUpdateDelete !== false) {
193
+ if (!hasDmlWhere(sql)) {
194
+ throw new SqlEngineError('DML_BLOCKED', `禁止无 WHERE 的 ${type}(config.dml.requireWhereForUpdateDelete 可关闭)`);
195
+ }
196
+ }
197
+ const spec = translateDml(sql, params ?? []);
198
+ const filter = translateDmlFilter(sql);
199
+ if (type === 'INSERT') {
200
+ const documents = spec.documents ?? [];
201
+ if (dml.maxInsertRows && documents.length > dml.maxInsertRows) {
202
+ throw new SqlEngineError('DML_BLOCKED', `INSERT 行数 ${documents.length} 超过上限 ${dml.maxInsertRows}`);
203
+ }
204
+ const coll = db.collection(spec.collection);
205
+ const opts = session ? { session } : undefined;
206
+ if (documents.length === 1) {
207
+ const { insertedId } = await coll.insertOne(documents[0], opts);
208
+ return { affectedRows: 1, insertId: String(insertedId) };
209
+ }
210
+ const res = await coll.insertMany(documents, opts);
211
+ return { affectedRows: documents.length, insertId: String(Object.values(res.insertedIds)[0]) };
212
+ }
213
+ if (type === 'UPDATE') {
214
+ const res = await db
215
+ .collection(spec.collection)
216
+ .updateMany(filter, spec.updateDoc ?? {}, session ? { session } : undefined);
217
+ return { affectedRows: res.modifiedCount };
218
+ }
219
+ // DELETE
220
+ const res = await db
221
+ .collection(spec.collection)
222
+ .deleteMany(filter, session ? { session } : undefined);
223
+ return { affectedRows: res.deletedCount };
224
+ }
225
+ // ==================== 结构 JSON 检出(长任务) ====================
226
+ getTableSchema(pool, table, opts) {
227
+ const handle = pool;
228
+ return handle.getDb().then((db) => {
229
+ const merged = {
230
+ ...(handle.config.introspect ?? {}),
231
+ ...(opts ?? {}),
232
+ };
233
+ return analyzeCollection(db, table, merged).promise.then((analysis) => analysisToTableSchema(table, analysis, handle.config.database));
234
+ });
235
+ }
236
+ getAllTableSchemas(pool, opts) {
237
+ const handle = pool;
238
+ const self = this;
239
+ return createTask(async (ctx) => {
240
+ const db = await handle.getDb();
241
+ const collections = await db.listCollections().toArray();
242
+ const total = collections.length;
243
+ const schemas = [];
244
+ for (let i = 0; i < collections.length; i++) {
245
+ if (ctx.isCancelled())
246
+ break;
247
+ const name = collections[i].name;
248
+ ctx.report({ stage: 'introspecting', processed: i, total, message: name });
249
+ try {
250
+ const analysis = await analyzeCollection(db, name, opts ?? handle.config.introspect ?? {}).promise;
251
+ schemas.push(analysisToTableSchema(name, analysis, handle.config.database));
252
+ }
253
+ catch {
254
+ // 单集合失败不中断
255
+ }
256
+ }
257
+ void self;
258
+ return schemas;
259
+ });
260
+ }
261
+ }
262
+ export const mongodbDriver = new MongoDriver();
263
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/driver/mongodb/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACrH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAejD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9G,gEAAgE;AAChE,SAAS,iBAAiB,CAAC,UAAgC;IACzD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;QAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,OAAO,WAAW;IACb,OAAO,GAAG,SAAS,CAAC;IAE7B,KAAK,CAAC,UAAU,CAAC,MAAqB;QACpC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,cAAc,CAAC,qBAAqB,EAAE,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,iDAAiD;IAEjD,KAAK,CAAC,cAAc,CAAC,MAAqB;QACxC,IAAI,MAAM,GAA2B,IAAI,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC5D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC;QAC1E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAY,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,mCAAmC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACrF,CAAC;gBAAS,CAAC;YACT,IAAI,MAAM;gBAAE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAED,gDAAgD;IAEhD,KAAK,CAAC,YAAY,CAAC,IAAgB;QACjC,MAAM,EAAE,GAAG,MAAO,IAAwB,CAAC,KAAK,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;QACzD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,IAAgB,EAChB,KAAa,EACb,MAAc,EACd,KAAa,EACb,WAAoB;QAEpB,MAAM,EAAE,GAAG,MAAO,IAAwB,CAAC,KAAK,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAgB,EAAE,KAAa;QAC9C,MAAM,EAAE,GAAG,MAAO,IAAwB,CAAC,KAAK,EAAE,CAAC;QACnD,MAAM,IAAI,GAAI,IAAwB,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;QAC5G,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAgB,EAAE,KAAa,EAAE,WAAoB;QACtE,MAAM,EAAE,GAAG,MAAO,IAAwB,CAAC,KAAK,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,mDAAmD;IAEnD,KAAK,CAAC,MAAM,CAAC,IAAgB,EAAE,OAAsB;QACnD,MAAM,MAAM,GAAG,IAAuB,CAAC;QACvC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,oCAAoC;IACpC,cAAc,CACZ,MAAuB,EACvB,OAAsB,EACtB,OAAyC;QAEzC,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC9E,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,iBAAiB,IAAI,KAAK,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc;gBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,eAAe,CACnB,IAAgB,EAChB,EAAyC;QAEzC,MAAM,MAAM,GAAG,IAAuB,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,MAAS,CAAC;YACd,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;gBACvC,MAAM,EAAE,GAAsB;oBAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;oBAC1D,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CACrB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAyB;oBAC/E,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CACvB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAyB;oBAC/E,MAAM,EAAE,KAAK,IAAI,EAAE;wBACjB,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBACpC,CAAC;oBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACnB,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBACnC,CAAC;iBACF,CAAC;gBACF,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,OAAO,MAAO,CAAC;QACjB,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,2CAA2C;IACnC,KAAK,CAAC,SAAS,CACrB,MAAuB,EACvB,GAAW,EACX,OAAsB,EACtB,OAAyC;QAEzC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACzE,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3D,MAAM,kBAAkB,GAAG,CAAC,gBAAgB,CAAC;QAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAExD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,EAAE;iBAClB,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;iBAC7B,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;iBACpF,IAAI,CAAC,MAAM,CAAC;iBACZ,KAAK,CAAC,KAAK,CAAC;iBACZ,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,kBAAkB;gBAC9B,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAChB,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC;gBACjC,KAAK;gBACL,MAAM;gBACN,KAAK;aACN,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,GAAG,kBAAkB;gBAC9B,CAAC,CAAC,MAAM,EAAE;qBACL,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;qBACjC,SAAS,CAAC,CAAC,GAAG,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;qBAChF,OAAO,EAAE;qBACT,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC,CAAC;YACN,IAAI,kBAAkB,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,EAAE;iBAClB,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;iBACjC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;iBACtD,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC;gBACjC,KAAK;gBACL,MAAM;gBACN,KAAK;aACN,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,8CAA8C;IACtC,KAAK,CAAC,MAAM,CAClB,MAAuB,EACvB,GAAW,EACX,MAA6B,EAC7B,IAAoC,EACpC,WAAwD,EACxD,OAAyC;QAEzC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;QAEnD,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,2BAA2B,KAAK,KAAK,EAAE,CAAC;YAC1F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,cAAc,CACtB,aAAa,EACb,eAAe,IAAI,8CAA8C,CAClE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAEvC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,aAAa,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;gBAC9D,MAAM,IAAI,cAAc,CACtB,aAAa,EACb,aAAa,SAAS,CAAC,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,CAC1D,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC;gBACjE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnD,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjG,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,MAAM,EAAE;iBACjB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC3B,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/E,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC;QAC7C,CAAC;QAED,SAAS;QACT,MAAM,GAAG,GAAG,MAAM,EAAE;aACjB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;aAC3B,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzD,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5C,CAAC;IAED,4DAA4D;IAE5D,cAAc,CAAC,IAAgB,EAAE,KAAa,EAAE,IAAoB;QAClE,MAAM,MAAM,GAAG,IAAuB,CAAC;QACvC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YAChC,MAAM,MAAM,GAAkB;gBAC5B,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;gBACnC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;aAChB,CAAC;YACF,OAAO,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpE,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC/D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,IAAgB,EAAE,IAAoB;QACvD,MAAM,MAAM,GAAG,IAAuB,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,UAAU,CAAgB,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;YACjC,MAAM,OAAO,GAAkB,EAAE,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,IAAI,GAAG,CAAC,WAAW,EAAE;oBAAE,MAAM;gBAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;oBACnG,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC9E,CAAC;gBAAC,MAAM,CAAC;oBACP,WAAW;gBACb,CAAC;YACH,CAAC;YACD,KAAK,IAAI,CAAC;YACV,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * MongoDB 连接池句柄(mongodb 原生驱动 MongoClient)
3
+ */
4
+ import { MongoClient, type Db } from 'mongodb';
5
+ import type { PoolHandle } from '../interface.js';
6
+ import type { MongodbConfig } from '../../types/config.js';
7
+ /** 由 host/port/database 拼装连接串 */
8
+ export declare function buildMongoUri(config: MongodbConfig): string;
9
+ export declare function buildMongoOptions(config: MongodbConfig): Record<string, unknown>;
10
+ export declare class MongoPoolHandle implements PoolHandle {
11
+ readonly fingerprint: string;
12
+ readonly config: MongodbConfig;
13
+ private client;
14
+ private destroyedFlag;
15
+ constructor(config: MongodbConfig);
16
+ get destroyed(): boolean;
17
+ /** 获取 MongoClient(懒连接) */
18
+ getClient(): Promise<MongoClient>;
19
+ /** 获取数据库实例 */
20
+ getDb(): Promise<Db>;
21
+ get stats(): {
22
+ active: number;
23
+ idle: number;
24
+ waiting: number;
25
+ createdTotal: number;
26
+ destroyedTotal: number;
27
+ };
28
+ ping(): Promise<void>;
29
+ destroy(): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/driver/mongodb/pool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAU3D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBhF;AAED,qBAAa,eAAgB,YAAW,UAAU;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,aAAa,CAAS;gBAElB,MAAM,EAAE,aAAa;IAKjC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,0BAA0B;IACpB,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IASvC,cAAc;IACR,KAAK,IAAI,OAAO,CAAC,EAAE,CAAC;IAK1B,IAAI,KAAK;;;;;;MAQR;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAY/B"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * MongoDB 连接池句柄(mongodb 原生驱动 MongoClient)
3
+ */
4
+ import { MongoClient } from 'mongodb';
5
+ import { configKey } from '../../core/config.js';
6
+ /** 由 host/port/database 拼装连接串 */
7
+ export function buildMongoUri(config) {
8
+ if (config.uri)
9
+ return config.uri;
10
+ const user = config.user || config.username;
11
+ const pass = config.password;
12
+ const auth = user ? `${encodeURIComponent(user)}:${encodeURIComponent(pass ?? '')}@` : '';
13
+ const host = config.host ?? 'localhost';
14
+ const port = config.port ? `:${config.port}` : '';
15
+ const db = config.database ? `/${encodeURIComponent(config.database)}` : '';
16
+ const authSource = user && config.authSource ? `?authSource=${encodeURIComponent(config.authSource)}` : '';
17
+ return `mongodb://${auth}${host}${port}${db}${authSource}`;
18
+ }
19
+ export function buildMongoOptions(config) {
20
+ const options = {
21
+ connectTimeoutMS: 10000,
22
+ socketTimeoutMS: 30000,
23
+ serverSelectionTimeoutMS: 10000,
24
+ // 单实例部署不支持 retryable writes(事务/会话需要),默认关闭
25
+ retryWrites: config.retryWrites ?? false,
26
+ };
27
+ if (config.ssl?.enabled) {
28
+ options.tls = true;
29
+ const tlsOptions = {};
30
+ if (config.ssl.ca)
31
+ tlsOptions.ca = Buffer.from(config.ssl.ca);
32
+ if (config.ssl.cert)
33
+ tlsOptions.cert = Buffer.from(config.ssl.cert);
34
+ if (config.ssl.key)
35
+ tlsOptions.key = Buffer.from(config.ssl.key);
36
+ tlsOptions.rejectUnauthorized = config.ssl.rejectUnauthorized ?? false;
37
+ if (Object.keys(tlsOptions).length > 0)
38
+ options.tlsOptions = tlsOptions;
39
+ }
40
+ return options;
41
+ }
42
+ export class MongoPoolHandle {
43
+ fingerprint;
44
+ config;
45
+ client = null;
46
+ destroyedFlag = false;
47
+ constructor(config) {
48
+ this.config = { ...config };
49
+ this.fingerprint = configKey(config);
50
+ }
51
+ get destroyed() {
52
+ return this.destroyedFlag;
53
+ }
54
+ /** 获取 MongoClient(懒连接) */
55
+ async getClient() {
56
+ if (!this.client) {
57
+ const uri = buildMongoUri(this.config);
58
+ this.client = new MongoClient(uri, buildMongoOptions(this.config));
59
+ await this.client.connect();
60
+ }
61
+ return this.client;
62
+ }
63
+ /** 获取数据库实例 */
64
+ async getDb() {
65
+ const client = await this.getClient();
66
+ return client.db(this.config.database);
67
+ }
68
+ get stats() {
69
+ return {
70
+ active: 0,
71
+ idle: this.client ? 1 : 0,
72
+ waiting: 0,
73
+ createdTotal: this.client ? 1 : 0,
74
+ destroyedTotal: this.destroyedFlag ? 1 : 0,
75
+ };
76
+ }
77
+ async ping() {
78
+ const client = await this.getClient();
79
+ await client.db().command({ ping: 1 });
80
+ }
81
+ async destroy() {
82
+ if (this.destroyedFlag)
83
+ return;
84
+ this.destroyedFlag = true;
85
+ if (this.client) {
86
+ try {
87
+ await this.client.close();
88
+ }
89
+ catch {
90
+ // ignore
91
+ }
92
+ this.client = null;
93
+ }
94
+ }
95
+ }
96
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../src/driver/mongodb/pool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAW,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,iCAAiC;AACjC,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,IAAI,MAAM,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3G,OAAO,aAAa,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAqB;IACrD,MAAM,OAAO,GAA4B;QACvC,gBAAgB,EAAE,KAAK;QACvB,eAAe,EAAE,KAAK;QACtB,wBAAwB,EAAE,KAAK;QAC/B,0CAA0C;QAC1C,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;KACzC,CAAC;IACF,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;QACnB,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI;YAAE,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG;YAAE,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjE,UAAU,CAAC,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,IAAI,KAAK,CAAC;QACvE,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAC1E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,OAAO,eAAe;IACjB,WAAW,CAAS;IACpB,MAAM,CAAgB;IACvB,MAAM,GAAuB,IAAI,CAAC;IAClC,aAAa,GAAG,KAAK,CAAC;IAE9B,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,0BAA0B;IAC1B,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAQ,CAAC,CAAC;YAC1E,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,cAAc;IACd,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,KAAK;QACP,OAAO;YACL,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,OAAO,EAAE,CAAC;YACV,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}