@trpc/client 11.1.2 → 11.1.3-alpha-tmp-tsdown.23

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 (234) hide show
  1. package/dist/TRPCClientError.d.mts +33 -0
  2. package/dist/TRPCClientError.d.mts.map +1 -0
  3. package/dist/TRPCClientError.d.ts +29 -25
  4. package/dist/TRPCClientError.d.ts.map +1 -1
  5. package/dist/TRPCClientError.js +48 -72
  6. package/dist/TRPCClientError.mjs +48 -71
  7. package/dist/TRPCClientError.mjs.map +1 -0
  8. package/dist/_virtual/rolldown_runtime.js +39 -0
  9. package/dist/_virtual/rolldown_runtime.mjs +27 -0
  10. package/dist/createTRPCClient.d.mts +73 -0
  11. package/dist/createTRPCClient.d.mts.map +1 -0
  12. package/dist/createTRPCClient.d.ts +38 -34
  13. package/dist/createTRPCClient.d.ts.map +1 -1
  14. package/dist/createTRPCClient.js +34 -34
  15. package/dist/createTRPCClient.mjs +33 -31
  16. package/dist/createTRPCClient.mjs.map +1 -0
  17. package/dist/createTRPCUntypedClient.d.mts +9 -0
  18. package/dist/createTRPCUntypedClient.d.mts.map +1 -0
  19. package/dist/createTRPCUntypedClient.d.ts +8 -6
  20. package/dist/createTRPCUntypedClient.d.ts.map +1 -1
  21. package/dist/createTRPCUntypedClient.js +5 -6
  22. package/dist/createTRPCUntypedClient.mjs +6 -3
  23. package/dist/createTRPCUntypedClient.mjs.map +1 -0
  24. package/dist/getFetch.d.mts +10 -0
  25. package/dist/getFetch.d.mts.map +1 -0
  26. package/dist/getFetch.d.ts +9 -2
  27. package/dist/getFetch.d.ts.map +1 -1
  28. package/dist/getFetch.js +8 -13
  29. package/dist/getFetch.mjs +8 -11
  30. package/dist/getFetch.mjs.map +1 -0
  31. package/dist/index.d.mts +21 -0
  32. package/dist/index.d.ts +21 -16
  33. package/dist/index.js +41 -42
  34. package/dist/index.mjs +18 -15
  35. package/dist/internals/TRPCUntypedClient.d.mts +46 -0
  36. package/dist/internals/TRPCUntypedClient.d.mts.map +1 -0
  37. package/dist/internals/TRPCUntypedClient.d.ts +40 -33
  38. package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
  39. package/dist/internals/TRPCUntypedClient.js +94 -113
  40. package/dist/internals/TRPCUntypedClient.mjs +93 -110
  41. package/dist/internals/TRPCUntypedClient.mjs.map +1 -0
  42. package/dist/internals/dataLoader.js +101 -116
  43. package/dist/internals/dataLoader.mjs +101 -114
  44. package/dist/internals/dataLoader.mjs.map +1 -0
  45. package/dist/internals/inputWithTrackedEventId.js +9 -12
  46. package/dist/internals/inputWithTrackedEventId.mjs +9 -10
  47. package/dist/internals/inputWithTrackedEventId.mjs.map +1 -0
  48. package/dist/internals/signals.js +39 -40
  49. package/dist/internals/signals.mjs +39 -39
  50. package/dist/internals/signals.mjs.map +1 -0
  51. package/dist/internals/transformer.d.mts +47 -0
  52. package/dist/internals/transformer.d.mts.map +1 -0
  53. package/dist/internals/transformer.d.ts +28 -23
  54. package/dist/internals/transformer.d.ts.map +1 -1
  55. package/dist/internals/transformer.js +25 -26
  56. package/dist/internals/transformer.mjs +25 -24
  57. package/dist/internals/transformer.mjs.map +1 -0
  58. package/dist/internals/types.d.mts +85 -0
  59. package/dist/internals/types.d.mts.map +1 -0
  60. package/dist/internals/types.d.ts +45 -42
  61. package/dist/internals/types.d.ts.map +1 -1
  62. package/dist/links/HTTPBatchLinkOptions.d.mts +25 -0
  63. package/dist/links/HTTPBatchLinkOptions.d.mts.map +1 -0
  64. package/dist/links/HTTPBatchLinkOptions.d.ts +23 -18
  65. package/dist/links/HTTPBatchLinkOptions.d.ts.map +1 -1
  66. package/dist/links/httpBatchLink.d.mts +18 -0
  67. package/dist/links/httpBatchLink.d.mts.map +1 -0
  68. package/dist/links/httpBatchLink.d.ts +14 -4
  69. package/dist/links/httpBatchLink.d.ts.map +1 -1
  70. package/dist/links/httpBatchLink.js +90 -106
  71. package/dist/links/httpBatchLink.mjs +89 -103
  72. package/dist/links/httpBatchLink.mjs.map +1 -0
  73. package/dist/links/httpBatchStreamLink.d.mts +22 -0
  74. package/dist/links/httpBatchStreamLink.d.mts.map +1 -0
  75. package/dist/links/httpBatchStreamLink.d.ts +15 -5
  76. package/dist/links/httpBatchStreamLink.d.ts.map +1 -1
  77. package/dist/links/httpBatchStreamLink.js +120 -144
  78. package/dist/links/httpBatchStreamLink.mjs +119 -141
  79. package/dist/links/httpBatchStreamLink.mjs.map +1 -0
  80. package/dist/links/httpLink.d.mts +24 -0
  81. package/dist/links/httpLink.d.mts.map +1 -0
  82. package/dist/links/httpLink.d.ts +19 -12
  83. package/dist/links/httpLink.d.ts.map +1 -1
  84. package/dist/links/httpLink.js +74 -90
  85. package/dist/links/httpLink.mjs +73 -87
  86. package/dist/links/httpLink.mjs.map +1 -0
  87. package/dist/links/httpSubscriptionLink.d.mts +30 -0
  88. package/dist/links/httpSubscriptionLink.d.mts.map +1 -0
  89. package/dist/links/httpSubscriptionLink.d.ts +21 -17
  90. package/dist/links/httpSubscriptionLink.d.ts.map +1 -1
  91. package/dist/links/httpSubscriptionLink.js +134 -179
  92. package/dist/links/httpSubscriptionLink.mjs +133 -176
  93. package/dist/links/httpSubscriptionLink.mjs.map +1 -0
  94. package/dist/links/internals/contentTypes.d.mts +10 -0
  95. package/dist/links/internals/contentTypes.d.mts.map +1 -0
  96. package/dist/links/internals/contentTypes.d.ts +9 -3
  97. package/dist/links/internals/contentTypes.d.ts.map +1 -1
  98. package/dist/links/internals/contentTypes.js +6 -6
  99. package/dist/links/internals/contentTypes.mjs +6 -4
  100. package/dist/links/internals/contentTypes.mjs.map +1 -0
  101. package/dist/links/internals/createChain.js +23 -23
  102. package/dist/links/internals/createChain.mjs +22 -20
  103. package/dist/links/internals/createChain.mjs.map +1 -0
  104. package/dist/links/internals/httpUtils.d.mts +26 -0
  105. package/dist/links/internals/httpUtils.d.mts.map +1 -0
  106. package/dist/links/internals/httpUtils.d.ts +22 -64
  107. package/dist/links/internals/httpUtils.d.ts.map +1 -1
  108. package/dist/links/internals/httpUtils.js +93 -116
  109. package/dist/links/internals/httpUtils.mjs +94 -113
  110. package/dist/links/internals/httpUtils.mjs.map +1 -0
  111. package/dist/links/internals/subscriptions.d.mts +20 -0
  112. package/dist/links/internals/subscriptions.d.mts.map +1 -0
  113. package/dist/links/internals/subscriptions.d.ts +11 -8
  114. package/dist/links/internals/subscriptions.d.ts.map +1 -1
  115. package/dist/links/internals/urlWithConnectionParams.d.mts +27 -0
  116. package/dist/links/internals/urlWithConnectionParams.d.mts.map +1 -0
  117. package/dist/links/internals/urlWithConnectionParams.d.ts +22 -18
  118. package/dist/links/internals/urlWithConnectionParams.d.ts.map +1 -1
  119. package/dist/links/internals/urlWithConnectionParams.js +8 -6
  120. package/dist/links/internals/urlWithConnectionParams.mjs +8 -4
  121. package/dist/links/internals/urlWithConnectionParams.mjs.map +1 -0
  122. package/dist/links/localLink.d.mts +22 -0
  123. package/dist/links/localLink.d.mts.map +1 -0
  124. package/dist/links/localLink.d.ts +22 -0
  125. package/dist/links/localLink.d.ts.map +1 -0
  126. package/dist/links/localLink.js +192 -0
  127. package/dist/links/localLink.mjs +193 -0
  128. package/dist/links/localLink.mjs.map +1 -0
  129. package/dist/links/loggerLink.d.mts +56 -0
  130. package/dist/links/loggerLink.d.mts.map +1 -0
  131. package/dist/links/loggerLink.d.ts +40 -36
  132. package/dist/links/loggerLink.d.ts.map +1 -1
  133. package/dist/links/loggerLink.js +113 -166
  134. package/dist/links/loggerLink.mjs +112 -163
  135. package/dist/links/loggerLink.mjs.map +1 -0
  136. package/dist/links/retryLink.d.mts +35 -0
  137. package/dist/links/retryLink.d.mts.map +1 -0
  138. package/dist/links/retryLink.d.ts +27 -25
  139. package/dist/links/retryLink.d.ts.map +1 -1
  140. package/dist/links/retryLink.js +60 -68
  141. package/dist/links/retryLink.mjs +59 -65
  142. package/dist/links/retryLink.mjs.map +1 -0
  143. package/dist/links/splitLink.d.mts +21 -0
  144. package/dist/links/splitLink.d.mts.map +1 -0
  145. package/dist/links/splitLink.d.ts +19 -12
  146. package/dist/links/splitLink.d.ts.map +1 -1
  147. package/dist/links/splitLink.js +20 -21
  148. package/dist/links/splitLink.mjs +19 -18
  149. package/dist/links/splitLink.mjs.map +1 -0
  150. package/dist/links/types.d.mts +71 -0
  151. package/dist/links/types.d.mts.map +1 -0
  152. package/dist/links/types.d.ts +37 -29
  153. package/dist/links/types.d.ts.map +1 -1
  154. package/dist/links/wsLink/createWsClient.d.mts +10 -0
  155. package/dist/links/wsLink/createWsClient.d.mts.map +1 -0
  156. package/dist/links/wsLink/createWsClient.d.ts +9 -5
  157. package/dist/links/wsLink/createWsClient.d.ts.map +1 -1
  158. package/dist/links/wsLink/createWsClient.js +5 -5
  159. package/dist/links/wsLink/createWsClient.mjs +5 -2
  160. package/dist/links/wsLink/createWsClient.mjs.map +1 -0
  161. package/dist/links/wsLink/wsClient/options.d.mts +69 -0
  162. package/dist/links/wsLink/wsClient/options.d.mts.map +1 -0
  163. package/dist/links/wsLink/wsClient/options.d.ts +54 -64
  164. package/dist/links/wsLink/wsClient/options.d.ts.map +1 -1
  165. package/dist/links/wsLink/wsClient/options.js +14 -12
  166. package/dist/links/wsLink/wsClient/options.mjs +14 -10
  167. package/dist/links/wsLink/wsClient/options.mjs.map +1 -0
  168. package/dist/links/wsLink/wsClient/requestManager.js +133 -135
  169. package/dist/links/wsLink/wsClient/requestManager.mjs +133 -132
  170. package/dist/links/wsLink/wsClient/requestManager.mjs.map +1 -0
  171. package/dist/links/wsLink/wsClient/utils.js +64 -81
  172. package/dist/links/wsLink/wsClient/utils.mjs +64 -78
  173. package/dist/links/wsLink/wsClient/utils.mjs.map +1 -0
  174. package/dist/links/wsLink/wsClient/wsClient.d.mts +104 -0
  175. package/dist/links/wsLink/wsClient/wsClient.d.mts.map +1 -0
  176. package/dist/links/wsLink/wsClient/wsClient.d.ts +99 -79
  177. package/dist/links/wsLink/wsClient/wsClient.d.ts.map +1 -1
  178. package/dist/links/wsLink/wsClient/wsClient.js +273 -322
  179. package/dist/links/wsLink/wsClient/wsClient.mjs +272 -319
  180. package/dist/links/wsLink/wsClient/wsClient.mjs.map +1 -0
  181. package/dist/links/wsLink/wsClient/wsConnection.js +155 -178
  182. package/dist/links/wsLink/wsClient/wsConnection.mjs +154 -175
  183. package/dist/links/wsLink/wsClient/wsConnection.mjs.map +1 -0
  184. package/dist/links/wsLink/wsLink.d.mts +15 -0
  185. package/dist/links/wsLink/wsLink.d.mts.map +1 -0
  186. package/dist/links/wsLink/wsLink.d.ts +13 -9
  187. package/dist/links/wsLink/wsLink.d.ts.map +1 -1
  188. package/dist/links/wsLink/wsLink.js +30 -31
  189. package/dist/links/wsLink/wsLink.mjs +29 -28
  190. package/dist/links/wsLink/wsLink.mjs.map +1 -0
  191. package/dist/links.js +11 -0
  192. package/dist/links.mjs +11 -0
  193. package/dist/node_modules/.pnpm/@oxc-project_runtime@0.71.0/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js +68 -0
  194. package/dist/node_modules/.pnpm/@oxc-project_runtime@0.71.0/node_modules/@oxc-project/runtime/src/helpers/usingCtx.mjs +66 -0
  195. package/dist/node_modules/.pnpm/@oxc-project_runtime@0.71.0/node_modules/@oxc-project/runtime/src/helpers/usingCtx.mjs.map +1 -0
  196. package/dist/unstable-internals.d.mts +3 -0
  197. package/dist/unstable-internals.d.ts +3 -3
  198. package/dist/unstable-internals.js +2 -6
  199. package/dist/unstable-internals.mjs +3 -1
  200. package/links/httpBatchLink/package.json +1 -0
  201. package/links/httpLink/package.json +1 -0
  202. package/links/loggerLink/package.json +1 -0
  203. package/links/splitLink/package.json +1 -0
  204. package/links/wsLink/wsLink/package.json +1 -0
  205. package/package.json +64 -29
  206. package/src/TRPCClientError.ts +4 -9
  207. package/src/internals/dataLoader.ts +2 -6
  208. package/src/internals/signals.ts +16 -0
  209. package/src/links/httpSubscriptionLink.ts +3 -18
  210. package/src/links/localLink.ts +277 -0
  211. package/src/links/wsLink/wsClient/requestManager.ts +9 -0
  212. package/src/links/wsLink/wsClient/wsClient.ts +1 -1
  213. package/src/links.ts +1 -0
  214. package/unstable-internals/package.json +1 -0
  215. package/dist/index.d.ts.map +0 -1
  216. package/dist/internals/dataLoader.d.ts +0 -13
  217. package/dist/internals/dataLoader.d.ts.map +0 -1
  218. package/dist/internals/inputWithTrackedEventId.d.ts +0 -2
  219. package/dist/internals/inputWithTrackedEventId.d.ts.map +0 -1
  220. package/dist/internals/signals.d.ts +0 -15
  221. package/dist/internals/signals.d.ts.map +0 -1
  222. package/dist/links/internals/createChain.d.ts +0 -8
  223. package/dist/links/internals/createChain.d.ts.map +0 -1
  224. package/dist/links/internals/dedupeLink.d.ts +0 -7
  225. package/dist/links/internals/dedupeLink.d.ts.map +0 -1
  226. package/dist/links/wsLink/wsClient/requestManager.d.ts +0 -102
  227. package/dist/links/wsLink/wsClient/requestManager.d.ts.map +0 -1
  228. package/dist/links/wsLink/wsClient/utils.d.ts +0 -38
  229. package/dist/links/wsLink/wsClient/utils.d.ts.map +0 -1
  230. package/dist/links/wsLink/wsClient/wsConnection.d.ts +0 -79
  231. package/dist/links/wsLink/wsClient/wsConnection.d.ts.map +0 -1
  232. package/dist/links.d.ts +0 -11
  233. package/dist/links.d.ts.map +0 -1
  234. package/dist/unstable-internals.d.ts.map +0 -1
@@ -1,113 +1,96 @@
1
- import { share, observableToPromise } from '@trpc/server/observable';
2
- import { createChain } from '../links/internals/createChain.mjs';
3
- import { TRPCClientError } from '../TRPCClientError.mjs';
1
+ import { createChain } from "../links/internals/createChain.mjs";
2
+ import { TRPCClientError } from "../TRPCClientError.mjs";
3
+ import { observableToPromise, share } from "@trpc/server/observable";
4
4
 
5
- function _define_property(obj, key, value) {
6
- if (key in obj) {
7
- Object.defineProperty(obj, key, {
8
- value: value,
9
- enumerable: true,
10
- configurable: true,
11
- writable: true
12
- });
13
- } else {
14
- obj[key] = value;
15
- }
16
- return obj;
17
- }
18
- class TRPCUntypedClient {
19
- $request(opts) {
20
- const chain$ = createChain({
21
- links: this.links,
22
- op: {
23
- ...opts,
24
- context: opts.context ?? {},
25
- id: ++this.requestId
26
- }
27
- });
28
- return chain$.pipe(share());
29
- }
30
- async requestAsPromise(opts) {
31
- try {
32
- const req$ = this.$request(opts);
33
- const envelope = await observableToPromise(req$);
34
- const data = envelope.result.data;
35
- return data;
36
- } catch (err) {
37
- throw TRPCClientError.from(err);
38
- }
39
- }
40
- query(path, input, opts) {
41
- return this.requestAsPromise({
42
- type: 'query',
43
- path,
44
- input,
45
- context: opts?.context,
46
- signal: opts?.signal
47
- });
48
- }
49
- mutation(path, input, opts) {
50
- return this.requestAsPromise({
51
- type: 'mutation',
52
- path,
53
- input,
54
- context: opts?.context,
55
- signal: opts?.signal
56
- });
57
- }
58
- subscription(path, input, opts) {
59
- const observable$ = this.$request({
60
- type: 'subscription',
61
- path,
62
- input,
63
- context: opts.context,
64
- signal: opts.signal
65
- });
66
- return observable$.subscribe({
67
- next (envelope) {
68
- switch(envelope.result.type){
69
- case 'state':
70
- {
71
- opts.onConnectionStateChange?.(envelope.result);
72
- break;
73
- }
74
- case 'started':
75
- {
76
- opts.onStarted?.({
77
- context: envelope.context
78
- });
79
- break;
80
- }
81
- case 'stopped':
82
- {
83
- opts.onStopped?.();
84
- break;
85
- }
86
- case 'data':
87
- case undefined:
88
- {
89
- opts.onData?.(envelope.result.data);
90
- break;
91
- }
92
- }
93
- },
94
- error (err) {
95
- opts.onError?.(err);
96
- },
97
- complete () {
98
- opts.onComplete?.();
99
- }
100
- });
101
- }
102
- constructor(opts){
103
- _define_property(this, "links", void 0);
104
- _define_property(this, "runtime", void 0);
105
- _define_property(this, "requestId", void 0);
106
- this.requestId = 0;
107
- this.runtime = {};
108
- // Initialize the links
109
- this.links = opts.links.map((link)=>link(this.runtime));
110
- }
111
- }
5
+ //#region src/internals/TRPCUntypedClient.ts
6
+ var TRPCUntypedClient = class {
7
+ links;
8
+ runtime;
9
+ requestId;
10
+ constructor(opts) {
11
+ this.requestId = 0;
12
+ this.runtime = {};
13
+ this.links = opts.links.map((link) => link(this.runtime));
14
+ }
15
+ $request(opts) {
16
+ const chain$ = createChain({
17
+ links: this.links,
18
+ op: {
19
+ ...opts,
20
+ context: opts.context ?? {},
21
+ id: ++this.requestId
22
+ }
23
+ });
24
+ return chain$.pipe(share());
25
+ }
26
+ async requestAsPromise(opts) {
27
+ try {
28
+ const req$ = this.$request(opts);
29
+ const envelope = await observableToPromise(req$);
30
+ const data = envelope.result.data;
31
+ return data;
32
+ } catch (err) {
33
+ throw TRPCClientError.from(err);
34
+ }
35
+ }
36
+ query(path, input, opts) {
37
+ return this.requestAsPromise({
38
+ type: "query",
39
+ path,
40
+ input,
41
+ context: opts?.context,
42
+ signal: opts?.signal
43
+ });
44
+ }
45
+ mutation(path, input, opts) {
46
+ return this.requestAsPromise({
47
+ type: "mutation",
48
+ path,
49
+ input,
50
+ context: opts?.context,
51
+ signal: opts?.signal
52
+ });
53
+ }
54
+ subscription(path, input, opts) {
55
+ const observable$ = this.$request({
56
+ type: "subscription",
57
+ path,
58
+ input,
59
+ context: opts.context,
60
+ signal: opts.signal
61
+ });
62
+ return observable$.subscribe({
63
+ next(envelope) {
64
+ switch (envelope.result.type) {
65
+ case "state": {
66
+ opts.onConnectionStateChange?.(envelope.result);
67
+ break;
68
+ }
69
+ case "started": {
70
+ opts.onStarted?.({ context: envelope.context });
71
+ break;
72
+ }
73
+ case "stopped": {
74
+ opts.onStopped?.();
75
+ break;
76
+ }
77
+ case "data":
78
+ case void 0: {
79
+ opts.onData?.(envelope.result.data);
80
+ break;
81
+ }
82
+ }
83
+ },
84
+ error(err) {
85
+ opts.onError?.(err);
86
+ },
87
+ complete() {
88
+ opts.onComplete?.();
89
+ }
90
+ });
91
+ }
92
+ };
112
93
 
94
+ //#endregion
113
95
  export { TRPCUntypedClient };
96
+ //# sourceMappingURL=TRPCUntypedClient.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TRPCUntypedClient.mjs","names":["opts: CreateTRPCClientOptions<TInferrable>","opts: {\n type: TRPCType;\n input: TInput;\n path: string;\n context?: OperationContext;\n signal: Maybe<AbortSignal>;\n }","path: string","input?: unknown","opts?: TRPCRequestOptions","input: unknown","opts: Partial<\n TRPCSubscriptionObserver<unknown, TRPCClientError<AnyRouter>>\n > &\n TRPCRequestOptions"],"sources":["../../src/internals/TRPCUntypedClient.ts"],"sourcesContent":["import type {\n inferObservableValue,\n Unsubscribable,\n} from '@trpc/server/observable';\nimport { observableToPromise, share } from '@trpc/server/observable';\nimport type {\n AnyRouter,\n inferAsyncIterableYield,\n InferrableClientTypes,\n Maybe,\n TypeError,\n} from '@trpc/server/unstable-core-do-not-import';\nimport { createChain } from '../links/internals/createChain';\nimport type { TRPCConnectionState } from '../links/internals/subscriptions';\nimport type {\n OperationContext,\n OperationLink,\n TRPCClientRuntime,\n TRPCLink,\n} from '../links/types';\nimport { TRPCClientError } from '../TRPCClientError';\n\ntype TRPCType = 'mutation' | 'query' | 'subscription';\nexport interface TRPCRequestOptions {\n /**\n * Pass additional context to links\n */\n context?: OperationContext;\n signal?: AbortSignal;\n}\n\nexport interface TRPCSubscriptionObserver<TValue, TError> {\n onStarted: (opts: { context: OperationContext | undefined }) => void;\n onData: (value: inferAsyncIterableYield<TValue>) => void;\n onError: (err: TError) => void;\n onStopped: () => void;\n onComplete: () => void;\n onConnectionStateChange: (state: TRPCConnectionState<TError>) => void;\n}\n\n/** @internal */\nexport type CreateTRPCClientOptions<TRouter extends InferrableClientTypes> = {\n links: TRPCLink<TRouter>[];\n transformer?: TypeError<'The transformer property has moved to httpLink/httpBatchLink/wsLink'>;\n};\n\nexport class TRPCUntypedClient<TInferrable extends InferrableClientTypes> {\n private readonly links: OperationLink<TInferrable>[];\n public readonly runtime: TRPCClientRuntime;\n private requestId: number;\n\n constructor(opts: CreateTRPCClientOptions<TInferrable>) {\n this.requestId = 0;\n\n this.runtime = {};\n\n // Initialize the links\n this.links = opts.links.map((link) => link(this.runtime));\n }\n\n private $request<TInput = unknown, TOutput = unknown>(opts: {\n type: TRPCType;\n input: TInput;\n path: string;\n context?: OperationContext;\n signal: Maybe<AbortSignal>;\n }) {\n const chain$ = createChain<AnyRouter, TInput, TOutput>({\n links: this.links as OperationLink<any, any, any>[],\n op: {\n ...opts,\n context: opts.context ?? {},\n id: ++this.requestId,\n },\n });\n return chain$.pipe(share());\n }\n\n private async requestAsPromise<TInput = unknown, TOutput = unknown>(opts: {\n type: TRPCType;\n input: TInput;\n path: string;\n context?: OperationContext;\n signal: Maybe<AbortSignal>;\n }): Promise<TOutput> {\n try {\n const req$ = this.$request<TInput, TOutput>(opts);\n type TValue = inferObservableValue<typeof req$>;\n\n const envelope = await observableToPromise<TValue>(req$);\n const data = (envelope.result as any).data;\n return data;\n } catch (err) {\n throw TRPCClientError.from(err as Error);\n }\n }\n public query(path: string, input?: unknown, opts?: TRPCRequestOptions) {\n return this.requestAsPromise<unknown, unknown>({\n type: 'query',\n path,\n input,\n context: opts?.context,\n signal: opts?.signal,\n });\n }\n public mutation(path: string, input?: unknown, opts?: TRPCRequestOptions) {\n return this.requestAsPromise<unknown, unknown>({\n type: 'mutation',\n path,\n input,\n context: opts?.context,\n signal: opts?.signal,\n });\n }\n public subscription(\n path: string,\n input: unknown,\n opts: Partial<\n TRPCSubscriptionObserver<unknown, TRPCClientError<AnyRouter>>\n > &\n TRPCRequestOptions,\n ): Unsubscribable {\n const observable$ = this.$request({\n type: 'subscription',\n path,\n input,\n context: opts.context,\n signal: opts.signal,\n });\n return observable$.subscribe({\n next(envelope) {\n switch (envelope.result.type) {\n case 'state': {\n opts.onConnectionStateChange?.(envelope.result);\n break;\n }\n case 'started': {\n opts.onStarted?.({\n context: envelope.context,\n });\n break;\n }\n case 'stopped': {\n opts.onStopped?.();\n break;\n }\n case 'data':\n case undefined: {\n opts.onData?.(envelope.result.data);\n break;\n }\n }\n },\n error(err) {\n opts.onError?.(err);\n },\n complete() {\n opts.onComplete?.();\n },\n });\n }\n}\n"],"mappings":";;;;;AA8CA,IAAa,oBAAb,MAA0E;CACxE,AAAiB;CACjB,AAAgB;CAChB,AAAQ;CAER,YAAYA,MAA4C;AACtD,OAAK,YAAY;AAEjB,OAAK,UAAU,CAAE;AAGjB,OAAK,QAAQ,KAAK,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK,QAAQ,CAAC;CAC1D;CAED,AAAQ,SAA8CC,MAMnD;EACD,MAAM,SAAS,YAAwC;GACrD,OAAO,KAAK;GACZ,IAAI;IACF,GAAG;IACH,SAAS,KAAK,WAAW,CAAE;IAC3B,IAAI,EAAE,KAAK;GACZ;EACF,EAAC;AACF,SAAO,OAAO,KAAK,OAAO,CAAC;CAC5B;CAED,MAAc,iBAAsDA,MAM/C;AACnB,MAAI;GACF,MAAM,OAAO,KAAK,SAA0B,KAAK;GAGjD,MAAM,WAAW,MAAM,oBAA4B,KAAK;GACxD,MAAM,OAAQ,SAAS,OAAe;AACtC,UAAO;EACR,SAAQ,KAAK;AACZ,SAAM,gBAAgB,KAAK,IAAa;EACzC;CACF;CACD,AAAO,MAAMC,MAAcC,OAAiBC,MAA2B;AACrE,SAAO,KAAK,iBAAmC;GAC7C,MAAM;GACN;GACA;GACA,SAAS,MAAM;GACf,QAAQ,MAAM;EACf,EAAC;CACH;CACD,AAAO,SAASF,MAAcC,OAAiBC,MAA2B;AACxE,SAAO,KAAK,iBAAmC;GAC7C,MAAM;GACN;GACA;GACA,SAAS,MAAM;GACf,QAAQ,MAAM;EACf,EAAC;CACH;CACD,AAAO,aACLF,MACAG,OACAC,MAIgB;EAChB,MAAM,cAAc,KAAK,SAAS;GAChC,MAAM;GACN;GACA;GACA,SAAS,KAAK;GACd,QAAQ,KAAK;EACd,EAAC;AACF,SAAO,YAAY,UAAU;GAC3B,KAAK,UAAU;AACb,YAAQ,SAAS,OAAO,MAAxB;KACE,KAAK,SAAS;AACZ,WAAK,0BAA0B,SAAS,OAAO;AAC/C;KACD;KACD,KAAK,WAAW;AACd,WAAK,YAAY,EACf,SAAS,SAAS,QACnB,EAAC;AACF;KACD;KACD,KAAK,WAAW;AACd,WAAK,aAAa;AAClB;KACD;KACD,KAAK;KACL,aAAgB;AACd,WAAK,SAAS,SAAS,OAAO,KAAK;AACnC;KACD;IACF;GACF;GACD,MAAM,KAAK;AACT,SAAK,UAAU,IAAI;GACpB;GACD,WAAW;AACT,SAAK,cAAc;GACpB;EACF,EAAC;CACH;AACF"}
@@ -1,121 +1,106 @@
1
- 'use strict';
2
1
 
3
- /* eslint-disable @typescript-eslint/no-non-null-assertion */ /**
4
- * A function that should never be called unless we messed something up.
5
- */ const throwFatalError = ()=>{
6
- throw new Error('Something went wrong. Please submit an issue at https://github.com/trpc/trpc/issues/new');
2
+ //#region src/internals/dataLoader.ts
3
+ /**
4
+ * A function that should never be called unless we messed something up.
5
+ */
6
+ const throwFatalError = () => {
7
+ throw new Error("Something went wrong. Please submit an issue at https://github.com/trpc/trpc/issues/new");
7
8
  };
8
9
  /**
9
- * Dataloader that's very inspired by https://github.com/graphql/dataloader
10
- * Less configuration, no caching, and allows you to cancel requests
11
- * When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled
12
- */ function dataLoader(batchLoader) {
13
- let pendingItems = null;
14
- let dispatchTimer = null;
15
- const destroyTimerAndPendingItems = ()=>{
16
- clearTimeout(dispatchTimer);
17
- dispatchTimer = null;
18
- pendingItems = null;
19
- };
20
- /**
21
- * Iterate through the items and split them into groups based on the `batchLoader`'s validate function
22
- */ function groupItems(items) {
23
- const groupedItems = [
24
- []
25
- ];
26
- let index = 0;
27
- while(true){
28
- const item = items[index];
29
- if (!item) {
30
- break;
31
- }
32
- const lastGroup = groupedItems[groupedItems.length - 1];
33
- if (item.aborted) {
34
- // Item was aborted before it was dispatched
35
- item.reject?.(new Error('Aborted'));
36
- index++;
37
- continue;
38
- }
39
- const isValid = batchLoader.validate(lastGroup.concat(item).map((it)=>it.key));
40
- if (isValid) {
41
- lastGroup.push(item);
42
- index++;
43
- continue;
44
- }
45
- if (lastGroup.length === 0) {
46
- item.reject?.(new Error('Input is too big for a single dispatch'));
47
- index++;
48
- continue;
49
- }
50
- // Create new group, next iteration will try to add the item to that
51
- groupedItems.push([]);
52
- }
53
- return groupedItems;
54
- }
55
- function dispatch() {
56
- const groupedItems = groupItems(pendingItems);
57
- destroyTimerAndPendingItems();
58
- // Create batches for each group of items
59
- for (const items of groupedItems){
60
- if (!items.length) {
61
- continue;
62
- }
63
- const batch = {
64
- items
65
- };
66
- for (const item of items){
67
- item.batch = batch;
68
- }
69
- const promise = batchLoader.fetch(batch.items.map((_item)=>_item.key));
70
- promise.then(async (result)=>{
71
- await Promise.all(result.map(async (valueOrPromise, index)=>{
72
- const item = batch.items[index];
73
- try {
74
- const value = await Promise.resolve(valueOrPromise);
75
- item.resolve?.(value);
76
- } catch (cause) {
77
- item.reject?.(cause);
78
- }
79
- item.batch = null;
80
- item.reject = null;
81
- item.resolve = null;
82
- }));
83
- for (const item of batch.items){
84
- item.reject?.(new Error('Missing result'));
85
- item.batch = null;
86
- }
87
- }).catch((cause)=>{
88
- for (const item of batch.items){
89
- item.reject?.(cause);
90
- item.batch = null;
91
- }
92
- });
93
- }
94
- }
95
- function load(key) {
96
- const item = {
97
- aborted: false,
98
- key,
99
- batch: null,
100
- resolve: throwFatalError,
101
- reject: throwFatalError
102
- };
103
- const promise = new Promise((resolve, reject)=>{
104
- item.reject = reject;
105
- item.resolve = resolve;
106
- if (!pendingItems) {
107
- pendingItems = [];
108
- }
109
- pendingItems.push(item);
110
- });
111
- if (!dispatchTimer) {
112
- dispatchTimer = setTimeout(dispatch);
113
- }
114
- return promise;
115
- }
116
- return {
117
- load
118
- };
10
+ * Dataloader that's very inspired by https://github.com/graphql/dataloader
11
+ * Less configuration, no caching, and allows you to cancel requests
12
+ * When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled
13
+ */
14
+ function dataLoader(batchLoader) {
15
+ let pendingItems = null;
16
+ let dispatchTimer = null;
17
+ const destroyTimerAndPendingItems = () => {
18
+ clearTimeout(dispatchTimer);
19
+ dispatchTimer = null;
20
+ pendingItems = null;
21
+ };
22
+ /**
23
+ * Iterate through the items and split them into groups based on the `batchLoader`'s validate function
24
+ */
25
+ function groupItems(items) {
26
+ const groupedItems = [[]];
27
+ let index = 0;
28
+ while (true) {
29
+ const item = items[index];
30
+ if (!item) break;
31
+ const lastGroup = groupedItems[groupedItems.length - 1];
32
+ if (item.aborted) {
33
+ item.reject?.(new Error("Aborted"));
34
+ index++;
35
+ continue;
36
+ }
37
+ const isValid = batchLoader.validate(lastGroup.concat(item).map((it) => it.key));
38
+ if (isValid) {
39
+ lastGroup.push(item);
40
+ index++;
41
+ continue;
42
+ }
43
+ if (lastGroup.length === 0) {
44
+ item.reject?.(new Error("Input is too big for a single dispatch"));
45
+ index++;
46
+ continue;
47
+ }
48
+ groupedItems.push([]);
49
+ }
50
+ return groupedItems;
51
+ }
52
+ function dispatch() {
53
+ const groupedItems = groupItems(pendingItems);
54
+ destroyTimerAndPendingItems();
55
+ for (const items of groupedItems) {
56
+ if (!items.length) continue;
57
+ const batch = { items };
58
+ for (const item of items) item.batch = batch;
59
+ const promise = batchLoader.fetch(batch.items.map((_item) => _item.key));
60
+ promise.then(async (result) => {
61
+ await Promise.all(result.map(async (valueOrPromise, index) => {
62
+ const item = batch.items[index];
63
+ try {
64
+ const value = await Promise.resolve(valueOrPromise);
65
+ item.resolve?.(value);
66
+ } catch (cause) {
67
+ item.reject?.(cause);
68
+ }
69
+ item.batch = null;
70
+ item.reject = null;
71
+ item.resolve = null;
72
+ }));
73
+ for (const item of batch.items) {
74
+ item.reject?.(new Error("Missing result"));
75
+ item.batch = null;
76
+ }
77
+ }).catch((cause) => {
78
+ for (const item of batch.items) {
79
+ item.reject?.(cause);
80
+ item.batch = null;
81
+ }
82
+ });
83
+ }
84
+ }
85
+ function load(key) {
86
+ const item = {
87
+ aborted: false,
88
+ key,
89
+ batch: null,
90
+ resolve: throwFatalError,
91
+ reject: throwFatalError
92
+ };
93
+ const promise = new Promise((resolve, reject) => {
94
+ item.reject = reject;
95
+ item.resolve = resolve;
96
+ pendingItems ??= [];
97
+ pendingItems.push(item);
98
+ });
99
+ dispatchTimer ??= setTimeout(dispatch);
100
+ return promise;
101
+ }
102
+ return { load };
119
103
  }
120
104
 
121
- exports.dataLoader = dataLoader;
105
+ //#endregion
106
+ exports.dataLoader = dataLoader;