codesynapse 1.0.0

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.
@@ -0,0 +1,201 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.GraphBuilder = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ class GraphBuilder {
40
+ constructor() {
41
+ this.nodes = new Map();
42
+ this.links = new Map();
43
+ this.changeFrequency = new Map();
44
+ }
45
+ buildGraph(files, dependencyMap) {
46
+ this.nodes.clear();
47
+ this.links.clear();
48
+ // Create nodes for all files
49
+ for (const filePath of files) {
50
+ this.addNode(filePath);
51
+ }
52
+ // Create links based on dependencies
53
+ for (const [source, targets] of Object.entries(dependencyMap)) {
54
+ for (const target of targets) {
55
+ this.addLink(source, target, 'import');
56
+ }
57
+ }
58
+ return this.getGraphData();
59
+ }
60
+ addNode(filePath) {
61
+ if (this.nodes.has(filePath)) {
62
+ return this.nodes.get(filePath);
63
+ }
64
+ let stats = null;
65
+ try {
66
+ stats = fs.statSync(filePath);
67
+ }
68
+ catch (error) {
69
+ // File might have been deleted
70
+ }
71
+ const node = {
72
+ id: filePath,
73
+ name: path.basename(filePath),
74
+ path: filePath,
75
+ type: this.getFileType(filePath),
76
+ size: stats ? stats.size : 0,
77
+ lastModified: stats ? stats.mtimeMs : Date.now(),
78
+ connections: 0,
79
+ changeFrequency: this.changeFrequency.get(filePath) || 0
80
+ };
81
+ this.nodes.set(filePath, node);
82
+ return node;
83
+ }
84
+ updateNode(filePath, changes) {
85
+ const node = this.nodes.get(filePath);
86
+ if (!node) {
87
+ return null;
88
+ }
89
+ Object.assign(node, changes);
90
+ // Update last modified
91
+ try {
92
+ const stats = fs.statSync(filePath);
93
+ node.lastModified = stats.mtimeMs;
94
+ node.size = stats.size;
95
+ }
96
+ catch (error) {
97
+ // File might have been deleted
98
+ }
99
+ // Increment change frequency
100
+ const freq = this.changeFrequency.get(filePath) || 0;
101
+ this.changeFrequency.set(filePath, freq + 1);
102
+ node.changeFrequency = freq + 1;
103
+ return node;
104
+ }
105
+ removeNode(filePath) {
106
+ // Remove all links connected to this node
107
+ const linksToRemove = [];
108
+ for (const [linkId, link] of this.links.entries()) {
109
+ if (link.source === filePath || link.target === filePath) {
110
+ linksToRemove.push(linkId);
111
+ }
112
+ }
113
+ linksToRemove.forEach(linkId => this.links.delete(linkId));
114
+ return this.nodes.delete(filePath);
115
+ }
116
+ addLink(source, target, type) {
117
+ const linkId = `${source}->${target}`;
118
+ if (this.links.has(linkId)) {
119
+ return this.links.get(linkId);
120
+ }
121
+ // Only add link if both nodes exist
122
+ if (!this.nodes.has(source) || !this.nodes.has(target)) {
123
+ // Ensure both nodes exist
124
+ if (!this.nodes.has(source))
125
+ this.addNode(source);
126
+ if (!this.nodes.has(target))
127
+ this.addNode(target);
128
+ }
129
+ const link = {
130
+ source,
131
+ target,
132
+ type
133
+ };
134
+ this.links.set(linkId, link);
135
+ // Update connection counts
136
+ const sourceNode = this.nodes.get(source);
137
+ const targetNode = this.nodes.get(target);
138
+ if (sourceNode)
139
+ sourceNode.connections = (sourceNode.connections || 0) + 1;
140
+ if (targetNode)
141
+ targetNode.connections = (targetNode.connections || 0) + 1;
142
+ return link;
143
+ }
144
+ removeLink(source, target) {
145
+ const linkId = `${source}->${target}`;
146
+ const removed = this.links.delete(linkId);
147
+ if (removed) {
148
+ // Update connection counts
149
+ const sourceNode = this.nodes.get(source);
150
+ const targetNode = this.nodes.get(target);
151
+ if (sourceNode && sourceNode.connections)
152
+ sourceNode.connections--;
153
+ if (targetNode && targetNode.connections)
154
+ targetNode.connections--;
155
+ }
156
+ return removed;
157
+ }
158
+ getGraphData() {
159
+ return {
160
+ nodes: Array.from(this.nodes.values()),
161
+ links: Array.from(this.links.values())
162
+ };
163
+ }
164
+ getNode(filePath) {
165
+ return this.nodes.get(filePath);
166
+ }
167
+ getFileType(filePath) {
168
+ const ext = path.extname(filePath).toLowerCase();
169
+ const typeMap = {
170
+ '.js': 'javascript',
171
+ '.jsx': 'javascript',
172
+ '.ts': 'typescript',
173
+ '.tsx': 'typescript',
174
+ '.mjs': 'javascript',
175
+ '.cjs': 'javascript',
176
+ '.json': 'json',
177
+ '.css': 'style',
178
+ '.scss': 'style',
179
+ '.sass': 'style',
180
+ '.less': 'style',
181
+ '.html': 'markup',
182
+ '.md': 'markdown',
183
+ '.txt': 'text',
184
+ '.yml': 'config',
185
+ '.yaml': 'config',
186
+ '.toml': 'config',
187
+ '.env': 'config'
188
+ };
189
+ return typeMap[ext] || 'other';
190
+ }
191
+ getStats() {
192
+ return {
193
+ fileCount: this.nodes.size,
194
+ connectionCount: this.links.size,
195
+ changeCount: Array.from(this.changeFrequency.values()).reduce((a, b) => a + b, 0),
196
+ lastChangeTime: Math.max(...Array.from(this.nodes.values()).map(n => n.lastModified))
197
+ };
198
+ }
199
+ }
200
+ exports.GraphBuilder = GraphBuilder;
201
+ //# sourceMappingURL=GraphBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphBuilder.js","sourceRoot":"","sources":["../src/GraphBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,338 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const express_1 = __importDefault(require("express"));
40
+ const http_1 = require("http");
41
+ const socket_io_1 = require("socket.io");
42
+ const cors_1 = __importDefault(require("cors"));
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const FileWatcher_1 = require("./FileWatcher");
46
+ const DependencyParser_1 = require("./DependencyParser");
47
+ const GitIntegration_1 = require("./GitIntegration");
48
+ const GraphBuilder_1 = require("./GraphBuilder");
49
+ const app = (0, express_1.default)();
50
+ const httpServer = (0, http_1.createServer)(app);
51
+ const io = new socket_io_1.Server(httpServer, {
52
+ cors: {
53
+ origin: 'http://localhost:3000',
54
+ methods: ['GET', 'POST']
55
+ }
56
+ });
57
+ const PORT = process.env.PORT || 3004;
58
+ // Middleware
59
+ app.use((0, cors_1.default)());
60
+ app.use(express_1.default.json());
61
+ // Serve static files from React build in production
62
+ const clientBuildPath = path.join(__dirname, '../../client/build');
63
+ if (fs.existsSync(clientBuildPath)) {
64
+ app.use(express_1.default.static(clientBuildPath));
65
+ }
66
+ // Health check endpoint
67
+ app.get('/health', (req, res) => {
68
+ res.json({ status: 'ok', timestamp: Date.now() });
69
+ });
70
+ // Get current working directory (parent of server folder)
71
+ app.get('/api/cwd', (req, res) => {
72
+ const cwd = process.cwd();
73
+ // If we're in the server directory, go up one level to the project root
74
+ const projectRoot = cwd.endsWith('/server') ? path.dirname(cwd) : cwd;
75
+ res.json({ cwd: projectRoot });
76
+ });
77
+ // Socket.io connection handling
78
+ io.on('connection', (socket) => {
79
+ console.log('Client connected:', socket.id);
80
+ const fileWatcher = new FileWatcher_1.FileWatcher();
81
+ const dependencyParser = new DependencyParser_1.DependencyParser();
82
+ const gitIntegration = new GitIntegration_1.GitIntegration();
83
+ const graphBuilder = new GraphBuilder_1.GraphBuilder();
84
+ let isInitialized = false;
85
+ let updateTimeout = null;
86
+ // Debounced graph update function
87
+ const scheduleGraphUpdate = () => {
88
+ if (updateTimeout) {
89
+ clearTimeout(updateTimeout);
90
+ }
91
+ updateTimeout = setTimeout(() => {
92
+ const graphData = graphBuilder.getGraphData();
93
+ const stats = graphBuilder.getStats();
94
+ socket.emit('stats:update', stats);
95
+ }, 500);
96
+ };
97
+ // Handle watch start
98
+ socket.on('watch:start', async (config) => {
99
+ try {
100
+ console.log('Starting watch on:', config.path);
101
+ // Initialize git
102
+ await gitIntegration.initialize(config.path);
103
+ // Register ready handler BEFORE starting the watcher
104
+ fileWatcher.once('ready', async () => {
105
+ try {
106
+ console.log('=== READY CALLBACK STARTED ===');
107
+ console.log('Getting files from:', config.path);
108
+ const files = getAllFiles(config.path, config.ignorePatterns || []);
109
+ console.log(`Found ${files.length} files`);
110
+ if (files.length === 0) {
111
+ console.log('No files found. Check ignore patterns.');
112
+ }
113
+ else {
114
+ console.log('First few files:', files.slice(0, 5));
115
+ }
116
+ // Build dependency map
117
+ console.log('Building dependency map...');
118
+ const dependencyMap = dependencyParser.buildDependencyMap(files);
119
+ console.log('Dependency map built');
120
+ // Build initial graph
121
+ console.log('Building graph...');
122
+ const graphData = graphBuilder.buildGraph(files, dependencyMap);
123
+ console.log('Graph built:', graphData.nodes.length, 'nodes', graphData.links.length, 'links');
124
+ // Send initial graph to client
125
+ socket.emit('graph:init', graphData);
126
+ console.log('Emitted graph:init to client');
127
+ // Send initial stats
128
+ const stats = graphBuilder.getStats();
129
+ socket.emit('stats:update', stats);
130
+ console.log('Emitted stats:update to client');
131
+ isInitialized = true;
132
+ console.log('=== READY CALLBACK COMPLETED ===');
133
+ }
134
+ catch (error) {
135
+ console.error('=== ERROR IN READY CALLBACK ===', error);
136
+ }
137
+ });
138
+ // Start file watcher AFTER registering the ready handler
139
+ fileWatcher.start(config.path, config.ignorePatterns);
140
+ // Handle file changes
141
+ fileWatcher.on('fileChange', async (event) => {
142
+ if (!isInitialized)
143
+ return;
144
+ console.log(`File ${event.type}: ${event.path}`);
145
+ if (event.type === 'add') {
146
+ // Add new node
147
+ const node = graphBuilder.addNode(event.path);
148
+ socket.emit('graph:nodeAdded', node);
149
+ // Parse dependencies and add links
150
+ const deps = dependencyParser.parseFile(event.path);
151
+ for (const dep of deps) {
152
+ const link = graphBuilder.addLink(event.path, dep, 'import');
153
+ socket.emit('graph:linkAdded', link);
154
+ }
155
+ scheduleGraphUpdate();
156
+ }
157
+ else if (event.type === 'change') {
158
+ // Update existing node
159
+ const node = graphBuilder.updateNode(event.path, {
160
+ lastModified: Date.now()
161
+ });
162
+ if (node) {
163
+ socket.emit('graph:nodeChanged', { nodeId: node.id, changes: node });
164
+ // Reparse dependencies
165
+ const oldDeps = graphBuilder.getGraphData().links
166
+ .filter(link => link.source === event.path)
167
+ .map(link => link.target);
168
+ const newDeps = dependencyParser.parseFile(event.path);
169
+ // Find removed dependencies
170
+ const removed = oldDeps.filter(dep => !newDeps.includes(dep));
171
+ for (const dep of removed) {
172
+ graphBuilder.removeLink(event.path, dep);
173
+ socket.emit('graph:linkRemoved', { source: event.path, target: dep });
174
+ }
175
+ // Find added dependencies
176
+ const added = newDeps.filter(dep => !oldDeps.includes(dep));
177
+ for (const dep of added) {
178
+ const link = graphBuilder.addLink(event.path, dep, 'import');
179
+ socket.emit('graph:linkAdded', link);
180
+ }
181
+ scheduleGraphUpdate();
182
+ }
183
+ }
184
+ else if (event.type === 'unlink') {
185
+ // Remove node
186
+ graphBuilder.removeNode(event.path);
187
+ socket.emit('graph:nodeRemoved', { nodeId: event.path });
188
+ scheduleGraphUpdate();
189
+ }
190
+ });
191
+ }
192
+ catch (error) {
193
+ console.error('Error starting watch:', error);
194
+ socket.emit('error', { message: 'Failed to start watching' });
195
+ }
196
+ });
197
+ // Handle watch stop
198
+ socket.on('watch:stop', () => {
199
+ console.log('Stopping watch');
200
+ fileWatcher.stop();
201
+ isInitialized = false;
202
+ });
203
+ // Handle diff request
204
+ socket.on('diff:request', async (data) => {
205
+ try {
206
+ console.log('Received diff request for:', data.filePath);
207
+ const diff = await gitIntegration.getFileDiff(data.filePath);
208
+ // Read file content
209
+ let content = '';
210
+ let language = '';
211
+ try {
212
+ content = fs.readFileSync(data.filePath, 'utf-8');
213
+ console.log(`Read file content: ${content.length} characters`);
214
+ // Detect language from file extension
215
+ const ext = path.extname(data.filePath).toLowerCase();
216
+ const langMap = {
217
+ '.js': 'javascript',
218
+ '.jsx': 'javascript',
219
+ '.ts': 'typescript',
220
+ '.tsx': 'typescript',
221
+ '.json': 'json',
222
+ '.css': 'css',
223
+ '.html': 'html',
224
+ '.md': 'markdown',
225
+ '.py': 'python',
226
+ '.java': 'java',
227
+ '.go': 'go',
228
+ '.rs': 'rust',
229
+ '.cpp': 'cpp',
230
+ '.c': 'c',
231
+ '.sh': 'bash'
232
+ };
233
+ language = langMap[ext] || 'plaintext';
234
+ }
235
+ catch (readError) {
236
+ console.error('Error reading file:', readError);
237
+ content = 'Unable to read file content';
238
+ }
239
+ console.log(`Sending diff data for ${data.filePath}, language: ${language}`);
240
+ socket.emit('diff:data', {
241
+ filePath: data.filePath,
242
+ diff: diff || 'No changes detected',
243
+ content,
244
+ language
245
+ });
246
+ }
247
+ catch (error) {
248
+ console.error('Error getting diff:', error);
249
+ socket.emit('diff:data', {
250
+ filePath: data.filePath,
251
+ diff: 'Error getting diff',
252
+ content: 'Error reading file',
253
+ language: 'plaintext'
254
+ });
255
+ }
256
+ });
257
+ // Handle disconnection
258
+ socket.on('disconnect', () => {
259
+ console.log('Client disconnected:', socket.id);
260
+ fileWatcher.stop();
261
+ if (updateTimeout) {
262
+ clearTimeout(updateTimeout);
263
+ }
264
+ });
265
+ });
266
+ // Helper function to get all files in a directory
267
+ function getAllFiles(dirPath, ignorePatterns) {
268
+ const files = [];
269
+ const defaultIgnore = [
270
+ '/node_modules/',
271
+ '/.git/',
272
+ '/dist/',
273
+ '/build/',
274
+ '/.next/',
275
+ '/coverage/',
276
+ '/.cache/',
277
+ '/tmp/'
278
+ ];
279
+ const shouldIgnore = (filePath) => {
280
+ // Check if path contains any of the ignore patterns (with slashes to avoid false positives)
281
+ return [...defaultIgnore, ...ignorePatterns].some(pattern => {
282
+ return filePath.includes(pattern);
283
+ });
284
+ };
285
+ const walk = (dir) => {
286
+ try {
287
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
288
+ for (const entry of entries) {
289
+ const fullPath = path.join(dir, entry.name);
290
+ if (shouldIgnore(fullPath)) {
291
+ continue;
292
+ }
293
+ if (entry.isDirectory()) {
294
+ walk(fullPath);
295
+ }
296
+ else if (entry.isFile()) {
297
+ files.push(fullPath);
298
+ }
299
+ }
300
+ }
301
+ catch (error) {
302
+ console.error(`Error reading directory ${dir}:`, error);
303
+ }
304
+ };
305
+ walk(dirPath);
306
+ return files;
307
+ }
308
+ // Catch-all route for React app (must be after API routes)
309
+ app.get('*', (req, res) => {
310
+ const indexPath = path.join(clientBuildPath, 'index.html');
311
+ if (fs.existsSync(indexPath)) {
312
+ res.sendFile(indexPath);
313
+ }
314
+ else {
315
+ res.status(404).send('React app not built. Run: npm run build --workspace=client');
316
+ }
317
+ });
318
+ // Start server with port conflict handling
319
+ const startServer = (port) => {
320
+ httpServer.listen(port, () => {
321
+ console.log(`
322
+ CodeSynapse Server Running
323
+ Port: ${port}
324
+ URL: http://localhost:${port}
325
+ `);
326
+ }).on('error', (err) => {
327
+ if (err.code === 'EADDRINUSE') {
328
+ console.log(`Port ${port} is in use, trying ${port + 1}...`);
329
+ startServer(port + 1);
330
+ }
331
+ else {
332
+ console.error('Server error:', err);
333
+ process.exit(1);
334
+ }
335
+ });
336
+ };
337
+ startServer(Number(PORT));
338
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ export interface GraphNode {
2
+ id: string;
3
+ name: string;
4
+ path: string;
5
+ type: string;
6
+ size: number;
7
+ lastModified: number;
8
+ connections?: number;
9
+ changeFrequency?: number;
10
+ }
11
+ export interface GraphLink {
12
+ source: string;
13
+ target: string;
14
+ type: 'import' | 'require';
15
+ }
16
+ export interface GraphData {
17
+ nodes: GraphNode[];
18
+ links: GraphLink[];
19
+ }
20
+ export interface FileChangeEvent {
21
+ type: 'add' | 'change' | 'unlink';
22
+ path: string;
23
+ stats?: {
24
+ size: number;
25
+ mtime: Date;
26
+ };
27
+ }
28
+ export interface DependencyMap {
29
+ [filePath: string]: string[];
30
+ }
31
+ export interface WatchConfig {
32
+ path: string;
33
+ ignorePatterns?: string[];
34
+ }
35
+ export interface Stats {
36
+ fileCount: number;
37
+ changeCount: number;
38
+ connectionCount: number;
39
+ lastChangeTime?: number;
40
+ }
41
+ export interface DiffData {
42
+ filePath: string;
43
+ diff: string;
44
+ content?: string;
45
+ language?: string;
46
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}