Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Add one shared encoder for the server's event stream lines

Abierto
#241 2 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@kachamsiddarth ya está trabajando en esto.

Desde el 20/10/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

core enhancement good first issue hacktoberfest

Each server adapter builds its own SSE lines and writes its own data: [DONE] (packages/server/src/adapters/express.ts, lines 59 and 61, vercel.ts, lines 55 and 57, cloudflare.ts, lines 72 and 74), and their headers differ slightly. For protocol v1, one module will own the format so the adapters only move bytes. This issue is that module.

What to do
Create packages/core/src/protocol/sse.ts:

/** One event: `data: <json>` and a blank line. */
export function encodeSSE(part: WirePart | Record<string, unknown>): string;

/** A comment line that keeps the connection busy while nothing else is sent. */
export const SSE_PING: string;     // ': ping\n\n'

/** Ends the stream. */
export const SSE_DONE: string;     // 'data: [DONE]\n\n'

export const SSE_HEADERS: Readonly<Record<string, string>>;
  • SSE_HEADERS: Content-Type: text/event-stream; charset=utf-8, Cache-Control: no-cache, no-transform (stops proxies from compressing and buffering), X-Accel-Buffering: no (nginx). Leave out Connection. HTTP/2 doesn't allow it, and the runtimes handle it themselves.
  • encodeSSE must never produce a raw line break inside the data line. JSON.stringify already escapes \n and \r, so test that a part with line breaks in its text stays on one line. Also test that U+2028 and U+2029 survive.

Where to look

Acceptance criteria

  • New packages/core/src/protocol/sse.ts, exported from packages/core/src/protocol/index.ts and from @chatcops/core
  • Tests for the line format, line breaks in text, U+2028/U+2029, and the exact header values
  • The adapters aren't changed in this PR (I switch them over in the protocol PR)
  • Changeset for @chatcops/core (minor)
  • pnpm test:coverage and pnpm lint pass

Want to work on this? Comment below and I'll assign it to you. Please take one issue at a time, branch off dev, and open your PR against dev with Closes #<this issue number>. Setup notes (pnpm, build before test) are in CONTRIBUTING.md.

Lenguaje dominante
TypeScript
Estrellas
13
Forks
7
Merge medio
4 h 11 min
PR fusionados (30 d)
122

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de codercops/chatcops

Todos los issues de codercops/chatcops

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.