@trpc/client 10.27.3 → 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.
Files changed (47) hide show
  1. package/dist/TRPCClientError.d.ts +25 -25
  2. package/dist/TRPCClientError.d.ts.map +1 -1
  3. package/dist/createTRPCClient.d.ts +19 -19
  4. package/dist/createTRPCClientProxy.d.ts +38 -38
  5. package/dist/createTRPCClientProxy.d.ts.map +1 -1
  6. package/dist/createTRPCUntypedClient.d.ts +4 -4
  7. package/dist/getFetch.d.ts +2 -2
  8. package/dist/{httpUtils-1a07b2e6.js → httpUtils-00c8b54e.js} +125 -125
  9. package/dist/index.d.ts +6 -6
  10. package/dist/internals/TRPCUntypedClient.d.ts +61 -61
  11. package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
  12. package/dist/internals/dataLoader.d.ts +17 -17
  13. package/dist/internals/dataLoader.d.ts.map +1 -1
  14. package/dist/internals/getAbortController.d.ts +3 -3
  15. package/dist/internals/retryDelay.d.ts +1 -1
  16. package/dist/internals/types.d.ts +75 -102
  17. package/dist/internals/types.d.ts.map +1 -1
  18. package/dist/links/dedupeLink.d.ts +3 -3
  19. package/dist/links/httpBatchLink.d.ts +15 -15
  20. package/dist/links/httpFormDataLink.d.ts +1 -1
  21. package/dist/links/httpLink.d.ts +16 -16
  22. package/dist/links/index.d.ts +7 -7
  23. package/dist/links/internals/createChain.d.ts +7 -7
  24. package/dist/links/internals/httpUtils.d.ts +59 -59
  25. package/dist/links/internals/httpUtils.d.ts.map +1 -1
  26. package/dist/links/internals/isObject.d.ts +1 -1
  27. package/dist/links/loggerLink.d.ts +39 -39
  28. package/dist/links/loggerLink.d.ts.map +1 -1
  29. package/dist/links/retryLink.d.ts +5 -5
  30. package/dist/links/splitLink.d.ts +13 -13
  31. package/dist/links/types.d.ts +69 -69
  32. package/dist/links/types.d.ts.map +1 -1
  33. package/dist/links/wsLink.d.ts +28 -28
  34. package/dist/links/wsLink.d.ts.map +1 -1
  35. package/dist/links/wsLink.js +9 -17
  36. package/dist/links/wsLink.mjs +9 -17
  37. package/dist/shared/index.d.ts +1 -1
  38. package/dist/shared/transformResult.d.ts +33 -33
  39. package/dist/{splitLink-aebd28df.js → splitLink-0df96fdc.js} +34 -34
  40. package/dist/{transformResult-fc4863b8.js → transformResult-ae8e970c.js} +80 -80
  41. package/package.json +11 -7
  42. package/src/internals/types.ts +0 -39
  43. package/src/links/wsLink.ts +10 -24
  44. package/src/internals/types.test.ts +0 -66
  45. package/src/links/dedupeLink.test.ts +0 -128
  46. package/src/links/internals/createChain.test.ts +0 -117
  47. package/src/links/splitLink.test.ts +0 -55
@@ -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 declare type CancelFn = () => void;
10
- /**
11
- * @internal
12
- */
13
- export declare type PromiseAndCancel<TValue> = {
14
- promise: Promise<TValue>;
15
- cancel: CancelFn;
16
- };
17
- /**
18
- * @internal
19
- */
20
- export declare type OperationContext = Record<string, unknown>;
21
- /**
22
- * @internal
23
- */
24
- export declare 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 declare 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 declare 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 declare type OperationResultObservable<TRouter extends AnyRouter, TOutput> = Observable<OperationResultEnvelope<TOutput>, TRPCClientError<TRouter>>;
55
- /**
56
- * @internal
57
- */
58
- export declare type OperationResultObserver<TRouter extends AnyRouter, TOutput> = Observer<OperationResultEnvelope<TOutput>, TRPCClientError<TRouter>>;
59
- /**
60
- * @internal
61
- */
62
- export declare 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 declare type TRPCLink<TRouter extends AnyRouter> = (opts: TRPCClientRuntime) => OperationLink<TRouter>;
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,oBAAY,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC;;GAEG;AACH,oBAAY,gBAAgB,CAAC,MAAM,IAAI;IACrC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,oBAAY,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvD;;GAEG;AACH,oBAAY,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,oBAAY,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAExE;;;GAGG;AACH,oBAAY,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,oBAAY,yBAAyB,CACnC,OAAO,SAAS,SAAS,EACzB,OAAO,IACL,UAAU,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3E;;GAEG;AACH,oBAAY,uBAAuB,CACjC,OAAO,SAAS,SAAS,EACzB,OAAO,IACL,QAAQ,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,oBAAY,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,oBAAY,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,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"}
@@ -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
- declare type WSCallbackResult<TRouter extends AnyRouter, TOutput> = TRPCResponseMessage<TOutput, inferRouterError<TRouter>>;
8
- declare 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 declare 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 {};
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,aAAK,gBAAgB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,mBAAmB,CAC7E,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CAAC;AAEF,aAAK,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;;kBAgNpC,SAAS,wDAA0B,aAAa;;EAoDtE;AACD,oBAAY,mBAAmB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAiBD,wBAAgB,MAAM,CAAC,OAAO,SAAS,SAAS,EAC9C,IAAI,EAAE,oBAAoB,GACzB,QAAQ,CAAC,OAAO,CAAC,CA4DnB"}
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"}
@@ -67,6 +67,13 @@ function createWSClient(opts) {
67
67
  conn.close();
68
68
  }
69
69
  }
70
+ function closeActiveSubscriptions() {
71
+ Object.values(pendingRequests).forEach((req)=>{
72
+ if (req.type === 'subscription') {
73
+ req.callbacks.complete();
74
+ }
75
+ });
76
+ }
70
77
  function resumeSubscriptionOnReconnect(req) {
71
78
  if (outgoing.some((r)=>r.id === req.op.id)) {
72
79
  return;
@@ -205,6 +212,7 @@ function createWSClient(opts) {
205
212
  close: ()=>{
206
213
  state = 'closed';
207
214
  onClose?.();
215
+ closeActiveSubscriptions();
208
216
  closeIfNoPending(activeConnection);
209
217
  clearTimeout(connectTimer);
210
218
  connectTimer = null;
@@ -222,13 +230,6 @@ class TRPCWebSocketClosedError extends Error {
222
230
  Object.setPrototypeOf(this, TRPCWebSocketClosedError.prototype);
223
231
  }
224
232
  }
225
- class TRPCSubscriptionEndedError extends Error {
226
- constructor(message){
227
- super(message);
228
- this.name = 'TRPCSubscriptionEndedError';
229
- Object.setPrototypeOf(this, TRPCSubscriptionEndedError.prototype);
230
- }
231
- }
232
233
  function wsLink(opts) {
233
234
  return (runtime)=>{
234
235
  const { client } = opts;
@@ -236,7 +237,6 @@ function wsLink(opts) {
236
237
  return observable.observable((observer)=>{
237
238
  const { type , path , id , context } = op;
238
239
  const input = runtime.transformer.serialize(op.input);
239
- let isDone = false;
240
240
  const unsub = client.request({
241
241
  type,
242
242
  path,
@@ -245,17 +245,11 @@ function wsLink(opts) {
245
245
  context
246
246
  }, {
247
247
  error (err) {
248
- isDone = true;
249
248
  observer.error(err);
250
249
  unsub();
251
250
  },
252
251
  complete () {
253
- if (!isDone) {
254
- isDone = true;
255
- observer.error(transformResult.TRPCClientError.from(new TRPCSubscriptionEndedError('Operation ended prematurely')));
256
- } else {
257
- observer.complete();
258
- }
252
+ observer.complete();
259
253
  },
260
254
  next (message) {
261
255
  const transformed = transformResult.transformResult(message, runtime);
@@ -268,14 +262,12 @@ function wsLink(opts) {
268
262
  });
269
263
  if (op.type !== 'subscription') {
270
264
  // if it isn't a subscription we don't care about next response
271
- isDone = true;
272
265
  unsub();
273
266
  observer.complete();
274
267
  }
275
268
  }
276
269
  });
277
270
  return ()=>{
278
- isDone = true;
279
271
  unsub();
280
272
  };
281
273
  });
@@ -63,6 +63,13 @@ function createWSClient(opts) {
63
63
  conn.close();
64
64
  }
65
65
  }
66
+ function closeActiveSubscriptions() {
67
+ Object.values(pendingRequests).forEach((req)=>{
68
+ if (req.type === 'subscription') {
69
+ req.callbacks.complete();
70
+ }
71
+ });
72
+ }
66
73
  function resumeSubscriptionOnReconnect(req) {
67
74
  if (outgoing.some((r)=>r.id === req.op.id)) {
68
75
  return;
@@ -201,6 +208,7 @@ function createWSClient(opts) {
201
208
  close: ()=>{
202
209
  state = 'closed';
203
210
  onClose?.();
211
+ closeActiveSubscriptions();
204
212
  closeIfNoPending(activeConnection);
205
213
  clearTimeout(connectTimer);
206
214
  connectTimer = null;
@@ -218,13 +226,6 @@ class TRPCWebSocketClosedError extends Error {
218
226
  Object.setPrototypeOf(this, TRPCWebSocketClosedError.prototype);
219
227
  }
220
228
  }
221
- class TRPCSubscriptionEndedError extends Error {
222
- constructor(message){
223
- super(message);
224
- this.name = 'TRPCSubscriptionEndedError';
225
- Object.setPrototypeOf(this, TRPCSubscriptionEndedError.prototype);
226
- }
227
- }
228
229
  function wsLink(opts) {
229
230
  return (runtime)=>{
230
231
  const { client } = opts;
@@ -232,7 +233,6 @@ function wsLink(opts) {
232
233
  return observable((observer)=>{
233
234
  const { type , path , id , context } = op;
234
235
  const input = runtime.transformer.serialize(op.input);
235
- let isDone = false;
236
236
  const unsub = client.request({
237
237
  type,
238
238
  path,
@@ -241,17 +241,11 @@ function wsLink(opts) {
241
241
  context
242
242
  }, {
243
243
  error (err) {
244
- isDone = true;
245
244
  observer.error(err);
246
245
  unsub();
247
246
  },
248
247
  complete () {
249
- if (!isDone) {
250
- isDone = true;
251
- observer.error(TRPCClientError.from(new TRPCSubscriptionEndedError('Operation ended prematurely')));
252
- } else {
253
- observer.complete();
254
- }
248
+ observer.complete();
255
249
  },
256
250
  next (message) {
257
251
  const transformed = transformResult(message, runtime);
@@ -264,14 +258,12 @@ function wsLink(opts) {
264
258
  });
265
259
  if (op.type !== 'subscription') {
266
260
  // if it isn't a subscription we don't care about next response
267
- isDone = true;
268
261
  unsub();
269
262
  observer.complete();
270
263
  }
271
264
  }
272
265
  });
273
266
  return ()=>{
274
- isDone = true;
275
267
  unsub();
276
268
  };
277
269
  });
@@ -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 };