@trpc/server 11.0.0-rc.452 → 11.0.0-rc.455

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 (34) hide show
  1. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  2. package/dist/adapters/node-http/nodeHTTPRequestHandler.js +3 -1
  3. package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +3 -1
  4. package/dist/adapters/ws.d.ts.map +1 -1
  5. package/dist/adapters/ws.js +4 -1
  6. package/dist/adapters/ws.mjs +4 -1
  7. package/dist/bundle-analysis.json +86 -85
  8. package/dist/observable/observable.d.ts +1 -4
  9. package/dist/observable/observable.d.ts.map +1 -1
  10. package/dist/observable/observable.js +6 -18
  11. package/dist/observable/observable.mjs +6 -18
  12. package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +1 -1
  13. package/dist/unstable-core-do-not-import/http/contentType.js +6 -3
  14. package/dist/unstable-core-do-not-import/http/contentType.mjs +6 -3
  15. package/dist/unstable-core-do-not-import/http/types.d.ts +5 -0
  16. package/dist/unstable-core-do-not-import/http/types.d.ts.map +1 -1
  17. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts +8 -3
  18. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -1
  19. package/dist/unstable-core-do-not-import/stream/jsonl.js +66 -32
  20. package/dist/unstable-core-do-not-import/stream/jsonl.mjs +66 -32
  21. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts.map +1 -1
  22. package/dist/unstable-core-do-not-import.d.ts +1 -0
  23. package/dist/unstable-core-do-not-import.d.ts.map +1 -1
  24. package/dist/unstable-core-do-not-import.js +3 -0
  25. package/dist/unstable-core-do-not-import.mjs +1 -0
  26. package/package.json +2 -2
  27. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +3 -1
  28. package/src/adapters/ws.ts +3 -0
  29. package/src/observable/observable.ts +6 -19
  30. package/src/unstable-core-do-not-import/http/contentType.ts +3 -0
  31. package/src/unstable-core-do-not-import/http/types.ts +5 -0
  32. package/src/unstable-core-do-not-import/stream/jsonl.ts +88 -43
  33. package/src/unstable-core-do-not-import/stream/utils/createServer.ts +1 -3
  34. package/src/unstable-core-do-not-import.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"contentType.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/http/contentType.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,SAAS,CAAC;AAEjE,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAqQF,wBAAgB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,eAAe,CAG3E"}
1
+ {"version":3,"file":"contentType.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/http/contentType.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,SAAS,CAAC;AAEjE,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAwQF,wBAAgB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,eAAe,CAG3E"}
@@ -128,7 +128,8 @@ const jsonContentTypeHandler = {
128
128
  accept: req.headers.get('trpc-accept'),
129
129
  calls,
130
130
  type,
131
- connectionParams: connectionParamsStr === null ? null : parseConnectionParams.parseConnectionParamsFromString(connectionParamsStr)
131
+ connectionParams: connectionParamsStr === null ? null : parseConnectionParams.parseConnectionParamsFromString(connectionParamsStr),
132
+ signal: req.signal
132
133
  };
133
134
  return info;
134
135
  }
@@ -161,7 +162,8 @@ const formDataContentTypeHandler = {
161
162
  ],
162
163
  isBatchCall: false,
163
164
  type: 'mutation',
164
- connectionParams: null
165
+ connectionParams: null,
166
+ signal: req.signal
165
167
  };
166
168
  }
167
169
  };
@@ -192,7 +194,8 @@ const octetStreamContentTypeHandler = {
192
194
  isBatchCall: false,
193
195
  accept: null,
194
196
  type: 'mutation',
195
- connectionParams: null
197
+ connectionParams: null,
198
+ signal: req.signal
196
199
  };
197
200
  }
198
201
  };
@@ -126,7 +126,8 @@ const jsonContentTypeHandler = {
126
126
  accept: req.headers.get('trpc-accept'),
127
127
  calls,
128
128
  type,
129
- connectionParams: connectionParamsStr === null ? null : parseConnectionParamsFromString(connectionParamsStr)
129
+ connectionParams: connectionParamsStr === null ? null : parseConnectionParamsFromString(connectionParamsStr),
130
+ signal: req.signal
130
131
  };
131
132
  return info;
132
133
  }
@@ -159,7 +160,8 @@ const formDataContentTypeHandler = {
159
160
  ],
160
161
  isBatchCall: false,
161
162
  type: 'mutation',
162
- connectionParams: null
163
+ connectionParams: null,
164
+ signal: req.signal
163
165
  };
164
166
  }
165
167
  };
@@ -190,7 +192,8 @@ const octetStreamContentTypeHandler = {
190
192
  isBatchCall: false,
191
193
  accept: null,
192
194
  type: 'mutation',
193
- connectionParams: null
195
+ connectionParams: null,
196
+ signal: req.signal
194
197
  };
195
198
  }
196
199
  };
@@ -83,6 +83,11 @@ export interface TRPCRequestInfo {
83
83
  * Connection params when using `httpSubscriptionLink` or `createWSClient`
84
84
  */
85
85
  connectionParams: Dict<string> | null;
86
+ /**
87
+ * Signal when the request is aborted
88
+ * Can be used to abort async operations during the request, e.g. `fetch()`-requests
89
+ */
90
+ signal: AbortSignal;
86
91
  }
87
92
  /**
88
93
  * Inner createContext function for `resolveResponse` used to forward `TRPCRequestInfo` to `createContext`
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/http/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/http/types.ts"],"names":[],"mappings":"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"}
@@ -56,9 +56,10 @@ type ChunkData = PromiseChunk | IterableChunk;
56
56
  export declare function isPromise(value: unknown): value is Promise<unknown>;
57
57
  type Serialize = (value: any) => any;
58
58
  type Deserialize = (value: any) => any;
59
+ type PathArray = readonly (string | number)[];
59
60
  export type ProducerOnError = (opts: {
60
61
  error: unknown;
61
- path: (string | number)[];
62
+ path: PathArray;
62
63
  }) => void;
63
64
  export interface ProducerOptions {
64
65
  serialize?: Serialize;
@@ -66,7 +67,7 @@ export interface ProducerOptions {
66
67
  onError?: ProducerOnError;
67
68
  formatError?: (opts: {
68
69
  error: unknown;
69
- path: (string | number)[];
70
+ path: PathArray;
70
71
  }) => unknown;
71
72
  maxDepth?: number;
72
73
  }
@@ -92,8 +93,12 @@ export declare function jsonlStreamConsumer<THead>(opts: {
92
93
  formatError?: (opts: {
93
94
  error: unknown;
94
95
  }) => Error;
96
+ abortController: AbortController | null;
95
97
  }): Promise<readonly [Awaited<THead>, {
96
- readonly controllers: Map<ChunkIndex, ReadableStreamDefaultController<ChunkData | StreamInterruptedError>>;
98
+ readonly controllers: Map<ChunkIndex, {
99
+ controller: ReadableStreamDefaultController<ChunkData | StreamInterruptedError>;
100
+ returned: boolean;
101
+ }>;
97
102
  }]>;
98
103
  export {};
99
104
  //# sourceMappingURL=jsonl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/stream/jsonl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/stream/jsonl.ts"],"names":[],"mappings":"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"}
@@ -332,14 +332,24 @@ function createConsumerStream(from) {
332
332
  let headDeferred = createDeferred.createDeferred();
333
333
  const chunkDeferred = new Map();
334
334
  const controllers = new Map();
335
+ const maybeAbort = ()=>{
336
+ if (chunkDeferred.size === 0 && Array.from(controllers.values()).every((it)=>it.returned)) {
337
+ // nothing is listening to the stream anymore
338
+ opts.abortController?.abort();
339
+ }
340
+ };
335
341
  function hydrateChunkDefinition(value) {
336
342
  const [_path, type, chunkId] = value;
337
343
  const { readable , controller } = createReadableStream.createReadableStream();
338
- controllers.set(chunkId, controller);
344
+ const wrapper = {
345
+ controller,
346
+ returned: false
347
+ };
348
+ controllers.set(chunkId, wrapper);
339
349
  // resolve chunk deferred if it exists
340
350
  const deferred = chunkDeferred.get(chunkId);
341
351
  if (deferred) {
342
- deferred.resolve(controller);
352
+ deferred.resolve(wrapper);
343
353
  chunkDeferred.delete(chunkId);
344
354
  }
345
355
  switch(type){
@@ -372,37 +382,61 @@ function createConsumerStream(from) {
372
382
  }).catch(reject).finally(()=>{
373
383
  // reader.releaseLock();
374
384
  controllers.delete(chunkId);
385
+ maybeAbort();
375
386
  });
376
387
  });
377
388
  }
378
389
  case CHUNK_VALUE_TYPE_ASYNC_ITERABLE:
379
390
  {
380
391
  return {
381
- [Symbol.asyncIterator]: async function*() {
392
+ [Symbol.asyncIterator]: ()=>{
382
393
  const reader = readable.getReader();
383
- while(true){
384
- const { done , value } = await reader.read();
385
- if (done) {
386
- break;
387
- }
388
- if (value instanceof StreamInterruptedError) {
389
- throw value;
390
- }
391
- const [_chunkId, status, data] = value;
392
- switch(status){
393
- case ASYNC_ITERABLE_STATUS_VALUE:
394
- yield hydrate(data);
395
- break;
396
- case ASYNC_ITERABLE_STATUS_DONE:
397
- controllers.delete(chunkId);
398
- return;
399
- case ASYNC_ITERABLE_STATUS_ERROR:
394
+ const iterator = {
395
+ next: async ()=>{
396
+ const { done , value } = await reader.read();
397
+ if (value instanceof StreamInterruptedError) {
398
+ throw value;
399
+ }
400
+ if (done) {
400
401
  controllers.delete(chunkId);
401
- throw opts.formatError?.({
402
- error: data
403
- }) ?? new AsyncError(data);
402
+ maybeAbort();
403
+ return {
404
+ done: true,
405
+ value: undefined
406
+ };
407
+ }
408
+ const [_chunkId, status, data] = value;
409
+ switch(status){
410
+ case ASYNC_ITERABLE_STATUS_VALUE:
411
+ return {
412
+ done: false,
413
+ value: hydrate(data)
414
+ };
415
+ case ASYNC_ITERABLE_STATUS_DONE:
416
+ controllers.delete(chunkId);
417
+ maybeAbort();
418
+ return {
419
+ done: true,
420
+ value: undefined
421
+ };
422
+ case ASYNC_ITERABLE_STATUS_ERROR:
423
+ controllers.delete(chunkId);
424
+ maybeAbort();
425
+ throw opts.formatError?.({
426
+ error: data
427
+ }) ?? new AsyncError(data);
428
+ }
429
+ },
430
+ return: async ()=>{
431
+ wrapper.returned = true;
432
+ maybeAbort();
433
+ return {
434
+ done: true,
435
+ value: undefined
436
+ };
404
437
  }
405
- }
438
+ };
439
+ return iterator;
406
440
  }
407
441
  };
408
442
  }
@@ -411,12 +445,12 @@ function createConsumerStream(from) {
411
445
  function hydrate(value) {
412
446
  const [[data], ...asyncProps] = value;
413
447
  for (const value1 of asyncProps){
448
+ const [key] = value1;
414
449
  const hydrated = hydrateChunkDefinition(value1);
415
- const [path] = value1;
416
- if (path === null) {
450
+ if (key === null) {
417
451
  return hydrated;
418
452
  }
419
- data[path] = hydrated;
453
+ data[key] = hydrated;
420
454
  }
421
455
  return data;
422
456
  }
@@ -427,7 +461,7 @@ function createConsumerStream(from) {
427
461
  deferred.reject(error);
428
462
  }
429
463
  chunkDeferred.clear();
430
- for (const controller of controllers.values()){
464
+ for (const { controller } of controllers.values()){
431
465
  controller.enqueue(error);
432
466
  controller.close();
433
467
  }
@@ -447,16 +481,16 @@ function createConsumerStream(from) {
447
481
  }
448
482
  const chunk = chunkOrHead;
449
483
  const [idx] = chunk;
450
- let controller = controllers.get(idx);
451
- if (!controller) {
484
+ let wrapper = controllers.get(idx);
485
+ if (!wrapper) {
452
486
  let deferred = chunkDeferred.get(idx);
453
487
  if (!deferred) {
454
488
  deferred = createDeferred.createDeferred();
455
489
  chunkDeferred.set(idx, deferred);
456
490
  }
457
- controller = await deferred.promise;
491
+ wrapper = await deferred.promise;
458
492
  }
459
- controller.enqueue(chunk);
493
+ wrapper.controller.enqueue(chunk);
460
494
  },
461
495
  close: closeOrAbort,
462
496
  abort: closeOrAbort
@@ -330,14 +330,24 @@ function createConsumerStream(from) {
330
330
  let headDeferred = createDeferred();
331
331
  const chunkDeferred = new Map();
332
332
  const controllers = new Map();
333
+ const maybeAbort = ()=>{
334
+ if (chunkDeferred.size === 0 && Array.from(controllers.values()).every((it)=>it.returned)) {
335
+ // nothing is listening to the stream anymore
336
+ opts.abortController?.abort();
337
+ }
338
+ };
333
339
  function hydrateChunkDefinition(value) {
334
340
  const [_path, type, chunkId] = value;
335
341
  const { readable , controller } = createReadableStream();
336
- controllers.set(chunkId, controller);
342
+ const wrapper = {
343
+ controller,
344
+ returned: false
345
+ };
346
+ controllers.set(chunkId, wrapper);
337
347
  // resolve chunk deferred if it exists
338
348
  const deferred = chunkDeferred.get(chunkId);
339
349
  if (deferred) {
340
- deferred.resolve(controller);
350
+ deferred.resolve(wrapper);
341
351
  chunkDeferred.delete(chunkId);
342
352
  }
343
353
  switch(type){
@@ -370,37 +380,61 @@ function createConsumerStream(from) {
370
380
  }).catch(reject).finally(()=>{
371
381
  // reader.releaseLock();
372
382
  controllers.delete(chunkId);
383
+ maybeAbort();
373
384
  });
374
385
  });
375
386
  }
376
387
  case CHUNK_VALUE_TYPE_ASYNC_ITERABLE:
377
388
  {
378
389
  return {
379
- [Symbol.asyncIterator]: async function*() {
390
+ [Symbol.asyncIterator]: ()=>{
380
391
  const reader = readable.getReader();
381
- while(true){
382
- const { done , value } = await reader.read();
383
- if (done) {
384
- break;
385
- }
386
- if (value instanceof StreamInterruptedError) {
387
- throw value;
388
- }
389
- const [_chunkId, status, data] = value;
390
- switch(status){
391
- case ASYNC_ITERABLE_STATUS_VALUE:
392
- yield hydrate(data);
393
- break;
394
- case ASYNC_ITERABLE_STATUS_DONE:
395
- controllers.delete(chunkId);
396
- return;
397
- case ASYNC_ITERABLE_STATUS_ERROR:
392
+ const iterator = {
393
+ next: async ()=>{
394
+ const { done , value } = await reader.read();
395
+ if (value instanceof StreamInterruptedError) {
396
+ throw value;
397
+ }
398
+ if (done) {
398
399
  controllers.delete(chunkId);
399
- throw opts.formatError?.({
400
- error: data
401
- }) ?? new AsyncError(data);
400
+ maybeAbort();
401
+ return {
402
+ done: true,
403
+ value: undefined
404
+ };
405
+ }
406
+ const [_chunkId, status, data] = value;
407
+ switch(status){
408
+ case ASYNC_ITERABLE_STATUS_VALUE:
409
+ return {
410
+ done: false,
411
+ value: hydrate(data)
412
+ };
413
+ case ASYNC_ITERABLE_STATUS_DONE:
414
+ controllers.delete(chunkId);
415
+ maybeAbort();
416
+ return {
417
+ done: true,
418
+ value: undefined
419
+ };
420
+ case ASYNC_ITERABLE_STATUS_ERROR:
421
+ controllers.delete(chunkId);
422
+ maybeAbort();
423
+ throw opts.formatError?.({
424
+ error: data
425
+ }) ?? new AsyncError(data);
426
+ }
427
+ },
428
+ return: async ()=>{
429
+ wrapper.returned = true;
430
+ maybeAbort();
431
+ return {
432
+ done: true,
433
+ value: undefined
434
+ };
402
435
  }
403
- }
436
+ };
437
+ return iterator;
404
438
  }
405
439
  };
406
440
  }
@@ -409,12 +443,12 @@ function createConsumerStream(from) {
409
443
  function hydrate(value) {
410
444
  const [[data], ...asyncProps] = value;
411
445
  for (const value1 of asyncProps){
446
+ const [key] = value1;
412
447
  const hydrated = hydrateChunkDefinition(value1);
413
- const [path] = value1;
414
- if (path === null) {
448
+ if (key === null) {
415
449
  return hydrated;
416
450
  }
417
- data[path] = hydrated;
451
+ data[key] = hydrated;
418
452
  }
419
453
  return data;
420
454
  }
@@ -425,7 +459,7 @@ function createConsumerStream(from) {
425
459
  deferred.reject(error);
426
460
  }
427
461
  chunkDeferred.clear();
428
- for (const controller of controllers.values()){
462
+ for (const { controller } of controllers.values()){
429
463
  controller.enqueue(error);
430
464
  controller.close();
431
465
  }
@@ -445,16 +479,16 @@ function createConsumerStream(from) {
445
479
  }
446
480
  const chunk = chunkOrHead;
447
481
  const [idx] = chunk;
448
- let controller = controllers.get(idx);
449
- if (!controller) {
482
+ let wrapper = controllers.get(idx);
483
+ if (!wrapper) {
450
484
  let deferred = chunkDeferred.get(idx);
451
485
  if (!deferred) {
452
486
  deferred = createDeferred();
453
487
  chunkDeferred.set(idx, deferred);
454
488
  }
455
- controller = await deferred.promise;
489
+ wrapper = await deferred.promise;
456
490
  }
457
- controller.enqueue(chunk);
491
+ wrapper.controller.enqueue(chunk);
458
492
  },
459
493
  close: closeOrAbort,
460
494
  abort: closeOrAbort
@@ -1 +1 @@
1
- {"version":3,"file":"createServer.d.ts","sourceRoot":"","sources":["../../../../src/unstable-core-do-not-import/stream/utils/createServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,wBAAgB,YAAY,CAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;;;;EAyCvE"}
1
+ {"version":3,"file":"createServer.d.ts","sourceRoot":"","sources":["../../../../src/unstable-core-do-not-import/stream/utils/createServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,wBAAgB,YAAY,CAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;;;;EAuCvE"}
@@ -34,6 +34,7 @@ export * from './unstable-core-do-not-import/router';
34
34
  export * from './unstable-core-do-not-import/rpc';
35
35
  export * from './unstable-core-do-not-import/stream/jsonl';
36
36
  export * from './unstable-core-do-not-import/stream/sse';
37
+ export * from './unstable-core-do-not-import/stream/utils/createDeferred';
37
38
  export * from './unstable-core-do-not-import/transformer';
38
39
  export * from './unstable-core-do-not-import/types';
39
40
  export * from './unstable-core-do-not-import/utils';
@@ -1 +1 @@
1
- {"version":3,"file":"unstable-core-do-not-import.d.ts","sourceRoot":"","sources":["../src/unstable-core-do-not-import.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AACnE,cAAc,mDAAmD,CAAC;AAClE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mDAAmD,CAAC;AAClE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,yDAAyD,CAAC;AACxE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC;AACrE,cAAc,0DAA0D,CAAC;AACzE,cAAc,oDAAoD,CAAC;AACnE,cAAc,0CAA0C,CAAC;AACzD,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC"}
1
+ {"version":3,"file":"unstable-core-do-not-import.d.ts","sourceRoot":"","sources":["../src/unstable-core-do-not-import.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AACnE,cAAc,mDAAmD,CAAC;AAClE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mDAAmD,CAAC;AAClE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,yDAAyD,CAAC;AACxE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC;AACrE,cAAc,0DAA0D,CAAC;AACzE,cAAc,oDAAoD,CAAC;AACnE,cAAc,0CAA0C,CAAC;AACzD,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,0CAA0C,CAAC;AACzD,cAAc,2DAA2D,CAAC;AAC1E,cAAc,2CAA2C,CAAC;AAC1D,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC"}
@@ -23,6 +23,7 @@ var codes = require('./unstable-core-do-not-import/rpc/codes.js');
23
23
  var parseTRPCMessage = require('./unstable-core-do-not-import/rpc/parseTRPCMessage.js');
24
24
  var jsonl = require('./unstable-core-do-not-import/stream/jsonl.js');
25
25
  var sse = require('./unstable-core-do-not-import/stream/sse.js');
26
+ var createDeferred = require('./unstable-core-do-not-import/stream/utils/createDeferred.js');
26
27
  var transformer = require('./unstable-core-do-not-import/transformer.js');
27
28
  var types = require('./unstable-core-do-not-import/types.js');
28
29
  var utils = require('./unstable-core-do-not-import/utils.js');
@@ -71,6 +72,8 @@ exports.sse = sse.sse;
71
72
  exports.sseHeaders = sse.sseHeaders;
72
73
  exports.sseStreamConsumer = sse.sseStreamConsumer;
73
74
  exports.sseStreamProducer = sse.sseStreamProducer;
75
+ exports.createDeferred = createDeferred.createDeferred;
76
+ exports.createTimeoutPromise = createDeferred.createTimeoutPromise;
74
77
  exports.defaultTransformer = transformer.defaultTransformer;
75
78
  exports.getDataTransformer = transformer.getDataTransformer;
76
79
  exports.transformResult = transformer.transformResult;
@@ -21,6 +21,7 @@ export { TRPC_ERROR_CODES_BY_KEY, TRPC_ERROR_CODES_BY_NUMBER } from './unstable-
21
21
  export { parseTRPCMessage } from './unstable-core-do-not-import/rpc/parseTRPCMessage.mjs';
22
22
  export { isPromise, jsonlStreamConsumer, jsonlStreamProducer } from './unstable-core-do-not-import/stream/jsonl.mjs';
23
23
  export { isSSEMessageEnvelope, sse, sseHeaders, sseStreamConsumer, sseStreamProducer } from './unstable-core-do-not-import/stream/sse.mjs';
24
+ export { createDeferred, createTimeoutPromise } from './unstable-core-do-not-import/stream/utils/createDeferred.mjs';
24
25
  export { defaultTransformer, getDataTransformer, transformResult, transformTRPCResponse } from './unstable-core-do-not-import/transformer.mjs';
25
26
  export { ERROR_SYMBOL } from './unstable-core-do-not-import/types.mjs';
26
27
  export { isAsyncIterable, isFunction, isObject, mergeWithoutOverrides, omitPrototype, run, unsetMarker } from './unstable-core-do-not-import/utils.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/server",
3
- "version": "11.0.0-rc.452+8f18c400c",
3
+ "version": "11.0.0-rc.455+244538dd3",
4
4
  "description": "The tRPC server library",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -149,5 +149,5 @@
149
149
  "funding": [
150
150
  "https://trpc.io/sponsor"
151
151
  ],
152
- "gitHead": "8f18c400cbb76a66b5897032e59d17a8770f0667"
152
+ "gitHead": "244538dd3d42c0df05c7a491def21562e3cce253"
153
153
  }
@@ -71,7 +71,9 @@ export async function nodeHTTPRequestHandler<
71
71
  // console.error('reader.cancel() error', err);
72
72
  });
73
73
  };
74
- req.signal.addEventListener('abort', onAbort);
74
+ req.signal.addEventListener('abort', onAbort, {
75
+ once: true,
76
+ });
75
77
 
76
78
  while (true) {
77
79
  const { done, value } = await reader.read();
@@ -97,6 +97,7 @@ export function getWSConnectionHandler<TRouter extends AnyRouter>(
97
97
 
98
98
  return async (client: ws.WebSocket, req: IncomingMessage) => {
99
99
  const clientSubscriptions = new Map<number | string, AbortController>();
100
+ const abortController = new AbortController();
100
101
 
101
102
  function respond(untransformedJSON: TRPCResponseMessage) {
102
103
  client.send(
@@ -119,6 +120,7 @@ export function getWSConnectionHandler<TRouter extends AnyRouter>(
119
120
  isBatchCall: false,
120
121
  accept: null,
121
122
  type: 'unknown',
123
+ signal: abortController.signal,
122
124
  },
123
125
  });
124
126
 
@@ -410,6 +412,7 @@ export function getWSConnectionHandler<TRouter extends AnyRouter>(
410
412
  sub.abort();
411
413
  }
412
414
  clientSubscriptions.clear();
415
+ abortController.abort();
413
416
  });
414
417
 
415
418
  if (ctxPromise !== unsetContextSymbol) {
@@ -90,19 +90,11 @@ function pipeReducer(prev: any, fn: UnaryFunction<any, any>) {
90
90
  return fn(prev);
91
91
  }
92
92
 
93
- class ObservableAbortError extends Error {
94
- constructor(message: string) {
95
- super(message);
96
- this.name = 'ObservableAbortError';
97
- Object.setPrototypeOf(this, ObservableAbortError.prototype);
98
- }
99
- }
100
-
101
93
  /** @internal */
102
94
  export function observableToPromise<TValue>(
103
95
  observable: Observable<TValue, unknown>,
104
96
  ) {
105
- let abort: () => void;
97
+ const ac = new AbortController();
106
98
  const promise = new Promise<TValue>((resolve, reject) => {
107
99
  let isDone = false;
108
100
  function onDone() {
@@ -110,9 +102,11 @@ export function observableToPromise<TValue>(
110
102
  return;
111
103
  }
112
104
  isDone = true;
113
- reject(new ObservableAbortError('This operation was aborted.'));
114
105
  obs$.unsubscribe();
115
106
  }
107
+ ac.signal.addEventListener('abort', () => {
108
+ reject(ac.signal.reason);
109
+ });
116
110
  const obs$ = observable.subscribe({
117
111
  next(data) {
118
112
  isDone = true;
@@ -120,22 +114,15 @@ export function observableToPromise<TValue>(
120
114
  onDone();
121
115
  },
122
116
  error(data) {
123
- isDone = true;
124
117
  reject(data);
125
- onDone();
126
118
  },
127
119
  complete() {
128
- isDone = true;
120
+ ac.abort();
129
121
  onDone();
130
122
  },
131
123
  });
132
- abort = onDone;
133
124
  });
134
- return {
135
- promise,
136
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
137
- abort: abort!,
138
- };
125
+ return promise;
139
126
  }
140
127
 
141
128
  /**
@@ -173,6 +173,7 @@ const jsonContentTypeHandler: ContentTypeHandler = {
173
173
  connectionParamsStr === null
174
174
  ? null
175
175
  : parseConnectionParamsFromString(connectionParamsStr),
176
+ signal: req.signal,
176
177
  };
177
178
  return info;
178
179
  },
@@ -208,6 +209,7 @@ const formDataContentTypeHandler: ContentTypeHandler = {
208
209
  isBatchCall: false,
209
210
  type: 'mutation',
210
211
  connectionParams: null,
212
+ signal: req.signal,
211
213
  };
212
214
  },
213
215
  };
@@ -243,6 +245,7 @@ const octetStreamContentTypeHandler: ContentTypeHandler = {
243
245
  accept: null,
244
246
  type: 'mutation',
245
247
  connectionParams: null,
248
+ signal: req.signal,
246
249
  };
247
250
  },
248
251
  };
@@ -99,6 +99,11 @@ export interface TRPCRequestInfo {
99
99
  * Connection params when using `httpSubscriptionLink` or `createWSClient`
100
100
  */
101
101
  connectionParams: Dict<string> | null;
102
+ /**
103
+ * Signal when the request is aborted
104
+ * Can be used to abort async operations during the request, e.g. `fetch()`-requests
105
+ */
106
+ signal: AbortSignal;
102
107
  }
103
108
 
104
109
  /**