code-squad-cli 1.2.14 → 1.2.17

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-squad-cli",
3
- "version": "1.2.14",
3
+ "version": "1.2.17",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "csq": "./dist/index.js"
@@ -1,10 +0,0 @@
1
- import { Response } from 'express';
2
- import { SyncEvent } from './types.js';
3
- export declare class SSEManager {
4
- private clients;
5
- addClient(res: Response): void;
6
- removeClient(res: Response): void;
7
- broadcast(event: SyncEvent): void;
8
- closeAll(): void;
9
- get clientCount(): number;
10
- }
@@ -1,28 +0,0 @@
1
- export class SSEManager {
2
- clients = new Set();
3
- addClient(res) {
4
- this.clients.add(res);
5
- res.on('close', () => {
6
- this.clients.delete(res);
7
- });
8
- }
9
- removeClient(res) {
10
- this.clients.delete(res);
11
- }
12
- broadcast(event) {
13
- const data = JSON.stringify(event);
14
- const message = `data: ${data}\n\n`;
15
- this.clients.forEach(client => {
16
- client.write(message);
17
- });
18
- }
19
- closeAll() {
20
- this.clients.forEach(client => {
21
- client.end();
22
- });
23
- this.clients.clear();
24
- }
25
- get clientCount() {
26
- return this.clients.size;
27
- }
28
- }
@@ -1,11 +0,0 @@
1
- export type FilesChangeEvent = {
2
- type: 'files-changed';
3
- };
4
- export type FileContentEvent = {
5
- type: 'file-changed';
6
- path: string;
7
- };
8
- export type GitChangeEvent = {
9
- type: 'git-changed';
10
- };
11
- export type SyncEvent = FilesChangeEvent | FileContentEvent | GitChangeEvent;
@@ -1 +0,0 @@
1
- export {};
@@ -1,3 +0,0 @@
1
- import type { Router as IRouter } from 'express';
2
- import { SSEManager } from '../events/SSEManager.js';
3
- export declare function createEventsRouter(sseManager: SSEManager): IRouter;
@@ -1,26 +0,0 @@
1
- import { Router } from 'express';
2
- export function createEventsRouter(sseManager) {
3
- const router = Router();
4
- // GET /api/events - SSE endpoint for real-time updates
5
- router.get('/', (req, res) => {
6
- // Set SSE headers
7
- res.setHeader('Content-Type', 'text/event-stream');
8
- res.setHeader('Cache-Control', 'no-cache');
9
- res.setHeader('Connection', 'keep-alive');
10
- res.setHeader('X-Accel-Buffering', 'no'); // Disable nginx buffering
11
- // Send initial connection message
12
- res.write('data: {"type":"connected"}\n\n');
13
- // Register client
14
- sseManager.addClient(res);
15
- // Keep connection alive with heartbeat
16
- const heartbeat = setInterval(() => {
17
- res.write(':heartbeat\n\n');
18
- }, 30000);
19
- // Cleanup on close (removeClient is handled by SSEManager's close listener)
20
- req.on('close', () => {
21
- clearInterval(heartbeat);
22
- res.end();
23
- });
24
- });
25
- return router;
26
- }