@samanhappy/mcphub 0.9.5 → 0.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/config/DaoConfigService.js +210 -0
  2. package/dist/config/DaoConfigService.js.map +1 -0
  3. package/dist/config/configManager.js +123 -0
  4. package/dist/config/configManager.js.map +1 -0
  5. package/dist/config/migrationUtils.js +206 -0
  6. package/dist/config/migrationUtils.js.map +1 -0
  7. package/dist/controllers/logController.js +1 -1
  8. package/dist/controllers/logController.js.map +1 -1
  9. package/dist/controllers/marketController.js +1 -1
  10. package/dist/controllers/marketController.js.map +1 -1
  11. package/dist/controllers/openApiController.js +158 -7
  12. package/dist/controllers/openApiController.js.map +1 -1
  13. package/dist/controllers/promptController.js +1 -1
  14. package/dist/controllers/serverController.js +8 -9
  15. package/dist/controllers/serverController.js.map +1 -1
  16. package/dist/dao/DaoFactory.js +102 -0
  17. package/dist/dao/DaoFactory.js.map +1 -0
  18. package/dist/dao/GroupDao.js +156 -0
  19. package/dist/dao/GroupDao.js.map +1 -0
  20. package/dist/dao/ServerDao.js +117 -0
  21. package/dist/dao/ServerDao.js.map +1 -0
  22. package/dist/dao/SystemConfigDao.js +55 -0
  23. package/dist/dao/SystemConfigDao.js.map +1 -0
  24. package/dist/dao/UserConfigDao.js +72 -0
  25. package/dist/dao/UserConfigDao.js.map +1 -0
  26. package/dist/dao/UserDao.js +107 -0
  27. package/dist/dao/UserDao.js.map +1 -0
  28. package/dist/dao/base/BaseDao.js +49 -0
  29. package/dist/dao/base/BaseDao.js.map +1 -0
  30. package/dist/dao/base/JsonFileBaseDao.js +84 -0
  31. package/dist/dao/base/JsonFileBaseDao.js.map +1 -0
  32. package/dist/dao/examples.js +172 -0
  33. package/dist/dao/examples.js.map +1 -0
  34. package/dist/dao/index.js +11 -0
  35. package/dist/dao/index.js.map +1 -0
  36. package/dist/routes/index.js +2 -1
  37. package/dist/routes/index.js.map +1 -1
  38. package/dist/scripts/dao-demo.js +226 -0
  39. package/dist/scripts/dao-demo.js.map +1 -0
  40. package/dist/services/mcpService.js +49 -71
  41. package/dist/services/mcpService.js.map +1 -1
  42. package/dist/services/openApiGeneratorService.js +44 -8
  43. package/dist/services/openApiGeneratorService.js.map +1 -1
  44. package/dist/services/sseService.js.map +1 -1
  45. package/dist/services/vectorSearchService.js +1 -1
  46. package/dist/services/vectorSearchService.js.map +1 -1
  47. package/frontend/dist/assets/{index-dsw9o-29.js → index-BvXslwpV.js} +3 -3
  48. package/frontend/dist/assets/{index-dsw9o-29.js.map → index-BvXslwpV.js.map} +1 -1
  49. package/frontend/dist/index.html +1 -1
  50. package/package.json +3 -1
@@ -0,0 +1,210 @@
1
+ import { UserDaoImpl, ServerDaoImpl, GroupDaoImpl, SystemConfigDaoImpl, UserConfigDaoImpl, } from '../dao/index.js';
2
+ /**
3
+ * Configuration service using DAO layer
4
+ */
5
+ export class DaoConfigService {
6
+ constructor(userDao, serverDao, groupDao, systemConfigDao, userConfigDao) {
7
+ this.userDao = userDao;
8
+ this.serverDao = serverDao;
9
+ this.groupDao = groupDao;
10
+ this.systemConfigDao = systemConfigDao;
11
+ this.userConfigDao = userConfigDao;
12
+ }
13
+ /**
14
+ * Load complete settings using DAO layer
15
+ */
16
+ async loadSettings(user) {
17
+ const [users, servers, groups, systemConfig, userConfigs] = await Promise.all([
18
+ this.userDao.findAll(),
19
+ this.serverDao.findAll(),
20
+ this.groupDao.findAll(),
21
+ this.systemConfigDao.get(),
22
+ this.userConfigDao.getAll(),
23
+ ]);
24
+ // Convert servers back to the original format
25
+ const mcpServers = {};
26
+ for (const server of servers) {
27
+ const { name, ...config } = server;
28
+ mcpServers[name] = config;
29
+ }
30
+ const settings = {
31
+ users,
32
+ mcpServers,
33
+ groups,
34
+ systemConfig,
35
+ userConfigs,
36
+ };
37
+ // Apply user-specific filtering if needed
38
+ if (user && !user.isAdmin) {
39
+ return this.filterSettingsForUser(settings, user);
40
+ }
41
+ return settings;
42
+ }
43
+ /**
44
+ * Save settings using DAO layer
45
+ */
46
+ async saveSettings(settings, user) {
47
+ try {
48
+ // If user is not admin, merge with existing settings
49
+ if (user && !user.isAdmin) {
50
+ const currentSettings = await this.loadSettings();
51
+ settings = this.mergeSettingsForUser(currentSettings, settings, user);
52
+ }
53
+ // Save each component using respective DAOs
54
+ const promises = [];
55
+ // Save users
56
+ if (settings.users) {
57
+ // Note: For users, we need to handle creation/updates separately
58
+ // since passwords might need hashing
59
+ // This is a simplified approach - in practice, you'd want more sophisticated handling
60
+ const currentUsers = await this.userDao.findAll();
61
+ for (const user of settings.users) {
62
+ const existing = currentUsers.find((u) => u.username === user.username);
63
+ if (existing) {
64
+ promises.push(this.userDao.update(user.username, user));
65
+ }
66
+ else {
67
+ // For new users, we'd need to handle password hashing properly
68
+ // This is a placeholder - actual implementation would use createWithHashedPassword
69
+ console.warn('Creating new user requires special handling for password hashing');
70
+ }
71
+ }
72
+ }
73
+ // Save servers
74
+ if (settings.mcpServers) {
75
+ const currentServers = await this.serverDao.findAll();
76
+ const currentServerNames = new Set(currentServers.map((s) => s.name));
77
+ for (const [name, config] of Object.entries(settings.mcpServers)) {
78
+ const serverWithName = { name, ...config };
79
+ if (currentServerNames.has(name)) {
80
+ promises.push(this.serverDao.update(name, serverWithName));
81
+ }
82
+ else {
83
+ promises.push(this.serverDao.create(serverWithName));
84
+ }
85
+ }
86
+ // Remove servers that are no longer in the settings
87
+ for (const existingServer of currentServers) {
88
+ if (!settings.mcpServers[existingServer.name]) {
89
+ promises.push(this.serverDao.delete(existingServer.name));
90
+ }
91
+ }
92
+ }
93
+ // Save groups
94
+ if (settings.groups) {
95
+ const currentGroups = await this.groupDao.findAll();
96
+ const currentGroupIds = new Set(currentGroups.map((g) => g.id));
97
+ for (const group of settings.groups) {
98
+ if (group.id && currentGroupIds.has(group.id)) {
99
+ promises.push(this.groupDao.update(group.id, group));
100
+ }
101
+ else {
102
+ promises.push(this.groupDao.create(group));
103
+ }
104
+ }
105
+ // Remove groups that are no longer in the settings
106
+ const newGroupIds = new Set(settings.groups.map((g) => g.id).filter(Boolean));
107
+ for (const existingGroup of currentGroups) {
108
+ if (!newGroupIds.has(existingGroup.id)) {
109
+ promises.push(this.groupDao.delete(existingGroup.id));
110
+ }
111
+ }
112
+ }
113
+ // Save system config
114
+ if (settings.systemConfig) {
115
+ promises.push(this.systemConfigDao.update(settings.systemConfig));
116
+ }
117
+ // Save user configs
118
+ if (settings.userConfigs) {
119
+ for (const [username, config] of Object.entries(settings.userConfigs)) {
120
+ promises.push(this.userConfigDao.update(username, config));
121
+ }
122
+ }
123
+ await Promise.all(promises);
124
+ return true;
125
+ }
126
+ catch (error) {
127
+ console.error('Failed to save settings using DAO layer:', error);
128
+ return false;
129
+ }
130
+ }
131
+ /**
132
+ * Filter settings for non-admin users
133
+ */
134
+ filterSettingsForUser(settings, user) {
135
+ if (user.isAdmin) {
136
+ return settings;
137
+ }
138
+ // Non-admin users can only see their own servers and groups
139
+ const filteredServers = {};
140
+ for (const [name, config] of Object.entries(settings.mcpServers || {})) {
141
+ if (config.owner === user.username || config.owner === undefined) {
142
+ filteredServers[name] = config;
143
+ }
144
+ }
145
+ const filteredGroups = (settings.groups || []).filter((group) => group.owner === user.username || group.owner === undefined);
146
+ return {
147
+ ...settings,
148
+ mcpServers: filteredServers,
149
+ groups: filteredGroups,
150
+ users: [], // Non-admin users can't see user list
151
+ systemConfig: {}, // Non-admin users can't see system config
152
+ userConfigs: { [user.username]: settings.userConfigs?.[user.username] || {} },
153
+ };
154
+ }
155
+ /**
156
+ * Merge settings for non-admin users
157
+ */
158
+ mergeSettingsForUser(currentSettings, newSettings, user) {
159
+ if (user.isAdmin) {
160
+ return newSettings;
161
+ }
162
+ // Non-admin users can only modify their own servers, groups, and user config
163
+ const mergedSettings = { ...currentSettings };
164
+ // Merge servers (only user's own servers)
165
+ if (newSettings.mcpServers) {
166
+ for (const [name, config] of Object.entries(newSettings.mcpServers)) {
167
+ const existingConfig = currentSettings.mcpServers?.[name];
168
+ if (!existingConfig || existingConfig.owner === user.username) {
169
+ mergedSettings.mcpServers = mergedSettings.mcpServers || {};
170
+ mergedSettings.mcpServers[name] = { ...config, owner: user.username };
171
+ }
172
+ }
173
+ }
174
+ // Merge groups (only user's own groups)
175
+ if (newSettings.groups) {
176
+ const userGroups = newSettings.groups
177
+ .filter((group) => !group.owner || group.owner === user.username)
178
+ .map((group) => ({ ...group, owner: user.username }));
179
+ const otherGroups = (currentSettings.groups || []).filter((group) => group.owner !== user.username);
180
+ mergedSettings.groups = [...otherGroups, ...userGroups];
181
+ }
182
+ // Merge user config (only user's own config)
183
+ if (newSettings.userConfigs?.[user.username]) {
184
+ mergedSettings.userConfigs = mergedSettings.userConfigs || {};
185
+ mergedSettings.userConfigs[user.username] = newSettings.userConfigs[user.username];
186
+ }
187
+ return mergedSettings;
188
+ }
189
+ /**
190
+ * Clear all caches
191
+ */
192
+ async clearCache() {
193
+ // DAO implementations handle their own caching
194
+ // This could be extended to clear DAO-level caches if needed
195
+ }
196
+ /**
197
+ * Get cache info for debugging
198
+ */
199
+ getCacheInfo() {
200
+ // DAO implementations handle their own caching
201
+ return { hasCache: false };
202
+ }
203
+ }
204
+ /**
205
+ * Create a DaoConfigService with default DAO implementations
206
+ */
207
+ export function createDaoConfigService() {
208
+ return new DaoConfigService(new UserDaoImpl(), new ServerDaoImpl(), new GroupDaoImpl(), new SystemConfigDaoImpl(), new UserConfigDaoImpl());
209
+ }
210
+ //# sourceMappingURL=DaoConfigService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DaoConfigService.js","sourceRoot":"","sources":["../../src/config/DaoConfigService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import dotenv from 'dotenv';
2
+ import { getPackageVersion } from '../utils/version.js';
3
+ import { getDataService } from '../services/services.js';
4
+ import { createDaoConfigService } from './DaoConfigService.js';
5
+ import { loadOriginalSettings as legacyLoadSettings, saveSettings as legacySaveSettings, clearSettingsCache as legacyClearCache, } from './index.js';
6
+ dotenv.config();
7
+ const defaultConfig = {
8
+ port: process.env.PORT || 3000,
9
+ initTimeout: process.env.INIT_TIMEOUT || 300000,
10
+ basePath: process.env.BASE_PATH || '',
11
+ readonly: 'true' === process.env.READONLY || false,
12
+ mcpHubName: 'mcphub',
13
+ mcpHubVersion: getPackageVersion(),
14
+ };
15
+ // Configuration for which data access method to use
16
+ const USE_DAO_LAYER = process.env.USE_DAO_LAYER === 'true';
17
+ // Services
18
+ const dataService = getDataService();
19
+ const daoConfigService = createDaoConfigService();
20
+ /**
21
+ * Load settings using either DAO layer or legacy file-based approach
22
+ */
23
+ export const loadSettings = async (user) => {
24
+ if (USE_DAO_LAYER) {
25
+ console.log('Loading settings using DAO layer');
26
+ return await daoConfigService.loadSettings(user);
27
+ }
28
+ else {
29
+ console.log('Loading settings using legacy approach');
30
+ const settings = legacyLoadSettings();
31
+ return dataService.filterSettings(settings, user);
32
+ }
33
+ };
34
+ /**
35
+ * Save settings using either DAO layer or legacy file-based approach
36
+ */
37
+ export const saveSettings = async (settings, user) => {
38
+ if (USE_DAO_LAYER) {
39
+ console.log('Saving settings using DAO layer');
40
+ return await daoConfigService.saveSettings(settings, user);
41
+ }
42
+ else {
43
+ console.log('Saving settings using legacy approach');
44
+ const mergedSettings = dataService.mergeSettings(legacyLoadSettings(), settings, user);
45
+ return legacySaveSettings(mergedSettings, user);
46
+ }
47
+ };
48
+ /**
49
+ * Clear settings cache
50
+ */
51
+ export const clearSettingsCache = () => {
52
+ if (USE_DAO_LAYER) {
53
+ daoConfigService.clearCache();
54
+ }
55
+ else {
56
+ legacyClearCache();
57
+ }
58
+ };
59
+ /**
60
+ * Get current cache status (for debugging)
61
+ */
62
+ export const getSettingsCacheInfo = () => {
63
+ if (USE_DAO_LAYER) {
64
+ const daoInfo = daoConfigService.getCacheInfo();
65
+ return {
66
+ ...daoInfo,
67
+ usingDao: true,
68
+ };
69
+ }
70
+ else {
71
+ return {
72
+ hasCache: false, // Legacy method doesn't expose cache info here
73
+ usingDao: false,
74
+ };
75
+ }
76
+ };
77
+ /**
78
+ * Switch to DAO layer at runtime (for testing/migration purposes)
79
+ */
80
+ export const switchToDao = () => {
81
+ process.env.USE_DAO_LAYER = 'true';
82
+ };
83
+ /**
84
+ * Switch to legacy file-based approach at runtime (for testing/rollback purposes)
85
+ */
86
+ export const switchToLegacy = () => {
87
+ process.env.USE_DAO_LAYER = 'false';
88
+ };
89
+ /**
90
+ * Get DAO config service for direct access
91
+ */
92
+ export const getDaoConfigService = () => {
93
+ return daoConfigService;
94
+ };
95
+ /**
96
+ * Migration utility to migrate from legacy format to DAO layer
97
+ */
98
+ export const migrateToDao = async () => {
99
+ try {
100
+ console.log('Starting migration from legacy format to DAO layer...');
101
+ // Load data using legacy method
102
+ const legacySettings = legacyLoadSettings();
103
+ // Save using DAO layer
104
+ switchToDao();
105
+ const success = await saveSettings(legacySettings);
106
+ if (success) {
107
+ console.log('Migration completed successfully');
108
+ return true;
109
+ }
110
+ else {
111
+ console.error('Migration failed during save operation');
112
+ switchToLegacy();
113
+ return false;
114
+ }
115
+ }
116
+ catch (error) {
117
+ console.error('Migration failed:', error);
118
+ switchToLegacy();
119
+ return false;
120
+ }
121
+ };
122
+ export default defaultConfig;
123
+ //# sourceMappingURL=configManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configManager.js","sourceRoot":"","sources":["../../src/config/configManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Migration utilities for moving from legacy file-based config to DAO layer
3
+ */
4
+ import { loadSettings, migrateToDao, switchToDao, switchToLegacy } from './configManager.js';
5
+ import { UserDaoImpl, ServerDaoImpl, GroupDaoImpl } from '../dao/index.js';
6
+ /**
7
+ * Validate data integrity after migration
8
+ */
9
+ export async function validateMigration() {
10
+ try {
11
+ console.log('Validating migration...');
12
+ // Load settings using DAO layer
13
+ switchToDao();
14
+ const daoSettings = await loadSettings();
15
+ // Load settings using legacy method
16
+ switchToLegacy();
17
+ const legacySettings = await loadSettings();
18
+ // Compare key metrics
19
+ const daoUserCount = daoSettings.users?.length || 0;
20
+ const legacyUserCount = legacySettings.users?.length || 0;
21
+ const daoServerCount = Object.keys(daoSettings.mcpServers || {}).length;
22
+ const legacyServerCount = Object.keys(legacySettings.mcpServers || {}).length;
23
+ const daoGroupCount = daoSettings.groups?.length || 0;
24
+ const legacyGroupCount = legacySettings.groups?.length || 0;
25
+ console.log('Data comparison:');
26
+ console.log(`Users: DAO=${daoUserCount}, Legacy=${legacyUserCount}`);
27
+ console.log(`Servers: DAO=${daoServerCount}, Legacy=${legacyServerCount}`);
28
+ console.log(`Groups: DAO=${daoGroupCount}, Legacy=${legacyGroupCount}`);
29
+ const isValid = daoUserCount === legacyUserCount &&
30
+ daoServerCount === legacyServerCount &&
31
+ daoGroupCount === legacyGroupCount;
32
+ if (isValid) {
33
+ console.log('✅ Migration validation passed');
34
+ }
35
+ else {
36
+ console.log('❌ Migration validation failed');
37
+ }
38
+ return isValid;
39
+ }
40
+ catch (error) {
41
+ console.error('Migration validation error:', error);
42
+ return false;
43
+ }
44
+ }
45
+ /**
46
+ * Perform a complete migration with validation
47
+ */
48
+ export async function performMigration() {
49
+ try {
50
+ console.log('🚀 Starting migration to DAO layer...');
51
+ // Step 1: Backup current data
52
+ console.log('📁 Creating backup of current data...');
53
+ switchToLegacy();
54
+ const _backupData = await loadSettings();
55
+ // Step 2: Perform migration
56
+ console.log('🔄 Migrating data to DAO layer...');
57
+ const migrationSuccess = await migrateToDao();
58
+ if (!migrationSuccess) {
59
+ console.error('❌ Migration failed');
60
+ return false;
61
+ }
62
+ // Step 3: Validate migration
63
+ console.log('🔍 Validating migration...');
64
+ const validationSuccess = await validateMigration();
65
+ if (!validationSuccess) {
66
+ console.error('❌ Migration validation failed');
67
+ // Could implement rollback here if needed
68
+ return false;
69
+ }
70
+ console.log('✅ Migration completed successfully!');
71
+ console.log('💡 You can now use the DAO layer by setting USE_DAO_LAYER=true');
72
+ return true;
73
+ }
74
+ catch (error) {
75
+ console.error('Migration error:', error);
76
+ return false;
77
+ }
78
+ }
79
+ /**
80
+ * Test DAO operations with sample data
81
+ */
82
+ export async function testDaoOperations() {
83
+ try {
84
+ console.log('🧪 Testing DAO operations...');
85
+ switchToDao();
86
+ const userDao = new UserDaoImpl();
87
+ const serverDao = new ServerDaoImpl();
88
+ const groupDao = new GroupDaoImpl();
89
+ // Test user operations
90
+ console.log('Testing user operations...');
91
+ const testUser = await userDao.createWithHashedPassword('test-dao-user', 'password123', false);
92
+ console.log(`✅ Created test user: ${testUser.username}`);
93
+ const foundUser = await userDao.findByUsername('test-dao-user');
94
+ console.log(`✅ Found user: ${foundUser?.username}`);
95
+ const isValidPassword = await userDao.validateCredentials('test-dao-user', 'password123');
96
+ console.log(`✅ Password validation: ${isValidPassword}`);
97
+ // Test server operations
98
+ console.log('Testing server operations...');
99
+ const testServer = await serverDao.create({
100
+ name: 'test-dao-server',
101
+ command: 'node',
102
+ args: ['test.js'],
103
+ enabled: true,
104
+ owner: 'test-dao-user',
105
+ });
106
+ console.log(`✅ Created test server: ${testServer.name}`);
107
+ const userServers = await serverDao.findByOwner('test-dao-user');
108
+ console.log(`✅ Found ${userServers.length} servers for user`);
109
+ // Test group operations
110
+ console.log('Testing group operations...');
111
+ const testGroup = await groupDao.create({
112
+ name: 'test-dao-group',
113
+ description: 'Test group for DAO operations',
114
+ servers: ['test-dao-server'],
115
+ owner: 'test-dao-user',
116
+ });
117
+ console.log(`✅ Created test group: ${testGroup.name} (ID: ${testGroup.id})`);
118
+ const userGroups = await groupDao.findByOwner('test-dao-user');
119
+ console.log(`✅ Found ${userGroups.length} groups for user`);
120
+ // Cleanup test data
121
+ console.log('Cleaning up test data...');
122
+ await groupDao.delete(testGroup.id);
123
+ await serverDao.delete('test-dao-server');
124
+ await userDao.delete('test-dao-user');
125
+ console.log('✅ Test data cleaned up');
126
+ console.log('🎉 All DAO operations test passed!');
127
+ return true;
128
+ }
129
+ catch (error) {
130
+ console.error('DAO operations test error:', error);
131
+ return false;
132
+ }
133
+ }
134
+ /**
135
+ * Performance comparison between legacy and DAO approaches
136
+ */
137
+ export async function performanceComparison() {
138
+ try {
139
+ console.log('⚡ Performance comparison...');
140
+ // Test legacy approach
141
+ console.log('Testing legacy approach...');
142
+ switchToLegacy();
143
+ const legacyStart = Date.now();
144
+ await loadSettings();
145
+ const legacyTime = Date.now() - legacyStart;
146
+ console.log(`Legacy load time: ${legacyTime}ms`);
147
+ // Test DAO approach
148
+ console.log('Testing DAO approach...');
149
+ switchToDao();
150
+ const daoStart = Date.now();
151
+ await loadSettings();
152
+ const daoTime = Date.now() - daoStart;
153
+ console.log(`DAO load time: ${daoTime}ms`);
154
+ // Comparison
155
+ const difference = daoTime - legacyTime;
156
+ const percentage = ((difference / legacyTime) * 100).toFixed(2);
157
+ console.log(`Performance difference: ${difference}ms (${percentage}%)`);
158
+ if (difference > 0) {
159
+ console.log(`DAO approach is ${percentage}% slower`);
160
+ }
161
+ else {
162
+ console.log(`DAO approach is ${Math.abs(parseFloat(percentage))}% faster`);
163
+ }
164
+ }
165
+ catch (error) {
166
+ console.error('Performance comparison error:', error);
167
+ }
168
+ }
169
+ /**
170
+ * Generate migration report
171
+ */
172
+ export async function generateMigrationReport() {
173
+ try {
174
+ console.log('📊 Generating migration report...');
175
+ // Collect statistics from both approaches
176
+ switchToLegacy();
177
+ const legacySettings = await loadSettings();
178
+ switchToDao();
179
+ const daoSettings = await loadSettings();
180
+ const report = {
181
+ timestamp: new Date().toISOString(),
182
+ legacy: {
183
+ users: legacySettings.users?.length || 0,
184
+ servers: Object.keys(legacySettings.mcpServers || {}).length,
185
+ groups: legacySettings.groups?.length || 0,
186
+ systemConfigSections: Object.keys(legacySettings.systemConfig || {}).length,
187
+ userConfigs: Object.keys(legacySettings.userConfigs || {}).length,
188
+ },
189
+ dao: {
190
+ users: daoSettings.users?.length || 0,
191
+ servers: Object.keys(daoSettings.mcpServers || {}).length,
192
+ groups: daoSettings.groups?.length || 0,
193
+ systemConfigSections: Object.keys(daoSettings.systemConfig || {}).length,
194
+ userConfigs: Object.keys(daoSettings.userConfigs || {}).length,
195
+ },
196
+ };
197
+ console.log('📈 Migration Report:');
198
+ console.log(JSON.stringify(report, null, 2));
199
+ return report;
200
+ }
201
+ catch (error) {
202
+ console.error('Report generation error:', error);
203
+ return null;
204
+ }
205
+ }
206
+ //# sourceMappingURL=migrationUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrationUtils.js","sourceRoot":"","sources":["../../src/config/migrationUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAEvC,gCAAgC;QAChC,WAAW,EAAE,CAAC;QACd,MAAM,WAAW,GAAG,MAAM,YAAY,EAAE,CAAC;QAEzC,oCAAoC;QACpC,cAAc,EAAE,CAAC;QACjB,MAAM,cAAc,GAAG,MAAM,YAAY,EAAE,CAAC;QAE5C,sBAAsB;QACtB,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;QAE1D,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACxE,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAE9E,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;QAE5D,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,cAAc,YAAY,YAAY,eAAe,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,gBAAgB,cAAc,YAAY,iBAAiB,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,eAAe,aAAa,YAAY,gBAAgB,EAAE,CAAC,CAAC;QAExE,MAAM,OAAO,GACX,YAAY,KAAK,eAAe;YAChC,cAAc,KAAK,iBAAiB;YACpC,aAAa,KAAK,gBAAgB,CAAC;QAErC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAErD,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,cAAc,EAAE,CAAC;QACjB,MAAM,WAAW,GAAG,MAAM,YAAY,EAAE,CAAC;QAEzC,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,gBAAgB,GAAG,MAAM,YAAY,EAAE,CAAC;QAE9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAEpD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,0CAA0C;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAE9E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAE5C,WAAW,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAEpC,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,wBAAwB,CAAC,eAAe,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,wBAAwB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEpD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,0BAA0B,eAAe,EAAE,CAAC,CAAC;QAEzD,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;YACxC,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,SAAS,CAAC;YACjB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,0BAA0B,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAE9D,wBAAwB;QACxB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACtC,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,+BAA+B;YAC5C,OAAO,EAAE,CAAC,iBAAiB,CAAC;YAC5B,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,SAAS,CAAC,IAAI,SAAS,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;QAE7E,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,CAAC,MAAM,kBAAkB,CAAC,CAAC;QAE5D,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC1C,MAAM,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAE3C,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,cAAc,EAAE,CAAC;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,YAAY,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,IAAI,CAAC,CAAC;QAEjD,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,WAAW,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,YAAY,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,IAAI,CAAC,CAAC;QAE3C,aAAa;QACb,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;QACxC,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEhE,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,OAAO,UAAU,IAAI,CAAC,CAAC;QAExE,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,UAAU,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAEjD,0CAA0C;QAC1C,cAAc,EAAE,CAAC;QACjB,MAAM,cAAc,GAAG,MAAM,YAAY,EAAE,CAAC;QAE5C,WAAW,EAAE,CAAC;QACd,MAAM,WAAW,GAAG,MAAM,YAAY,EAAE,CAAC;QAEzC,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE;gBACN,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;gBACxC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM;gBAC5D,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;gBAC1C,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM;gBAC3E,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM;aAClE;YACD,GAAG,EAAE;gBACH,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;gBACrC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM;gBACzD,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;gBACvC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM;gBACxE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM;aAC/D;SACF,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -28,7 +28,7 @@ export const streamLogs = (req, res) => {
28
28
  res.writeHead(200, {
29
29
  'Content-Type': 'text/event-stream',
30
30
  'Cache-Control': 'no-cache',
31
- 'Connection': 'keep-alive'
31
+ Connection: 'keep-alive',
32
32
  });
33
33
  // Send initial data
34
34
  const logs = logService.getLogs();
@@ -1 +1 @@
1
- {"version":3,"file":"logController.js","sourceRoot":"","sources":["../../src/controllers/logController.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,2BAA2B,CAAC;AAEnD,eAAe;AACf,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC,CAAC;AAEF,iBAAiB;AACjB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC7D,IAAI,CAAC;QACH,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC,CAAC;AAEF,sBAAsB;AACtB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC9D,IAAI,CAAC;QACH,sBAAsB;QACtB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;QAEpE,0BAA0B;QAC1B,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/C,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"logController.js","sourceRoot":"","sources":["../../src/controllers/logController.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,2BAA2B,CAAC;AAEnD,eAAe;AACf,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC,CAAC;AAEF,iBAAiB;AACjB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC7D,IAAI,CAAC;QACH,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC,CAAC;AAEF,sBAAsB;AACtB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC9D,IAAI,CAAC;QACH,sBAAsB;QACtB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,UAAU,EAAE,YAAY;SACzB,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;QAEpE,0BAA0B;QAC1B,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/C,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { getMarketServers, getMarketServerByName, getMarketCategories, getMarketTags, searchMarketServers, filterMarketServersByCategory, filterMarketServersByTag } from '../services/marketService.js';
1
+ import { getMarketServers, getMarketServerByName, getMarketCategories, getMarketTags, searchMarketServers, filterMarketServersByCategory, filterMarketServersByTag, } from '../services/marketService.js';
2
2
  // Get all market servers
3
3
  export const getAllMarketServers = (_, res) => {
4
4
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"marketController.js","sourceRoot":"","sources":["../../src/controllers/marketController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"marketController.js","sourceRoot":"","sources":["../../src/controllers/marketController.ts"],"names":[],"mappings":"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"}