@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,180 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
72
+ exports.ExcelParser = void 0;
73
+ var ExcelJS = __importStar(require("exceljs"));
74
+ var ExcelParser = /** @class */ (function () {
75
+ function ExcelParser() {
76
+ }
77
+ ExcelParser.prototype.parse = function (filePath, sheetName) {
78
+ return __awaiter(this, void 0, void 0, function () {
79
+ var workbook, worksheet, rows, headers, dataTypes;
80
+ return __generator(this, function (_a) {
81
+ switch (_a.label) {
82
+ case 0:
83
+ workbook = new ExcelJS.Workbook();
84
+ return [4 /*yield*/, workbook.xlsx.readFile(filePath)];
85
+ case 1:
86
+ _a.sent();
87
+ worksheet = sheetName
88
+ ? workbook.getWorksheet(sheetName)
89
+ : workbook.getWorksheet(1);
90
+ if (!worksheet) {
91
+ throw new Error("Sheet \"".concat(sheetName || 'first sheet', "\" not found"));
92
+ }
93
+ rows = [];
94
+ headers = [];
95
+ worksheet.eachRow(function (row, rowNumber) {
96
+ var values = row.values;
97
+ // Remove the first element (it's undefined in ExcelJS)
98
+ var rowData = values.slice(1);
99
+ if (rowNumber === 1) {
100
+ headers = rowData.map(function (cell) { return (cell === null || cell === void 0 ? void 0 : cell.toString()) || ''; });
101
+ }
102
+ else {
103
+ rows.push(rowData);
104
+ }
105
+ });
106
+ if (headers.length === 0) {
107
+ throw new Error('No data found in the sheet');
108
+ }
109
+ dataTypes = this.inferDataTypes(rows, headers);
110
+ return [2 /*return*/, {
111
+ tableName: worksheet.name,
112
+ headers: headers,
113
+ rows: rows,
114
+ metadata: {
115
+ rowCount: rows.length,
116
+ columnCount: headers.length,
117
+ dataTypes: dataTypes
118
+ }
119
+ }];
120
+ }
121
+ });
122
+ });
123
+ };
124
+ ExcelParser.prototype.getSheetNames = function (filePath) {
125
+ return __awaiter(this, void 0, void 0, function () {
126
+ var workbook;
127
+ return __generator(this, function (_a) {
128
+ switch (_a.label) {
129
+ case 0:
130
+ workbook = new ExcelJS.Workbook();
131
+ return [4 /*yield*/, workbook.xlsx.readFile(filePath)];
132
+ case 1:
133
+ _a.sent();
134
+ return [2 /*return*/, workbook.worksheets.map(function (sheet) { return sheet.name; })];
135
+ }
136
+ });
137
+ });
138
+ };
139
+ ExcelParser.prototype.inferDataTypes = function (rows, headers) {
140
+ var _this = this;
141
+ var dataTypes = {};
142
+ headers.forEach(function (header, index) {
143
+ var sample = rows.slice(0, 100).map(function (row) { return row[index]; });
144
+ dataTypes[header] = _this.inferColumnType(sample);
145
+ });
146
+ return dataTypes;
147
+ };
148
+ ExcelParser.prototype.inferColumnType = function (values) {
149
+ var nonNullValues = values.filter(function (v) { return v !== null && v !== undefined && v !== ''; });
150
+ if (nonNullValues.length === 0)
151
+ return 'string';
152
+ var isNumeric = nonNullValues.every(function (v) { return typeof v === 'number' || !isNaN(Number(v)); });
153
+ var isInteger = isNumeric && nonNullValues.every(function (v) {
154
+ var num = typeof v === 'number' ? v : Number(v);
155
+ return Number.isInteger(num);
156
+ });
157
+ var isBoolean = nonNullValues.every(function (v) {
158
+ return v === true || v === false || v === 'true' || v === 'false' || v === 1 || v === 0;
159
+ });
160
+ var isDate = nonNullValues.every(function (v) {
161
+ if (v instanceof Date)
162
+ return true;
163
+ // ExcelJS automatically converts Excel dates to Date objects
164
+ if (typeof v === 'string')
165
+ return !isNaN(Date.parse(v));
166
+ return false;
167
+ });
168
+ if (isBoolean)
169
+ return 'boolean';
170
+ if (isInteger)
171
+ return 'integer';
172
+ if (isNumeric)
173
+ return 'number';
174
+ if (isDate)
175
+ return 'date';
176
+ return 'string';
177
+ };
178
+ return ExcelParser;
179
+ }());
180
+ exports.ExcelParser = ExcelParser;
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ 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);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.DataSourceParser = exports.DatabaseParser = exports.ExcelParser = exports.CsvParser = void 0;
49
+ var CsvParser_1 = require("./CsvParser");
50
+ Object.defineProperty(exports, "CsvParser", { enumerable: true, get: function () { return CsvParser_1.CsvParser; } });
51
+ var ExcelParser_1 = require("./ExcelParser");
52
+ Object.defineProperty(exports, "ExcelParser", { enumerable: true, get: function () { return ExcelParser_1.ExcelParser; } });
53
+ var DatabaseParser_1 = require("./DatabaseParser");
54
+ Object.defineProperty(exports, "DatabaseParser", { enumerable: true, get: function () { return DatabaseParser_1.DatabaseParser; } });
55
+ var CsvParser_2 = require("./CsvParser");
56
+ var ExcelParser_2 = require("./ExcelParser");
57
+ var DatabaseParser_2 = require("./DatabaseParser");
58
+ var DataSourceParser = /** @class */ (function () {
59
+ function DataSourceParser() {
60
+ this.csvParser = new CsvParser_2.CsvParser();
61
+ this.excelParser = new ExcelParser_2.ExcelParser();
62
+ this.databaseParser = new DatabaseParser_2.DatabaseParser();
63
+ }
64
+ DataSourceParser.prototype.parse = function (dataSource) {
65
+ return __awaiter(this, void 0, void 0, function () {
66
+ var _a, csvData, excelData;
67
+ return __generator(this, function (_b) {
68
+ switch (_b.label) {
69
+ case 0:
70
+ _a = dataSource.type;
71
+ switch (_a) {
72
+ case 'csv': return [3 /*break*/, 1];
73
+ case 'excel': return [3 /*break*/, 3];
74
+ case 'database': return [3 /*break*/, 5];
75
+ case 'json': return [3 /*break*/, 7];
76
+ }
77
+ return [3 /*break*/, 8];
78
+ case 1:
79
+ if (!dataSource.filePath)
80
+ throw new Error('File path required for CSV parsing');
81
+ return [4 /*yield*/, this.csvParser.parse(dataSource.filePath)];
82
+ case 2:
83
+ csvData = _b.sent();
84
+ return [2 /*return*/, [csvData]];
85
+ case 3:
86
+ if (!dataSource.filePath)
87
+ throw new Error('File path required for Excel parsing');
88
+ return [4 /*yield*/, this.excelParser.parse(dataSource.filePath)];
89
+ case 4:
90
+ excelData = _b.sent();
91
+ return [2 /*return*/, [excelData]];
92
+ case 5:
93
+ if (!dataSource.connection)
94
+ throw new Error('Database connection required for database parsing');
95
+ return [4 /*yield*/, this.databaseParser.parse(dataSource.connection)];
96
+ case 6: return [2 /*return*/, _b.sent()];
97
+ case 7:
98
+ if (!dataSource.data)
99
+ throw new Error('Data required for JSON parsing');
100
+ return [2 /*return*/, this.parseJsonData(dataSource.data)];
101
+ case 8: throw new Error("Unsupported data source type: ".concat(dataSource.type));
102
+ }
103
+ });
104
+ });
105
+ };
106
+ DataSourceParser.prototype.parseJsonData = function (data) {
107
+ var _this = this;
108
+ if (!Array.isArray(data) || data.length === 0) {
109
+ throw new Error('JSON data must be a non-empty array');
110
+ }
111
+ var headers = Object.keys(data[0]);
112
+ var rows = data.map(function (item) { return headers.map(function (header) { return item[header]; }); });
113
+ var dataTypes = {};
114
+ headers.forEach(function (header) {
115
+ var sample = data.slice(0, 100).map(function (item) { return item[header]; });
116
+ dataTypes[header] = _this.inferJsonColumnType(sample);
117
+ });
118
+ return [{
119
+ tableName: 'data',
120
+ headers: headers,
121
+ rows: rows,
122
+ metadata: {
123
+ rowCount: rows.length,
124
+ columnCount: headers.length,
125
+ dataTypes: dataTypes
126
+ }
127
+ }];
128
+ };
129
+ DataSourceParser.prototype.inferJsonColumnType = function (values) {
130
+ var nonNullValues = values.filter(function (v) { return v !== null && v !== undefined; });
131
+ if (nonNullValues.length === 0)
132
+ return 'string';
133
+ var types = nonNullValues.map(function (v) { return typeof v; });
134
+ var uniqueTypes = __spreadArray([], new Set(types), true);
135
+ if (uniqueTypes.length === 1) {
136
+ var type = uniqueTypes[0];
137
+ if (type === 'boolean')
138
+ return 'boolean';
139
+ if (type === 'number') {
140
+ var isInteger = nonNullValues.every(function (v) { return Number.isInteger(v); });
141
+ return isInteger ? 'integer' : 'number';
142
+ }
143
+ if (type === 'string') {
144
+ var isDate = nonNullValues.every(function (v) { return !isNaN(Date.parse(v)); });
145
+ return isDate ? 'date' : 'string';
146
+ }
147
+ }
148
+ return 'string';
149
+ };
150
+ return DataSourceParser;
151
+ }());
152
+ exports.DataSourceParser = DataSourceParser;
@@ -0,0 +1,3 @@
1
+ declare const app: import("express-serve-static-core").Express;
2
+ export default app;
3
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AAeA,QAAA,MAAM,GAAG,6CAAY,CAAC;AAo4BtB,eAAe,GAAG,CAAC"}