@softtechai/quickmcp 1.0.8

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 (163) hide show
  1. package/README.md +553 -0
  2. package/dist/client/MCPClient.d.ts +24 -0
  3. package/dist/client/MCPClient.d.ts.map +1 -0
  4. package/dist/client/MCPClient.js +211 -0
  5. package/dist/client/MCPClient.js.map +1 -0
  6. package/dist/client/MCPClientUnified.d.ts +31 -0
  7. package/dist/client/MCPClientUnified.d.ts.map +1 -0
  8. package/dist/client/MCPClientUnified.js +275 -0
  9. package/dist/client/MCPClientUnified.js.map +1 -0
  10. package/dist/client/MCPTestRunner.d.ts +44 -0
  11. package/dist/client/MCPTestRunner.d.ts.map +1 -0
  12. package/dist/client/MCPTestRunner.js +220 -0
  13. package/dist/client/MCPTestRunner.js.map +1 -0
  14. package/dist/client/MCPTestRunnerUnified.d.ts +48 -0
  15. package/dist/client/MCPTestRunnerUnified.d.ts.map +1 -0
  16. package/dist/client/MCPTestRunnerUnified.js +183 -0
  17. package/dist/client/MCPTestRunnerUnified.js.map +1 -0
  18. package/dist/database/json-manager.d.ts +55 -0
  19. package/dist/database/json-manager.d.ts.map +1 -0
  20. package/dist/database/json-manager.js +128 -0
  21. package/dist/database/json-manager.js.map +1 -0
  22. package/dist/database/sqlite-manager.d.ts +53 -0
  23. package/dist/database/sqlite-manager.d.ts.map +1 -0
  24. package/dist/database/sqlite-manager.js +193 -0
  25. package/dist/database/sqlite-manager.js.map +1 -0
  26. package/dist/dynamic-mcp-executor.d.ts +14 -0
  27. package/dist/dynamic-mcp-executor.d.ts.map +1 -0
  28. package/dist/dynamic-mcp-executor.js +274 -0
  29. package/dist/dynamic-mcp-executor.js.map +1 -0
  30. package/dist/generators/MCPServerGenerator-new.d.ts +37 -0
  31. package/dist/generators/MCPServerGenerator-new.d.ts.map +1 -0
  32. package/dist/generators/MCPServerGenerator-new.js +287 -0
  33. package/dist/generators/MCPServerGenerator-new.js.map +1 -0
  34. package/dist/generators/MCPServerGenerator.d.ts +42 -0
  35. package/dist/generators/MCPServerGenerator.d.ts.map +1 -0
  36. package/dist/generators/MCPServerGenerator.js +494 -0
  37. package/dist/generators/MCPServerGenerator.js.map +1 -0
  38. package/dist/generators/database/sqlite-manager.d.ts +52 -0
  39. package/dist/generators/database/sqlite-manager.js +143 -0
  40. package/dist/generators/generators/MCPServerGenerator.d.ts +37 -0
  41. package/dist/generators/generators/MCPServerGenerator.js +396 -0
  42. package/dist/index.d.ts +7 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +23 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/integrated-mcp-server-new.d.ts +12 -0
  47. package/dist/integrated-mcp-server-new.d.ts.map +1 -0
  48. package/dist/integrated-mcp-server-new.js +253 -0
  49. package/dist/integrated-mcp-server-new.js.map +1 -0
  50. package/dist/integrated-mcp-server.d.ts +25 -0
  51. package/dist/integrated-mcp-server.d.ts.map +1 -0
  52. package/dist/integrated-mcp-server.js +541 -0
  53. package/dist/integrated-mcp-server.js.map +1 -0
  54. package/dist/mcp-inspector-server.d.ts +3 -0
  55. package/dist/mcp-inspector-server.d.ts.map +1 -0
  56. package/dist/mcp-inspector-server.js +119 -0
  57. package/dist/mcp-inspector-server.js.map +1 -0
  58. package/dist/mcp-sdk-server.d.ts +3 -0
  59. package/dist/mcp-sdk-server.d.ts.map +1 -0
  60. package/dist/mcp-sdk-server.js +90 -0
  61. package/dist/mcp-sdk-server.js.map +1 -0
  62. package/dist/mcp-server.d.ts +3 -0
  63. package/dist/mcp-server.d.ts.map +1 -0
  64. package/dist/mcp-server.js +300 -0
  65. package/dist/mcp-server.js.map +1 -0
  66. package/dist/parsers/CsvParser.d.ts +7 -0
  67. package/dist/parsers/CsvParser.d.ts.map +1 -0
  68. package/dist/parsers/CsvParser.js +98 -0
  69. package/dist/parsers/CsvParser.js.map +1 -0
  70. package/dist/parsers/DatabaseParser.d.ts +18 -0
  71. package/dist/parsers/DatabaseParser.d.ts.map +1 -0
  72. package/dist/parsers/DatabaseParser.js +372 -0
  73. package/dist/parsers/DatabaseParser.js.map +1 -0
  74. package/dist/parsers/ExcelParser.d.ts +8 -0
  75. package/dist/parsers/ExcelParser.d.ts.map +1 -0
  76. package/dist/parsers/ExcelParser.js +119 -0
  77. package/dist/parsers/ExcelParser.js.map +1 -0
  78. package/dist/parsers/index.d.ts +13 -0
  79. package/dist/parsers/index.d.ts.map +1 -0
  80. package/dist/parsers/index.js +88 -0
  81. package/dist/parsers/index.js.map +1 -0
  82. package/dist/parsers/parsers/ExcelParser.js +118 -0
  83. package/dist/parsers/types/index.js +2 -0
  84. package/dist/quickmcp-unified-bridge.d.ts +13 -0
  85. package/dist/quickmcp-unified-bridge.d.ts.map +1 -0
  86. package/dist/quickmcp-unified-bridge.js +176 -0
  87. package/dist/quickmcp-unified-bridge.js.map +1 -0
  88. package/dist/server/ServerManager.d.ts +37 -0
  89. package/dist/server/ServerManager.d.ts.map +1 -0
  90. package/dist/server/ServerManager.js +376 -0
  91. package/dist/server/ServerManager.js.map +1 -0
  92. package/dist/sqlite-manager.js +145 -0
  93. package/dist/start-new-server.d.ts +3 -0
  94. package/dist/start-new-server.d.ts.map +1 -0
  95. package/dist/start-new-server.js +10 -0
  96. package/dist/start-new-server.js.map +1 -0
  97. package/dist/test-app.d.ts +2 -0
  98. package/dist/test-app.d.ts.map +1 -0
  99. package/dist/test-app.js +119 -0
  100. package/dist/test-app.js.map +1 -0
  101. package/dist/test-new-architecture.d.ts +3 -0
  102. package/dist/test-new-architecture.d.ts.map +1 -0
  103. package/dist/test-new-architecture.js +72 -0
  104. package/dist/test-new-architecture.js.map +1 -0
  105. package/dist/transport/base-transport.d.ts +21 -0
  106. package/dist/transport/base-transport.d.ts.map +1 -0
  107. package/dist/transport/base-transport.js +16 -0
  108. package/dist/transport/base-transport.js.map +1 -0
  109. package/dist/transport/index.d.ts +10 -0
  110. package/dist/transport/index.d.ts.map +1 -0
  111. package/dist/transport/index.js +12 -0
  112. package/dist/transport/index.js.map +1 -0
  113. package/dist/transport/sse-transport.d.ts +13 -0
  114. package/dist/transport/sse-transport.d.ts.map +1 -0
  115. package/dist/transport/sse-transport.js +106 -0
  116. package/dist/transport/sse-transport.js.map +1 -0
  117. package/dist/transport/stdio-transport.d.ts +8 -0
  118. package/dist/transport/stdio-transport.d.ts.map +1 -0
  119. package/dist/transport/stdio-transport.js +53 -0
  120. package/dist/transport/stdio-transport.js.map +1 -0
  121. package/dist/transport/streamable-http-transport.d.ts +15 -0
  122. package/dist/transport/streamable-http-transport.d.ts.map +1 -0
  123. package/dist/transport/streamable-http-transport.js +151 -0
  124. package/dist/transport/streamable-http-transport.js.map +1 -0
  125. package/dist/types/index.d.ts +64 -0
  126. package/dist/types/index.d.ts.map +1 -0
  127. package/dist/types/index.js +3 -0
  128. package/dist/types/index.js.map +1 -0
  129. package/dist/web/client/MCPClient.js +348 -0
  130. package/dist/web/client/MCPTestRunner.js +317 -0
  131. package/dist/web/database/json-manager.js +124 -0
  132. package/dist/web/database/sqlite-manager.js +146 -0
  133. package/dist/web/dynamic-mcp-executor.js +443 -0
  134. package/dist/web/generators/MCPServerGenerator-new.js +284 -0
  135. package/dist/web/generators/MCPServerGenerator.js +566 -0
  136. package/dist/web/integrated-mcp-server-new.js +394 -0
  137. package/dist/web/parsers/CsvParser.js +144 -0
  138. package/dist/web/parsers/DatabaseParser.js +637 -0
  139. package/dist/web/parsers/ExcelParser.js +180 -0
  140. package/dist/web/parsers/index.js +152 -0
  141. package/dist/web/server.d.ts +3 -0
  142. package/dist/web/server.d.ts.map +1 -0
  143. package/dist/web/server.js +790 -0
  144. package/dist/web/server.js.map +1 -0
  145. package/dist/web/types/index.js +2 -0
  146. package/dist/web/web/server.js +860 -0
  147. package/package.json +68 -0
  148. package/quickmcp-direct-stdio.js +328 -0
  149. package/src/web/public/app.js +1795 -0
  150. package/src/web/public/database-tables.html +711 -0
  151. package/src/web/public/how-to-use.html +571 -0
  152. package/src/web/public/how-to-use.js +255 -0
  153. package/src/web/public/images/1-claude-quickmcp-stdio.png +0 -0
  154. package/src/web/public/images/2-claude-tools.png +0 -0
  155. package/src/web/public/images/3-claude-developer-settings.png +0 -0
  156. package/src/web/public/images/4-claude-config.png +0 -0
  157. package/src/web/public/images/5-claude-config-edit.png +0 -0
  158. package/src/web/public/index.html +626 -0
  159. package/src/web/public/manage-servers.html +198 -0
  160. package/src/web/public/modern-styles.css +946 -0
  161. package/src/web/public/shared-styles.css +2091 -0
  162. package/src/web/public/shared.js +93 -0
  163. package/src/web/public/test-servers.html +302 -0
@@ -0,0 +1,637 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __generator = (this && this.__generator) || function (thisArg, body) {
45
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
46
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
47
+ function verb(n) { return function (v) { return step([n, v]); }; }
48
+ function step(op) {
49
+ if (f) throw new TypeError("Generator is already executing.");
50
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
51
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
52
+ if (y = 0, t) op = [op[0] & 2, t.value];
53
+ switch (op[0]) {
54
+ case 0: case 1: t = op; break;
55
+ case 4: _.label++; return { value: op[1], done: false };
56
+ case 5: _.label++; y = op[1]; op = [0]; continue;
57
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
58
+ default:
59
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
60
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
61
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
62
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
63
+ if (t[2]) _.ops.pop();
64
+ _.trys.pop(); continue;
65
+ }
66
+ op = body.call(thisArg, _);
67
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
68
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
69
+ }
70
+ };
71
+ var __importDefault = (this && this.__importDefault) || function (mod) {
72
+ return (mod && mod.__esModule) ? mod : { "default": mod };
73
+ };
74
+ Object.defineProperty(exports, "__esModule", { value: true });
75
+ exports.DatabaseParser = void 0;
76
+ var promise_1 = __importDefault(require("mysql2/promise"));
77
+ var pg_1 = require("pg");
78
+ var sqlite3_1 = __importDefault(require("sqlite3"));
79
+ var sql = __importStar(require("mssql"));
80
+ var DatabaseParser = /** @class */ (function () {
81
+ function DatabaseParser() {
82
+ }
83
+ DatabaseParser.prototype.parse = function (connection, tableName) {
84
+ return __awaiter(this, void 0, void 0, function () {
85
+ return __generator(this, function (_a) {
86
+ switch (connection.type) {
87
+ case 'mysql':
88
+ return [2 /*return*/, this.parseMySql(connection, tableName)];
89
+ case 'postgresql':
90
+ return [2 /*return*/, this.parsePostgreSql(connection, tableName)];
91
+ case 'sqlite':
92
+ return [2 /*return*/, this.parseSqlite(connection, tableName)];
93
+ case 'mssql':
94
+ return [2 /*return*/, this.parseMsSql(connection, tableName)];
95
+ default:
96
+ throw new Error("Unsupported database type: ".concat(connection.type));
97
+ }
98
+ return [2 /*return*/];
99
+ });
100
+ });
101
+ };
102
+ DatabaseParser.prototype.getTables = function (connection) {
103
+ return __awaiter(this, void 0, void 0, function () {
104
+ return __generator(this, function (_a) {
105
+ switch (connection.type) {
106
+ case 'mysql':
107
+ return [2 /*return*/, this.getMySqlTables(connection)];
108
+ case 'postgresql':
109
+ return [2 /*return*/, this.getPostgreSqlTables(connection)];
110
+ case 'sqlite':
111
+ return [2 /*return*/, this.getSqliteTables(connection)];
112
+ case 'mssql':
113
+ return [2 /*return*/, this.getMsSqlTables(connection)];
114
+ default:
115
+ throw new Error("Unsupported database type: ".concat(connection.type));
116
+ }
117
+ return [2 /*return*/];
118
+ });
119
+ });
120
+ };
121
+ DatabaseParser.prototype.parseMySql = function (connection, tableName) {
122
+ return __awaiter(this, void 0, void 0, function () {
123
+ var conn, tables, _a, results, _loop_1, _i, tables_1, table;
124
+ var _this = this;
125
+ return __generator(this, function (_b) {
126
+ switch (_b.label) {
127
+ case 0: return [4 /*yield*/, promise_1.default.createConnection({
128
+ host: connection.host,
129
+ port: connection.port,
130
+ user: connection.username,
131
+ password: connection.password,
132
+ database: connection.database
133
+ })];
134
+ case 1:
135
+ conn = _b.sent();
136
+ _b.label = 2;
137
+ case 2:
138
+ _b.trys.push([2, , 10, 12]);
139
+ if (!tableName) return [3 /*break*/, 3];
140
+ _a = [tableName];
141
+ return [3 /*break*/, 5];
142
+ case 3: return [4 /*yield*/, this.getMySqlTables(connection)];
143
+ case 4:
144
+ _a = _b.sent();
145
+ _b.label = 5;
146
+ case 5:
147
+ tables = _a;
148
+ results = [];
149
+ _loop_1 = function (table) {
150
+ var rows, columns, headers, dataTypes, rowsArray;
151
+ return __generator(this, function (_c) {
152
+ switch (_c.label) {
153
+ case 0: return [4 /*yield*/, conn.execute("SELECT * FROM `".concat(table, "` LIMIT 1000"))];
154
+ case 1:
155
+ rows = (_c.sent())[0];
156
+ return [4 /*yield*/, conn.execute("SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?", [connection.database, table])];
157
+ case 2:
158
+ columns = (_c.sent())[0];
159
+ headers = columns.map(function (col) { return col.COLUMN_NAME; });
160
+ dataTypes = {};
161
+ columns.forEach(function (col) {
162
+ dataTypes[col.COLUMN_NAME] = _this.mapMySqlType(col.DATA_TYPE);
163
+ });
164
+ rowsArray = rows.map(function (row) { return headers.map(function (header) { return row[header]; }); });
165
+ results.push({
166
+ tableName: table,
167
+ headers: headers,
168
+ rows: rowsArray,
169
+ metadata: {
170
+ rowCount: rowsArray.length,
171
+ columnCount: headers.length,
172
+ dataTypes: dataTypes
173
+ }
174
+ });
175
+ return [2 /*return*/];
176
+ }
177
+ });
178
+ };
179
+ _i = 0, tables_1 = tables;
180
+ _b.label = 6;
181
+ case 6:
182
+ if (!(_i < tables_1.length)) return [3 /*break*/, 9];
183
+ table = tables_1[_i];
184
+ return [5 /*yield**/, _loop_1(table)];
185
+ case 7:
186
+ _b.sent();
187
+ _b.label = 8;
188
+ case 8:
189
+ _i++;
190
+ return [3 /*break*/, 6];
191
+ case 9: return [2 /*return*/, results];
192
+ case 10: return [4 /*yield*/, conn.end()];
193
+ case 11:
194
+ _b.sent();
195
+ return [7 /*endfinally*/];
196
+ case 12: return [2 /*return*/];
197
+ }
198
+ });
199
+ });
200
+ };
201
+ DatabaseParser.prototype.parsePostgreSql = function (connection, tableName) {
202
+ return __awaiter(this, void 0, void 0, function () {
203
+ var client, tables, _a, results, _loop_2, _i, tables_2, table;
204
+ var _this = this;
205
+ return __generator(this, function (_b) {
206
+ switch (_b.label) {
207
+ case 0:
208
+ client = new pg_1.Client({
209
+ host: connection.host,
210
+ port: connection.port,
211
+ user: connection.username,
212
+ password: connection.password,
213
+ database: connection.database
214
+ });
215
+ return [4 /*yield*/, client.connect()];
216
+ case 1:
217
+ _b.sent();
218
+ _b.label = 2;
219
+ case 2:
220
+ _b.trys.push([2, , 10, 12]);
221
+ if (!tableName) return [3 /*break*/, 3];
222
+ _a = [tableName];
223
+ return [3 /*break*/, 5];
224
+ case 3: return [4 /*yield*/, this.getPostgreSqlTables(connection)];
225
+ case 4:
226
+ _a = _b.sent();
227
+ _b.label = 5;
228
+ case 5:
229
+ tables = _a;
230
+ results = [];
231
+ _loop_2 = function (table) {
232
+ var dataResult, columnsResult, headers, dataTypes, rowsArray;
233
+ return __generator(this, function (_c) {
234
+ switch (_c.label) {
235
+ case 0: return [4 /*yield*/, client.query("SELECT * FROM \"".concat(table, "\" LIMIT 1000"))];
236
+ case 1:
237
+ dataResult = _c.sent();
238
+ return [4 /*yield*/, client.query("SELECT column_name, data_type FROM information_schema.columns WHERE table_name = $1", [table])];
239
+ case 2:
240
+ columnsResult = _c.sent();
241
+ headers = columnsResult.rows.map(function (col) { return col.column_name; });
242
+ dataTypes = {};
243
+ columnsResult.rows.forEach(function (col) {
244
+ dataTypes[col.column_name] = _this.mapPostgreSqlType(col.data_type);
245
+ });
246
+ rowsArray = dataResult.rows.map(function (row) { return headers.map(function (header) { return row[header]; }); });
247
+ results.push({
248
+ tableName: table,
249
+ headers: headers,
250
+ rows: rowsArray,
251
+ metadata: {
252
+ rowCount: rowsArray.length,
253
+ columnCount: headers.length,
254
+ dataTypes: dataTypes
255
+ }
256
+ });
257
+ return [2 /*return*/];
258
+ }
259
+ });
260
+ };
261
+ _i = 0, tables_2 = tables;
262
+ _b.label = 6;
263
+ case 6:
264
+ if (!(_i < tables_2.length)) return [3 /*break*/, 9];
265
+ table = tables_2[_i];
266
+ return [5 /*yield**/, _loop_2(table)];
267
+ case 7:
268
+ _b.sent();
269
+ _b.label = 8;
270
+ case 8:
271
+ _i++;
272
+ return [3 /*break*/, 6];
273
+ case 9: return [2 /*return*/, results];
274
+ case 10: return [4 /*yield*/, client.end()];
275
+ case 11:
276
+ _b.sent();
277
+ return [7 /*endfinally*/];
278
+ case 12: return [2 /*return*/];
279
+ }
280
+ });
281
+ });
282
+ };
283
+ DatabaseParser.prototype.parseSqlite = function (connection, tableName) {
284
+ return __awaiter(this, void 0, void 0, function () {
285
+ var _this = this;
286
+ return __generator(this, function (_a) {
287
+ return [2 /*return*/, new Promise(function (resolve, reject) {
288
+ var db = new sqlite3_1.default.Database(connection.database);
289
+ db.serialize(function () { return __awaiter(_this, void 0, void 0, function () {
290
+ var tables, _a, results, _loop_3, _i, tables_3, table, error_1;
291
+ var _this = this;
292
+ return __generator(this, function (_b) {
293
+ switch (_b.label) {
294
+ case 0:
295
+ _b.trys.push([0, 8, , 9]);
296
+ if (!tableName) return [3 /*break*/, 1];
297
+ _a = [tableName];
298
+ return [3 /*break*/, 3];
299
+ case 1: return [4 /*yield*/, this.getSqliteTables(connection)];
300
+ case 2:
301
+ _a = _b.sent();
302
+ _b.label = 3;
303
+ case 3:
304
+ tables = _a;
305
+ results = [];
306
+ _loop_3 = function (table) {
307
+ var rows, columns, headers_1, dataTypes_1, rowsArray;
308
+ return __generator(this, function (_c) {
309
+ switch (_c.label) {
310
+ case 0: return [4 /*yield*/, new Promise(function (res, rej) {
311
+ db.all("SELECT * FROM \"".concat(table, "\" LIMIT 1000"), function (err, rows) {
312
+ if (err)
313
+ rej(err);
314
+ else
315
+ res(rows);
316
+ });
317
+ })];
318
+ case 1:
319
+ rows = _c.sent();
320
+ return [4 /*yield*/, new Promise(function (res, rej) {
321
+ db.all("PRAGMA table_info(\"".concat(table, "\")"), function (err, cols) {
322
+ if (err)
323
+ rej(err);
324
+ else
325
+ res(cols);
326
+ });
327
+ })];
328
+ case 2:
329
+ columns = _c.sent();
330
+ if (rows.length > 0) {
331
+ headers_1 = Object.keys(rows[0]);
332
+ dataTypes_1 = {};
333
+ columns.forEach(function (col) {
334
+ dataTypes_1[col.name] = _this.mapSqliteType(col.type);
335
+ });
336
+ rowsArray = rows.map(function (row) { return headers_1.map(function (header) { return row[header]; }); });
337
+ results.push({
338
+ tableName: table,
339
+ headers: headers_1,
340
+ rows: rowsArray,
341
+ metadata: {
342
+ rowCount: rowsArray.length,
343
+ columnCount: headers_1.length,
344
+ dataTypes: dataTypes_1
345
+ }
346
+ });
347
+ }
348
+ return [2 /*return*/];
349
+ }
350
+ });
351
+ };
352
+ _i = 0, tables_3 = tables;
353
+ _b.label = 4;
354
+ case 4:
355
+ if (!(_i < tables_3.length)) return [3 /*break*/, 7];
356
+ table = tables_3[_i];
357
+ return [5 /*yield**/, _loop_3(table)];
358
+ case 5:
359
+ _b.sent();
360
+ _b.label = 6;
361
+ case 6:
362
+ _i++;
363
+ return [3 /*break*/, 4];
364
+ case 7:
365
+ resolve(results);
366
+ return [3 /*break*/, 9];
367
+ case 8:
368
+ error_1 = _b.sent();
369
+ reject(error_1);
370
+ return [3 /*break*/, 9];
371
+ case 9: return [2 /*return*/];
372
+ }
373
+ });
374
+ }); });
375
+ db.close();
376
+ })];
377
+ });
378
+ });
379
+ };
380
+ DatabaseParser.prototype.getMySqlTables = function (connection) {
381
+ return __awaiter(this, void 0, void 0, function () {
382
+ var conn, rows;
383
+ return __generator(this, function (_a) {
384
+ switch (_a.label) {
385
+ case 0: return [4 /*yield*/, promise_1.default.createConnection({
386
+ host: connection.host,
387
+ port: connection.port,
388
+ user: connection.username,
389
+ password: connection.password,
390
+ database: connection.database
391
+ })];
392
+ case 1:
393
+ conn = _a.sent();
394
+ _a.label = 2;
395
+ case 2:
396
+ _a.trys.push([2, , 4, 6]);
397
+ return [4 /*yield*/, conn.execute('SHOW TABLES')];
398
+ case 3:
399
+ rows = (_a.sent())[0];
400
+ return [2 /*return*/, rows.map(function (row) { return Object.values(row)[0]; })];
401
+ case 4: return [4 /*yield*/, conn.end()];
402
+ case 5:
403
+ _a.sent();
404
+ return [7 /*endfinally*/];
405
+ case 6: return [2 /*return*/];
406
+ }
407
+ });
408
+ });
409
+ };
410
+ DatabaseParser.prototype.getPostgreSqlTables = function (connection) {
411
+ return __awaiter(this, void 0, void 0, function () {
412
+ var client, result;
413
+ return __generator(this, function (_a) {
414
+ switch (_a.label) {
415
+ case 0:
416
+ client = new pg_1.Client({
417
+ host: connection.host,
418
+ port: connection.port,
419
+ user: connection.username,
420
+ password: connection.password,
421
+ database: connection.database
422
+ });
423
+ return [4 /*yield*/, client.connect()];
424
+ case 1:
425
+ _a.sent();
426
+ _a.label = 2;
427
+ case 2:
428
+ _a.trys.push([2, , 4, 6]);
429
+ return [4 /*yield*/, client.query("SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = 'public'")];
430
+ case 3:
431
+ result = _a.sent();
432
+ return [2 /*return*/, result.rows.map(function (row) { return row.tablename; })];
433
+ case 4: return [4 /*yield*/, client.end()];
434
+ case 5:
435
+ _a.sent();
436
+ return [7 /*endfinally*/];
437
+ case 6: return [2 /*return*/];
438
+ }
439
+ });
440
+ });
441
+ };
442
+ DatabaseParser.prototype.getSqliteTables = function (connection) {
443
+ return __awaiter(this, void 0, void 0, function () {
444
+ return __generator(this, function (_a) {
445
+ return [2 /*return*/, new Promise(function (resolve, reject) {
446
+ var db = new sqlite3_1.default.Database(connection.database);
447
+ db.all("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'", function (err, rows) {
448
+ if (err) {
449
+ reject(err);
450
+ }
451
+ else {
452
+ resolve(rows.map(function (row) { return row.name; }));
453
+ }
454
+ });
455
+ db.close();
456
+ })];
457
+ });
458
+ });
459
+ };
460
+ DatabaseParser.prototype.mapMySqlType = function (type) {
461
+ var lowerType = type.toLowerCase();
462
+ if (lowerType.includes('int') || lowerType.includes('bigint'))
463
+ return 'integer';
464
+ if (lowerType.includes('decimal') || lowerType.includes('float') || lowerType.includes('double'))
465
+ return 'number';
466
+ if (lowerType.includes('bool') || lowerType.includes('tinyint(1)'))
467
+ return 'boolean';
468
+ if (lowerType.includes('date') || lowerType.includes('time'))
469
+ return 'date';
470
+ return 'string';
471
+ };
472
+ DatabaseParser.prototype.mapPostgreSqlType = function (type) {
473
+ var lowerType = type.toLowerCase();
474
+ if (lowerType.includes('int') || lowerType === 'bigint' || lowerType === 'smallint')
475
+ return 'integer';
476
+ if (lowerType.includes('numeric') || lowerType.includes('decimal') || lowerType === 'real' || lowerType === 'double precision')
477
+ return 'number';
478
+ if (lowerType === 'boolean')
479
+ return 'boolean';
480
+ if (lowerType.includes('timestamp') || lowerType === 'date' || lowerType === 'time')
481
+ return 'date';
482
+ return 'string';
483
+ };
484
+ DatabaseParser.prototype.mapSqliteType = function (type) {
485
+ var lowerType = type.toLowerCase();
486
+ if (lowerType === 'integer')
487
+ return 'integer';
488
+ if (lowerType === 'real' || lowerType === 'numeric')
489
+ return 'number';
490
+ if (lowerType === 'boolean')
491
+ return 'boolean';
492
+ if (lowerType === 'date' || lowerType === 'datetime')
493
+ return 'date';
494
+ return 'string';
495
+ };
496
+ DatabaseParser.prototype.parseMsSql = function (connection, tableName) {
497
+ return __awaiter(this, void 0, void 0, function () {
498
+ var config, tables, _a, results, _loop_4, _i, tables_4, table, error_2;
499
+ var _this = this;
500
+ return __generator(this, function (_b) {
501
+ switch (_b.label) {
502
+ case 0:
503
+ config = {
504
+ server: connection.host,
505
+ port: connection.port || 1433,
506
+ user: connection.username,
507
+ password: connection.password,
508
+ database: connection.database,
509
+ options: {
510
+ encrypt: true,
511
+ trustServerCertificate: true
512
+ }
513
+ };
514
+ _b.label = 1;
515
+ case 1:
516
+ _b.trys.push([1, 10, , 11]);
517
+ return [4 /*yield*/, sql.connect(config)];
518
+ case 2:
519
+ _b.sent();
520
+ if (!tableName) return [3 /*break*/, 3];
521
+ _a = [tableName];
522
+ return [3 /*break*/, 5];
523
+ case 3: return [4 /*yield*/, this.getMsSqlTables(connection)];
524
+ case 4:
525
+ _a = _b.sent();
526
+ _b.label = 5;
527
+ case 5:
528
+ tables = _a;
529
+ results = [];
530
+ _loop_4 = function (table) {
531
+ var request, dataResult, columnsResult, headers, dataTypes, rowsArray;
532
+ return __generator(this, function (_c) {
533
+ switch (_c.label) {
534
+ case 0:
535
+ request = new sql.Request();
536
+ return [4 /*yield*/, request.query("SELECT TOP 1000 * FROM [".concat(table, "]"))];
537
+ case 1:
538
+ dataResult = _c.sent();
539
+ return [4 /*yield*/, request.query("\n SELECT COLUMN_NAME, DATA_TYPE\n FROM INFORMATION_SCHEMA.COLUMNS\n WHERE TABLE_NAME = '".concat(table, "'\n "))];
540
+ case 2:
541
+ columnsResult = _c.sent();
542
+ headers = columnsResult.recordset.map(function (col) { return col.COLUMN_NAME; });
543
+ dataTypes = {};
544
+ columnsResult.recordset.forEach(function (col) {
545
+ dataTypes[col.COLUMN_NAME] = _this.mapMsSqlType(col.DATA_TYPE);
546
+ });
547
+ rowsArray = dataResult.recordset.map(function (row) {
548
+ return headers.map(function (header) { return row[header]; });
549
+ });
550
+ results.push({
551
+ tableName: table,
552
+ headers: headers,
553
+ rows: rowsArray,
554
+ metadata: {
555
+ rowCount: rowsArray.length,
556
+ columnCount: headers.length,
557
+ dataTypes: dataTypes
558
+ }
559
+ });
560
+ return [2 /*return*/];
561
+ }
562
+ });
563
+ };
564
+ _i = 0, tables_4 = tables;
565
+ _b.label = 6;
566
+ case 6:
567
+ if (!(_i < tables_4.length)) return [3 /*break*/, 9];
568
+ table = tables_4[_i];
569
+ return [5 /*yield**/, _loop_4(table)];
570
+ case 7:
571
+ _b.sent();
572
+ _b.label = 8;
573
+ case 8:
574
+ _i++;
575
+ return [3 /*break*/, 6];
576
+ case 9: return [2 /*return*/, results];
577
+ case 10:
578
+ error_2 = _b.sent();
579
+ throw error_2;
580
+ case 11: return [2 /*return*/];
581
+ }
582
+ });
583
+ });
584
+ };
585
+ DatabaseParser.prototype.getMsSqlTables = function (connection) {
586
+ return __awaiter(this, void 0, void 0, function () {
587
+ var config, request, result, error_3;
588
+ return __generator(this, function (_a) {
589
+ switch (_a.label) {
590
+ case 0:
591
+ config = {
592
+ server: connection.host,
593
+ port: connection.port || 1433,
594
+ user: connection.username,
595
+ password: connection.password,
596
+ database: connection.database,
597
+ options: {
598
+ encrypt: true,
599
+ trustServerCertificate: true
600
+ }
601
+ };
602
+ _a.label = 1;
603
+ case 1:
604
+ _a.trys.push([1, 4, , 5]);
605
+ return [4 /*yield*/, sql.connect(config)];
606
+ case 2:
607
+ _a.sent();
608
+ request = new sql.Request();
609
+ return [4 /*yield*/, request.query("\n SELECT TABLE_NAME\n FROM INFORMATION_SCHEMA.TABLES\n WHERE TABLE_TYPE = 'BASE TABLE'\n ")];
610
+ case 3:
611
+ result = _a.sent();
612
+ return [2 /*return*/, result.recordset.map(function (row) { return row.TABLE_NAME; })];
613
+ case 4:
614
+ error_3 = _a.sent();
615
+ throw error_3;
616
+ case 5: return [2 /*return*/];
617
+ }
618
+ });
619
+ });
620
+ };
621
+ DatabaseParser.prototype.mapMsSqlType = function (type) {
622
+ var lowerType = type.toLowerCase();
623
+ if (lowerType.includes('int') || lowerType === 'bigint' || lowerType === 'smallint' || lowerType === 'tinyint')
624
+ return 'integer';
625
+ if (lowerType.includes('decimal') || lowerType.includes('numeric') || lowerType === 'float' || lowerType === 'real' || lowerType === 'money')
626
+ return 'number';
627
+ if (lowerType === 'bit')
628
+ return 'boolean';
629
+ if (lowerType.includes('date') || lowerType.includes('time'))
630
+ return 'date';
631
+ if (lowerType === 'uniqueidentifier')
632
+ return 'string';
633
+ return 'string';
634
+ };
635
+ return DatabaseParser;
636
+ }());
637
+ exports.DatabaseParser = DatabaseParser;