@trpc/client 11.0.0-next-beta.248 → 11.0.0-next-beta.249
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-analysis.json +63 -48
- package/dist/internals/TRPCUntypedClient.d.ts +3 -20
- package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
- package/dist/internals/TRPCUntypedClient.js +1 -29
- package/dist/internals/TRPCUntypedClient.mjs +1 -29
- package/dist/links/HTTPBatchLinkOptions.d.ts +3 -2
- package/dist/links/HTTPBatchLinkOptions.d.ts.map +1 -1
- package/dist/links/httpBatchLink.d.ts +1 -1
- package/dist/links/httpBatchLink.d.ts.map +1 -1
- package/dist/links/httpBatchStreamLink.d.ts +4 -3
- package/dist/links/httpBatchStreamLink.d.ts.map +1 -1
- package/dist/links/httpFormDataLink.d.ts +1 -1
- package/dist/links/httpFormDataLink.d.ts.map +1 -1
- package/dist/links/httpLink.d.ts +5 -5
- package/dist/links/httpLink.d.ts.map +1 -1
- package/dist/links/httpLink.js +2 -3
- package/dist/links/httpLink.mjs +2 -3
- package/dist/links/internals/createHTTPBatchLink.d.ts +3 -3
- package/dist/links/internals/createHTTPBatchLink.d.ts.map +1 -1
- package/dist/links/internals/createHTTPBatchLink.js +1 -2
- package/dist/links/internals/createHTTPBatchLink.mjs +1 -2
- package/dist/links/internals/httpUtils.d.ts +8 -6
- package/dist/links/internals/httpUtils.d.ts.map +1 -1
- package/dist/links/internals/httpUtils.js +4 -2
- package/dist/links/internals/httpUtils.mjs +4 -2
- package/dist/links/types.d.ts +7 -9
- package/dist/links/types.d.ts.map +1 -1
- package/dist/links/wsLink.d.ts +5 -4
- package/dist/links/wsLink.d.ts.map +1 -1
- package/dist/links/wsLink.js +5 -3
- package/dist/links/wsLink.mjs +5 -3
- package/dist/unstable-internals.d.ts +33 -0
- package/dist/unstable-internals.d.ts.map +1 -0
- package/dist/unstable-internals.js +28 -0
- package/dist/unstable-internals.mjs +26 -0
- package/package.json +10 -4
- package/src/internals/TRPCUntypedClient.ts +6 -61
- package/src/links/HTTPBatchLinkOptions.ts +14 -12
- package/src/links/httpBatchLink.ts +4 -1
- package/src/links/httpBatchStreamLink.ts +11 -9
- package/src/links/httpLink.ts +17 -14
- package/src/links/internals/createHTTPBatchLink.ts +7 -6
- package/src/links/internals/httpUtils.ts +15 -11
- package/src/links/types.ts +13 -15
- package/src/links/wsLink.ts +10 -6
- package/src/unstable-internals.ts +67 -0
- package/unstable-internals/index.d.ts +1 -0
- 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,
|
|
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.
|
|
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.
|
|
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;
|
package/dist/links/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Observable, Observer } from '@trpc/server/observable';
|
|
2
|
-
import type {
|
|
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<
|
|
55
|
+
export type OperationResultObservable<TInferrable extends TRPCInferrable, TOutput> = Observable<OperationResultEnvelope<TOutput>, TRPCClientError<TInferrable>>;
|
|
58
56
|
/**
|
|
59
57
|
* @internal
|
|
60
58
|
*/
|
|
61
|
-
export type OperationResultObserver<
|
|
59
|
+
export type OperationResultObserver<TInferrable extends TRPCInferrable, TOutput> = Observer<OperationResultEnvelope<TOutput>, TRPCClientError<TInferrable>>;
|
|
62
60
|
/**
|
|
63
61
|
* @internal
|
|
64
62
|
*/
|
|
65
|
-
export type OperationLink<
|
|
63
|
+
export type OperationLink<TInferrable extends TRPCInferrable, TInput = unknown, TOutput = unknown> = (opts: {
|
|
66
64
|
op: Operation<TInput>;
|
|
67
|
-
next: (op: Operation<TInput>) => OperationResultObservable<
|
|
68
|
-
}) => OperationResultObservable<
|
|
65
|
+
next: (op: Operation<TInput>) => OperationResultObservable<TInferrable, TOutput>;
|
|
66
|
+
}) => OperationResultObservable<TInferrable, TOutput>;
|
|
69
67
|
/**
|
|
70
68
|
* @public
|
|
71
69
|
*/
|
|
72
|
-
export type TRPCLink<
|
|
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,
|
|
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"}
|
package/dist/links/wsLink.d.ts
CHANGED
|
@@ -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
|
|
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,
|
|
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"}
|
package/dist/links/wsLink.js
CHANGED
|
@@ -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
|
-
|
|
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 =
|
|
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,
|
|
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;
|
package/dist/links/wsLink.mjs
CHANGED
|
@@ -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
|
-
|
|
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 =
|
|
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,
|
|
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.
|
|
3
|
+
"version": "11.0.0-next-beta.249+53c90b2f6",
|
|
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.
|
|
53
|
+
"@trpc/server": "11.0.0-next-beta.249+53c90b2f6"
|
|
48
54
|
},
|
|
49
55
|
"devDependencies": {
|
|
50
56
|
"@testing-library/dom": "^9.0.0",
|
|
51
|
-
"@trpc/server": "11.0.0-next-beta.
|
|
57
|
+
"@trpc/server": "11.0.0-next-beta.249+53c90b2f6",
|
|
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": "
|
|
74
|
+
"gitHead": "53c90b2f66f002e3797a043899f0c9fe34dededb"
|
|
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
|
-
|
|
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
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
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
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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);
|
package/src/links/httpLink.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { observable } from '@trpc/server/observable';
|
|
2
|
-
import type {
|
|
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
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
|
40
|
-
requester: RequesterFn<
|
|
41
|
+
export function createHTTPBatchLink(
|
|
42
|
+
requester: RequesterFn<HTTPBatchLinkOptions<AnyRootTypes>>,
|
|
41
43
|
) {
|
|
42
44
|
return function httpBatchLink<TRouter extends AnyRouter>(
|
|
43
|
-
opts:
|
|
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
|
-
|
|
101
|
+
resolvedOpts.transformer.output,
|
|
101
102
|
);
|
|
102
103
|
|
|
103
104
|
if (!transformed.ok) {
|