@trpc/client 10.28.0 → 10.28.1
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/TRPCClientError.d.ts +25 -25
- package/dist/TRPCClientError.d.ts.map +1 -1
- package/dist/createTRPCClient.d.ts +19 -19
- package/dist/createTRPCClientProxy.d.ts +38 -38
- package/dist/createTRPCClientProxy.d.ts.map +1 -1
- package/dist/createTRPCUntypedClient.d.ts +4 -4
- package/dist/getFetch.d.ts +2 -2
- package/dist/{httpUtils-1a07b2e6.js → httpUtils-00c8b54e.js} +125 -125
- package/dist/index.d.ts +6 -6
- package/dist/internals/TRPCUntypedClient.d.ts +61 -61
- package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
- package/dist/internals/dataLoader.d.ts +17 -17
- package/dist/internals/dataLoader.d.ts.map +1 -1
- package/dist/internals/getAbortController.d.ts +3 -3
- package/dist/internals/retryDelay.d.ts +1 -1
- package/dist/internals/types.d.ts +75 -102
- package/dist/internals/types.d.ts.map +1 -1
- package/dist/links/dedupeLink.d.ts +3 -3
- package/dist/links/httpBatchLink.d.ts +15 -15
- package/dist/links/httpFormDataLink.d.ts +1 -1
- package/dist/links/httpLink.d.ts +16 -16
- package/dist/links/index.d.ts +7 -7
- package/dist/links/internals/createChain.d.ts +7 -7
- package/dist/links/internals/httpUtils.d.ts +59 -59
- package/dist/links/internals/httpUtils.d.ts.map +1 -1
- package/dist/links/internals/isObject.d.ts +1 -1
- package/dist/links/loggerLink.d.ts +39 -39
- package/dist/links/loggerLink.d.ts.map +1 -1
- package/dist/links/retryLink.d.ts +5 -5
- package/dist/links/splitLink.d.ts +13 -13
- package/dist/links/types.d.ts +69 -69
- package/dist/links/types.d.ts.map +1 -1
- package/dist/links/wsLink.d.ts +28 -28
- package/dist/links/wsLink.d.ts.map +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/transformResult.d.ts +33 -33
- package/dist/{splitLink-aebd28df.js → splitLink-0df96fdc.js} +34 -34
- package/dist/{transformResult-fc4863b8.js → transformResult-ae8e970c.js} +80 -80
- package/package.json +6 -6
- package/src/internals/types.ts +0 -39
package/dist/links/types.d.ts
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
import { AnyRouter, CombinedDataTransformer, DataTransformer } from '@trpc/server';
|
|
2
|
-
import { Observable, Observer } from '@trpc/server/observable';
|
|
3
|
-
import { TRPCResultMessage, TRPCSuccessResponse } from '@trpc/server/rpc';
|
|
4
|
-
import { TRPCClientError } from '../TRPCClientError';
|
|
5
|
-
import { ResponseEsque } from '../internals/types';
|
|
6
|
-
/**
|
|
7
|
-
* @internal
|
|
8
|
-
*/
|
|
9
|
-
export
|
|
10
|
-
/**
|
|
11
|
-
* @internal
|
|
12
|
-
*/
|
|
13
|
-
export
|
|
14
|
-
promise: Promise<TValue>;
|
|
15
|
-
cancel: CancelFn;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* @internal
|
|
19
|
-
*/
|
|
20
|
-
export
|
|
21
|
-
/**
|
|
22
|
-
* @internal
|
|
23
|
-
*/
|
|
24
|
-
export
|
|
25
|
-
id: number;
|
|
26
|
-
type: 'query' | 'mutation' | 'subscription';
|
|
27
|
-
input: TInput;
|
|
28
|
-
path: string;
|
|
29
|
-
context: OperationContext;
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* @internal
|
|
33
|
-
*/
|
|
34
|
-
export
|
|
35
|
-
/**
|
|
36
|
-
* The default `fetch` implementation has an overloaded signature. By convention this library
|
|
37
|
-
* only uses the overload taking a string and options object.
|
|
38
|
-
*/
|
|
39
|
-
export
|
|
40
|
-
export interface TRPCClientRuntime {
|
|
41
|
-
transformer: DataTransformer;
|
|
42
|
-
combinedTransformer: CombinedDataTransformer;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* @internal
|
|
46
|
-
*/
|
|
47
|
-
export interface OperationResultEnvelope<TOutput> {
|
|
48
|
-
result: TRPCSuccessResponse<TOutput>['result'] | TRPCResultMessage<TOutput>['result'];
|
|
49
|
-
context?: OperationContext;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* @internal
|
|
53
|
-
*/
|
|
54
|
-
export
|
|
55
|
-
/**
|
|
56
|
-
* @internal
|
|
57
|
-
*/
|
|
58
|
-
export
|
|
59
|
-
/**
|
|
60
|
-
* @internal
|
|
61
|
-
*/
|
|
62
|
-
export
|
|
63
|
-
op: Operation<TInput>;
|
|
64
|
-
next: (op: Operation<TInput>) => OperationResultObservable<TRouter, TOutput>;
|
|
65
|
-
}) => OperationResultObservable<TRouter, TOutput>;
|
|
66
|
-
/**
|
|
67
|
-
* @public
|
|
68
|
-
*/
|
|
69
|
-
export
|
|
1
|
+
import { AnyRouter, CombinedDataTransformer, DataTransformer } from '@trpc/server';
|
|
2
|
+
import { Observable, Observer } from '@trpc/server/observable';
|
|
3
|
+
import { TRPCResultMessage, TRPCSuccessResponse } from '@trpc/server/rpc';
|
|
4
|
+
import { TRPCClientError } from '../TRPCClientError';
|
|
5
|
+
import { ResponseEsque } from '../internals/types';
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export type CancelFn = () => void;
|
|
10
|
+
/**
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export type PromiseAndCancel<TValue> = {
|
|
14
|
+
promise: Promise<TValue>;
|
|
15
|
+
cancel: CancelFn;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export type OperationContext = Record<string, unknown>;
|
|
21
|
+
/**
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export type Operation<TInput = unknown> = {
|
|
25
|
+
id: number;
|
|
26
|
+
type: 'query' | 'mutation' | 'subscription';
|
|
27
|
+
input: TInput;
|
|
28
|
+
path: string;
|
|
29
|
+
context: OperationContext;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
export type HTTPHeaders = Record<string, string | string[] | undefined>;
|
|
35
|
+
/**
|
|
36
|
+
* The default `fetch` implementation has an overloaded signature. By convention this library
|
|
37
|
+
* only uses the overload taking a string and options object.
|
|
38
|
+
*/
|
|
39
|
+
export type TRPCFetch = (url: string, options?: RequestInit) => Promise<ResponseEsque>;
|
|
40
|
+
export interface TRPCClientRuntime {
|
|
41
|
+
transformer: DataTransformer;
|
|
42
|
+
combinedTransformer: CombinedDataTransformer;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export interface OperationResultEnvelope<TOutput> {
|
|
48
|
+
result: TRPCSuccessResponse<TOutput>['result'] | TRPCResultMessage<TOutput>['result'];
|
|
49
|
+
context?: OperationContext;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
export type OperationResultObservable<TRouter extends AnyRouter, TOutput> = Observable<OperationResultEnvelope<TOutput>, TRPCClientError<TRouter>>;
|
|
55
|
+
/**
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
export type OperationResultObserver<TRouter extends AnyRouter, TOutput> = Observer<OperationResultEnvelope<TOutput>, TRPCClientError<TRouter>>;
|
|
59
|
+
/**
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
export type OperationLink<TRouter extends AnyRouter, TInput = unknown, TOutput = unknown> = (opts: {
|
|
63
|
+
op: Operation<TInput>;
|
|
64
|
+
next: (op: Operation<TInput>) => OperationResultObservable<TRouter, TOutput>;
|
|
65
|
+
}) => OperationResultObservable<TRouter, TOutput>;
|
|
66
|
+
/**
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
export type TRPCLink<TRouter extends AnyRouter> = (opts: TRPCClientRuntime) => OperationLink<TRouter>;
|
|
70
70
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/links/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/links/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;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,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvD;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,GAAG,OAAO,IAAI;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAExE;;;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,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GACtC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzC,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"}
|
package/dist/links/wsLink.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { AnyRouter, inferRouterError } from '@trpc/server';
|
|
2
|
-
import { Observer, UnsubscribeFn } from '@trpc/server/observable';
|
|
3
|
-
import { TRPCResponseMessage } from '@trpc/server/rpc';
|
|
4
|
-
import { TRPCClientError } from '../TRPCClientError';
|
|
5
|
-
import { retryDelay } from '../internals/retryDelay';
|
|
6
|
-
import { Operation, TRPCLink } from './types';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export interface WebSocketClientOptions {
|
|
10
|
-
url: string | (() => string);
|
|
11
|
-
WebSocket?: typeof WebSocket;
|
|
12
|
-
retryDelayMs?: typeof retryDelay;
|
|
13
|
-
onOpen?: () => void;
|
|
14
|
-
onClose?: (cause?: {
|
|
15
|
-
code?: number;
|
|
16
|
-
}) => void;
|
|
17
|
-
}
|
|
18
|
-
export declare function createWSClient(opts: WebSocketClientOptions): {
|
|
19
|
-
close: () => void;
|
|
20
|
-
request: (op: Operation, callbacks: WSCallbackObserver<AnyRouter, unknown>) => UnsubscribeFn;
|
|
21
|
-
getConnection(): WebSocket;
|
|
22
|
-
};
|
|
23
|
-
export
|
|
24
|
-
export interface WebSocketLinkOptions {
|
|
25
|
-
client: TRPCWebSocketClient;
|
|
26
|
-
}
|
|
27
|
-
export declare function wsLink<TRouter extends AnyRouter>(opts: WebSocketLinkOptions): TRPCLink<TRouter>;
|
|
28
|
-
export {};
|
|
1
|
+
import { AnyRouter, inferRouterError } from '@trpc/server';
|
|
2
|
+
import { Observer, UnsubscribeFn } from '@trpc/server/observable';
|
|
3
|
+
import { TRPCResponseMessage } from '@trpc/server/rpc';
|
|
4
|
+
import { TRPCClientError } from '../TRPCClientError';
|
|
5
|
+
import { retryDelay } from '../internals/retryDelay';
|
|
6
|
+
import { Operation, TRPCLink } from './types';
|
|
7
|
+
type WSCallbackResult<TRouter extends AnyRouter, TOutput> = TRPCResponseMessage<TOutput, inferRouterError<TRouter>>;
|
|
8
|
+
type WSCallbackObserver<TRouter extends AnyRouter, TOutput> = Observer<WSCallbackResult<TRouter, TOutput>, TRPCClientError<TRouter>>;
|
|
9
|
+
export interface WebSocketClientOptions {
|
|
10
|
+
url: string | (() => string);
|
|
11
|
+
WebSocket?: typeof WebSocket;
|
|
12
|
+
retryDelayMs?: typeof retryDelay;
|
|
13
|
+
onOpen?: () => void;
|
|
14
|
+
onClose?: (cause?: {
|
|
15
|
+
code?: number;
|
|
16
|
+
}) => void;
|
|
17
|
+
}
|
|
18
|
+
export declare function createWSClient(opts: WebSocketClientOptions): {
|
|
19
|
+
close: () => void;
|
|
20
|
+
request: (op: Operation, callbacks: WSCallbackObserver<AnyRouter, unknown>) => UnsubscribeFn;
|
|
21
|
+
getConnection(): WebSocket;
|
|
22
|
+
};
|
|
23
|
+
export type TRPCWebSocketClient = ReturnType<typeof createWSClient>;
|
|
24
|
+
export interface WebSocketLinkOptions {
|
|
25
|
+
client: TRPCWebSocketClient;
|
|
26
|
+
}
|
|
27
|
+
export declare function wsLink<TRouter extends AnyRouter>(opts: WebSocketLinkOptions): TRPCLink<TRouter>;
|
|
28
|
+
export {};
|
|
29
29
|
//# sourceMappingURL=wsLink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wsLink.d.ts","sourceRoot":"","sources":["../../src/links/wsLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAc,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAKL,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,
|
|
1
|
+
{"version":3,"file":"wsLink.d.ts","sourceRoot":"","sources":["../../src/links/wsLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAc,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAKL,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,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,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,UAAU,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,sBAAsB;;kBAwNpC,SAAS,wDAA0B,aAAa;;EAqDtE;AACD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AASD,wBAAgB,MAAM,CAAC,OAAO,SAAS,SAAS,EAC9C,IAAI,EAAE,oBAAoB,GACzB,QAAQ,CAAC,OAAO,CAAC,CA6CnB"}
|
package/dist/shared/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './transformResult';
|
|
1
|
+
export * from './transformResult';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import type { AnyRouter, inferRouterError } from '@trpc/server';
|
|
2
|
-
import type { TRPCResponse, TRPCResponseMessage } from '@trpc/server/rpc';
|
|
3
|
-
import type { TRPCClientRuntime } from '../links';
|
|
4
|
-
/** @internal */
|
|
5
|
-
declare function transformResultInner<TRouter extends AnyRouter, TOutput>(response: TRPCResponseMessage<TOutput, inferRouterError<TRouter>> | TRPCResponse<TOutput, inferRouterError<TRouter>>, runtime: TRPCClientRuntime): {
|
|
6
|
-
readonly ok: false;
|
|
7
|
-
readonly error: {
|
|
8
|
-
readonly error: inferRouterError<TRouter>;
|
|
9
|
-
readonly id?: import("@trpc/server/rpc").JSONRPC2.RequestId | undefined;
|
|
10
|
-
readonly jsonrpc?: "2.0" | undefined;
|
|
11
|
-
} | {
|
|
12
|
-
readonly error: inferRouterError<TRouter>;
|
|
13
|
-
readonly id: string | number | null;
|
|
14
|
-
readonly jsonrpc?: "2.0" | undefined;
|
|
15
|
-
};
|
|
16
|
-
readonly result?: undefined;
|
|
17
|
-
} | {
|
|
18
|
-
readonly ok: true;
|
|
19
|
-
readonly result: {
|
|
20
|
-
type: "started";
|
|
21
|
-
} | {
|
|
22
|
-
type: "stopped";
|
|
23
|
-
} | (import("@trpc/server/rpc").TRPCResult<TOutput> & {
|
|
24
|
-
type: "data";
|
|
25
|
-
});
|
|
26
|
-
readonly error?: undefined;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Transforms and validates that the result is a valid TRPCResponse
|
|
30
|
-
* @internal
|
|
31
|
-
*/
|
|
32
|
-
export declare function transformResult<TRouter extends AnyRouter, TOutput>(response: TRPCResponseMessage<TOutput, inferRouterError<TRouter>> | TRPCResponse<TOutput, inferRouterError<TRouter>>, runtime: TRPCClientRuntime): ReturnType<typeof transformResultInner>;
|
|
33
|
-
export {};
|
|
1
|
+
import type { AnyRouter, inferRouterError } from '@trpc/server';
|
|
2
|
+
import type { TRPCResponse, TRPCResponseMessage } from '@trpc/server/rpc';
|
|
3
|
+
import type { TRPCClientRuntime } from '../links';
|
|
4
|
+
/** @internal */
|
|
5
|
+
declare function transformResultInner<TRouter extends AnyRouter, TOutput>(response: TRPCResponseMessage<TOutput, inferRouterError<TRouter>> | TRPCResponse<TOutput, inferRouterError<TRouter>>, runtime: TRPCClientRuntime): {
|
|
6
|
+
readonly ok: false;
|
|
7
|
+
readonly error: {
|
|
8
|
+
readonly error: inferRouterError<TRouter>;
|
|
9
|
+
readonly id?: import("@trpc/server/rpc").JSONRPC2.RequestId | undefined;
|
|
10
|
+
readonly jsonrpc?: "2.0" | undefined;
|
|
11
|
+
} | {
|
|
12
|
+
readonly error: inferRouterError<TRouter>;
|
|
13
|
+
readonly id: string | number | null;
|
|
14
|
+
readonly jsonrpc?: "2.0" | undefined;
|
|
15
|
+
};
|
|
16
|
+
readonly result?: undefined;
|
|
17
|
+
} | {
|
|
18
|
+
readonly ok: true;
|
|
19
|
+
readonly result: {
|
|
20
|
+
type: "started";
|
|
21
|
+
} | {
|
|
22
|
+
type: "stopped";
|
|
23
|
+
} | (import("@trpc/server/rpc").TRPCResult<TOutput> & {
|
|
24
|
+
type: "data";
|
|
25
|
+
});
|
|
26
|
+
readonly error?: undefined;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Transforms and validates that the result is a valid TRPCResponse
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export declare function transformResult<TRouter extends AnyRouter, TOutput>(response: TRPCResponseMessage<TOutput, inferRouterError<TRouter>> | TRPCResponse<TOutput, inferRouterError<TRouter>>, runtime: TRPCClientRuntime): ReturnType<typeof transformResultInner>;
|
|
33
|
+
export {};
|
|
34
34
|
//# sourceMappingURL=transformResult.d.ts.map
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
import { observable } from '@trpc/server/observable';
|
|
2
2
|
|
|
3
|
-
/** @internal */
|
|
4
|
-
function createChain(opts) {
|
|
5
|
-
return observable((observer) => {
|
|
6
|
-
function execute(index = 0, op = opts.op) {
|
|
7
|
-
const next = opts.links[index];
|
|
8
|
-
if (!next) {
|
|
9
|
-
throw new Error('No more links to execute - did you forget to add an ending link?');
|
|
10
|
-
}
|
|
11
|
-
const subscription = next({
|
|
12
|
-
op,
|
|
13
|
-
next(nextOp) {
|
|
14
|
-
const nextObserver = execute(index + 1, nextOp);
|
|
15
|
-
return nextObserver;
|
|
16
|
-
},
|
|
17
|
-
});
|
|
18
|
-
return subscription;
|
|
19
|
-
}
|
|
20
|
-
const obs$ = execute();
|
|
21
|
-
return obs$.subscribe(observer);
|
|
22
|
-
});
|
|
3
|
+
/** @internal */
|
|
4
|
+
function createChain(opts) {
|
|
5
|
+
return observable((observer) => {
|
|
6
|
+
function execute(index = 0, op = opts.op) {
|
|
7
|
+
const next = opts.links[index];
|
|
8
|
+
if (!next) {
|
|
9
|
+
throw new Error('No more links to execute - did you forget to add an ending link?');
|
|
10
|
+
}
|
|
11
|
+
const subscription = next({
|
|
12
|
+
op,
|
|
13
|
+
next(nextOp) {
|
|
14
|
+
const nextObserver = execute(index + 1, nextOp);
|
|
15
|
+
return nextObserver;
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
return subscription;
|
|
19
|
+
}
|
|
20
|
+
const obs$ = execute();
|
|
21
|
+
return obs$.subscribe(observer);
|
|
22
|
+
});
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
function asArray(value) {
|
|
26
|
-
return Array.isArray(value) ? value : [value];
|
|
27
|
-
}
|
|
28
|
-
function splitLink(opts) {
|
|
29
|
-
return (runtime) => {
|
|
30
|
-
const yes = asArray(opts.true).map((link) => link(runtime));
|
|
31
|
-
const no = asArray(opts.false).map((link) => link(runtime));
|
|
32
|
-
return (props) => {
|
|
33
|
-
return observable((observer) => {
|
|
34
|
-
const links = opts.condition(props.op) ? yes : no;
|
|
35
|
-
return createChain({ op: props.op, links }).subscribe(observer);
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
};
|
|
25
|
+
function asArray(value) {
|
|
26
|
+
return Array.isArray(value) ? value : [value];
|
|
27
|
+
}
|
|
28
|
+
function splitLink(opts) {
|
|
29
|
+
return (runtime) => {
|
|
30
|
+
const yes = asArray(opts.true).map((link) => link(runtime));
|
|
31
|
+
const no = asArray(opts.false).map((link) => link(runtime));
|
|
32
|
+
return (props) => {
|
|
33
|
+
return observable((observer) => {
|
|
34
|
+
const links = opts.condition(props.op) ? yes : no;
|
|
35
|
+
return createChain({ op: props.op, links }).subscribe(observer);
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export { createChain as c, splitLink as s };
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
class TRPCClientError extends Error {
|
|
2
|
-
constructor(message, opts) {
|
|
3
|
-
const cause = opts?.cause;
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
5
|
-
// @ts-ignore https://github.com/tc39/proposal-error-cause
|
|
6
|
-
super(message, { cause });
|
|
7
|
-
this.meta = opts?.meta;
|
|
8
|
-
this.cause = cause;
|
|
9
|
-
this.shape = opts?.result?.error;
|
|
10
|
-
this.data = opts?.result?.error.data;
|
|
11
|
-
this.name = 'TRPCClientError';
|
|
12
|
-
Object.setPrototypeOf(this, TRPCClientError.prototype);
|
|
13
|
-
}
|
|
14
|
-
static from(cause, opts = {}) {
|
|
15
|
-
if (!(cause instanceof Error)) {
|
|
16
|
-
return new TRPCClientError(cause.error.message ?? '', {
|
|
17
|
-
...opts,
|
|
18
|
-
cause: undefined,
|
|
19
|
-
result: cause,
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
if (cause.name === 'TRPCClientError') {
|
|
23
|
-
return cause;
|
|
24
|
-
}
|
|
25
|
-
return new TRPCClientError(cause.message, {
|
|
26
|
-
...opts,
|
|
27
|
-
cause,
|
|
28
|
-
result: null,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
1
|
+
class TRPCClientError extends Error {
|
|
2
|
+
constructor(message, opts) {
|
|
3
|
+
const cause = opts?.cause;
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
5
|
+
// @ts-ignore https://github.com/tc39/proposal-error-cause
|
|
6
|
+
super(message, { cause });
|
|
7
|
+
this.meta = opts?.meta;
|
|
8
|
+
this.cause = cause;
|
|
9
|
+
this.shape = opts?.result?.error;
|
|
10
|
+
this.data = opts?.result?.error.data;
|
|
11
|
+
this.name = 'TRPCClientError';
|
|
12
|
+
Object.setPrototypeOf(this, TRPCClientError.prototype);
|
|
13
|
+
}
|
|
14
|
+
static from(cause, opts = {}) {
|
|
15
|
+
if (!(cause instanceof Error)) {
|
|
16
|
+
return new TRPCClientError(cause.error.message ?? '', {
|
|
17
|
+
...opts,
|
|
18
|
+
cause: undefined,
|
|
19
|
+
result: cause,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
if (cause.name === 'TRPCClientError') {
|
|
23
|
+
return cause;
|
|
24
|
+
}
|
|
25
|
+
return new TRPCClientError(cause.message, {
|
|
26
|
+
...opts,
|
|
27
|
+
cause,
|
|
28
|
+
result: null,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
function isObject(value) {
|
|
34
|
-
// check that value is object
|
|
35
|
-
return !!value && !Array.isArray(value) && typeof value === 'object';
|
|
33
|
+
function isObject(value) {
|
|
34
|
+
// check that value is object
|
|
35
|
+
return !!value && !Array.isArray(value) && typeof value === 'object';
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
// FIXME:
|
|
39
|
-
// - the generics here are probably unnecessary
|
|
40
|
-
// - the RPC-spec could probably be simplified to combine HTTP + WS
|
|
41
|
-
/** @internal */
|
|
42
|
-
function transformResultInner(response, runtime) {
|
|
43
|
-
if ('error' in response) {
|
|
44
|
-
const error = runtime.transformer.deserialize(response.error);
|
|
45
|
-
return {
|
|
46
|
-
ok: false,
|
|
47
|
-
error: {
|
|
48
|
-
...response,
|
|
49
|
-
error,
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
const result = {
|
|
54
|
-
...response.result,
|
|
55
|
-
...((!response.result.type || response.result.type === 'data') && {
|
|
56
|
-
type: 'data',
|
|
57
|
-
data: runtime.transformer.deserialize(response.result.data),
|
|
58
|
-
}),
|
|
59
|
-
};
|
|
60
|
-
return { ok: true, result };
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Transforms and validates that the result is a valid TRPCResponse
|
|
64
|
-
* @internal
|
|
65
|
-
*/
|
|
66
|
-
function transformResult(response, runtime) {
|
|
67
|
-
let result;
|
|
68
|
-
try {
|
|
69
|
-
// Use the data transformers on the JSON-response
|
|
70
|
-
result = transformResultInner(response, runtime);
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
throw new TRPCClientError('Unable to transform response from server');
|
|
74
|
-
}
|
|
75
|
-
// check that output of the transformers is a valid TRPCResponse
|
|
76
|
-
if (!result.ok &&
|
|
77
|
-
(!isObject(result.error.error) ||
|
|
78
|
-
typeof result.error.error.code !== 'number')) {
|
|
79
|
-
throw new TRPCClientError('Badly formatted response from server');
|
|
80
|
-
}
|
|
81
|
-
if (result.ok && !isObject(result.result)) {
|
|
82
|
-
throw new TRPCClientError('Badly formatted response from server');
|
|
83
|
-
}
|
|
84
|
-
return result;
|
|
38
|
+
// FIXME:
|
|
39
|
+
// - the generics here are probably unnecessary
|
|
40
|
+
// - the RPC-spec could probably be simplified to combine HTTP + WS
|
|
41
|
+
/** @internal */
|
|
42
|
+
function transformResultInner(response, runtime) {
|
|
43
|
+
if ('error' in response) {
|
|
44
|
+
const error = runtime.transformer.deserialize(response.error);
|
|
45
|
+
return {
|
|
46
|
+
ok: false,
|
|
47
|
+
error: {
|
|
48
|
+
...response,
|
|
49
|
+
error,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const result = {
|
|
54
|
+
...response.result,
|
|
55
|
+
...((!response.result.type || response.result.type === 'data') && {
|
|
56
|
+
type: 'data',
|
|
57
|
+
data: runtime.transformer.deserialize(response.result.data),
|
|
58
|
+
}),
|
|
59
|
+
};
|
|
60
|
+
return { ok: true, result };
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Transforms and validates that the result is a valid TRPCResponse
|
|
64
|
+
* @internal
|
|
65
|
+
*/
|
|
66
|
+
function transformResult(response, runtime) {
|
|
67
|
+
let result;
|
|
68
|
+
try {
|
|
69
|
+
// Use the data transformers on the JSON-response
|
|
70
|
+
result = transformResultInner(response, runtime);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
throw new TRPCClientError('Unable to transform response from server');
|
|
74
|
+
}
|
|
75
|
+
// check that output of the transformers is a valid TRPCResponse
|
|
76
|
+
if (!result.ok &&
|
|
77
|
+
(!isObject(result.error.error) ||
|
|
78
|
+
typeof result.error.error.code !== 'number')) {
|
|
79
|
+
throw new TRPCClientError('Badly formatted response from server');
|
|
80
|
+
}
|
|
81
|
+
if (result.ok && !isObject(result.result)) {
|
|
82
|
+
throw new TRPCClientError('Badly formatted response from server');
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
export { TRPCClientError as T, transformResult as t };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trpc/client",
|
|
3
|
-
"version": "10.28.
|
|
3
|
+
"version": "10.28.1",
|
|
4
4
|
"description": "The tRPC client library",
|
|
5
5
|
"author": "KATT",
|
|
6
6
|
"license": "MIT",
|
|
@@ -76,15 +76,15 @@
|
|
|
76
76
|
"!**/*.test.*"
|
|
77
77
|
],
|
|
78
78
|
"peerDependencies": {
|
|
79
|
-
"@trpc/server": "10.28.
|
|
79
|
+
"@trpc/server": "10.28.1"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
82
|
"@testing-library/dom": "^9.0.0",
|
|
83
|
-
"@trpc/server": "10.28.
|
|
83
|
+
"@trpc/server": "10.28.1",
|
|
84
84
|
"@types/isomorphic-fetch": "^0.0.36",
|
|
85
|
-
"@types/node": "^18.
|
|
85
|
+
"@types/node": "^18.16.16",
|
|
86
86
|
"eslint": "^8.40.0",
|
|
87
|
-
"expect-type": "^0.
|
|
87
|
+
"expect-type": "^0.16.0",
|
|
88
88
|
"isomorphic-fetch": "^3.0.0",
|
|
89
89
|
"node-fetch": "^3.3.0",
|
|
90
90
|
"rollup": "^2.79.1",
|
|
@@ -98,5 +98,5 @@
|
|
|
98
98
|
"funding": [
|
|
99
99
|
"https://trpc.io/sponsor"
|
|
100
100
|
],
|
|
101
|
-
"gitHead": "
|
|
101
|
+
"gitHead": "ea70b1c33899b66f964a7d11f5a8710148f03f8e"
|
|
102
102
|
}
|
package/src/internals/types.ts
CHANGED
|
@@ -43,33 +43,6 @@ export interface NodeFetchRequestInitEsque {
|
|
|
43
43
|
body?: string;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
/**
|
|
47
|
-
* A subset of the standard Headers properties needed by tRPC internally.
|
|
48
|
-
* @see Headers from lib.dom.d.ts
|
|
49
|
-
* @remarks
|
|
50
|
-
* If you need a property that you know exists but doesn't exist on this
|
|
51
|
-
* interface, go ahead and add it.
|
|
52
|
-
*/
|
|
53
|
-
export interface HeadersEsque {
|
|
54
|
-
append(name: string, value: string): void;
|
|
55
|
-
delete(name: string): void;
|
|
56
|
-
get(name: string): string | null;
|
|
57
|
-
has(name: string): boolean;
|
|
58
|
-
set(name: string, value: string): void;
|
|
59
|
-
forEach(
|
|
60
|
-
callbackfn: (value: string, key: string) => void,
|
|
61
|
-
thisArg?: any,
|
|
62
|
-
): void;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export type ResponseType =
|
|
66
|
-
| 'basic'
|
|
67
|
-
| 'cors'
|
|
68
|
-
| 'default'
|
|
69
|
-
| 'error'
|
|
70
|
-
| 'opaque'
|
|
71
|
-
| 'opaqueredirect';
|
|
72
|
-
|
|
73
46
|
/**
|
|
74
47
|
* A subset of the standard RequestInit properties needed by tRPC internally.
|
|
75
48
|
* @see RequestInit from lib.dom.d.ts
|
|
@@ -102,20 +75,8 @@ export interface RequestInitEsque {
|
|
|
102
75
|
/**
|
|
103
76
|
* A subset of the standard Response properties needed by tRPC internally.
|
|
104
77
|
* @see Response from lib.dom.d.ts
|
|
105
|
-
* @remarks
|
|
106
|
-
* If you need a property that you know exists but doesn't exist on this
|
|
107
|
-
* interface, go ahead and add it.
|
|
108
78
|
*/
|
|
109
79
|
export interface ResponseEsque {
|
|
110
|
-
readonly headers: HeadersEsque;
|
|
111
|
-
readonly ok: boolean;
|
|
112
|
-
readonly redirected: boolean;
|
|
113
|
-
readonly status: number;
|
|
114
|
-
readonly statusText: string;
|
|
115
|
-
readonly type: ResponseType;
|
|
116
|
-
readonly url: string;
|
|
117
|
-
clone(): ResponseEsque;
|
|
118
|
-
|
|
119
80
|
/**
|
|
120
81
|
* @remarks
|
|
121
82
|
* The built-in Response::json() method returns Promise<any>, but
|