@trpc/client 9.18.0 → 10.0.0-alpha.3

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 (208) hide show
  1. package/dist/TRPCClientError-17b117e1.mjs +81 -0
  2. package/dist/TRPCClientError-ec6bd2ca.js +94 -0
  3. package/dist/{declarations/src/TRPCClientError.d.ts → TRPCClientError.d.ts} +29 -33
  4. package/dist/TRPCClientError.d.ts.map +1 -0
  5. package/dist/createChain-389cc116.mjs +25 -0
  6. package/dist/createChain-864dbb30.js +27 -0
  7. package/dist/{declarations/src/createTRPCClient.d.ts → createTRPCClient.d.ts} +5 -6
  8. package/dist/createTRPCClient.d.ts.map +1 -0
  9. package/dist/{declarations/src/getFetch.d.ts → getFetch.d.ts} +1 -1
  10. package/dist/getFetch.d.ts.map +1 -0
  11. package/dist/httpUtils-1f9e4e3c.js +97 -0
  12. package/dist/httpUtils-c09d7b79.mjs +91 -0
  13. package/dist/{declarations/src/index.d.ts → index.d.ts} +4 -4
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +314 -0
  16. package/dist/index.mjs +299 -0
  17. package/dist/index.ts.js +1 -0
  18. package/dist/{declarations/src/internals → internals}/TRPCClient.d.ts +64 -61
  19. package/dist/internals/TRPCClient.d.ts.map +1 -0
  20. package/dist/{declarations/src/internals → internals}/dataLoader.d.ts +14 -16
  21. package/dist/internals/dataLoader.d.ts.map +1 -0
  22. package/dist/{declarations/src/internals → internals}/fetchHelpers.d.ts +2 -2
  23. package/dist/internals/fetchHelpers.d.ts.map +1 -0
  24. package/dist/{declarations/src/internals → internals}/retryDelay.d.ts +1 -1
  25. package/dist/internals/retryDelay.d.ts.map +1 -0
  26. package/dist/internals/transformRPCResponse.d.ts +15 -0
  27. package/dist/internals/transformRPCResponse.d.ts.map +1 -0
  28. package/dist/links/dedupeLink.d.ts +4 -0
  29. package/dist/links/dedupeLink.d.ts.map +1 -0
  30. package/dist/links/httpBatchLink.d.ts +5 -0
  31. package/dist/links/httpBatchLink.d.ts.map +1 -0
  32. package/dist/links/httpBatchLink.js +189 -0
  33. package/dist/links/httpBatchLink.mjs +185 -0
  34. package/dist/links/httpBatchLink.ts.js +1 -0
  35. package/dist/{declarations/src/links → links}/httpLink.d.ts +4 -3
  36. package/dist/links/httpLink.d.ts.map +1 -0
  37. package/dist/links/httpLink.js +44 -0
  38. package/dist/links/httpLink.mjs +40 -0
  39. package/dist/links/httpLink.ts.js +1 -0
  40. package/dist/links/httpUtils.d.ts +22 -0
  41. package/dist/links/httpUtils.d.ts.map +1 -0
  42. package/dist/links/internals/createChain.d.ts +8 -0
  43. package/dist/links/internals/createChain.d.ts.map +1 -0
  44. package/dist/links/internals/transformOperationResult.d.ts +16 -0
  45. package/dist/links/internals/transformOperationResult.d.ts.map +1 -0
  46. package/dist/{declarations/src/links → links}/loggerLink.d.ts +38 -37
  47. package/dist/links/loggerLink.d.ts.map +1 -0
  48. package/dist/links/loggerLink.js +108 -0
  49. package/dist/links/loggerLink.mjs +99 -0
  50. package/dist/links/loggerLink.ts.js +1 -0
  51. package/dist/links/retryLink.d.ts +6 -0
  52. package/dist/links/retryLink.d.ts.map +1 -0
  53. package/dist/links/splitLink.d.ts +14 -0
  54. package/dist/links/splitLink.d.ts.map +1 -0
  55. package/dist/links/splitLink.js +32 -0
  56. package/dist/links/splitLink.mjs +28 -0
  57. package/dist/links/splitLink.ts.js +1 -0
  58. package/dist/links/transformerLink.d.ts +4 -0
  59. package/dist/links/transformerLink.d.ts.map +1 -0
  60. package/dist/links/transformerLink.js +75 -0
  61. package/dist/links/transformerLink.mjs +67 -0
  62. package/dist/links/transformerLink.ts.js +1 -0
  63. package/dist/links/types.d.ts +40 -0
  64. package/dist/links/types.d.ts.map +1 -0
  65. package/dist/{declarations/src/links → links}/wsLink.d.ts +19 -26
  66. package/dist/links/wsLink.d.ts.map +1 -0
  67. package/dist/links/wsLink.js +384 -0
  68. package/dist/links/wsLink.mjs +370 -0
  69. package/dist/links/wsLink.ts.js +1 -0
  70. package/dist/observable-7e66cb56.mjs +102 -0
  71. package/dist/observable-85669100.js +104 -0
  72. package/dist/rx/index.d.ts +3 -0
  73. package/dist/rx/index.d.ts.map +1 -0
  74. package/dist/rx/index.js +9 -0
  75. package/dist/rx/index.mjs +1 -0
  76. package/dist/rx/index.ts.js +1 -0
  77. package/dist/rx/observable.d.ts +4 -0
  78. package/dist/rx/observable.d.ts.map +1 -0
  79. package/dist/rx/operators/index.d.ts +4 -0
  80. package/dist/rx/operators/index.d.ts.map +1 -0
  81. package/dist/rx/operators/index.js +38 -0
  82. package/dist/rx/operators/index.mjs +32 -0
  83. package/dist/rx/operators/index.ts.js +1 -0
  84. package/dist/rx/operators/map.d.ts +3 -0
  85. package/dist/rx/operators/map.d.ts.map +1 -0
  86. package/dist/rx/operators/share.d.ts +6 -0
  87. package/dist/rx/operators/share.d.ts.map +1 -0
  88. package/dist/rx/operators/tap.d.ts +3 -0
  89. package/dist/rx/operators/tap.d.ts.map +1 -0
  90. package/dist/rx/types.d.ts +29 -0
  91. package/dist/rx/types.d.ts.map +1 -0
  92. package/dist/rx/util/identity.d.ts +2 -0
  93. package/dist/rx/util/identity.d.ts.map +1 -0
  94. package/dist/rx/util/observableToPromise.d.ts +10 -0
  95. package/dist/rx/util/observableToPromise.d.ts.map +1 -0
  96. package/dist/rx/util/pipe.d.ts +4 -0
  97. package/dist/rx/util/pipe.d.ts.map +1 -0
  98. package/dist/share-4d79dc49.js +110 -0
  99. package/dist/share-671b63fa.mjs +108 -0
  100. package/dist/tap-538fa07f.mjs +30 -0
  101. package/dist/tap-799a2d33.js +32 -0
  102. package/links/httpBatchLink/index.d.ts +1 -0
  103. package/links/httpBatchLink/index.js +1 -0
  104. package/links/httpLink/index.d.ts +1 -0
  105. package/links/httpLink/index.js +1 -0
  106. package/links/loggerLink/index.d.ts +1 -0
  107. package/links/loggerLink/index.js +1 -0
  108. package/links/splitLink/index.d.ts +1 -0
  109. package/links/splitLink/index.js +1 -0
  110. package/links/transformerLink/index.d.ts +1 -0
  111. package/links/transformerLink/index.js +1 -0
  112. package/links/wsLink/index.d.ts +1 -0
  113. package/links/wsLink/index.js +1 -0
  114. package/package.json +58 -18
  115. package/rx/dist/trpc-client-rx.cjs.d.ts +1 -0
  116. package/rx/dist/trpc-client-rx.cjs.dev.js +9 -0
  117. package/rx/dist/trpc-client-rx.cjs.js +7 -0
  118. package/rx/dist/trpc-client-rx.cjs.prod.js +9 -0
  119. package/rx/dist/trpc-client-rx.esm.js +1 -0
  120. package/rx/index.d.ts +1 -0
  121. package/rx/index.js +1 -0
  122. package/rx/operators/dist/trpc-client-rx-operators.cjs.d.ts +1 -0
  123. package/rx/operators/dist/trpc-client-rx-operators.cjs.dev.js +39 -0
  124. package/rx/operators/dist/trpc-client-rx-operators.cjs.js +7 -0
  125. package/rx/operators/dist/trpc-client-rx-operators.cjs.prod.js +39 -0
  126. package/rx/operators/dist/trpc-client-rx-operators.esm.js +33 -0
  127. package/rx/operators/index.d.ts +1 -0
  128. package/rx/operators/index.js +1 -0
  129. package/src/TRPCClientError.ts +17 -21
  130. package/src/createTRPCClient.ts +4 -3
  131. package/src/index.ts +1 -1
  132. package/src/internals/TRPCClient.ts +80 -88
  133. package/src/internals/dataLoader.ts +2 -14
  134. package/src/internals/transformRPCResponse.ts +2 -2
  135. package/src/links/dedupeLink.test.ts +134 -0
  136. package/src/links/dedupeLink.ts +53 -0
  137. package/src/links/httpBatchLink.ts +36 -52
  138. package/src/links/httpLink.ts +26 -37
  139. package/src/{internals/httpRequest.ts → links/httpUtils.ts} +30 -21
  140. package/src/links/internals/createChain.test.ts +132 -0
  141. package/src/links/internals/createChain.ts +31 -0
  142. package/src/links/internals/transformOperationResult.ts +25 -0
  143. package/src/links/loggerLink.ts +40 -22
  144. package/src/links/retryLink.ts +45 -14
  145. package/src/links/splitLink.test.ts +56 -0
  146. package/src/links/splitLink.ts +23 -38
  147. package/src/links/transformerLink.ts +70 -0
  148. package/src/links/{core.ts → types.ts} +40 -46
  149. package/src/links/wsLink.ts +56 -77
  150. package/src/rx/index.ts +2 -0
  151. package/src/rx/observable.test.ts +83 -0
  152. package/src/rx/observable.ts +70 -0
  153. package/src/rx/operators/index.ts +3 -0
  154. package/src/rx/operators/map.test.ts +92 -0
  155. package/src/rx/operators/map.ts +25 -0
  156. package/src/rx/operators/share.test.ts +60 -0
  157. package/src/rx/operators/share.ts +67 -0
  158. package/src/rx/operators/tap.ts +26 -0
  159. package/src/rx/types.ts +69 -0
  160. package/src/rx/util/identity.ts +3 -0
  161. package/src/rx/util/observableToPromise.ts +49 -0
  162. package/src/rx/util/pipe.ts +22 -0
  163. package/dist/TRPCClientError-09b8a26b.esm.js +0 -77
  164. package/dist/TRPCClientError-bfee2bf5.cjs.dev.js +0 -79
  165. package/dist/TRPCClientError-e9bf96e9.cjs.prod.js +0 -79
  166. package/dist/declarations/src/TRPCClientError.d.ts.map +0 -1
  167. package/dist/declarations/src/createTRPCClient.d.ts.map +0 -1
  168. package/dist/declarations/src/getFetch.d.ts.map +0 -1
  169. package/dist/declarations/src/index.d.ts.map +0 -1
  170. package/dist/declarations/src/internals/TRPCAbortError.d.ts +0 -4
  171. package/dist/declarations/src/internals/TRPCAbortError.d.ts.map +0 -1
  172. package/dist/declarations/src/internals/TRPCClient.d.ts.map +0 -1
  173. package/dist/declarations/src/internals/dataLoader.d.ts.map +0 -1
  174. package/dist/declarations/src/internals/executeChain.d.ts +0 -8
  175. package/dist/declarations/src/internals/executeChain.d.ts.map +0 -1
  176. package/dist/declarations/src/internals/fetchHelpers.d.ts.map +0 -1
  177. package/dist/declarations/src/internals/httpRequest.d.ts +0 -14
  178. package/dist/declarations/src/internals/httpRequest.d.ts.map +0 -1
  179. package/dist/declarations/src/internals/observable.d.ts +0 -18
  180. package/dist/declarations/src/internals/observable.d.ts.map +0 -1
  181. package/dist/declarations/src/internals/retryDelay.d.ts.map +0 -1
  182. package/dist/declarations/src/internals/transformRPCResponse.d.ts +0 -7
  183. package/dist/declarations/src/internals/transformRPCResponse.d.ts.map +0 -1
  184. package/dist/declarations/src/links/core.d.ts +0 -45
  185. package/dist/declarations/src/links/core.d.ts.map +0 -1
  186. package/dist/declarations/src/links/httpBatchLink.d.ts +0 -7
  187. package/dist/declarations/src/links/httpBatchLink.d.ts.map +0 -1
  188. package/dist/declarations/src/links/httpLink.d.ts.map +0 -1
  189. package/dist/declarations/src/links/loggerLink.d.ts.map +0 -1
  190. package/dist/declarations/src/links/splitLink.d.ts +0 -24
  191. package/dist/declarations/src/links/splitLink.d.ts.map +0 -1
  192. package/dist/declarations/src/links/wsLink.d.ts.map +0 -1
  193. package/dist/transformRPCResponse-57e80136.cjs.dev.js +0 -133
  194. package/dist/transformRPCResponse-739c13d0.cjs.prod.js +0 -133
  195. package/dist/transformRPCResponse-f7f8b0e1.esm.js +0 -129
  196. package/dist/trpc-client.cjs.d.ts +0 -1
  197. package/dist/trpc-client.cjs.dev.js +0 -379
  198. package/dist/trpc-client.cjs.js +0 -7
  199. package/dist/trpc-client.cjs.prod.js +0 -379
  200. package/dist/trpc-client.esm.js +0 -374
  201. package/links/httpBatchLink/package.json +0 -4
  202. package/links/httpLink/package.json +0 -4
  203. package/links/loggerLink/package.json +0 -4
  204. package/links/splitLink/package.json +0 -4
  205. package/links/wsLink/package.json +0 -4
  206. package/src/internals/TRPCAbortError.ts +0 -7
  207. package/src/internals/executeChain.ts +0 -67
  208. package/src/internals/observable.ts +0 -89
@@ -1,62 +1,65 @@
1
- import { AnyRouter, ClientDataTransformerOptions, inferHandlerInput, inferProcedureInput, inferSubscriptionOutput } from '@trpc/server';
2
- import { TRPCResult } from '@trpc/server/rpc';
3
- import { ObservableCallbacks, UnsubscribeFn } from './observable';
4
- import { CancelFn, HTTPHeaders, LinkRuntimeOptions, OperationContext, TRPCLink } from '../links/core';
5
- import { TRPCClientError } from '../TRPCClientError';
6
- declare type CancellablePromise<T = unknown> = Promise<T> & {
7
- cancel: CancelFn;
8
- };
9
- /**
10
- * @deprecated no longer used
11
- */
12
- export interface FetchOptions {
13
- fetch?: typeof fetch;
14
- AbortController?: typeof AbortController;
15
- }
16
- export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = {
17
- /**
18
- * Add ponyfill for fetch
19
- */
20
- fetch?: typeof fetch;
21
- /**
22
- * add ponyfill for AbortController
23
- */
24
- AbortController?: typeof AbortController;
25
- /**
26
- * headers to be set on outgoing requests / callback that of said headers
27
- */
28
- headers?: HTTPHeaders | (() => HTTPHeaders | Promise<HTTPHeaders>);
29
- /**
30
- * Data transformer
31
- * @link http://localhost:3000/docs/data-transformers
32
- **/
33
- transformer?: ClientDataTransformerOptions;
34
- } & ({
35
- /**
36
- * HTTP URL of API
37
- **/
38
- url: string;
39
- } | {
40
- /**
41
- * @link http://localhost:3000/docs/links
42
- **/
43
- links: TRPCLink<TRouter>[];
44
- });
45
- export interface TRPCRequestOptions {
46
- /**
47
- * Pass additional context to links
48
- */
49
- context?: OperationContext;
50
- }
51
- export declare class TRPCClient<TRouter extends AnyRouter> {
52
- private readonly links;
53
- readonly runtime: LinkRuntimeOptions;
54
- constructor(opts: CreateTRPCClientOptions<TRouter>);
55
- private $request;
56
- private requestAsPromise;
57
- query<TQueries extends TRouter['_def']['queries'], TPath extends string & keyof TQueries>(path: TPath, ...args: [...inferHandlerInput<TQueries[TPath]>, TRPCRequestOptions?]): CancellablePromise<import("@trpc/server").ThenArg<ReturnType<TQueries[TPath]["call"]>>>;
58
- mutation<TMutations extends TRouter['_def']['mutations'], TPath extends string & keyof TMutations>(path: TPath, ...args: [...inferHandlerInput<TMutations[TPath]>, TRPCRequestOptions?]): CancellablePromise<import("@trpc/server").ThenArg<ReturnType<TMutations[TPath]["call"]>>>;
59
- subscription<TSubscriptions extends TRouter['_def']['subscriptions'], TPath extends string & keyof TSubscriptions, TOutput extends inferSubscriptionOutput<TRouter, TPath>, TInput extends inferProcedureInput<TSubscriptions[TPath]>>(path: TPath, input: TInput, opts: TRPCRequestOptions & ObservableCallbacks<TRPCResult<TOutput>, TRPCClientError<TRouter>>): UnsubscribeFn;
60
- }
61
- export {};
1
+ import { AnyRouter, inferHandlerInput, inferProcedureInput, inferSubscriptionOutput } from '@trpc/server';
2
+ import { TRPCResult } from '@trpc/server/rpc';
3
+ import { CancelFn } from '..';
4
+ import { HTTPHeaders, LinkRuntime, OperationContext, TRPCLink } from '../links/types';
5
+ import { UnsubscribeFn } from '../rx';
6
+ import { Observer } from '../rx/types';
7
+ import { TRPCClientError } from '../TRPCClientError';
8
+ declare type CancellablePromise<T = unknown> = Promise<T> & {
9
+ cancel: CancelFn;
10
+ };
11
+ /**
12
+ * @deprecated no longer used
13
+ */
14
+ export interface FetchOptions {
15
+ fetch?: typeof fetch;
16
+ AbortController?: typeof AbortController;
17
+ }
18
+ interface CreateTRPCClientBaseOptions {
19
+ /**
20
+ * Add ponyfill for fetch
21
+ */
22
+ fetch?: typeof fetch;
23
+ /**
24
+ * add ponyfill for AbortController
25
+ */
26
+ AbortController?: typeof AbortController;
27
+ /**
28
+ * headers to be set on outgoing requests / callback that of said headers
29
+ */
30
+ headers?: HTTPHeaders | (() => HTTPHeaders | Promise<HTTPHeaders>);
31
+ }
32
+ /** @internal */
33
+ export interface CreateTRPCClientWithURLOptions extends CreateTRPCClientBaseOptions {
34
+ /**
35
+ * HTTP URL of API
36
+ **/
37
+ url: string;
38
+ }
39
+ /** @internal */
40
+ export interface CreateTRPCClientWithLinksOptions<TRouter extends AnyRouter> extends CreateTRPCClientBaseOptions {
41
+ /**
42
+ * @link http://localhost:3000/docs/links
43
+ **/
44
+ links: TRPCLink<TRouter>[];
45
+ }
46
+ export interface TRPCRequestOptions {
47
+ /**
48
+ * Pass additional context to links
49
+ */
50
+ context?: OperationContext;
51
+ }
52
+ /** @internal */
53
+ export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientWithLinksOptions<TRouter> | CreateTRPCClientWithURLOptions;
54
+ export declare class TRPCClient<TRouter extends AnyRouter> {
55
+ private readonly links;
56
+ readonly runtime: LinkRuntime;
57
+ constructor(opts: CreateTRPCClientOptions<TRouter>);
58
+ private $request;
59
+ private requestAsPromise;
60
+ query<TQueries extends TRouter['_def']['queries'], TPath extends string & keyof TQueries>(path: TPath, ...args: [...inferHandlerInput<TQueries[TPath]>, TRPCRequestOptions?]): CancellablePromise<import("@trpc/server").ThenArg<ReturnType<TQueries[TPath]["call"]>>>;
61
+ mutation<TMutations extends TRouter['_def']['mutations'], TPath extends string & keyof TMutations>(path: TPath, ...args: [...inferHandlerInput<TMutations[TPath]>, TRPCRequestOptions?]): CancellablePromise<import("@trpc/server").ThenArg<ReturnType<TMutations[TPath]["call"]>>>;
62
+ subscription<TSubscriptions extends TRouter['_def']['subscriptions'], TPath extends string & keyof TSubscriptions, TOutput extends inferSubscriptionOutput<TRouter, TPath>, TInput extends inferProcedureInput<TSubscriptions[TPath]>>(path: TPath, input: TInput, opts: TRPCRequestOptions & Partial<Observer<TRPCResult<TOutput>, TRPCClientError<TRouter>>>): UnsubscribeFn;
63
+ }
64
+ export {};
62
65
  //# sourceMappingURL=TRPCClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../src/internals/TRPCClient.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,15 @@
1
- import { CancelFn, PromiseAndCancel } from '../links/core';
2
- declare type BatchLoadFn<TKey, TValue> = (keys: TKey[]) => {
3
- promise: Promise<TValue[]>;
4
- cancel: CancelFn;
5
- };
6
- /**
7
- * Dataloader that's very inspired by https://github.com/graphql/dataloader
8
- * Less configuration, no caching, and allows you to cancel requests
9
- * When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled
10
- */
11
- export declare function dataLoader<TKey, TValue>(fetchMany: BatchLoadFn<TKey, TValue>, opts?: {
12
- maxBatchSize?: number;
13
- }): {
14
- load: (key: TKey) => PromiseAndCancel<TValue>;
15
- };
16
- export {};
1
+ import { CancelFn, PromiseAndCancel } from '../links/types';
2
+ declare type BatchLoadFn<TKey, TValue> = (keys: TKey[]) => {
3
+ promise: Promise<TValue[]>;
4
+ cancel: CancelFn;
5
+ };
6
+ /**
7
+ * Dataloader that's very inspired by https://github.com/graphql/dataloader
8
+ * Less configuration, no caching, and allows you to cancel requests
9
+ * When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled
10
+ */
11
+ export declare function dataLoader<TKey, TValue>(fetchMany: BatchLoadFn<TKey, TValue>): {
12
+ load: (key: TKey) => PromiseAndCancel<TValue>;
13
+ };
14
+ export {};
17
15
  //# sourceMappingURL=dataLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataLoader.d.ts","sourceRoot":"","sources":["../../src/internals/dataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAY5D,aAAK,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK;IACjD,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3B,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;gBA6BxD,IAAI,KAAG,iBAAiB,MAAM,CAAC;EAwCnD"}
@@ -1,3 +1,3 @@
1
- export declare function getWindow(): typeof globalThis;
2
- export declare function getAbortController(ac?: typeof AbortController): typeof AbortController | null;
1
+ export declare function getWindow(): typeof globalThis;
2
+ export declare function getAbortController(ac?: typeof AbortController): typeof AbortController | null;
3
3
  //# sourceMappingURL=fetchHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchHelpers.d.ts","sourceRoot":"","sources":["../../src/internals/fetchHelpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,sBAKxB;AACD,wBAAgB,kBAAkB,CAChC,EAAE,CAAC,EAAE,OAAO,eAAe,GAC1B,OAAO,eAAe,GAAG,IAAI,CAG/B"}
@@ -1,2 +1,2 @@
1
- export declare const retryDelay: (attemptIndex: number) => number;
1
+ export declare const retryDelay: (attemptIndex: number) => number;
2
2
  //# sourceMappingURL=retryDelay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retryDelay.d.ts","sourceRoot":"","sources":["../../src/internals/retryDelay.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,UAAU,iBAAkB,MAAM,WACqB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { TRPCResponse } from '@trpc/server/rpc';
2
+ import { TRPCClientError } from '../TRPCClientError';
3
+ import { LinkRuntime } from '../links/types';
4
+ export declare function transformRPCResponse({ envelope, runtime, }: {
5
+ envelope: TRPCResponse;
6
+ runtime: LinkRuntime;
7
+ }): {
8
+ type: "started";
9
+ } | {
10
+ type: "stopped";
11
+ } | TRPCClientError<import("@trpc/server").AnyRouter<any>> | {
12
+ data: any;
13
+ type: "data";
14
+ };
15
+ //# sourceMappingURL=transformRPCResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformRPCResponse.d.ts","sourceRoot":"","sources":["../../src/internals/transformRPCResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;CACtB;;;;;;;EAcA"}
@@ -0,0 +1,4 @@
1
+ import { AnyRouter } from '@trpc/server';
2
+ import { TRPCLink } from './types';
3
+ export declare function dedupeLink<TRouter extends AnyRouter = AnyRouter>(): TRPCLink<TRouter>;
4
+ //# sourceMappingURL=dedupeLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedupeLink.d.ts","sourceRoot":"","sources":["../../src/links/dedupeLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,wBAAgB,UAAU,CACxB,OAAO,SAAS,SAAS,GAAG,SAAS,KAClC,QAAQ,CAAC,OAAO,CAAC,CA4CrB"}
@@ -0,0 +1,5 @@
1
+ import { AnyRouter } from '@trpc/server';
2
+ import { TRPCLink } from './types';
3
+ import { HTTPLinkOptions } from './httpUtils';
4
+ export declare function httpBatchLink<TRouter extends AnyRouter>(opts: HTTPLinkOptions): TRPCLink<TRouter>;
5
+ //# sourceMappingURL=httpBatchLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpBatchLink.d.ts","sourceRoot":"","sources":["../../src/links/httpBatchLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,eAAe,EAA8B,MAAM,aAAa,CAAC;AAE1E,wBAAgB,aAAa,CAAC,OAAO,SAAS,SAAS,EACrD,IAAI,EAAE,eAAe,GACpB,QAAQ,CAAC,OAAO,CAAC,CA4DnB"}
@@ -0,0 +1,189 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var observable = require('../observable-85669100.js');
6
+ var httpUtils = require('../httpUtils-1f9e4e3c.js');
7
+ require('@babel/runtime/helpers/defineProperty');
8
+
9
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
10
+
11
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
+
13
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
14
+
15
+ /**
16
+ * Dataloader that's very inspired by https://github.com/graphql/dataloader
17
+ * Less configuration, no caching, and allows you to cancel requests
18
+ * When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled
19
+ */
20
+ function dataLoader(fetchMany) {
21
+ var batch = null;
22
+ var dispatchTimer = null;
23
+
24
+ var destroyTimerAndBatch = function destroyTimerAndBatch() {
25
+ clearTimeout(dispatchTimer);
26
+ dispatchTimer = null;
27
+ batch = null;
28
+ };
29
+
30
+ function dispatch() {
31
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
32
+ var batchCopy = batch;
33
+ destroyTimerAndBatch();
34
+
35
+ var _fetchMany = fetchMany(batchCopy.items.map(function (v) {
36
+ return v.key;
37
+ })),
38
+ promise = _fetchMany.promise,
39
+ cancel = _fetchMany.cancel;
40
+
41
+ batchCopy.cancel = cancel;
42
+ promise.then(function (result) {
43
+ for (var i = 0; i < result.length; i++) {
44
+ var _value = result[i];
45
+ batchCopy.items[i].resolve(_value);
46
+ }
47
+ }).catch(function (cause) {
48
+ var _iterator = _createForOfIteratorHelper(batchCopy.items),
49
+ _step;
50
+
51
+ try {
52
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
53
+ var item = _step.value;
54
+ item.reject(cause);
55
+ }
56
+ } catch (err) {
57
+ _iterator.e(err);
58
+ } finally {
59
+ _iterator.f();
60
+ }
61
+ });
62
+ }
63
+
64
+ function load(key) {
65
+ var batchItem = {
66
+ cancelled: false,
67
+ key: key
68
+ };
69
+
70
+ if (!batch) {
71
+ batch = {
72
+ items: [],
73
+ cancel: function cancel() {
74
+ destroyTimerAndBatch();
75
+ }
76
+ };
77
+ }
78
+
79
+ var thisBatch = batch;
80
+ var promise = new Promise(function (resolve, reject) {
81
+ var item = batchItem;
82
+ item.reject = reject;
83
+ item.resolve = resolve;
84
+ thisBatch.items.push(item);
85
+ });
86
+
87
+ if (!dispatchTimer) {
88
+ dispatchTimer = setTimeout(dispatch);
89
+ }
90
+
91
+ var cancel = function cancel() {
92
+ batchItem.cancelled = true;
93
+
94
+ if (thisBatch.items.some(function (item) {
95
+ return !item.cancelled;
96
+ })) {
97
+ // there are still things that can be resolved
98
+ return;
99
+ }
100
+
101
+ thisBatch.cancel();
102
+ };
103
+
104
+ return {
105
+ promise: promise,
106
+ cancel: cancel
107
+ };
108
+ }
109
+
110
+ return {
111
+ load: load
112
+ };
113
+ }
114
+
115
+ function httpBatchLink(opts) {
116
+ var url = opts.url;
117
+ return function (runtime) {
118
+ var fetcher = function fetcher(type) {
119
+ return function (keyInputPairs) {
120
+ var path = keyInputPairs.map(function (op) {
121
+ return op.path;
122
+ }).join(',');
123
+ var inputs = keyInputPairs.map(function (op) {
124
+ return op.input;
125
+ });
126
+
127
+ var _httpRequest = httpUtils.httpRequest({
128
+ url: url,
129
+ inputs: inputs,
130
+ path: path,
131
+ runtime: runtime,
132
+ type: type
133
+ }),
134
+ promise = _httpRequest.promise,
135
+ cancel = _httpRequest.cancel;
136
+
137
+ return {
138
+ promise: promise.then(function (res) {
139
+ var resJSON = Array.isArray(res.json) ? res.json : keyInputPairs.map(function () {
140
+ return res.json;
141
+ });
142
+ var result = resJSON.map(function (item) {
143
+ return {
144
+ meta: res.meta,
145
+ json: item
146
+ };
147
+ });
148
+ return result;
149
+ }),
150
+ cancel: cancel
151
+ };
152
+ };
153
+ };
154
+
155
+ var query = dataLoader(fetcher('query'));
156
+ var mutation = dataLoader(fetcher('mutation'));
157
+ var subscription = dataLoader(fetcher('subscription'));
158
+ var loaders = {
159
+ query: query,
160
+ subscription: subscription,
161
+ mutation: mutation
162
+ };
163
+ return function (_ref) {
164
+ var op = _ref.op;
165
+ return observable.observable(function (observer) {
166
+ var loader = loaders[op.type];
167
+
168
+ var _loader$load = loader.load(op),
169
+ promise = _loader$load.promise,
170
+ cancel = _loader$load.cancel;
171
+
172
+ promise.then(function (res) {
173
+ observer.next({
174
+ context: res.meta,
175
+ data: res.json
176
+ });
177
+ observer.complete();
178
+ }).catch(function (err) {
179
+ return observer.error(err);
180
+ });
181
+ return function () {
182
+ cancel();
183
+ };
184
+ });
185
+ };
186
+ };
187
+ }
188
+
189
+ exports.httpBatchLink = httpBatchLink;
@@ -0,0 +1,185 @@
1
+ import { o as observable } from '../observable-7e66cb56.mjs';
2
+ import { h as httpRequest } from '../httpUtils-c09d7b79.mjs';
3
+ import '@babel/runtime/helpers/defineProperty';
4
+
5
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
6
+
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+
9
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
10
+
11
+ /**
12
+ * Dataloader that's very inspired by https://github.com/graphql/dataloader
13
+ * Less configuration, no caching, and allows you to cancel requests
14
+ * When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled
15
+ */
16
+ function dataLoader(fetchMany) {
17
+ var batch = null;
18
+ var dispatchTimer = null;
19
+
20
+ var destroyTimerAndBatch = function destroyTimerAndBatch() {
21
+ clearTimeout(dispatchTimer);
22
+ dispatchTimer = null;
23
+ batch = null;
24
+ };
25
+
26
+ function dispatch() {
27
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
28
+ var batchCopy = batch;
29
+ destroyTimerAndBatch();
30
+
31
+ var _fetchMany = fetchMany(batchCopy.items.map(function (v) {
32
+ return v.key;
33
+ })),
34
+ promise = _fetchMany.promise,
35
+ cancel = _fetchMany.cancel;
36
+
37
+ batchCopy.cancel = cancel;
38
+ promise.then(function (result) {
39
+ for (var i = 0; i < result.length; i++) {
40
+ var _value = result[i];
41
+ batchCopy.items[i].resolve(_value);
42
+ }
43
+ }).catch(function (cause) {
44
+ var _iterator = _createForOfIteratorHelper(batchCopy.items),
45
+ _step;
46
+
47
+ try {
48
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
49
+ var item = _step.value;
50
+ item.reject(cause);
51
+ }
52
+ } catch (err) {
53
+ _iterator.e(err);
54
+ } finally {
55
+ _iterator.f();
56
+ }
57
+ });
58
+ }
59
+
60
+ function load(key) {
61
+ var batchItem = {
62
+ cancelled: false,
63
+ key: key
64
+ };
65
+
66
+ if (!batch) {
67
+ batch = {
68
+ items: [],
69
+ cancel: function cancel() {
70
+ destroyTimerAndBatch();
71
+ }
72
+ };
73
+ }
74
+
75
+ var thisBatch = batch;
76
+ var promise = new Promise(function (resolve, reject) {
77
+ var item = batchItem;
78
+ item.reject = reject;
79
+ item.resolve = resolve;
80
+ thisBatch.items.push(item);
81
+ });
82
+
83
+ if (!dispatchTimer) {
84
+ dispatchTimer = setTimeout(dispatch);
85
+ }
86
+
87
+ var cancel = function cancel() {
88
+ batchItem.cancelled = true;
89
+
90
+ if (thisBatch.items.some(function (item) {
91
+ return !item.cancelled;
92
+ })) {
93
+ // there are still things that can be resolved
94
+ return;
95
+ }
96
+
97
+ thisBatch.cancel();
98
+ };
99
+
100
+ return {
101
+ promise: promise,
102
+ cancel: cancel
103
+ };
104
+ }
105
+
106
+ return {
107
+ load: load
108
+ };
109
+ }
110
+
111
+ function httpBatchLink(opts) {
112
+ var url = opts.url;
113
+ return function (runtime) {
114
+ var fetcher = function fetcher(type) {
115
+ return function (keyInputPairs) {
116
+ var path = keyInputPairs.map(function (op) {
117
+ return op.path;
118
+ }).join(',');
119
+ var inputs = keyInputPairs.map(function (op) {
120
+ return op.input;
121
+ });
122
+
123
+ var _httpRequest = httpRequest({
124
+ url: url,
125
+ inputs: inputs,
126
+ path: path,
127
+ runtime: runtime,
128
+ type: type
129
+ }),
130
+ promise = _httpRequest.promise,
131
+ cancel = _httpRequest.cancel;
132
+
133
+ return {
134
+ promise: promise.then(function (res) {
135
+ var resJSON = Array.isArray(res.json) ? res.json : keyInputPairs.map(function () {
136
+ return res.json;
137
+ });
138
+ var result = resJSON.map(function (item) {
139
+ return {
140
+ meta: res.meta,
141
+ json: item
142
+ };
143
+ });
144
+ return result;
145
+ }),
146
+ cancel: cancel
147
+ };
148
+ };
149
+ };
150
+
151
+ var query = dataLoader(fetcher('query'));
152
+ var mutation = dataLoader(fetcher('mutation'));
153
+ var subscription = dataLoader(fetcher('subscription'));
154
+ var loaders = {
155
+ query: query,
156
+ subscription: subscription,
157
+ mutation: mutation
158
+ };
159
+ return function (_ref) {
160
+ var op = _ref.op;
161
+ return observable(function (observer) {
162
+ var loader = loaders[op.type];
163
+
164
+ var _loader$load = loader.load(op),
165
+ promise = _loader$load.promise,
166
+ cancel = _loader$load.cancel;
167
+
168
+ promise.then(function (res) {
169
+ observer.next({
170
+ context: res.meta,
171
+ data: res.json
172
+ });
173
+ observer.complete();
174
+ }).catch(function (err) {
175
+ return observer.error(err);
176
+ });
177
+ return function () {
178
+ cancel();
179
+ };
180
+ });
181
+ };
182
+ };
183
+ }
184
+
185
+ export { httpBatchLink };
@@ -0,0 +1 @@
1
+
@@ -1,4 +1,5 @@
1
- import { AnyRouter } from '@trpc/server';
2
- import { HTTPLinkOptions, TRPCLink } from './core';
3
- export declare function httpLink<TRouter extends AnyRouter>(opts: HTTPLinkOptions): TRPCLink<TRouter>;
1
+ import { AnyRouter } from '@trpc/server';
2
+ import { TRPCLink } from './types';
3
+ import { HTTPLinkOptions } from './httpUtils';
4
+ export declare function httpLink<TRouter extends AnyRouter>(opts: HTTPLinkOptions): TRPCLink<TRouter>;
4
5
  //# sourceMappingURL=httpLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpLink.d.ts","sourceRoot":"","sources":["../../src/links/httpLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,eAAe,EAAe,MAAM,aAAa,CAAC;AAE3D,wBAAgB,QAAQ,CAAC,OAAO,SAAS,SAAS,EAChD,IAAI,EAAE,eAAe,GACpB,QAAQ,CAAC,OAAO,CAAC,CA2BnB"}