ts-procedures 3.3.4 → 3.4.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.
@@ -3,6 +3,15 @@ import { TStreamProcedureRegistration } from '../../../index.js';
3
3
  import { ExtractConfig, ExtractContext, ProceduresFactory, RPCConfig } from '../../types.js';
4
4
  import { StreamHttpRouteDoc, StreamMode } from './types.js';
5
5
  export type { StreamHttpRouteDoc, StreamMode };
6
+ /**
7
+ * Result from onMidStreamError callback.
8
+ * @property value - The value to write to the stream (should match yieldType schema)
9
+ * @property closeStream - Whether to close the stream after writing (defaults to true)
10
+ */
11
+ export type MidStreamErrorResult = {
12
+ value: unknown;
13
+ closeStream?: boolean;
14
+ };
6
15
  export type HonoStreamAppBuilderConfig = {
7
16
  /**
8
17
  * An existing Hono application instance to use.
@@ -18,9 +27,19 @@ export type HonoStreamAppBuilderConfig = {
18
27
  onStreamStart?: (procedure: TStreamProcedureRegistration, c: Context) => void;
19
28
  onStreamEnd?: (procedure: TStreamProcedureRegistration, c: Context) => void;
20
29
  /**
21
- * Error handler called when a streaming procedure throws an error.
30
+ * Called for errors BEFORE streaming starts (validation, auth, context resolution).
31
+ * Return value IS used as the HTTP response.
32
+ */
33
+ onPreStreamError?: (procedure: TStreamProcedureRegistration, c: Context, error: Error) => Response | Promise<Response>;
34
+ /**
35
+ * Called for errors DURING streaming (generator throws).
36
+ * Return value is written to the stream as a yield.
37
+ * Should return a value matching your yieldType schema (e.g., error variant of a union).
38
+ * Return undefined to use default behavior (writes { error: message }).
39
+ *
40
+ * @returns { value, closeStream? } - value to yield, whether to close after (default true)
22
41
  */
23
- onStreamError?: (procedure: TStreamProcedureRegistration, c: Context, error: Error) => Response | Promise<Response>;
42
+ onMidStreamError?: (procedure: TStreamProcedureRegistration, c: Context, error: Error) => MidStreamErrorResult | undefined;
24
43
  };
25
44
  /**
26
45
  * Builder class for creating a Hono application with streaming RPC routes.
@@ -32,12 +32,6 @@ export class HonoStreamAppBuilder {
32
32
  await next();
33
33
  });
34
34
  }
35
- if (config?.onRequestEnd) {
36
- this._app.use('*', async (c, next) => {
37
- await next();
38
- config.onRequestEnd(c);
39
- });
40
- }
41
35
  }
42
36
  /**
43
37
  * Generates the stream route path based on the RPC configuration.
@@ -94,8 +88,9 @@ export class HonoStreamAppBuilder {
94
88
  const { errors } = procedure.config.validation.params(params);
95
89
  if (errors) {
96
90
  const error = new ProcedureValidationError(procedure.name, `Validation error for ${procedure.name}`, errors);
97
- if (this.config?.onStreamError) {
98
- return this.config.onStreamError(procedure, c, error);
91
+ // Use onPreStreamError if provided
92
+ if (this.config?.onPreStreamError) {
93
+ return this.config.onPreStreamError(procedure, c, error);
99
94
  }
100
95
  return c.json({ error: error.message }, 400);
101
96
  }
@@ -111,8 +106,9 @@ export class HonoStreamAppBuilder {
111
106
  }
112
107
  }
113
108
  catch (error) {
114
- if (this.config?.onStreamError) {
115
- return this.config.onStreamError(procedure, c, error);
109
+ // Use onPreStreamError for context resolution errors
110
+ if (this.config?.onPreStreamError) {
111
+ return this.config.onPreStreamError(procedure, c, error);
116
112
  }
117
113
  return c.json({ error: error.message }, 500);
118
114
  }
@@ -128,8 +124,8 @@ export class HonoStreamAppBuilder {
128
124
  stream.onAbort(async () => {
129
125
  await generator.return(undefined);
130
126
  });
127
+ let eventId = 0;
131
128
  try {
132
- let eventId = 0;
133
129
  for await (const value of generator) {
134
130
  await stream.writeSSE({
135
131
  data: JSON.stringify(value),
@@ -139,20 +135,29 @@ export class HonoStreamAppBuilder {
139
135
  }
140
136
  }
141
137
  catch (error) {
142
- // Call error handler as notification (return value ignored, streaming already started)
143
- if (this.config?.onStreamError) {
144
- this.config.onStreamError(procedure, c, error);
138
+ // Get error yield value from callback (onMidStreamError)
139
+ let errorResult;
140
+ if (this.config?.onMidStreamError) {
141
+ errorResult = this.config.onMidStreamError(procedure, c, error);
145
142
  }
146
- // Write error as SSE event before closing
143
+ // Write error value to stream
144
+ const errorValue = errorResult?.value ?? { error: error.message };
147
145
  await stream.writeSSE({
148
- data: JSON.stringify({ error: error.message }),
149
- event: 'error',
146
+ data: JSON.stringify(errorValue),
147
+ // Use procedure event name if custom value provided, otherwise 'error'
148
+ event: errorResult?.value !== undefined ? procedure.name : 'error',
149
+ id: String(eventId++),
150
150
  });
151
+ // closeStream defaults to true if not specified
152
+ // (stream closes naturally after this handler completes)
151
153
  }
152
154
  finally {
153
155
  if (this.config?.onStreamEnd) {
154
156
  this.config.onStreamEnd(procedure, c);
155
157
  }
158
+ if (this.config?.onRequestEnd) {
159
+ this.config.onRequestEnd(c);
160
+ }
156
161
  }
157
162
  });
158
163
  }
@@ -172,17 +177,22 @@ export class HonoStreamAppBuilder {
172
177
  }
173
178
  }
174
179
  catch (error) {
175
- // Call error handler as notification (return value ignored, streaming already started)
176
- if (this.config?.onStreamError) {
177
- this.config.onStreamError(procedure, c, error);
180
+ // Get error yield value from callback (onMidStreamError)
181
+ let errorResult;
182
+ if (this.config?.onMidStreamError) {
183
+ errorResult = this.config.onMidStreamError(procedure, c, error);
178
184
  }
179
- // Write error as JSON line before closing
180
- await stream.writeln(JSON.stringify({ error: error.message }));
185
+ // Write error value to stream
186
+ const errorValue = errorResult?.value ?? { error: error.message };
187
+ await stream.writeln(JSON.stringify(errorValue));
181
188
  }
182
189
  finally {
183
190
  if (this.config?.onStreamEnd) {
184
191
  this.config.onStreamEnd(procedure, c);
185
192
  }
193
+ if (this.config?.onRequestEnd) {
194
+ this.config.onRequestEnd(c);
195
+ }
186
196
  }
187
197
  });
188
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/implementations/http/hono-stream/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/implementations/http/hono-stream/index.ts"],"names":[],"mappings":"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"}
@@ -268,7 +268,8 @@ describe('HonoStreamAppBuilder', () => {
268
268
  });
269
269
  builder.register(RPC, () => ({}));
270
270
  const app = builder.build();
271
- await app.request('/test/test/1');
271
+ const response = await app.request('/test/test/1');
272
+ await response.text(); // Consume stream to trigger onRequestEnd
272
273
  expect(onRequestEnd).toHaveBeenCalledTimes(1);
273
274
  expect(onRequestEnd.mock.calls[0][0]).toHaveProperty('req');
274
275
  });
@@ -329,6 +330,8 @@ describe('HonoStreamAppBuilder', () => {
329
330
  expect(order[0]).toBe('request-start');
330
331
  // stream-start should be before handler
331
332
  expect(order.indexOf('stream-start')).toBeLessThan(order.indexOf('handler'));
333
+ // request-end should be last
334
+ expect(order[order.length - 1]).toBe('request-end');
332
335
  });
333
336
  });
334
337
  // --------------------------------------------------------------------------
@@ -339,15 +342,26 @@ describe('HonoStreamAppBuilder', () => {
339
342
  const errorHandler = vi.fn((procedure, c, error) => {
340
343
  return c.json({ customError: error.message }, 400);
341
344
  });
342
- const builder = new HonoStreamAppBuilder({ onStreamError: errorHandler });
345
+ const builder = new HonoStreamAppBuilder({ onPreStreamError: errorHandler });
343
346
  const RPC = Procedures();
344
- // Error during context resolution (before streaming starts)
345
- builder.register(RPC, () => {
346
- throw new Error('Context error');
347
+ RPC.CreateStream('ValidatedStream', {
348
+ scope: 'validated',
349
+ version: 1,
350
+ schema: {
351
+ params: v.object({ count: v.number() }),
352
+ },
353
+ }, async function* (ctx, params) {
354
+ yield { count: params.count };
347
355
  });
356
+ builder.register(RPC, () => ({}));
348
357
  const app = builder.build();
349
- // Since no streaming procedures were registered, this should 404
350
- // Let's test with a real streaming procedure that throws during setup
358
+ const res = await app.request('/validated/validated-stream/1?count=not-a-number');
359
+ expect(res.status).toBe(400);
360
+ const body = await res.json();
361
+ expect(body.customError).toContain('Validation error');
362
+ expect(errorHandler).toHaveBeenCalledTimes(1);
363
+ expect(errorHandler.mock.calls[0][0].name).toBe('ValidatedStream');
364
+ expect(errorHandler.mock.calls[0][2].message).toContain('Validation error');
351
365
  });
352
366
  test('errors during streaming are sent as error events (SSE mode)', async () => {
353
367
  const builder = new HonoStreamAppBuilder();
@@ -380,11 +394,8 @@ describe('HonoStreamAppBuilder', () => {
380
394
  // Error is wrapped by Procedures with "Error in streaming handler for {name}" prefix
381
395
  expect(JSON.parse(lines[1]).error).toContain('Stream error');
382
396
  });
383
- test('onStreamError is called when params fail validation', async () => {
384
- const onStreamError = vi.fn((procedure, c, error) => {
385
- return c.json({ error: error.message }, 400);
386
- });
387
- const builder = new HonoStreamAppBuilder({ onStreamError });
397
+ test('validation errors return 400 by default when no error handler', async () => {
398
+ const builder = new HonoStreamAppBuilder();
388
399
  const RPC = Procedures();
389
400
  RPC.CreateStream('ValidatedStream', {
390
401
  scope: 'validated',
@@ -398,17 +409,17 @@ describe('HonoStreamAppBuilder', () => {
398
409
  builder.register(RPC, () => ({}));
399
410
  const app = builder.build();
400
411
  const res = await app.request('/validated/validated-stream/1?count=not-a-number');
401
- // HTTP error response returned (not a stream)
412
+ // Default: returns 400 JSON error
402
413
  expect(res.status).toBe(400);
403
414
  const body = await res.json();
404
415
  expect(body.error).toContain('Validation error');
405
- // onStreamError callback was called
406
- expect(onStreamError).toHaveBeenCalledTimes(1);
407
- expect(onStreamError.mock.calls[0][0].name).toBe('ValidatedStream');
408
- expect(onStreamError.mock.calls[0][2].message).toContain('Validation error');
409
416
  });
410
- test('validation errors return 400 by default when no onStreamError handler', async () => {
411
- const builder = new HonoStreamAppBuilder();
417
+ // Tests for onPreStreamError and onMidStreamError callbacks
418
+ test('onPreStreamError handles validation errors with custom Response', async () => {
419
+ const onPreStreamError = vi.fn((procedure, c, error) => {
420
+ return c.json({ customError: true, procedureName: procedure.name, details: error.message }, 422);
421
+ });
422
+ const builder = new HonoStreamAppBuilder({ onPreStreamError });
412
423
  const RPC = Procedures();
413
424
  RPC.CreateStream('ValidatedStream', {
414
425
  scope: 'validated',
@@ -422,10 +433,110 @@ describe('HonoStreamAppBuilder', () => {
422
433
  builder.register(RPC, () => ({}));
423
434
  const app = builder.build();
424
435
  const res = await app.request('/validated/validated-stream/1?count=not-a-number');
425
- // Default: returns 400 JSON error
426
- expect(res.status).toBe(400);
436
+ expect(res.status).toBe(422);
427
437
  const body = await res.json();
428
- expect(body.error).toContain('Validation error');
438
+ expect(body.customError).toBe(true);
439
+ expect(body.procedureName).toBe('ValidatedStream');
440
+ expect(body.details).toContain('Validation error');
441
+ expect(onPreStreamError).toHaveBeenCalledTimes(1);
442
+ });
443
+ test('onPreStreamError handles context resolution errors', async () => {
444
+ const onPreStreamError = vi.fn((procedure, c, error) => {
445
+ return c.json({ contextError: error.message }, 401);
446
+ });
447
+ const builder = new HonoStreamAppBuilder({ onPreStreamError });
448
+ const RPC = Procedures();
449
+ RPC.CreateStream('SecureStream', { scope: 'secure', version: 1 }, async function* (ctx) {
450
+ yield { userId: ctx.userId };
451
+ });
452
+ builder.register(RPC, () => {
453
+ throw new Error('Authentication required');
454
+ });
455
+ const app = builder.build();
456
+ const res = await app.request('/secure/secure-stream/1');
457
+ expect(res.status).toBe(401);
458
+ const body = await res.json();
459
+ expect(body.contextError).toBe('Authentication required');
460
+ expect(onPreStreamError).toHaveBeenCalledTimes(1);
461
+ });
462
+ test('onMidStreamError returns custom value written to SSE stream', async () => {
463
+ const onMidStreamError = vi.fn((procedure, c, error) => {
464
+ return {
465
+ value: {
466
+ type: 'error',
467
+ code: 'STREAM_FAILED',
468
+ message: error.message,
469
+ retryable: false,
470
+ },
471
+ closeStream: true,
472
+ };
473
+ });
474
+ const builder = new HonoStreamAppBuilder({ onMidStreamError });
475
+ const RPC = Procedures();
476
+ RPC.CreateStream('ErrorStream', { scope: 'error', version: 1 }, async function* () {
477
+ yield { type: 'data', value: 1 };
478
+ throw new Error('Something broke');
479
+ });
480
+ builder.register(RPC, () => ({}));
481
+ const app = builder.build();
482
+ const res = await app.request('/error/error-stream/1');
483
+ const text = await res.text();
484
+ // First yield should be present
485
+ expect(text).toContain('data: {"type":"data","value":1}');
486
+ // Error should use custom format from onMidStreamError
487
+ expect(text).toContain('data: {"type":"error","code":"STREAM_FAILED"');
488
+ expect(text).toContain('"retryable":false');
489
+ // Event should use procedure name (not 'error') since custom value provided
490
+ expect(text).toContain('event: ErrorStream');
491
+ expect(onMidStreamError).toHaveBeenCalledTimes(1);
492
+ });
493
+ test('onMidStreamError returns custom value written to text stream', async () => {
494
+ const onMidStreamError = vi.fn((procedure, c, error) => {
495
+ return {
496
+ value: { type: 'error', message: error.message },
497
+ };
498
+ });
499
+ const builder = new HonoStreamAppBuilder({
500
+ defaultStreamMode: 'text',
501
+ onMidStreamError,
502
+ });
503
+ const RPC = Procedures();
504
+ RPC.CreateStream('ErrorStream', { scope: 'error', version: 1 }, async function* () {
505
+ yield { type: 'data', value: 'hello' };
506
+ throw new Error('Stream failed');
507
+ });
508
+ builder.register(RPC, () => ({}));
509
+ const app = builder.build();
510
+ const res = await app.request('/error/error-stream/1');
511
+ const text = await res.text();
512
+ const lines = text.trim().split('\n');
513
+ expect(JSON.parse(lines[0])).toEqual({ type: 'data', value: 'hello' });
514
+ // Error message may be wrapped by Procedures with "Error in streaming handler for X - " prefix
515
+ const errorLine = JSON.parse(lines[1]);
516
+ expect(errorLine.type).toBe('error');
517
+ expect(errorLine.message).toContain('Stream failed');
518
+ expect(onMidStreamError).toHaveBeenCalledTimes(1);
519
+ });
520
+ test('onMidStreamError returning undefined falls back to default error format', async () => {
521
+ const onMidStreamError = vi.fn(() => undefined);
522
+ const builder = new HonoStreamAppBuilder({
523
+ defaultStreamMode: 'text',
524
+ onMidStreamError,
525
+ });
526
+ const RPC = Procedures();
527
+ RPC.CreateStream('ErrorStream', { scope: 'error', version: 1 }, async function* () {
528
+ yield { value: 1 };
529
+ throw new Error('Fallback test');
530
+ });
531
+ builder.register(RPC, () => ({}));
532
+ const app = builder.build();
533
+ const res = await app.request('/error/error-stream/1');
534
+ const text = await res.text();
535
+ const lines = text.trim().split('\n');
536
+ expect(JSON.parse(lines[0])).toEqual({ value: 1 });
537
+ // Falls back to default { error: message } format
538
+ expect(JSON.parse(lines[1]).error).toContain('Fallback test');
539
+ expect(onMidStreamError).toHaveBeenCalledTimes(1);
429
540
  });
430
541
  });
431
542
  // --------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/implementations/http/hono-stream/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/implementations/http/hono-stream/index.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-procedures",
3
- "version": "3.3.4",
3
+ "version": "3.4.0",
4
4
  "description": "A TypeScript RPC framework that creates type-safe, schema-validated procedure calls with a single function definition. Define your procedures once and get full type inference, runtime validation, and framework integration hooks.",
5
5
  "main": "build/exports.js",
6
6
  "types": "build/exports.d.ts",
@@ -119,7 +119,8 @@ onRequestStart → onStreamStart → [yields...] → onStreamEnd → onRequestEn
119
119
  | `onError` | RPC | On handler error |
120
120
  | `onStreamStart` | Stream | Before first yield |
121
121
  | `onStreamEnd` | Stream | After stream completes |
122
- | `onStreamError` | Stream | On stream error |
122
+ | `onPreStreamError` | Stream | On pre-stream error (validation, auth) |
123
+ | `onMidStreamError` | Stream | On mid-stream error (generator throws) |
123
124
 
124
125
  ### Route Documentation
125
126
 
@@ -145,7 +145,10 @@ interface HonoStreamAppBuilderConfig {
145
145
  onRequestEnd?: (c: Context) => void
146
146
  onStreamStart?: (procedure: TStreamProcedureRegistration, c: Context) => void
147
147
  onStreamEnd?: (procedure: TStreamProcedureRegistration, c: Context) => void
148
- onStreamError?: (procedure, c, error) => Response | Promise<Response>
148
+
149
+ // Error handling callbacks (see Error Handling section)
150
+ onPreStreamError?: (procedure, c, error) => Response | Promise<Response>
151
+ onMidStreamError?: (procedure, c, error) => { value: unknown; closeStream?: boolean } | undefined
149
152
  }
150
153
  ```
151
154
 
@@ -193,26 +196,117 @@ This design allows for:
193
196
 
194
197
  ## Error Handling
195
198
 
196
- ### Validation Errors (Before Stream)
199
+ Streaming has two distinct error phases with different semantics:
200
+
201
+ | Phase | When | Response Type | Callback |
202
+ |-------|------|---------------|----------|
203
+ | **Pre-stream** | Validation, auth, context resolution | HTTP Response (400/500) | `onPreStreamError` |
204
+ | **Mid-stream** | Generator throws during iteration | Value written to stream | `onMidStreamError` |
205
+
206
+ ### Pre-Stream Errors (`onPreStreamError`)
197
207
 
198
- Parameter validation errors are returned as HTTP 400 responses **before** the stream starts:
208
+ Errors that occur **before** the stream starts (validation failures, context resolution errors). The return value **IS** used as the HTTP response:
199
209
 
200
210
  ```typescript
201
- // With custom error handler
202
211
  const builder = new HonoStreamAppBuilder({
203
- onStreamError: (procedure, c, error) => {
204
- return c.json({ error: error.message }, 400)
212
+ onPreStreamError: (procedure, c, error) => {
213
+ if (error instanceof ProcedureValidationError) {
214
+ return c.json({
215
+ error: 'Invalid parameters',
216
+ details: error.errors,
217
+ procedure: procedure.name,
218
+ }, 400)
219
+ }
220
+ return c.json({ error: error.message }, 500)
205
221
  },
206
222
  })
207
223
 
208
224
  // Without handler, returns default JSON response:
209
- // Status: 400
225
+ // Status: 400 (validation) or 500 (other)
210
226
  // Body: { "error": "Validation error for ProcedureName - ..." }
211
227
  ```
212
228
 
213
- ### Stream Errors (During Streaming)
229
+ ### Mid-Stream Errors (`onMidStreamError`)
230
+
231
+ Errors that occur **during** streaming (generator throws). Since the stream is already open, HTTP status cannot change. Instead, return a value to write to the stream:
232
+
233
+ ```typescript
234
+ const builder = new HonoStreamAppBuilder({
235
+ onMidStreamError: (procedure, c, error) => {
236
+ return {
237
+ // Value to write to stream (should match your yieldType schema)
238
+ value: {
239
+ type: 'error',
240
+ code: 'STREAM_ERROR',
241
+ message: error.message,
242
+ retryable: false,
243
+ },
244
+ // Optional: whether to close stream after (default: true)
245
+ closeStream: true,
246
+ }
247
+ },
248
+ })
249
+ ```
250
+
251
+ **Return values:**
252
+ - `{ value, closeStream? }` - Write `value` to stream, optionally keep stream open
253
+ - `undefined` - Use default behavior: `{ error: message }`
254
+
255
+ ### Type-Safe Error Handling with Union Types
214
256
 
215
- Errors that occur **during** streaming are sent as special messages in the stream:
257
+ For type-safe error handling, define your `yieldType` as a discriminated union:
258
+
259
+ ```typescript
260
+ StreamRPC.CreateStream('WatchEvents', {
261
+ scope: 'events',
262
+ version: 1,
263
+ schema: {
264
+ params: v.object({ roomId: v.string() }),
265
+ // Union type: clients know exactly what to expect
266
+ yieldType: v.union([
267
+ v.object({
268
+ type: v.literal('event'),
269
+ eventType: v.string(),
270
+ data: v.any()
271
+ }),
272
+ v.object({
273
+ type: v.literal('error'),
274
+ code: v.string(),
275
+ message: v.string(),
276
+ retryable: v.boolean()
277
+ })
278
+ ])
279
+ }
280
+ }, async function* (ctx, params) {
281
+ yield { type: 'event', eventType: 'user_joined', data: { userId: ctx.userId } }
282
+ // On error, the procedure throws and onMidStreamError handles it
283
+ })
284
+
285
+ // Configure error callback to return union-compatible error value
286
+ const builder = new HonoStreamAppBuilder({
287
+ onMidStreamError: (proc, c, error) => ({
288
+ value: {
289
+ type: 'error',
290
+ code: 'STREAM_ERROR',
291
+ message: error.message,
292
+ retryable: false,
293
+ }
294
+ })
295
+ })
296
+ ```
297
+
298
+ **Output (SSE mode):**
299
+ ```
300
+ event: WatchEvents
301
+ data: {"type":"event","eventType":"user_joined","data":{"userId":"123"}}
302
+
303
+ event: WatchEvents
304
+ data: {"type":"error","code":"STREAM_ERROR","message":"Connection lost","retryable":false}
305
+ ```
306
+
307
+ ### Default Error Output
308
+
309
+ Without custom callbacks, errors are written as:
216
310
 
217
311
  **SSE Mode:**
218
312
  ```
@@ -225,18 +319,6 @@ data: {"error":"Error message"}
225
319
  {"error":"Error message"}
226
320
  ```
227
321
 
228
- ### Pre-Stream Errors
229
-
230
- For errors before streaming starts (e.g., context resolution), use `onStreamError`:
231
-
232
- ```typescript
233
- const builder = new HonoStreamAppBuilder({
234
- onStreamError: (procedure, c, error) => {
235
- return c.json({ error: error.message }, 500)
236
- },
237
- })
238
- ```
239
-
240
322
  ## Route Documentation
241
323
 
242
324
  Access generated documentation via `builder.docs`:
@@ -294,5 +376,6 @@ import {
294
376
  HonoStreamAppBuilderConfig,
295
377
  StreamHttpRouteDoc,
296
378
  StreamMode,
379
+ MidStreamErrorResult, // Return type for onMidStreamError callback
297
380
  } from 'ts-procedures/hono-stream'
298
381
  ```
@@ -341,7 +341,8 @@ describe('HonoStreamAppBuilder', () => {
341
341
  builder.register(RPC, () => ({}))
342
342
  const app = builder.build()
343
343
 
344
- await app.request('/test/test/1')
344
+ const response = await app.request('/test/test/1')
345
+ await response.text() // Consume stream to trigger onRequestEnd
345
346
 
346
347
  expect(onRequestEnd).toHaveBeenCalledTimes(1)
347
348
  expect(onRequestEnd.mock.calls[0]![0]).toHaveProperty('req')
@@ -419,6 +420,8 @@ describe('HonoStreamAppBuilder', () => {
419
420
  expect(order[0]).toBe('request-start')
420
421
  // stream-start should be before handler
421
422
  expect(order.indexOf('stream-start')).toBeLessThan(order.indexOf('handler'))
423
+ // request-end should be last
424
+ expect(order[order.length - 1]).toBe('request-end')
422
425
  })
423
426
  })
424
427
 
@@ -431,18 +434,35 @@ describe('HonoStreamAppBuilder', () => {
431
434
  return c.json({ customError: error.message }, 400)
432
435
  })
433
436
 
434
- const builder = new HonoStreamAppBuilder({ onStreamError: errorHandler })
437
+ const builder = new HonoStreamAppBuilder({ onPreStreamError: errorHandler })
435
438
  const RPC = Procedures<{}, RPCConfig>()
436
439
 
437
- // Error during context resolution (before streaming starts)
438
- builder.register(RPC, () => {
439
- throw new Error('Context error')
440
- })
440
+ RPC.CreateStream(
441
+ 'ValidatedStream',
442
+ {
443
+ scope: 'validated',
444
+ version: 1,
445
+ schema: {
446
+ params: v.object({ count: v.number() }),
447
+ },
448
+ },
449
+ async function* (ctx, params) {
450
+ yield { count: params.count }
451
+ }
452
+ )
441
453
 
454
+ builder.register(RPC, () => ({}))
442
455
  const app = builder.build()
443
456
 
444
- // Since no streaming procedures were registered, this should 404
445
- // Let's test with a real streaming procedure that throws during setup
457
+ const res = await app.request('/validated/validated-stream/1?count=not-a-number')
458
+
459
+ expect(res.status).toBe(400)
460
+ const body = await res.json()
461
+ expect(body.customError).toContain('Validation error')
462
+
463
+ expect(errorHandler).toHaveBeenCalledTimes(1)
464
+ expect(errorHandler.mock.calls[0]![0].name).toBe('ValidatedStream')
465
+ expect(errorHandler.mock.calls[0]![2].message).toContain('Validation error')
446
466
  })
447
467
 
448
468
  test('errors during streaming are sent as error events (SSE mode)', async () => {
@@ -486,11 +506,8 @@ describe('HonoStreamAppBuilder', () => {
486
506
  expect(JSON.parse(lines[1]!).error).toContain('Stream error')
487
507
  })
488
508
 
489
- test('onStreamError is called when params fail validation', async () => {
490
- const onStreamError = vi.fn((procedure, c, error) => {
491
- return c.json({ error: error.message }, 400)
492
- })
493
- const builder = new HonoStreamAppBuilder({ onStreamError })
509
+ test('validation errors return 400 by default when no error handler', async () => {
510
+ const builder = new HonoStreamAppBuilder()
494
511
  const RPC = Procedures<{}, RPCConfig>()
495
512
 
496
513
  RPC.CreateStream(
@@ -512,19 +529,22 @@ describe('HonoStreamAppBuilder', () => {
512
529
 
513
530
  const res = await app.request('/validated/validated-stream/1?count=not-a-number')
514
531
 
515
- // HTTP error response returned (not a stream)
532
+ // Default: returns 400 JSON error
516
533
  expect(res.status).toBe(400)
517
534
  const body = await res.json()
518
535
  expect(body.error).toContain('Validation error')
519
-
520
- // onStreamError callback was called
521
- expect(onStreamError).toHaveBeenCalledTimes(1)
522
- expect(onStreamError.mock.calls[0]![0].name).toBe('ValidatedStream')
523
- expect(onStreamError.mock.calls[0]![2].message).toContain('Validation error')
524
536
  })
525
537
 
526
- test('validation errors return 400 by default when no onStreamError handler', async () => {
527
- const builder = new HonoStreamAppBuilder()
538
+ // Tests for onPreStreamError and onMidStreamError callbacks
539
+
540
+ test('onPreStreamError handles validation errors with custom Response', async () => {
541
+ const onPreStreamError = vi.fn((procedure, c, error) => {
542
+ return c.json(
543
+ { customError: true, procedureName: procedure.name, details: error.message },
544
+ 422
545
+ )
546
+ })
547
+ const builder = new HonoStreamAppBuilder({ onPreStreamError })
528
548
  const RPC = Procedures<{}, RPCConfig>()
529
549
 
530
550
  RPC.CreateStream(
@@ -546,10 +566,138 @@ describe('HonoStreamAppBuilder', () => {
546
566
 
547
567
  const res = await app.request('/validated/validated-stream/1?count=not-a-number')
548
568
 
549
- // Default: returns 400 JSON error
550
- expect(res.status).toBe(400)
569
+ expect(res.status).toBe(422)
551
570
  const body = await res.json()
552
- expect(body.error).toContain('Validation error')
571
+ expect(body.customError).toBe(true)
572
+ expect(body.procedureName).toBe('ValidatedStream')
573
+ expect(body.details).toContain('Validation error')
574
+
575
+ expect(onPreStreamError).toHaveBeenCalledTimes(1)
576
+ })
577
+
578
+ test('onPreStreamError handles context resolution errors', async () => {
579
+ const onPreStreamError = vi.fn((procedure, c, error) => {
580
+ return c.json({ contextError: error.message }, 401)
581
+ })
582
+ const builder = new HonoStreamAppBuilder({ onPreStreamError })
583
+ const RPC = Procedures<{ userId: string }, RPCConfig>()
584
+
585
+ RPC.CreateStream('SecureStream', { scope: 'secure', version: 1 }, async function* (ctx) {
586
+ yield { userId: ctx.userId }
587
+ })
588
+
589
+ builder.register(RPC, () => {
590
+ throw new Error('Authentication required')
591
+ })
592
+ const app = builder.build()
593
+
594
+ const res = await app.request('/secure/secure-stream/1')
595
+
596
+ expect(res.status).toBe(401)
597
+ const body = await res.json()
598
+ expect(body.contextError).toBe('Authentication required')
599
+
600
+ expect(onPreStreamError).toHaveBeenCalledTimes(1)
601
+ })
602
+
603
+ test('onMidStreamError returns custom value written to SSE stream', async () => {
604
+ const onMidStreamError = vi.fn((procedure, c, error) => {
605
+ return {
606
+ value: {
607
+ type: 'error',
608
+ code: 'STREAM_FAILED',
609
+ message: error.message,
610
+ retryable: false,
611
+ },
612
+ closeStream: true,
613
+ }
614
+ })
615
+
616
+ const builder = new HonoStreamAppBuilder({ onMidStreamError })
617
+ const RPC = Procedures<{}, RPCConfig>()
618
+
619
+ RPC.CreateStream('ErrorStream', { scope: 'error', version: 1 }, async function* () {
620
+ yield { type: 'data', value: 1 }
621
+ throw new Error('Something broke')
622
+ })
623
+
624
+ builder.register(RPC, () => ({}))
625
+ const app = builder.build()
626
+
627
+ const res = await app.request('/error/error-stream/1')
628
+ const text = await res.text()
629
+
630
+ // First yield should be present
631
+ expect(text).toContain('data: {"type":"data","value":1}')
632
+ // Error should use custom format from onMidStreamError
633
+ expect(text).toContain('data: {"type":"error","code":"STREAM_FAILED"')
634
+ expect(text).toContain('"retryable":false')
635
+ // Event should use procedure name (not 'error') since custom value provided
636
+ expect(text).toContain('event: ErrorStream')
637
+
638
+ expect(onMidStreamError).toHaveBeenCalledTimes(1)
639
+ })
640
+
641
+ test('onMidStreamError returns custom value written to text stream', async () => {
642
+ const onMidStreamError = vi.fn((procedure, c, error) => {
643
+ return {
644
+ value: { type: 'error', message: error.message },
645
+ }
646
+ })
647
+
648
+ const builder = new HonoStreamAppBuilder({
649
+ defaultStreamMode: 'text',
650
+ onMidStreamError,
651
+ })
652
+ const RPC = Procedures<{}, RPCConfig>()
653
+
654
+ RPC.CreateStream('ErrorStream', { scope: 'error', version: 1 }, async function* () {
655
+ yield { type: 'data', value: 'hello' }
656
+ throw new Error('Stream failed')
657
+ })
658
+
659
+ builder.register(RPC, () => ({}))
660
+ const app = builder.build()
661
+
662
+ const res = await app.request('/error/error-stream/1')
663
+ const text = await res.text()
664
+ const lines = text.trim().split('\n')
665
+
666
+ expect(JSON.parse(lines[0]!)).toEqual({ type: 'data', value: 'hello' })
667
+ // Error message may be wrapped by Procedures with "Error in streaming handler for X - " prefix
668
+ const errorLine = JSON.parse(lines[1]!)
669
+ expect(errorLine.type).toBe('error')
670
+ expect(errorLine.message).toContain('Stream failed')
671
+
672
+ expect(onMidStreamError).toHaveBeenCalledTimes(1)
673
+ })
674
+
675
+ test('onMidStreamError returning undefined falls back to default error format', async () => {
676
+ const onMidStreamError = vi.fn(() => undefined)
677
+
678
+ const builder = new HonoStreamAppBuilder({
679
+ defaultStreamMode: 'text',
680
+ onMidStreamError,
681
+ })
682
+ const RPC = Procedures<{}, RPCConfig>()
683
+
684
+ RPC.CreateStream('ErrorStream', { scope: 'error', version: 1 }, async function* () {
685
+ yield { value: 1 }
686
+ throw new Error('Fallback test')
687
+ })
688
+
689
+ builder.register(RPC, () => ({}))
690
+ const app = builder.build()
691
+
692
+ const res = await app.request('/error/error-stream/1')
693
+ const text = await res.text()
694
+ const lines = text.trim().split('\n')
695
+
696
+ expect(JSON.parse(lines[0]!)).toEqual({ value: 1 })
697
+ // Falls back to default { error: message } format
698
+ expect(JSON.parse(lines[1]!).error).toContain('Fallback test')
699
+
700
+ expect(onMidStreamError).toHaveBeenCalledTimes(1)
553
701
  })
554
702
  })
555
703
 
@@ -876,14 +1024,10 @@ describe('HonoStreamAppBuilder', () => {
876
1024
  const builder = new HonoStreamAppBuilder({ defaultStreamMode: 'text' })
877
1025
  const RPC = Procedures<{}, RPCConfig>()
878
1026
 
879
- RPC.CreateStream(
880
- 'CheckPrevalidated',
881
- { scope: 'check', version: 1 },
882
- async function* (ctx) {
883
- receivedIsPrevalidated = ctx.isPrevalidated
884
- yield { ok: true }
885
- }
886
- )
1027
+ RPC.CreateStream('CheckPrevalidated', { scope: 'check', version: 1 }, async function* (ctx) {
1028
+ receivedIsPrevalidated = ctx.isPrevalidated
1029
+ yield { ok: true }
1030
+ })
887
1031
 
888
1032
  builder.register(RPC, () => ({}))
889
1033
  const app = builder.build()
@@ -9,6 +9,16 @@ import { ProcedureValidationError } from '../../../errors.js'
9
9
 
10
10
  export type { StreamHttpRouteDoc, StreamMode }
11
11
 
12
+ /**
13
+ * Result from onMidStreamError callback.
14
+ * @property value - The value to write to the stream (should match yieldType schema)
15
+ * @property closeStream - Whether to close the stream after writing (defaults to true)
16
+ */
17
+ export type MidStreamErrorResult = {
18
+ value: unknown
19
+ closeStream?: boolean
20
+ }
21
+
12
22
  export type HonoStreamAppBuilderConfig = {
13
23
  /**
14
24
  * An existing Hono application instance to use.
@@ -24,13 +34,27 @@ export type HonoStreamAppBuilderConfig = {
24
34
  onStreamStart?: (procedure: TStreamProcedureRegistration, c: Context) => void
25
35
  onStreamEnd?: (procedure: TStreamProcedureRegistration, c: Context) => void
26
36
  /**
27
- * Error handler called when a streaming procedure throws an error.
37
+ * Called for errors BEFORE streaming starts (validation, auth, context resolution).
38
+ * Return value IS used as the HTTP response.
28
39
  */
29
- onStreamError?: (
40
+ onPreStreamError?: (
30
41
  procedure: TStreamProcedureRegistration,
31
42
  c: Context,
32
43
  error: Error
33
44
  ) => Response | Promise<Response>
45
+ /**
46
+ * Called for errors DURING streaming (generator throws).
47
+ * Return value is written to the stream as a yield.
48
+ * Should return a value matching your yieldType schema (e.g., error variant of a union).
49
+ * Return undefined to use default behavior (writes { error: message }).
50
+ *
51
+ * @returns { value, closeStream? } - value to yield, whether to close after (default true)
52
+ */
53
+ onMidStreamError?: (
54
+ procedure: TStreamProcedureRegistration,
55
+ c: Context,
56
+ error: Error
57
+ ) => MidStreamErrorResult | undefined
34
58
  }
35
59
 
36
60
  /**
@@ -62,12 +86,6 @@ export class HonoStreamAppBuilder {
62
86
  })
63
87
  }
64
88
 
65
- if (config?.onRequestEnd) {
66
- this._app.use('*', async (c, next) => {
67
- await next()
68
- config.onRequestEnd!(c)
69
- })
70
- }
71
89
  }
72
90
 
73
91
  /**
@@ -165,8 +183,9 @@ export class HonoStreamAppBuilder {
165
183
  `Validation error for ${procedure.name}`,
166
184
  errors
167
185
  )
168
- if (this.config?.onStreamError) {
169
- return this.config.onStreamError(procedure, c, error)
186
+ // Use onPreStreamError if provided
187
+ if (this.config?.onPreStreamError) {
188
+ return this.config.onPreStreamError(procedure, c, error)
170
189
  }
171
190
  return c.json({ error: error.message }, 400)
172
191
  }
@@ -182,8 +201,9 @@ export class HonoStreamAppBuilder {
182
201
  return this.handleTextStream(procedure, context, params, c)
183
202
  }
184
203
  } catch (error) {
185
- if (this.config?.onStreamError) {
186
- return this.config.onStreamError(procedure, c, error as Error)
204
+ // Use onPreStreamError for context resolution errors
205
+ if (this.config?.onPreStreamError) {
206
+ return this.config.onPreStreamError(procedure, c, error as Error)
187
207
  }
188
208
  return c.json({ error: (error as Error).message }, 500)
189
209
  }
@@ -207,8 +227,8 @@ export class HonoStreamAppBuilder {
207
227
  await generator.return(undefined)
208
228
  })
209
229
 
230
+ let eventId = 0
210
231
  try {
211
- let eventId = 0
212
232
  for await (const value of generator) {
213
233
  await stream.writeSSE({
214
234
  data: JSON.stringify(value),
@@ -217,19 +237,31 @@ export class HonoStreamAppBuilder {
217
237
  })
218
238
  }
219
239
  } catch (error) {
220
- // Call error handler as notification (return value ignored, streaming already started)
221
- if (this.config?.onStreamError) {
222
- this.config.onStreamError(procedure, c, error as Error)
240
+ // Get error yield value from callback (onMidStreamError)
241
+ let errorResult: MidStreamErrorResult | undefined
242
+
243
+ if (this.config?.onMidStreamError) {
244
+ errorResult = this.config.onMidStreamError(procedure, c, error as Error)
223
245
  }
224
- // Write error as SSE event before closing
246
+
247
+ // Write error value to stream
248
+ const errorValue = errorResult?.value ?? { error: (error as Error).message }
225
249
  await stream.writeSSE({
226
- data: JSON.stringify({ error: (error as Error).message }),
227
- event: 'error',
250
+ data: JSON.stringify(errorValue),
251
+ // Use procedure event name if custom value provided, otherwise 'error'
252
+ event: errorResult?.value !== undefined ? procedure.name : 'error',
253
+ id: String(eventId++),
228
254
  })
255
+
256
+ // closeStream defaults to true if not specified
257
+ // (stream closes naturally after this handler completes)
229
258
  } finally {
230
259
  if (this.config?.onStreamEnd) {
231
260
  this.config.onStreamEnd(procedure, c)
232
261
  }
262
+ if (this.config?.onRequestEnd) {
263
+ this.config.onRequestEnd(c)
264
+ }
233
265
  }
234
266
  })
235
267
  }
@@ -256,16 +288,23 @@ export class HonoStreamAppBuilder {
256
288
  await stream.writeln(JSON.stringify(value))
257
289
  }
258
290
  } catch (error) {
259
- // Call error handler as notification (return value ignored, streaming already started)
260
- if (this.config?.onStreamError) {
261
- this.config.onStreamError(procedure, c, error as Error)
291
+ // Get error yield value from callback (onMidStreamError)
292
+ let errorResult: MidStreamErrorResult | undefined
293
+
294
+ if (this.config?.onMidStreamError) {
295
+ errorResult = this.config.onMidStreamError(procedure, c, error as Error)
262
296
  }
263
- // Write error as JSON line before closing
264
- await stream.writeln(JSON.stringify({ error: (error as Error).message }))
297
+
298
+ // Write error value to stream
299
+ const errorValue = errorResult?.value ?? { error: (error as Error).message }
300
+ await stream.writeln(JSON.stringify(errorValue))
265
301
  } finally {
266
302
  if (this.config?.onStreamEnd) {
267
303
  this.config.onStreamEnd(procedure, c)
268
304
  }
305
+ if (this.config?.onRequestEnd) {
306
+ this.config.onRequestEnd(c)
307
+ }
269
308
  }
270
309
  })
271
310
  }