@trpc/client 10.0.0-alpha.2 → 10.0.0-alpha.22

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 (183) hide show
  1. package/dist/{declarations/src/TRPCClientError.d.ts → TRPCClientError.d.ts} +21 -29
  2. package/dist/TRPCClientError.d.ts.map +1 -0
  3. package/dist/{declarations/src/createTRPCClient.d.ts → createTRPCClient.d.ts} +5 -5
  4. package/dist/createTRPCClient.d.ts.map +1 -0
  5. package/dist/{declarations/src/getFetch.d.ts → getFetch.d.ts} +1 -1
  6. package/dist/getFetch.d.ts.map +1 -0
  7. package/dist/{declarations/src/index.d.ts → index.d.ts} +4 -4
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +1417 -0
  10. package/dist/index.mjs +1391 -0
  11. package/dist/index.ts.js +1 -0
  12. package/dist/{declarations/src/internals → internals}/TRPCClient.d.ts +61 -64
  13. package/dist/internals/TRPCClient.d.ts.map +1 -0
  14. package/dist/{declarations/src/internals → internals}/dataLoader.d.ts +17 -14
  15. package/dist/internals/dataLoader.d.ts.map +1 -0
  16. package/dist/{declarations/src/internals → internals}/fetchHelpers.d.ts +2 -2
  17. package/dist/internals/fetchHelpers.d.ts.map +1 -0
  18. package/dist/{declarations/src/internals → internals}/retryDelay.d.ts +1 -1
  19. package/dist/internals/retryDelay.d.ts.map +1 -0
  20. package/dist/links/dedupeLink.d.ts +4 -0
  21. package/dist/links/dedupeLink.d.ts.map +1 -0
  22. package/dist/links/httpBatchLink.d.ts +8 -0
  23. package/dist/links/httpBatchLink.d.ts.map +1 -0
  24. package/dist/{declarations/src/links → links}/httpLink.d.ts +4 -4
  25. package/dist/links/httpLink.d.ts.map +1 -0
  26. package/dist/links/index.d.ts +9 -0
  27. package/dist/links/index.d.ts.map +1 -0
  28. package/dist/{declarations/src/links → links}/internals/createChain.d.ts +7 -7
  29. package/dist/links/internals/createChain.d.ts.map +1 -0
  30. package/dist/links/internals/httpUtils.d.ts +30 -0
  31. package/dist/links/internals/httpUtils.d.ts.map +1 -0
  32. package/dist/links/internals/transformOperationResult.d.ts +30 -0
  33. package/dist/links/internals/transformOperationResult.d.ts.map +1 -0
  34. package/dist/{declarations/src/links → links}/loggerLink.d.ts +38 -38
  35. package/dist/links/loggerLink.d.ts.map +1 -0
  36. package/dist/links/retryLink.d.ts +6 -0
  37. package/dist/links/retryLink.d.ts.map +1 -0
  38. package/dist/{declarations/src/links → links}/splitLink.d.ts +13 -13
  39. package/dist/links/splitLink.d.ts.map +1 -0
  40. package/dist/{declarations/src/links → links}/types.d.ts +42 -39
  41. package/dist/links/types.d.ts.map +1 -0
  42. package/dist/{declarations/src/links → links}/wsLink.d.ts +19 -19
  43. package/dist/links/wsLink.d.ts.map +1 -0
  44. package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.cjs.dev.js +68 -38
  45. package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.cjs.prod.js +68 -38
  46. package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.esm.js +67 -37
  47. package/links/httpLink/dist/trpc-client-links-httpLink.cjs.dev.js +52 -29
  48. package/links/httpLink/dist/trpc-client-links-httpLink.cjs.prod.js +52 -29
  49. package/links/httpLink/dist/trpc-client-links-httpLink.esm.js +52 -29
  50. package/links/loggerLink/dist/trpc-client-links-loggerLink.cjs.dev.js +19 -31
  51. package/links/loggerLink/dist/trpc-client-links-loggerLink.cjs.prod.js +19 -31
  52. package/links/loggerLink/dist/trpc-client-links-loggerLink.esm.js +19 -31
  53. package/links/splitLink/dist/trpc-client-links-splitLink.cjs.dev.js +7 -20
  54. package/links/splitLink/dist/trpc-client-links-splitLink.cjs.prod.js +7 -20
  55. package/links/splitLink/dist/trpc-client-links-splitLink.esm.js +7 -20
  56. package/links/wsLink/dist/trpc-client-links-wsLink.cjs.dev.js +84 -60
  57. package/links/wsLink/dist/trpc-client-links-wsLink.cjs.prod.js +84 -60
  58. package/links/wsLink/dist/trpc-client-links-wsLink.esm.js +84 -60
  59. package/package.json +26 -23
  60. package/src/TRPCClientError.ts +3 -11
  61. package/src/createTRPCClient.ts +1 -1
  62. package/src/index.ts +1 -1
  63. package/src/internals/TRPCClient.ts +52 -36
  64. package/src/internals/dataLoader.ts +120 -45
  65. package/src/links/dedupeLink.test.ts +1 -1
  66. package/src/links/dedupeLink.ts +3 -5
  67. package/src/links/httpBatchLink.ts +64 -31
  68. package/src/links/httpLink.ts +4 -4
  69. package/src/links/index.ts +8 -0
  70. package/src/links/internals/createChain.test.ts +5 -5
  71. package/src/links/internals/createChain.ts +3 -3
  72. package/src/links/internals/httpUtils.ts +116 -0
  73. package/src/links/internals/transformOperationResult.ts +40 -12
  74. package/src/links/loggerLink.ts +1 -2
  75. package/src/links/retryLink.ts +1 -2
  76. package/src/links/splitLink.test.ts +3 -3
  77. package/src/links/splitLink.ts +5 -5
  78. package/src/links/types.ts +13 -8
  79. package/src/links/wsLink.ts +12 -12
  80. package/dist/TRPCClientError-a5312a5f.cjs.dev.js +0 -74
  81. package/dist/TRPCClientError-e1da1ef0.esm.js +0 -72
  82. package/dist/TRPCClientError-ea7d89b2.cjs.prod.js +0 -74
  83. package/dist/createChain-93a38e1c.cjs.dev.js +0 -27
  84. package/dist/createChain-e45e052a.cjs.prod.js +0 -27
  85. package/dist/createChain-e45e6cf2.esm.js +0 -25
  86. package/dist/declarations/src/TRPCClientError.d.ts.map +0 -1
  87. package/dist/declarations/src/createTRPCClient.d.ts.map +0 -1
  88. package/dist/declarations/src/getFetch.d.ts.map +0 -1
  89. package/dist/declarations/src/index.d.ts.map +0 -1
  90. package/dist/declarations/src/internals/TRPCClient.d.ts.map +0 -1
  91. package/dist/declarations/src/internals/dataLoader.d.ts.map +0 -1
  92. package/dist/declarations/src/internals/fetchHelpers.d.ts.map +0 -1
  93. package/dist/declarations/src/internals/retryDelay.d.ts.map +0 -1
  94. package/dist/declarations/src/links/httpBatchLink.d.ts +0 -5
  95. package/dist/declarations/src/links/httpBatchLink.d.ts.map +0 -1
  96. package/dist/declarations/src/links/httpLink.d.ts.map +0 -1
  97. package/dist/declarations/src/links/httpUtils.d.ts +0 -22
  98. package/dist/declarations/src/links/httpUtils.d.ts.map +0 -1
  99. package/dist/declarations/src/links/internals/createChain.d.ts.map +0 -1
  100. package/dist/declarations/src/links/internals/transformOperationResult.d.ts +0 -16
  101. package/dist/declarations/src/links/internals/transformOperationResult.d.ts.map +0 -1
  102. package/dist/declarations/src/links/loggerLink.d.ts.map +0 -1
  103. package/dist/declarations/src/links/splitLink.d.ts.map +0 -1
  104. package/dist/declarations/src/links/transformerLink.d.ts +0 -4
  105. package/dist/declarations/src/links/transformerLink.d.ts.map +0 -1
  106. package/dist/declarations/src/links/types.d.ts.map +0 -1
  107. package/dist/declarations/src/links/wsLink.d.ts.map +0 -1
  108. package/dist/declarations/src/rx/index.d.ts +0 -3
  109. package/dist/declarations/src/rx/index.d.ts.map +0 -1
  110. package/dist/declarations/src/rx/observable.d.ts +0 -4
  111. package/dist/declarations/src/rx/observable.d.ts.map +0 -1
  112. package/dist/declarations/src/rx/operators/index.d.ts +0 -4
  113. package/dist/declarations/src/rx/operators/index.d.ts.map +0 -1
  114. package/dist/declarations/src/rx/operators/map.d.ts +0 -3
  115. package/dist/declarations/src/rx/operators/map.d.ts.map +0 -1
  116. package/dist/declarations/src/rx/operators/share.d.ts +0 -6
  117. package/dist/declarations/src/rx/operators/share.d.ts.map +0 -1
  118. package/dist/declarations/src/rx/operators/tap.d.ts +0 -3
  119. package/dist/declarations/src/rx/operators/tap.d.ts.map +0 -1
  120. package/dist/declarations/src/rx/types.d.ts +0 -29
  121. package/dist/declarations/src/rx/types.d.ts.map +0 -1
  122. package/dist/declarations/src/rx/util/identity.d.ts +0 -2
  123. package/dist/declarations/src/rx/util/identity.d.ts.map +0 -1
  124. package/dist/declarations/src/rx/util/observableToPromise.d.ts +0 -10
  125. package/dist/declarations/src/rx/util/observableToPromise.d.ts.map +0 -1
  126. package/dist/declarations/src/rx/util/pipe.d.ts +0 -4
  127. package/dist/declarations/src/rx/util/pipe.d.ts.map +0 -1
  128. package/dist/httpUtils-299a66f6.cjs.prod.js +0 -89
  129. package/dist/httpUtils-a1426e14.cjs.dev.js +0 -89
  130. package/dist/httpUtils-e45c9056.esm.js +0 -87
  131. package/dist/observable-01534ea8.esm.js +0 -102
  132. package/dist/observable-9aad8c3e.cjs.dev.js +0 -104
  133. package/dist/observable-ccb54234.cjs.prod.js +0 -104
  134. package/dist/share-5a8c2543.cjs.prod.js +0 -106
  135. package/dist/share-ca585761.esm.js +0 -104
  136. package/dist/share-f2ac9332.cjs.dev.js +0 -106
  137. package/dist/tap-2d565250.cjs.dev.js +0 -32
  138. package/dist/tap-606957cb.esm.js +0 -30
  139. package/dist/tap-d907998d.cjs.prod.js +0 -32
  140. package/dist/trpc-client.cjs.d.ts +0 -1
  141. package/dist/trpc-client.cjs.dev.js +0 -300
  142. package/dist/trpc-client.cjs.js +0 -7
  143. package/dist/trpc-client.cjs.prod.js +0 -300
  144. package/dist/trpc-client.esm.js +0 -295
  145. package/links/httpBatchLink/package.json +0 -4
  146. package/links/httpLink/package.json +0 -4
  147. package/links/loggerLink/package.json +0 -4
  148. package/links/splitLink/package.json +0 -4
  149. package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.d.ts +0 -1
  150. package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.dev.js +0 -67
  151. package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.js +0 -7
  152. package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.prod.js +0 -67
  153. package/links/transformerLink/dist/trpc-client-links-transformerLink.esm.js +0 -63
  154. package/links/transformerLink/package.json +0 -4
  155. package/links/wsLink/package.json +0 -4
  156. package/rx/dist/trpc-client-rx.cjs.d.ts +0 -1
  157. package/rx/dist/trpc-client-rx.cjs.dev.js +0 -9
  158. package/rx/dist/trpc-client-rx.cjs.js +0 -7
  159. package/rx/dist/trpc-client-rx.cjs.prod.js +0 -9
  160. package/rx/dist/trpc-client-rx.esm.js +0 -1
  161. package/rx/operators/dist/trpc-client-rx-operators.cjs.d.ts +0 -1
  162. package/rx/operators/dist/trpc-client-rx-operators.cjs.dev.js +0 -39
  163. package/rx/operators/dist/trpc-client-rx-operators.cjs.js +0 -7
  164. package/rx/operators/dist/trpc-client-rx-operators.cjs.prod.js +0 -39
  165. package/rx/operators/dist/trpc-client-rx-operators.esm.js +0 -33
  166. package/rx/operators/package.json +0 -4
  167. package/rx/package.json +0 -4
  168. package/src/internals/transformRPCResponse.ts +0 -25
  169. package/src/links/httpUtils.ts +0 -94
  170. package/src/links/transformerLink.ts +0 -70
  171. package/src/rx/index.ts +0 -2
  172. package/src/rx/observable.test.ts +0 -83
  173. package/src/rx/observable.ts +0 -70
  174. package/src/rx/operators/index.ts +0 -3
  175. package/src/rx/operators/map.test.ts +0 -92
  176. package/src/rx/operators/map.ts +0 -25
  177. package/src/rx/operators/share.test.ts +0 -60
  178. package/src/rx/operators/share.ts +0 -67
  179. package/src/rx/operators/tap.ts +0 -26
  180. package/src/rx/types.ts +0 -69
  181. package/src/rx/util/identity.ts +0 -3
  182. package/src/rx/util/observableToPromise.ts +0 -49
  183. package/src/rx/util/pipe.ts +0 -22
@@ -0,0 +1,116 @@
1
+ import { ProcedureType } from '@trpc/server';
2
+ import { PromiseAndCancel, TRPCClientRuntime } from '../types';
3
+
4
+ export interface HTTPLinkOptions {
5
+ url: string;
6
+ }
7
+
8
+ // https://github.com/trpc/trpc/pull/669
9
+ function arrayToDict(array: unknown[]) {
10
+ const dict: Record<number, unknown> = {};
11
+ for (let index = 0; index < array.length; index++) {
12
+ const element = array[index];
13
+ dict[index] = element;
14
+ }
15
+ return dict;
16
+ }
17
+
18
+ const METHOD = {
19
+ query: 'GET',
20
+ mutation: 'POST',
21
+ subscription: 'PATCH',
22
+ } as const;
23
+
24
+ export interface ResponseShape {
25
+ json: unknown;
26
+ meta: {
27
+ response: Response;
28
+ };
29
+ }
30
+
31
+ type GetInputOptions = {
32
+ runtime: TRPCClientRuntime;
33
+ } & ({ inputs: unknown[] } | { input: unknown });
34
+
35
+ function getInput(opts: GetInputOptions) {
36
+ return 'input' in opts
37
+ ? opts.runtime.transformer.serialize(opts.input)
38
+ : arrayToDict(
39
+ opts.inputs.map((_input) => opts.runtime.transformer.serialize(_input)),
40
+ );
41
+ }
42
+
43
+ export type HTTPRequestOptions = HTTPLinkOptions &
44
+ GetInputOptions & {
45
+ type: ProcedureType;
46
+ path: string;
47
+ };
48
+
49
+ export function getUrl(opts: HTTPRequestOptions) {
50
+ let url = opts.url + '/' + opts.path;
51
+ const queryParts: string[] = [];
52
+ if ('inputs' in opts) {
53
+ queryParts.push('batch=1');
54
+ }
55
+ if (opts.type === 'query') {
56
+ const input = getInput(opts);
57
+ if (input !== undefined) {
58
+ queryParts.push(`input=${encodeURIComponent(JSON.stringify(input))}`);
59
+ }
60
+ }
61
+ if (queryParts.length) {
62
+ url += '?' + queryParts.join('&');
63
+ }
64
+ return url;
65
+ }
66
+
67
+ type GetBodyOptions = { type: ProcedureType } & GetInputOptions;
68
+
69
+ export function getBody(opts: GetBodyOptions) {
70
+ if (opts.type === 'query') {
71
+ return undefined;
72
+ }
73
+ const input = getInput(opts);
74
+ return input !== undefined ? JSON.stringify(input) : undefined;
75
+ }
76
+
77
+ export function httpRequest(
78
+ opts: HTTPRequestOptions,
79
+ ): PromiseAndCancel<ResponseShape> {
80
+ const { type, runtime } = opts;
81
+ const ac = runtime.AbortController ? new runtime.AbortController() : null;
82
+
83
+ const promise = new Promise<ResponseShape>((resolve, reject) => {
84
+ const url = getUrl(opts);
85
+ const body = getBody(opts);
86
+
87
+ const meta = {} as any as ResponseShape['meta'];
88
+ Promise.resolve(runtime.headers())
89
+ .then((headers) =>
90
+ runtime.fetch(url, {
91
+ method: METHOD[type],
92
+ signal: ac?.signal,
93
+ body: body,
94
+ headers: {
95
+ 'content-type': 'application/json',
96
+ ...headers,
97
+ },
98
+ }),
99
+ )
100
+ .then((_res) => {
101
+ meta.response = _res;
102
+ return _res.json();
103
+ })
104
+ .then((json) => {
105
+ resolve({
106
+ json,
107
+ meta,
108
+ });
109
+ })
110
+ .catch(reject);
111
+ });
112
+ const cancel = () => {
113
+ ac?.abort();
114
+ };
115
+ return { promise, cancel };
116
+ }
@@ -1,25 +1,53 @@
1
1
  import { AnyRouter } from '@trpc/server';
2
+ import { TRPCResultMessage } from '@trpc/server/rpc';
3
+ import { TRPCClientRuntime } from '..';
2
4
  import { TRPCClientError } from '../../TRPCClientError';
3
5
  import { OperationResult } from '../types';
4
6
 
5
7
  /** @internal */
6
8
  export function transformOperationResult<TRouter extends AnyRouter, TOutput>(
7
9
  result: OperationResult<TRouter, TOutput>,
10
+ runtime: TRPCClientRuntime,
8
11
  ) {
9
12
  const { context } = result;
10
13
 
11
14
  if ('error' in result.data) {
12
- const error = TRPCClientError.from<TRouter>(result.data);
13
- return {
14
- ok: false,
15
- error,
16
- context,
17
- } as const;
15
+ const error = TRPCClientError.from<TRouter>({
16
+ ...result.data,
17
+ error: runtime.transformer.deserialize(result.data.error),
18
+ });
19
+ return { ok: false, error, context } as const;
18
20
  }
19
- const data = (result.data.result as any).data as TOutput;
20
- return {
21
- ok: true,
22
- data,
23
- context,
24
- } as const;
21
+
22
+ const data = runtime.transformer.deserialize(
23
+ (result.data.result as any).data,
24
+ ) as TOutput;
25
+ return { ok: true, data, context } as const;
26
+ }
27
+
28
+ /** @internal */
29
+ export function transformSubscriptionOperationResult<
30
+ TRouter extends AnyRouter,
31
+ TOutput,
32
+ >(result: OperationResult<TRouter, TOutput>, runtime: TRPCClientRuntime) {
33
+ const { context } = result;
34
+
35
+ if ('error' in result.data) {
36
+ const error = TRPCClientError.from<TRouter>(
37
+ {
38
+ ...result.data,
39
+ error: runtime.transformer.deserialize(result.data.error),
40
+ },
41
+ { meta: context },
42
+ );
43
+ return { ok: false, error, context } as const;
44
+ }
45
+
46
+ const data = {
47
+ ...result.data.result,
48
+ ...((result.data.result as any).type === 'data' && {
49
+ data: runtime.transformer.deserialize((result.data.result as any).data),
50
+ }),
51
+ } as TRPCResultMessage<TOutput>;
52
+ return { ok: true, data, context } as const;
25
53
  }
@@ -1,7 +1,6 @@
1
1
  import { AnyRouter } from '@trpc/server';
2
+ import { observable, tap } from '@trpc/server/observable';
2
3
  import { TRPCClientError } from '..';
3
- import { observable } from '../rx/observable';
4
- import { tap } from '../rx/operators';
5
4
  import { Operation, OperationResult, TRPCLink } from './types';
6
5
 
7
6
  type ConsoleEsque = {
@@ -1,6 +1,5 @@
1
1
  import { AnyRouter } from '@trpc/server';
2
- import { observable } from '../rx/observable';
3
- import { Unsubscribable } from '../rx/types';
2
+ import { Unsubscribable, observable } from '@trpc/server/observable';
4
3
  import { TRPCLink } from './types';
5
4
 
6
5
  export function retryLink<TRouter extends AnyRouter = AnyRouter>(opts: {
@@ -1,9 +1,9 @@
1
1
  /* eslint-disable @typescript-eslint/no-empty-function */
2
+ import { observable } from '@trpc/server/observable';
3
+ import { splitLink } from '../';
4
+ import { OperationLink, TRPCLink } from '../';
2
5
  import { AnyRouter } from '../../../server/src';
3
6
  import { createChain } from '../links/internals/createChain';
4
- import { splitLink } from '../links/splitLink';
5
- import { OperationLink, TRPCLink } from '../links/types';
6
- import { observable } from '../rx';
7
7
 
8
8
  test('splitLink', () => {
9
9
  const wsLinkSpy = jest.fn();
@@ -1,7 +1,7 @@
1
1
  import { AnyRouter } from '@trpc/server';
2
- import { observable } from '../rx/observable';
3
- import { TRPCLink, Operation } from './types';
2
+ import { observable } from '@trpc/server/observable';
4
3
  import { createChain } from './internals/createChain';
4
+ import { Operation, TRPCLink } from './types';
5
5
 
6
6
  function asArray<T>(value: T | T[]) {
7
7
  return Array.isArray(value) ? value : [value];
@@ -17,9 +17,9 @@ export function splitLink<TRouter extends AnyRouter = AnyRouter>(opts: {
17
17
  */
18
18
  false: TRPCLink<TRouter> | TRPCLink<TRouter>[];
19
19
  }): TRPCLink<TRouter> {
20
- return (rt) => {
21
- const yes = asArray(opts.true).map((link) => link(rt));
22
- const no = asArray(opts.false).map((link) => link(rt));
20
+ return (runtime) => {
21
+ const yes = asArray(opts.true).map((link) => link(runtime));
22
+ const no = asArray(opts.false).map((link) => link(runtime));
23
23
  return (props) => {
24
24
  return observable((observer) => {
25
25
  const links = opts.condition(props.op) ? yes : no;
@@ -1,6 +1,6 @@
1
- import { AnyRouter, inferRouterError, Dict } from '@trpc/server';
2
- import { TRPCResponse } from '@trpc/server/rpc';
3
- import { Observable, Observer } from '../rx/types';
1
+ import { AnyRouter, DataTransformer, inferRouterError } from '@trpc/server';
2
+ import { Observable, Observer } from '@trpc/server/observable';
3
+ import { TRPCResponse, TRPCResponseMessage } from '@trpc/server/rpc';
4
4
  import { TRPCClientError } from '../TRPCClientError';
5
5
 
6
6
  export type CancelFn = () => void;
@@ -19,7 +19,7 @@ export type Operation<TInput = unknown> = {
19
19
  context?: OperationContext;
20
20
  };
21
21
 
22
- export type HTTPHeaders = Dict<string | string[]>;
22
+ export type HTTPHeaders = Record<string, string | string[]>;
23
23
 
24
24
  /**
25
25
  * The default `fetch` implementation has an overloaded signature. By convention this library
@@ -30,14 +30,19 @@ export type TRPCFetch = (
30
30
  options?: RequestInit,
31
31
  ) => Promise<Response>;
32
32
 
33
- export interface LinkRuntime {
34
- headers: () => HTTPHeaders | Promise<HTTPHeaders>;
33
+ export interface TRPCClientRuntime {
35
34
  fetch: TRPCFetch;
36
35
  AbortController?: typeof AbortController;
36
+ headers: () => HTTPHeaders | Promise<HTTPHeaders>;
37
+ transformer: DataTransformer;
37
38
  }
38
39
 
40
+ type OperationResultData<TRouter extends AnyRouter, TOutput> =
41
+ | TRPCResponse<TOutput, inferRouterError<TRouter>>
42
+ | TRPCResponseMessage<TOutput, inferRouterError<TRouter>>;
43
+
39
44
  export interface OperationResult<TRouter extends AnyRouter, TOutput> {
40
- data: TRPCResponse<TOutput, inferRouterError<TRouter>>;
45
+ data: OperationResultData<TRouter, TOutput>;
41
46
  context?: OperationContext;
42
47
  }
43
48
 
@@ -61,5 +66,5 @@ export type OperationLink<
61
66
  }) => OperationResultObservable<TRouter, TOutput>;
62
67
 
63
68
  export type TRPCLink<TRouter extends AnyRouter> = (
64
- opts: LinkRuntime,
69
+ opts: TRPCClientRuntime,
65
70
  ) => OperationLink<TRouter>;
@@ -1,14 +1,14 @@
1
1
  import { AnyRouter, ProcedureType } from '@trpc/server';
2
+ import { UnsubscribeFn, observable } from '@trpc/server/observable';
2
3
  import {
3
4
  TRPCClientIncomingMessage,
4
5
  TRPCClientIncomingRequest,
5
- TRPCRequest,
6
- TRPCResponse,
6
+ TRPCClientOutgoingMessage,
7
+ TRPCRequestMessage,
8
+ TRPCResponseMessage,
7
9
  } from '@trpc/server/rpc';
8
- import { retryDelay } from '../internals/retryDelay';
9
- import { UnsubscribeFn } from '../rx';
10
- import { observable } from '../rx/observable';
11
10
  import { TRPCClientError } from '../TRPCClientError';
11
+ import { retryDelay } from '../internals/retryDelay';
12
12
  import { Operation, OperationResultObserver, TRPCLink } from './types';
13
13
 
14
14
  export interface WebSocketClientOptions {
@@ -31,7 +31,7 @@ export function createWSClient(opts: WebSocketClientOptions) {
31
31
  /**
32
32
  * outgoing messages buffer whilst not open
33
33
  */
34
- let outgoing: TRPCRequest[] = [];
34
+ let outgoing: TRPCClientOutgoingMessage[] = [];
35
35
  /**
36
36
  * pending outgoing requests that are awaiting callback
37
37
  */
@@ -141,7 +141,7 @@ export function createWSClient(opts: WebSocketClientOptions) {
141
141
  }
142
142
  }
143
143
  };
144
- const handleIncomingResponse = (data: TRPCResponse) => {
144
+ const handleIncomingResponse = (data: TRPCResponseMessage) => {
145
145
  const req = data.id !== null && pendingRequests[data.id];
146
146
  if (!req) {
147
147
  // do something?
@@ -208,9 +208,8 @@ export function createWSClient(opts: WebSocketClientOptions) {
208
208
 
209
209
  function request(op: Operation, callbacks: TCallbacks): UnsubscribeFn {
210
210
  const { type, input, path, id } = op;
211
- const envelope: TRPCRequest = {
211
+ const envelope: TRPCRequestMessage = {
212
212
  id,
213
- jsonrpc: '2.0',
214
213
  method: type,
215
214
  params: {
216
215
  input,
@@ -238,7 +237,6 @@ export function createWSClient(opts: WebSocketClientOptions) {
238
237
  outgoing.push({
239
238
  id,
240
239
  method: 'subscription.stop',
241
- params: undefined,
242
240
  });
243
241
  dispatch();
244
242
  }
@@ -279,11 +277,13 @@ class TRPCSubscriptionEndedError extends Error {
279
277
  export function wsLink<TRouter extends AnyRouter>(
280
278
  opts: WebSocketLinkOptions,
281
279
  ): TRPCLink<TRouter> {
282
- return () => {
280
+ return (runtime) => {
283
281
  const { client } = opts;
284
282
  return ({ op }) => {
285
283
  return observable((observer) => {
286
- const { type, input, path, id, context } = op;
284
+ const { type, path, id, context } = op;
285
+
286
+ const input = runtime.transformer.serialize(op.input);
287
287
 
288
288
  let isDone = false;
289
289
  const unsub = client.request(
@@ -1,74 +0,0 @@
1
- 'use strict';
2
-
3
- var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
- var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
- var _createClass = require('@babel/runtime/helpers/createClass');
6
- var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
7
- var _inherits = require('@babel/runtime/helpers/inherits');
8
- var _createSuper = require('@babel/runtime/helpers/createSuper');
9
- var _wrapNativeSuper = require('@babel/runtime/helpers/wrapNativeSuper');
10
-
11
- var TRPCClientError = /*#__PURE__*/function (_Error) {
12
- _inherits(TRPCClientError, _Error);
13
-
14
- var _super = /*#__PURE__*/_createSuper(TRPCClientError);
15
-
16
- /**
17
- * @deprecated use `cause`
18
- */
19
- function TRPCClientError(message, opts) {
20
- var _opts$cause, _opts$result, _opts$result2;
21
-
22
- var _this;
23
-
24
- _classCallCheck(this, TRPCClientError);
25
-
26
- var cause = (_opts$cause = opts === null || opts === void 0 ? void 0 : opts.cause) !== null && _opts$cause !== void 0 ? _opts$cause : opts === null || opts === void 0 ? void 0 : opts.originalError; // eslint-disable-next-line @typescript-eslint/ban-ts-comment
27
- // @ts-ignore https://github.com/tc39/proposal-error-cause
28
-
29
- _this = _super.call(this, message, {
30
- cause: cause
31
- });
32
- _this.originalError = void 0;
33
- _this.cause = void 0;
34
- _this.shape = void 0;
35
- _this.data = void 0;
36
- _this.meta = void 0;
37
- _this.meta = opts === null || opts === void 0 ? void 0 : opts.meta;
38
- _this.cause = _this.originalError = cause;
39
- _this.shape = opts === null || opts === void 0 ? void 0 : (_opts$result = opts.result) === null || _opts$result === void 0 ? void 0 : _opts$result.error;
40
- _this.data = opts === null || opts === void 0 ? void 0 : (_opts$result2 = opts.result) === null || _opts$result2 === void 0 ? void 0 : _opts$result2.error.data;
41
- _this.name = 'TRPCClientError';
42
- Object.setPrototypeOf(_assertThisInitialized(_this), TRPCClientError.prototype);
43
- return _this;
44
- }
45
-
46
- _createClass(TRPCClientError, null, [{
47
- key: "from",
48
- value: function from(cause) {
49
- var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
50
-
51
- if (!(cause instanceof Error)) {
52
- var _message;
53
-
54
- return new TRPCClientError((_message = cause.error.message) !== null && _message !== void 0 ? _message : '', _objectSpread(_objectSpread({}, opts), {}, {
55
- cause: null,
56
- result: cause
57
- }));
58
- }
59
-
60
- if (cause.name === 'TRPCClientError') {
61
- return cause;
62
- }
63
-
64
- return new TRPCClientError(cause.message, _objectSpread(_objectSpread({}, opts), {}, {
65
- cause: cause,
66
- result: null
67
- }));
68
- }
69
- }]);
70
-
71
- return TRPCClientError;
72
- }( /*#__PURE__*/_wrapNativeSuper(Error));
73
-
74
- exports.TRPCClientError = TRPCClientError;
@@ -1,72 +0,0 @@
1
- import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
2
- import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';
3
- import _createClass from '@babel/runtime/helpers/esm/createClass';
4
- import _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';
5
- import _inherits from '@babel/runtime/helpers/esm/inherits';
6
- import _createSuper from '@babel/runtime/helpers/esm/createSuper';
7
- import _wrapNativeSuper from '@babel/runtime/helpers/esm/wrapNativeSuper';
8
-
9
- var TRPCClientError = /*#__PURE__*/function (_Error) {
10
- _inherits(TRPCClientError, _Error);
11
-
12
- var _super = /*#__PURE__*/_createSuper(TRPCClientError);
13
-
14
- /**
15
- * @deprecated use `cause`
16
- */
17
- function TRPCClientError(message, opts) {
18
- var _opts$cause, _opts$result, _opts$result2;
19
-
20
- var _this;
21
-
22
- _classCallCheck(this, TRPCClientError);
23
-
24
- var cause = (_opts$cause = opts === null || opts === void 0 ? void 0 : opts.cause) !== null && _opts$cause !== void 0 ? _opts$cause : opts === null || opts === void 0 ? void 0 : opts.originalError; // eslint-disable-next-line @typescript-eslint/ban-ts-comment
25
- // @ts-ignore https://github.com/tc39/proposal-error-cause
26
-
27
- _this = _super.call(this, message, {
28
- cause: cause
29
- });
30
- _this.originalError = void 0;
31
- _this.cause = void 0;
32
- _this.shape = void 0;
33
- _this.data = void 0;
34
- _this.meta = void 0;
35
- _this.meta = opts === null || opts === void 0 ? void 0 : opts.meta;
36
- _this.cause = _this.originalError = cause;
37
- _this.shape = opts === null || opts === void 0 ? void 0 : (_opts$result = opts.result) === null || _opts$result === void 0 ? void 0 : _opts$result.error;
38
- _this.data = opts === null || opts === void 0 ? void 0 : (_opts$result2 = opts.result) === null || _opts$result2 === void 0 ? void 0 : _opts$result2.error.data;
39
- _this.name = 'TRPCClientError';
40
- Object.setPrototypeOf(_assertThisInitialized(_this), TRPCClientError.prototype);
41
- return _this;
42
- }
43
-
44
- _createClass(TRPCClientError, null, [{
45
- key: "from",
46
- value: function from(cause) {
47
- var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
48
-
49
- if (!(cause instanceof Error)) {
50
- var _message;
51
-
52
- return new TRPCClientError((_message = cause.error.message) !== null && _message !== void 0 ? _message : '', _objectSpread(_objectSpread({}, opts), {}, {
53
- cause: null,
54
- result: cause
55
- }));
56
- }
57
-
58
- if (cause.name === 'TRPCClientError') {
59
- return cause;
60
- }
61
-
62
- return new TRPCClientError(cause.message, _objectSpread(_objectSpread({}, opts), {}, {
63
- cause: cause,
64
- result: null
65
- }));
66
- }
67
- }]);
68
-
69
- return TRPCClientError;
70
- }( /*#__PURE__*/_wrapNativeSuper(Error));
71
-
72
- export { TRPCClientError as T };
@@ -1,74 +0,0 @@
1
- 'use strict';
2
-
3
- var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
- var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
- var _createClass = require('@babel/runtime/helpers/createClass');
6
- var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
7
- var _inherits = require('@babel/runtime/helpers/inherits');
8
- var _createSuper = require('@babel/runtime/helpers/createSuper');
9
- var _wrapNativeSuper = require('@babel/runtime/helpers/wrapNativeSuper');
10
-
11
- var TRPCClientError = /*#__PURE__*/function (_Error) {
12
- _inherits(TRPCClientError, _Error);
13
-
14
- var _super = /*#__PURE__*/_createSuper(TRPCClientError);
15
-
16
- /**
17
- * @deprecated use `cause`
18
- */
19
- function TRPCClientError(message, opts) {
20
- var _opts$cause, _opts$result, _opts$result2;
21
-
22
- var _this;
23
-
24
- _classCallCheck(this, TRPCClientError);
25
-
26
- var cause = (_opts$cause = opts === null || opts === void 0 ? void 0 : opts.cause) !== null && _opts$cause !== void 0 ? _opts$cause : opts === null || opts === void 0 ? void 0 : opts.originalError; // eslint-disable-next-line @typescript-eslint/ban-ts-comment
27
- // @ts-ignore https://github.com/tc39/proposal-error-cause
28
-
29
- _this = _super.call(this, message, {
30
- cause: cause
31
- });
32
- _this.originalError = void 0;
33
- _this.cause = void 0;
34
- _this.shape = void 0;
35
- _this.data = void 0;
36
- _this.meta = void 0;
37
- _this.meta = opts === null || opts === void 0 ? void 0 : opts.meta;
38
- _this.cause = _this.originalError = cause;
39
- _this.shape = opts === null || opts === void 0 ? void 0 : (_opts$result = opts.result) === null || _opts$result === void 0 ? void 0 : _opts$result.error;
40
- _this.data = opts === null || opts === void 0 ? void 0 : (_opts$result2 = opts.result) === null || _opts$result2 === void 0 ? void 0 : _opts$result2.error.data;
41
- _this.name = 'TRPCClientError';
42
- Object.setPrototypeOf(_assertThisInitialized(_this), TRPCClientError.prototype);
43
- return _this;
44
- }
45
-
46
- _createClass(TRPCClientError, null, [{
47
- key: "from",
48
- value: function from(cause) {
49
- var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
50
-
51
- if (!(cause instanceof Error)) {
52
- var _message;
53
-
54
- return new TRPCClientError((_message = cause.error.message) !== null && _message !== void 0 ? _message : '', _objectSpread(_objectSpread({}, opts), {}, {
55
- cause: null,
56
- result: cause
57
- }));
58
- }
59
-
60
- if (cause.name === 'TRPCClientError') {
61
- return cause;
62
- }
63
-
64
- return new TRPCClientError(cause.message, _objectSpread(_objectSpread({}, opts), {}, {
65
- cause: cause,
66
- result: null
67
- }));
68
- }
69
- }]);
70
-
71
- return TRPCClientError;
72
- }( /*#__PURE__*/_wrapNativeSuper(Error));
73
-
74
- exports.TRPCClientError = TRPCClientError;
@@ -1,27 +0,0 @@
1
- 'use strict';
2
-
3
- var observable = require('./observable-9aad8c3e.cjs.dev.js');
4
-
5
- /** @internal */
6
- function createChain(opts) {
7
- return observable.observable(function (observer) {
8
- function execute() {
9
- var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
10
- var op = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : opts.op;
11
- var next = opts.links[index];
12
- var next$ = next({
13
- op: op,
14
- next: function next(nextOp) {
15
- var nextObserver = execute(index + 1, nextOp);
16
- return nextObserver;
17
- }
18
- });
19
- return next$;
20
- }
21
-
22
- var obs$ = execute();
23
- return obs$.subscribe(observer);
24
- });
25
- }
26
-
27
- exports.createChain = createChain;
@@ -1,27 +0,0 @@
1
- 'use strict';
2
-
3
- var observable = require('./observable-ccb54234.cjs.prod.js');
4
-
5
- /** @internal */
6
- function createChain(opts) {
7
- return observable.observable(function (observer) {
8
- function execute() {
9
- var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
10
- var op = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : opts.op;
11
- var next = opts.links[index];
12
- var next$ = next({
13
- op: op,
14
- next: function next(nextOp) {
15
- var nextObserver = execute(index + 1, nextOp);
16
- return nextObserver;
17
- }
18
- });
19
- return next$;
20
- }
21
-
22
- var obs$ = execute();
23
- return obs$.subscribe(observer);
24
- });
25
- }
26
-
27
- exports.createChain = createChain;
@@ -1,25 +0,0 @@
1
- import { o as observable } from './observable-01534ea8.esm.js';
2
-
3
- /** @internal */
4
- function createChain(opts) {
5
- return observable(function (observer) {
6
- function execute() {
7
- var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
8
- var op = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : opts.op;
9
- var next = opts.links[index];
10
- var next$ = next({
11
- op: op,
12
- next: function next(nextOp) {
13
- var nextObserver = execute(index + 1, nextOp);
14
- return nextObserver;
15
- }
16
- });
17
- return next$;
18
- }
19
-
20
- var obs$ = execute();
21
- return obs$.subscribe(observer);
22
- });
23
- }
24
-
25
- export { createChain as c };
@@ -1 +0,0 @@
1
- {"version":3,"file":"TRPCClientError.d.ts","sourceRoot":"../../../src","sources":["TRPCClientError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,mBAAmB,CAAC,OAAO,SAAS,SAAS;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;CACzD;AAED,qBAAa,eAAe,CAAC,OAAO,SAAS,SAAS,CACpD,SAAQ,KACR,YAAW,mBAAmB,CAAC,OAAO,CAAC;IAEvC;;OAEG;IACH,SAAgB,aAAa,eAAC;IAC9B,SAAgB,KAAK,eAAC;IACtB,SAAgB,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,SAAgB,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,SAAgB,IAAI,sCAAC;gBAGnB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5D;;YAEI;QACJ,aAAa,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC;WAkBW,IAAI,CAAC,OAAO,SAAS,SAAS,EAC1C,KAAK,EAAE,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,EACrC,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAO,GAC5C,eAAe,CAAC,OAAO,CAAC;CAkB5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTRPCClient.d.ts","sourceRoot":"../../../src","sources":["createTRPCClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,UAAU,IAAI,MAAM,EACrB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,SAAS,EACxD,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC,mBAGvC;AAED,oBAAY,UAAU,CAAC,OAAO,SAAS,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AAEpE,YAAY,EACV,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getFetch.d.ts","sourceRoot":"../../../src","sources":["getFetch.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,GAAG,OAAO,KAAK,CAYvD"}