@trpc/client 11.0.0-next-beta.248 → 11.0.0-next-beta.285

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 (48) hide show
  1. package/dist/bundle-analysis.json +63 -48
  2. package/dist/internals/TRPCUntypedClient.d.ts +3 -20
  3. package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
  4. package/dist/internals/TRPCUntypedClient.js +1 -29
  5. package/dist/internals/TRPCUntypedClient.mjs +1 -29
  6. package/dist/links/HTTPBatchLinkOptions.d.ts +3 -2
  7. package/dist/links/HTTPBatchLinkOptions.d.ts.map +1 -1
  8. package/dist/links/httpBatchLink.d.ts +1 -1
  9. package/dist/links/httpBatchLink.d.ts.map +1 -1
  10. package/dist/links/httpBatchStreamLink.d.ts +4 -3
  11. package/dist/links/httpBatchStreamLink.d.ts.map +1 -1
  12. package/dist/links/httpFormDataLink.d.ts +1 -1
  13. package/dist/links/httpFormDataLink.d.ts.map +1 -1
  14. package/dist/links/httpLink.d.ts +5 -5
  15. package/dist/links/httpLink.d.ts.map +1 -1
  16. package/dist/links/httpLink.js +2 -3
  17. package/dist/links/httpLink.mjs +2 -3
  18. package/dist/links/internals/createHTTPBatchLink.d.ts +3 -3
  19. package/dist/links/internals/createHTTPBatchLink.d.ts.map +1 -1
  20. package/dist/links/internals/createHTTPBatchLink.js +1 -2
  21. package/dist/links/internals/createHTTPBatchLink.mjs +1 -2
  22. package/dist/links/internals/httpUtils.d.ts +8 -6
  23. package/dist/links/internals/httpUtils.d.ts.map +1 -1
  24. package/dist/links/internals/httpUtils.js +4 -2
  25. package/dist/links/internals/httpUtils.mjs +4 -2
  26. package/dist/links/types.d.ts +7 -9
  27. package/dist/links/types.d.ts.map +1 -1
  28. package/dist/links/wsLink.d.ts +5 -4
  29. package/dist/links/wsLink.d.ts.map +1 -1
  30. package/dist/links/wsLink.js +5 -3
  31. package/dist/links/wsLink.mjs +5 -3
  32. package/dist/unstable-internals.d.ts +33 -0
  33. package/dist/unstable-internals.d.ts.map +1 -0
  34. package/dist/unstable-internals.js +28 -0
  35. package/dist/unstable-internals.mjs +26 -0
  36. package/package.json +10 -4
  37. package/src/internals/TRPCUntypedClient.ts +6 -61
  38. package/src/links/HTTPBatchLinkOptions.ts +14 -12
  39. package/src/links/httpBatchLink.ts +4 -1
  40. package/src/links/httpBatchStreamLink.ts +11 -9
  41. package/src/links/httpLink.ts +17 -14
  42. package/src/links/internals/createHTTPBatchLink.ts +7 -6
  43. package/src/links/internals/httpUtils.ts +15 -11
  44. package/src/links/types.ts +13 -15
  45. package/src/links/wsLink.ts +10 -6
  46. package/src/unstable-internals.ts +67 -0
  47. package/unstable-internals/index.d.ts +1 -0
  48. package/unstable-internals/index.js +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"httpUtils.d.ts","sourceRoot":"","sources":["../../../src/links/internals/httpUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACb,MAAM,0CAA0C,CAAC;AAGlD,OAAO,KAAK,EACV,oBAAoB,EACpB,4BAA4B,EAC5B,UAAU,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,eAAe,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,eAAe,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC9C;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,mBAAmB,GACxB,uBAAuB,CAMzB;AAiBD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE;QACJ,QAAQ,EAAE,aAAa,CAAC;QACxB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;CACH;AAED,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,GAAG,CAAC;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAAC;AAUjD,MAAM,MAAM,sBAAsB,GAAG,eAAe,GAClD,uBAAuB,GAAG;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEJ,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,sBAAsB,KAAK,MAAM,CAAC;AACvD,KAAK,OAAO,GAAG,CAAC,IAAI,EAAE,sBAAsB,KAAK,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAgBpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACtB,IAAI,EAAE,sBAAsB,GAAG;IAC7B,OAAO,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACnD,KACE,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAElC,eAAO,MAAM,iBAAiB,EAAE,SAO/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAC7C,sBAAsB,GAAG;IACvB,OAAO,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC,CAAC;AAEJ,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,EACxB,EAAE,CAAC,EAAE,4BAA4B,GAAG,IAAI,0BAgCzC;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,kBAAkB,GACvB,gBAAgB,CAAC,UAAU,CAAC,CA8B9B"}
1
+ {"version":3,"file":"httpUtils.d.ts","sourceRoot":"","sources":["../../../src/links/internals/httpUtils.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,14 @@
3
3
  var getFetch = require('../../getFetch.js');
4
4
  var getAbortController = require('../../internals/getAbortController.js');
5
5
  var TRPCClientError = require('../../TRPCClientError.js');
6
+ var unstableInternals = require('../../unstable-internals.js');
6
7
 
7
8
  function resolveHTTPLinkOptions(opts) {
8
9
  return {
9
10
  url: opts.url.toString().replace(/\/$/, ''),
10
11
  fetch: opts.fetch,
11
- AbortController: getAbortController.getAbortController(opts.AbortController)
12
+ AbortController: getAbortController.getAbortController(opts.AbortController),
13
+ transformer: unstableInternals.getTransformer(opts.transformer)
12
14
  };
13
15
  }
14
16
  // https://github.com/trpc/trpc/pull/669
@@ -25,7 +27,7 @@ const METHOD = {
25
27
  mutation: 'POST'
26
28
  };
27
29
  function getInput(opts) {
28
- return 'input' in opts ? opts.runtime.transformer.serialize(opts.input) : arrayToDict(opts.inputs.map((_input)=>opts.runtime.transformer.serialize(_input)));
30
+ return 'input' in opts ? opts.transformer.input.serialize(opts.input) : arrayToDict(opts.inputs.map((_input)=>opts.transformer.input.serialize(_input)));
29
31
  }
30
32
  const getUrl = (opts)=>{
31
33
  let url = opts.url + '/' + opts.path;
@@ -1,12 +1,14 @@
1
1
  import { getFetch } from '../../getFetch.mjs';
2
2
  import { getAbortController } from '../../internals/getAbortController.mjs';
3
3
  import { TRPCClientError } from '../../TRPCClientError.mjs';
4
+ import { getTransformer } from '../../unstable-internals.mjs';
4
5
 
5
6
  function resolveHTTPLinkOptions(opts) {
6
7
  return {
7
8
  url: opts.url.toString().replace(/\/$/, ''),
8
9
  fetch: opts.fetch,
9
- AbortController: getAbortController(opts.AbortController)
10
+ AbortController: getAbortController(opts.AbortController),
11
+ transformer: getTransformer(opts.transformer)
10
12
  };
11
13
  }
12
14
  // https://github.com/trpc/trpc/pull/669
@@ -23,7 +25,7 @@ const METHOD = {
23
25
  mutation: 'POST'
24
26
  };
25
27
  function getInput(opts) {
26
- return 'input' in opts ? opts.runtime.transformer.serialize(opts.input) : arrayToDict(opts.inputs.map((_input)=>opts.runtime.transformer.serialize(_input)));
28
+ return 'input' in opts ? opts.transformer.input.serialize(opts.input) : arrayToDict(opts.inputs.map((_input)=>opts.transformer.input.serialize(_input)));
27
29
  }
28
30
  const getUrl = (opts)=>{
29
31
  let url = opts.url + '/' + opts.path;
@@ -1,5 +1,5 @@
1
1
  import type { Observable, Observer } from '@trpc/server/observable';
2
- import type { AnyRouter, CombinedDataTransformer, DataTransformer, TRPCResultMessage, TRPCSuccessResponse } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { TRPCInferrable, TRPCResultMessage, TRPCSuccessResponse } from '@trpc/server/unstable-core-do-not-import';
3
3
  import type { ResponseEsque } from '../internals/types';
4
4
  import type { TRPCClientError } from '../TRPCClientError';
5
5
  /**
@@ -41,8 +41,6 @@ export type HTTPHeaders = HeadersInitEsque | Record<string, string[] | string |
41
41
  */
42
42
  export type TRPCFetch = (url: string, options?: RequestInit) => Promise<ResponseEsque>;
43
43
  export interface TRPCClientRuntime {
44
- transformer: DataTransformer;
45
- combinedTransformer: CombinedDataTransformer;
46
44
  }
47
45
  /**
48
46
  * @internal
@@ -54,21 +52,21 @@ export interface OperationResultEnvelope<TOutput> {
54
52
  /**
55
53
  * @internal
56
54
  */
57
- export type OperationResultObservable<TRouter extends AnyRouter, TOutput> = Observable<OperationResultEnvelope<TOutput>, TRPCClientError<TRouter>>;
55
+ export type OperationResultObservable<TInferrable extends TRPCInferrable, TOutput> = Observable<OperationResultEnvelope<TOutput>, TRPCClientError<TInferrable>>;
58
56
  /**
59
57
  * @internal
60
58
  */
61
- export type OperationResultObserver<TRouter extends AnyRouter, TOutput> = Observer<OperationResultEnvelope<TOutput>, TRPCClientError<TRouter>>;
59
+ export type OperationResultObserver<TInferrable extends TRPCInferrable, TOutput> = Observer<OperationResultEnvelope<TOutput>, TRPCClientError<TInferrable>>;
62
60
  /**
63
61
  * @internal
64
62
  */
65
- export type OperationLink<TRouter extends AnyRouter, TInput = unknown, TOutput = unknown> = (opts: {
63
+ export type OperationLink<TInferrable extends TRPCInferrable, TInput = unknown, TOutput = unknown> = (opts: {
66
64
  op: Operation<TInput>;
67
- next: (op: Operation<TInput>) => OperationResultObservable<TRouter, TOutput>;
68
- }) => OperationResultObservable<TRouter, TOutput>;
65
+ next: (op: Operation<TInput>) => OperationResultObservable<TInferrable, TOutput>;
66
+ }) => OperationResultObservable<TInferrable, TOutput>;
69
67
  /**
70
68
  * @public
71
69
  */
72
- export type TRPCLink<TRouter extends AnyRouter> = (opts: TRPCClientRuntime) => OperationLink<TRouter>;
70
+ export type TRPCLink<TInferrable extends TRPCInferrable> = (opts: TRPCClientRuntime) => OperationLink<TInferrable>;
73
71
  export {};
74
72
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/links/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EACV,SAAS,EACT,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACrC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAG;AAEpE;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,GAAG,OAAO,IAAI;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,cAAc,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,UAAU,gBAAgB;IACxB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CACtB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,eAAe,CAAC;IAE7B,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO;IAC9C,MAAM,EACF,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GACpC,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,CACnC,OAAO,SAAS,SAAS,EACzB,OAAO,IACL,UAAU,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,SAAS,EACzB,OAAO,IACL,QAAQ,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,aAAa,CACvB,OAAO,SAAS,SAAS,EACzB,MAAM,GAAG,OAAO,EAChB,OAAO,GAAG,OAAO,IACf,CAAC,IAAI,EAAE;IACT,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CAC9E,KAAK,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,OAAO,SAAS,SAAS,IAAI,CAChD,IAAI,EAAE,iBAAiB,KACpB,aAAa,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/links/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACrC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAG;AAEpE;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,GAAG,OAAO,IAAI;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,cAAc,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,UAAU,gBAAgB;IACxB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CACtB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,iBAAiB;CAEjC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO;IAC9C,MAAM,EACF,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GACpC,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,CACnC,WAAW,SAAS,cAAc,EAClC,OAAO,IACL,UAAU,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,uBAAuB,CACjC,WAAW,SAAS,cAAc,EAClC,OAAO,IACL,QAAQ,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,aAAa,CACvB,WAAW,SAAS,cAAc,EAClC,MAAM,GAAG,OAAO,EAChB,OAAO,GAAG,OAAO,IACf,CAAC,IAAI,EAAE;IACT,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,EAAE,CACJ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,KAClB,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CACtD,KAAK,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,WAAW,SAAS,cAAc,IAAI,CACzD,IAAI,EAAE,iBAAiB,KACpB,aAAa,CAAC,WAAW,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { Observer, UnsubscribeFn } from '@trpc/server/observable';
2
- import type { AnyRouter, inferRouterError, MaybePromise, TRPCResponseMessage } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { AnyRouter, inferRootTypes, inferRouterError, MaybePromise, TRPCResponseMessage } from '@trpc/server/unstable-core-do-not-import';
3
3
  import { TRPCClientError } from '../TRPCClientError';
4
+ import type { TransformerOptions } from '../unstable-internals';
4
5
  import type { Operation, TRPCLink } from './types';
5
6
  type WSCallbackResult<TRouter extends AnyRouter, TOutput> = TRPCResponseMessage<TOutput, inferRouterError<TRouter>>;
6
7
  type WSCallbackObserver<TRouter extends AnyRouter, TOutput> = Observer<WSCallbackResult<TRouter, TOutput>, TRPCClientError<TRouter>>;
@@ -62,12 +63,12 @@ export declare function createWSClient(opts: WebSocketClientOptions): {
62
63
  })) | null;
63
64
  };
64
65
  export type TRPCWebSocketClient = ReturnType<typeof createWSClient>;
65
- export interface WebSocketLinkOptions {
66
+ export type WebSocketLinkOptions<TRouter extends AnyRouter> = {
66
67
  client: TRPCWebSocketClient;
67
- }
68
+ } & TransformerOptions<inferRootTypes<TRouter>>;
68
69
  /**
69
70
  * @link https://trpc.io/docs/v11/client/links/wsLink
70
71
  */
71
- export declare function wsLink<TRouter extends AnyRouter>(opts: WebSocketLinkOptions): TRPCLink<TRouter>;
72
+ export declare function wsLink<TRouter extends AnyRouter>(opts: WebSocketLinkOptions<TRouter>): TRPCLink<TRouter>;
72
73
  export {};
73
74
  //# sourceMappingURL=wsLink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wsLink.d.ts","sourceRoot":"","sources":["../../src/links/wsLink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,YAAY,EAMZ,mBAAmB,EACpB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAInD,KAAK,gBAAgB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,mBAAmB,CAC7E,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CAAC;AAEF,KAAK,kBAAkB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,QAAQ,CACpE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClC,eAAe,CAAC,OAAO,CAAC,CACzB,CAAC;AAEF,QAAA,MAAM,kBAAkB,iBAAkB,MAAM,WACoB,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACzC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9C;;OAEG;IACH,IAAI,CAAC,EAAE;QACL;;;WAGG;QACH,OAAO,EAAE,OAAO,CAAC;QACjB;;;WAGG;QACH,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAOD,wBAAgB,cAAc,CAAC,IAAI,EAAE,sBAAsB;;kBAgSpC,SAAS,wDAA0B,aAAa;;YAhP/D,MAAM;;eAGC,MAAM;YACT,SAAS;;eAGN,QAAQ;YACX,SAAS;;eAGN,YAAY;;;EAqS1B;AACD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AASD;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,SAAS,SAAS,EAC9C,IAAI,EAAE,oBAAoB,GACzB,QAAQ,CAAC,OAAO,CAAC,CA6CnB"}
1
+ {"version":3,"file":"wsLink.d.ts","sourceRoot":"","sources":["../../src/links/wsLink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,YAAY,EAMZ,mBAAmB,EACpB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAInD,KAAK,gBAAgB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,mBAAmB,CAC7E,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CAAC;AAEF,KAAK,kBAAkB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,QAAQ,CACpE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClC,eAAe,CAAC,OAAO,CAAC,CACzB,CAAC;AAEF,QAAA,MAAM,kBAAkB,iBAAkB,MAAM,WACoB,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACzC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9C;;OAEG;IACH,IAAI,CAAC,EAAE;QACL;;;WAGG;QACH,OAAO,EAAE,OAAO,CAAC;QACjB;;;WAGG;QACH,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAOD,wBAAgB,cAAc,CAAC,IAAI,EAAE,sBAAsB;;kBAgSpC,SAAS,wDAA0B,aAAa;;YAhP/D,MAAM;;eAGC,MAAM;YACT,SAAS;;eAGN,QAAQ;YACX,SAAS;;eAGN,YAAY;;;EAqS1B;AACD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEpE,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,SAAS,IAAI;IAC5D,MAAM,EAAE,mBAAmB,CAAC;CAC7B,GAAG,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAShD;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,SAAS,SAAS,EAC9C,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC,QAAQ,CAAC,OAAO,CAAC,CA8CnB"}
@@ -3,6 +3,7 @@
3
3
  var observable = require('@trpc/server/observable');
4
4
  var unstableCoreDoNotImport = require('@trpc/server/unstable-core-do-not-import');
5
5
  var TRPCClientError = require('../TRPCClientError.js');
6
+ var unstableInternals = require('../unstable-internals.js');
6
7
 
7
8
  const run = (fn)=>fn();
8
9
  const exponentialBackoff = (attemptIndex)=>attemptIndex === 0 ? 0 : Math.min(1000 * 2 ** attemptIndex, 30000);
@@ -287,12 +288,13 @@ class TRPCWebSocketClosedError extends Error {
287
288
  /**
288
289
  * @link https://trpc.io/docs/v11/client/links/wsLink
289
290
  */ function wsLink(opts) {
290
- return (runtime)=>{
291
+ const transformer = unstableInternals.getTransformer(opts.transformer);
292
+ return ()=>{
291
293
  const { client } = opts;
292
294
  return ({ op })=>{
293
295
  return observable.observable((observer)=>{
294
296
  const { type , path , id , context } = op;
295
- const input = runtime.transformer.serialize(op.input);
297
+ const input = transformer.input.serialize(op.input);
296
298
  const unsub = client.request({
297
299
  type,
298
300
  path,
@@ -308,7 +310,7 @@ class TRPCWebSocketClosedError extends Error {
308
310
  observer.complete();
309
311
  },
310
312
  next (message) {
311
- const transformed = unstableCoreDoNotImport.transformResult(message, runtime.transformer);
313
+ const transformed = unstableCoreDoNotImport.transformResult(message, transformer.output);
312
314
  if (!transformed.ok) {
313
315
  observer.error(TRPCClientError.TRPCClientError.from(transformed.error));
314
316
  return;
@@ -1,6 +1,7 @@
1
1
  import { observable } from '@trpc/server/observable';
2
2
  import { transformResult } from '@trpc/server/unstable-core-do-not-import';
3
3
  import { TRPCClientError } from '../TRPCClientError.mjs';
4
+ import { getTransformer } from '../unstable-internals.mjs';
4
5
 
5
6
  const run = (fn)=>fn();
6
7
  const exponentialBackoff = (attemptIndex)=>attemptIndex === 0 ? 0 : Math.min(1000 * 2 ** attemptIndex, 30000);
@@ -285,12 +286,13 @@ class TRPCWebSocketClosedError extends Error {
285
286
  /**
286
287
  * @link https://trpc.io/docs/v11/client/links/wsLink
287
288
  */ function wsLink(opts) {
288
- return (runtime)=>{
289
+ const transformer = getTransformer(opts.transformer);
290
+ return ()=>{
289
291
  const { client } = opts;
290
292
  return ({ op })=>{
291
293
  return observable((observer)=>{
292
294
  const { type , path , id , context } = op;
293
- const input = runtime.transformer.serialize(op.input);
295
+ const input = transformer.input.serialize(op.input);
294
296
  const unsub = client.request({
295
297
  type,
296
298
  path,
@@ -306,7 +308,7 @@ class TRPCWebSocketClosedError extends Error {
306
308
  observer.complete();
307
309
  },
308
310
  next (message) {
309
- const transformed = transformResult(message, runtime.transformer);
311
+ const transformed = transformResult(message, transformer.output);
310
312
  if (!transformed.ok) {
311
313
  observer.error(TRPCClientError.from(transformed.error));
312
314
  return;
@@ -0,0 +1,33 @@
1
+ import type { AnyRootTypes, CombinedDataTransformer, DataTransformerOptions, TypeError } from '@trpc/server/unstable-core-do-not-import';
2
+ export type CoercedTransformerParameters = {
3
+ transformer?: DataTransformerOptions;
4
+ };
5
+ type TransformerOptionYes = {
6
+ /**
7
+ * Data transformer
8
+ *
9
+ * You must use the same transformer on the backend and frontend
10
+ * @link https://trpc.io/docs/v11/data-transformers
11
+ **/
12
+ transformer: DataTransformerOptions;
13
+ };
14
+ type TransformerOptionNo = {
15
+ /**
16
+ * Data transformer
17
+ *
18
+ * You must use the same transformer on the backend and frontend
19
+ * @link https://trpc.io/docs/v11/data-transformers
20
+ **/
21
+ transformer?: TypeError<'You must define a transformer on your your `initTRPC`-object first'>;
22
+ };
23
+ export type TransformerOptions<TRoot extends Pick<AnyRootTypes, 'transformer'>> = TRoot['transformer'] extends true ? TransformerOptionYes : TransformerOptionNo;
24
+ /**
25
+ * @internal
26
+ */
27
+ export declare function getTransformer(transformer: TransformerOptions<{
28
+ transformer: false;
29
+ }>['transformer'] | TransformerOptions<{
30
+ transformer: true;
31
+ }>['transformer'] | undefined): CombinedDataTransformer;
32
+ export {};
33
+ //# sourceMappingURL=unstable-internals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unstable-internals.d.ts","sourceRoot":"","sources":["../src/unstable-internals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EACvB,sBAAsB,EACtB,SAAS,EACV,MAAM,0CAA0C,CAAC;AAElD,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B;;;;;QAKI;IACJ,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AACF,KAAK,mBAAmB,GAAG;IACzB;;;;;QAKI;IACJ,WAAW,CAAC,EAAE,SAAS,CAAC,oEAAoE,CAAC,CAAC;CAC/F,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAC5B,KAAK,SAAS,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,IAC7C,KAAK,CAAC,aAAa,CAAC,SAAS,IAAI,GACjC,oBAAoB,GACpB,mBAAmB,CAAC;AACxB;;GAEG;AAEH,wBAAgB,cAAc,CAC5B,WAAW,EACP,kBAAkB,CAAC;IAAE,WAAW,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,aAAa,CAAC,GACzD,kBAAkB,CAAC;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC,aAAa,CAAC,GACxD,SAAS,GACZ,uBAAuB,CAsBzB"}
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @internal
5
+ */ function getTransformer(transformer) {
6
+ const _transformer = transformer;
7
+ if (!_transformer) {
8
+ return {
9
+ input: {
10
+ serialize: (data)=>data,
11
+ deserialize: (data)=>data
12
+ },
13
+ output: {
14
+ serialize: (data)=>data,
15
+ deserialize: (data)=>data
16
+ }
17
+ };
18
+ }
19
+ if ('input' in _transformer) {
20
+ return _transformer;
21
+ }
22
+ return {
23
+ input: _transformer,
24
+ output: _transformer
25
+ };
26
+ }
27
+
28
+ exports.getTransformer = getTransformer;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @internal
3
+ */ function getTransformer(transformer) {
4
+ const _transformer = transformer;
5
+ if (!_transformer) {
6
+ return {
7
+ input: {
8
+ serialize: (data)=>data,
9
+ deserialize: (data)=>data
10
+ },
11
+ output: {
12
+ serialize: (data)=>data,
13
+ deserialize: (data)=>data
14
+ }
15
+ };
16
+ }
17
+ if ('input' in _transformer) {
18
+ return _transformer;
19
+ }
20
+ return {
21
+ input: _transformer,
22
+ output: _transformer
23
+ };
24
+ }
25
+
26
+ export { getTransformer };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/client",
3
- "version": "11.0.0-next-beta.248+05798dd78",
3
+ "version": "11.0.0-next-beta.285+e18d84950",
4
4
  "description": "The tRPC client library",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -34,6 +34,11 @@
34
34
  "import": "./dist/index.mjs",
35
35
  "require": "./dist/index.js",
36
36
  "default": "./dist/index.js"
37
+ },
38
+ "./unstable-internals": {
39
+ "import": "./dist/unstable-internals.mjs",
40
+ "require": "./dist/unstable-internals.js",
41
+ "default": "./dist/unstable-internals.js"
37
42
  }
38
43
  },
39
44
  "files": [
@@ -41,14 +46,15 @@
41
46
  "src",
42
47
  "README.md",
43
48
  "package.json",
49
+ "unstable-internals",
44
50
  "!**/*.test.*"
45
51
  ],
46
52
  "peerDependencies": {
47
- "@trpc/server": "11.0.0-next-beta.248+05798dd78"
53
+ "@trpc/server": "11.0.0-next-beta.285+e18d84950"
48
54
  },
49
55
  "devDependencies": {
50
56
  "@testing-library/dom": "^9.0.0",
51
- "@trpc/server": "11.0.0-next-beta.248+05798dd78",
57
+ "@trpc/server": "11.0.0-next-beta.285+e18d84950",
52
58
  "@types/isomorphic-fetch": "^0.0.39",
53
59
  "@types/node": "^20.10.0",
54
60
  "eslint": "^8.40.0",
@@ -65,5 +71,5 @@
65
71
  "funding": [
66
72
  "https://trpc.io/sponsor"
67
73
  ],
68
- "gitHead": "05798dd78fd304612172fcccb622559954a0f578"
74
+ "gitHead": "e18d84950b13f4cfce437473dde62e39a27c4879"
69
75
  }
@@ -5,9 +5,7 @@ import type {
5
5
  import { observableToPromise, share } from '@trpc/server/observable';
6
6
  import type {
7
7
  AnyRouter,
8
- CombinedDataTransformer,
9
- DataTransformerOptions,
10
- inferRootTypes,
8
+ TRPCInferrable,
11
9
  TypeError,
12
10
  } from '@trpc/server/unstable-core-do-not-import';
13
11
  import { createChain } from '../links/internals/createChain';
@@ -19,27 +17,6 @@ import type {
19
17
  } from '../links/types';
20
18
  import { TRPCClientError } from '../TRPCClientError';
21
19
 
22
- type CreateTRPCClientBaseOptions<TRouter extends AnyRouter> =
23
- inferRootTypes<TRouter>['transformer'] extends false
24
- ? {
25
- /**
26
- * Data transformer
27
- *
28
- * You must use the same transformer on the backend and frontend
29
- * @link https://trpc.io/docs/v11/data-transformers
30
- **/
31
- transformer?: TypeError<'You must define a transformer on your your `initTRPC`-object first'>;
32
- }
33
- : {
34
- /**
35
- * Data transformer
36
- *
37
- * You must use the same transformer on the backend and frontend
38
- * @link https://trpc.io/docs/v11/data-transformers
39
- **/
40
- transformer: DataTransformerOptions;
41
- };
42
-
43
20
  type TRPCType = 'mutation' | 'query' | 'subscription';
44
21
  export interface TRPCRequestOptions {
45
22
  /**
@@ -58,10 +35,10 @@ export interface TRPCSubscriptionObserver<TValue, TError> {
58
35
  }
59
36
 
60
37
  /** @internal */
61
- export type CreateTRPCClientOptions<TRouter extends AnyRouter> =
62
- | CreateTRPCClientBaseOptions<TRouter> & {
63
- links: TRPCLink<TRouter>[];
64
- };
38
+ export type CreateTRPCClientOptions<TRouter extends TRPCInferrable> = {
39
+ links: TRPCLink<TRouter>[];
40
+ transformer?: TypeError<'The transformer property has moved to httpLink/httpBatchLink/wsLink'>;
41
+ };
65
42
 
66
43
  /** @internal */
67
44
  export type UntypedClientProperties =
@@ -82,39 +59,7 @@ export class TRPCUntypedClient<TRouter extends AnyRouter> {
82
59
  constructor(opts: CreateTRPCClientOptions<TRouter>) {
83
60
  this.requestId = 0;
84
61
 
85
- const combinedTransformer: CombinedDataTransformer = (() => {
86
- const transformer = opts.transformer as
87
- | DataTransformerOptions
88
- | undefined;
89
-
90
- if (!transformer) {
91
- return {
92
- input: {
93
- serialize: (data) => data,
94
- deserialize: (data) => data,
95
- },
96
- output: {
97
- serialize: (data) => data,
98
- deserialize: (data) => data,
99
- },
100
- };
101
- }
102
- if ('input' in transformer) {
103
- return opts.transformer as CombinedDataTransformer;
104
- }
105
- return {
106
- input: transformer,
107
- output: transformer,
108
- };
109
- })();
110
-
111
- this.runtime = {
112
- transformer: {
113
- serialize: (data) => combinedTransformer.input.serialize(data),
114
- deserialize: (data) => combinedTransformer.output.deserialize(data),
115
- },
116
- combinedTransformer,
117
- };
62
+ this.runtime = {};
118
63
 
119
64
  // Initialize the links
120
65
  this.links = opts.links.map((link) => link(this.runtime));
@@ -1,16 +1,18 @@
1
+ import type { AnyRootTypes } from '@trpc/server/unstable-core-do-not-import';
1
2
  import type { NonEmptyArray } from '../internals/types';
2
3
  import type { HTTPLinkBaseOptions } from './internals/httpUtils';
3
4
  import type { HTTPHeaders, Operation } from './types';
4
5
 
5
- export interface HTTPBatchLinkOptions extends HTTPLinkBaseOptions {
6
- maxURLLength?: number;
7
- /**
8
- * Headers to be set on outgoing requests or a callback that of said headers
9
- * @link http://trpc.io/docs/client/headers
10
- */
11
- headers?:
12
- | HTTPHeaders
13
- | ((opts: {
14
- opList: NonEmptyArray<Operation>;
15
- }) => HTTPHeaders | Promise<HTTPHeaders>);
16
- }
6
+ export type HTTPBatchLinkOptions<TRoot extends AnyRootTypes> =
7
+ HTTPLinkBaseOptions<TRoot> & {
8
+ maxURLLength?: number;
9
+ /**
10
+ * Headers to be set on outgoing requests or a callback that of said headers
11
+ * @link http://trpc.io/docs/client/headers
12
+ */
13
+ headers?:
14
+ | HTTPHeaders
15
+ | ((opts: {
16
+ opList: NonEmptyArray<Operation>;
17
+ }) => HTTPHeaders | Promise<HTTPHeaders>);
18
+ };
@@ -1,3 +1,4 @@
1
+ import type { AnyRootTypes } from '@trpc/server/unstable-core-do-not-import';
1
2
  import type { NonEmptyArray } from '../internals/types';
2
3
  import type { HTTPBatchLinkOptions } from './HTTPBatchLinkOptions';
3
4
  import type { RequesterFn } from './internals/createHTTPBatchLink';
@@ -5,7 +6,9 @@ import { createHTTPBatchLink } from './internals/createHTTPBatchLink';
5
6
  import { jsonHttpRequester } from './internals/httpUtils';
6
7
  import type { Operation } from './types';
7
8
 
8
- const batchRequester: RequesterFn<HTTPBatchLinkOptions> = (requesterOpts) => {
9
+ const batchRequester: RequesterFn<HTTPBatchLinkOptions<AnyRootTypes>> = (
10
+ requesterOpts,
11
+ ) => {
9
12
  return (batchOps) => {
10
13
  const path = batchOps.map((op) => op.path).join(',');
11
14
  const inputs = batchOps.map((op) => op.input);
@@ -1,3 +1,4 @@
1
+ import type { AnyRootTypes } from '@trpc/server/unstable-core-do-not-import';
1
2
  import type { NonEmptyArray } from '../internals/types';
2
3
  import type { HTTPBatchLinkOptions } from './HTTPBatchLinkOptions';
3
4
  import type { RequesterFn } from './internals/createHTTPBatchLink';
@@ -7,16 +8,17 @@ import { streamingJsonHttpRequester } from './internals/parseJSONStream';
7
8
  import type { TextDecoderEsque } from './internals/streamingUtils';
8
9
  import type { Operation } from './types';
9
10
 
10
- export interface HTTPBatchStreamLinkOptions extends HTTPBatchLinkOptions {
11
- /**
12
- * Will default to the webAPI `TextDecoder`,
13
- * but you can use this option if your client
14
- * runtime doesn't provide it.
15
- */
16
- textDecoder?: TextDecoderEsque;
17
- }
11
+ export type HTTPBatchStreamLinkOptions<TRoot extends AnyRootTypes> =
12
+ HTTPBatchLinkOptions<TRoot> & {
13
+ /**
14
+ * Will default to the webAPI `TextDecoder`,
15
+ * but you can use this option if your client
16
+ * runtime doesn't provide it.
17
+ */
18
+ textDecoder?: TextDecoderEsque;
19
+ };
18
20
 
19
- const streamRequester: RequesterFn<HTTPBatchStreamLinkOptions> = (
21
+ const streamRequester: RequesterFn<HTTPBatchStreamLinkOptions<AnyRootTypes>> = (
20
22
  requesterOpts,
21
23
  ) => {
22
24
  const textDecoder = getTextDecoder(requesterOpts.opts.textDecoder);
@@ -1,5 +1,8 @@
1
1
  import { observable } from '@trpc/server/observable';
2
- import type { AnyRouter } from '@trpc/server/unstable-core-do-not-import';
2
+ import type {
3
+ AnyRootTypes,
4
+ AnyRouter,
5
+ } from '@trpc/server/unstable-core-do-not-import';
3
6
  import { transformResult } from '@trpc/server/unstable-core-do-not-import';
4
7
  import { TRPCClientError } from '../TRPCClientError';
5
8
  import type {
@@ -13,29 +16,29 @@ import {
13
16
  } from './internals/httpUtils';
14
17
  import type { HTTPHeaders, Operation, TRPCLink } from './types';
15
18
 
16
- export interface HTTPLinkOptions extends HTTPLinkBaseOptions {
17
- /**
18
- * Headers to be set on outgoing requests or a callback that of said headers
19
- * @link http://trpc.io/docs/client/headers
20
- */
21
- headers?:
22
- | HTTPHeaders
23
- | ((opts: { op: Operation }) => HTTPHeaders | Promise<HTTPHeaders>);
24
- }
19
+ export type HTTPLinkOptions<TRoot extends AnyRootTypes> =
20
+ HTTPLinkBaseOptions<TRoot> & {
21
+ /**
22
+ * Headers to be set on outgoing requests or a callback that of said headers
23
+ * @link http://trpc.io/docs/client/headers
24
+ */
25
+ headers?:
26
+ | HTTPHeaders
27
+ | ((opts: { op: Operation }) => HTTPHeaders | Promise<HTTPHeaders>);
28
+ };
25
29
 
26
30
  export function httpLinkFactory(factoryOpts: { requester: Requester }) {
27
31
  return <TRouter extends AnyRouter>(
28
- opts: HTTPLinkOptions,
32
+ opts: HTTPLinkOptions<TRouter['_def']['_config']['$types']>,
29
33
  ): TRPCLink<TRouter> => {
30
34
  const resolvedOpts = resolveHTTPLinkOptions(opts);
31
35
 
32
- return (runtime) =>
36
+ return () =>
33
37
  ({ op }) =>
34
38
  observable((observer) => {
35
39
  const { path, input, type } = op;
36
40
  const { promise, cancel } = factoryOpts.requester({
37
41
  ...resolvedOpts,
38
- runtime,
39
42
  type,
40
43
  path,
41
44
  input,
@@ -57,7 +60,7 @@ export function httpLinkFactory(factoryOpts: { requester: Requester }) {
57
60
  meta = res.meta;
58
61
  const transformed = transformResult(
59
62
  res.json,
60
- runtime.transformer,
63
+ resolvedOpts.transformer.output,
61
64
  );
62
65
 
63
66
  if (!transformed.ok) {
@@ -1,6 +1,8 @@
1
1
  import { observable } from '@trpc/server/observable';
2
2
  import type {
3
+ AnyRootTypes,
3
4
  AnyRouter,
5
+ inferRootTypes,
4
6
  ProcedureType,
5
7
  } from '@trpc/server/unstable-core-do-not-import';
6
8
  import { transformResult } from '@trpc/server/unstable-core-do-not-import';
@@ -19,7 +21,7 @@ import { getUrl, resolveHTTPLinkOptions } from './httpUtils';
19
21
  /**
20
22
  * @internal
21
23
  */
22
- export type RequesterFn<TOptions extends HTTPBatchLinkOptions> = (
24
+ export type RequesterFn<TOptions extends HTTPBatchLinkOptions<AnyRootTypes>> = (
23
25
  requesterOpts: ResolvedHTTPLinkOptions & {
24
26
  runtime: TRPCClientRuntime;
25
27
  type: ProcedureType;
@@ -36,11 +38,11 @@ export type RequesterFn<TOptions extends HTTPBatchLinkOptions> = (
36
38
  /**
37
39
  * @internal
38
40
  */
39
- export function createHTTPBatchLink<TOptions extends HTTPBatchLinkOptions>(
40
- requester: RequesterFn<TOptions>,
41
+ export function createHTTPBatchLink(
42
+ requester: RequesterFn<HTTPBatchLinkOptions<AnyRootTypes>>,
41
43
  ) {
42
44
  return function httpBatchLink<TRouter extends AnyRouter>(
43
- opts: TOptions,
45
+ opts: HTTPBatchLinkOptions<inferRootTypes<TRouter>>,
44
46
  ): TRPCLink<TRouter> {
45
47
  const resolvedOpts = resolveHTTPLinkOptions(opts);
46
48
  const maxURLLength = opts.maxURLLength ?? Infinity;
@@ -58,7 +60,6 @@ export function createHTTPBatchLink<TOptions extends HTTPBatchLinkOptions>(
58
60
 
59
61
  const url = getUrl({
60
62
  ...resolvedOpts,
61
- runtime,
62
63
  type,
63
64
  path,
64
65
  inputs,
@@ -97,7 +98,7 @@ export function createHTTPBatchLink<TOptions extends HTTPBatchLinkOptions>(
97
98
  _res = res;
98
99
  const transformed = transformResult(
99
100
  res.json,
100
- runtime.transformer,
101
+ resolvedOpts.transformer.output,
101
102
  );
102
103
 
103
104
  if (!transformed.ok) {