@trpc/client 11.0.0-next.91 → 11.0.0-rc.329

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 (159) hide show
  1. package/README.md +4 -4
  2. package/dist/TRPCClientError.d.ts +8 -7
  3. package/dist/TRPCClientError.d.ts.map +1 -1
  4. package/dist/{TRPCClientError-e224e397.js → TRPCClientError.js} +3 -3
  5. package/dist/{TRPCClientError-0de4d231.mjs → TRPCClientError.mjs} +4 -4
  6. package/dist/bundle-analysis.json +126 -155
  7. package/dist/createTRPCClient.d.ts +27 -19
  8. package/dist/createTRPCClient.d.ts.map +1 -1
  9. package/dist/createTRPCClient.js +50 -0
  10. package/dist/createTRPCClient.mjs +45 -0
  11. package/dist/createTRPCUntypedClient.d.ts +3 -2
  12. package/dist/createTRPCUntypedClient.d.ts.map +1 -1
  13. package/dist/createTRPCUntypedClient.js +10 -0
  14. package/dist/createTRPCUntypedClient.mjs +7 -0
  15. package/dist/getFetch.d.ts +1 -1
  16. package/dist/getFetch.d.ts.map +1 -1
  17. package/dist/getFetch.js +17 -0
  18. package/dist/getFetch.mjs +15 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +32 -370
  21. package/dist/index.mjs +9 -354
  22. package/dist/internals/TRPCUntypedClient.d.ts +5 -30
  23. package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
  24. package/dist/internals/TRPCUntypedClient.js +85 -0
  25. package/dist/internals/TRPCUntypedClient.mjs +83 -0
  26. package/dist/internals/dataLoader.d.ts +1 -1
  27. package/dist/internals/dataLoader.d.ts.map +1 -1
  28. package/dist/{httpBatchLink-204206a5.mjs → internals/dataLoader.js} +2 -117
  29. package/dist/internals/dataLoader.mjs +131 -0
  30. package/dist/internals/getAbortController.d.ts +2 -2
  31. package/dist/internals/getAbortController.d.ts.map +1 -1
  32. package/dist/internals/getAbortController.js +18 -0
  33. package/dist/internals/getAbortController.mjs +16 -0
  34. package/dist/internals/transformer.d.ts +42 -0
  35. package/dist/internals/transformer.d.ts.map +1 -0
  36. package/dist/internals/transformer.js +30 -0
  37. package/dist/internals/transformer.mjs +28 -0
  38. package/dist/internals/types.d.ts +4 -2
  39. package/dist/internals/types.d.ts.map +1 -1
  40. package/dist/links/HTTPBatchLinkOptions.d.ts +6 -5
  41. package/dist/links/HTTPBatchLinkOptions.d.ts.map +1 -1
  42. package/dist/links/httpBatchLink.d.ts +2 -2
  43. package/dist/links/httpBatchLink.d.ts.map +1 -1
  44. package/dist/links/httpBatchLink.js +37 -9
  45. package/dist/links/httpBatchLink.mjs +39 -5
  46. package/dist/links/httpBatchStreamLink.d.ts +6 -5
  47. package/dist/links/httpBatchStreamLink.d.ts.map +1 -1
  48. package/dist/links/httpBatchStreamLink.js +43 -0
  49. package/dist/links/httpBatchStreamLink.mjs +41 -0
  50. package/dist/links/httpFormDataLink.d.ts +1 -1
  51. package/dist/links/httpFormDataLink.d.ts.map +1 -1
  52. package/dist/links/httpFormDataLink.js +31 -0
  53. package/dist/links/httpFormDataLink.mjs +29 -0
  54. package/dist/links/httpLink.d.ts +8 -8
  55. package/dist/links/httpLink.d.ts.map +1 -1
  56. package/dist/links/httpLink.js +6 -9
  57. package/dist/links/httpLink.mjs +6 -7
  58. package/dist/links/internals/createChain.d.ts +2 -2
  59. package/dist/links/internals/createChain.d.ts.map +1 -1
  60. package/dist/{splitLink-f29e84be.js → links/internals/createChain.js} +0 -22
  61. package/dist/{splitLink-4c75f7be.mjs → links/internals/createChain.mjs} +1 -22
  62. package/dist/links/internals/createHTTPBatchLink.d.ts +6 -6
  63. package/dist/links/internals/createHTTPBatchLink.d.ts.map +1 -1
  64. package/dist/links/internals/createHTTPBatchLink.js +85 -0
  65. package/dist/links/internals/createHTTPBatchLink.mjs +83 -0
  66. package/dist/links/internals/dedupeLink.d.ts +2 -2
  67. package/dist/links/internals/dedupeLink.d.ts.map +1 -1
  68. package/dist/links/internals/getTextDecoder.d.ts +1 -1
  69. package/dist/links/internals/getTextDecoder.d.ts.map +1 -1
  70. package/dist/links/internals/getTextDecoder.js +18 -0
  71. package/dist/links/internals/getTextDecoder.mjs +16 -0
  72. package/dist/links/internals/httpUtils.d.ts +19 -11
  73. package/dist/links/internals/httpUtils.d.ts.map +1 -1
  74. package/dist/{httpUtils-c0e7bf5a.js → links/internals/httpUtils.js} +20 -39
  75. package/dist/{httpUtils-f58ceda1.mjs → links/internals/httpUtils.mjs} +20 -38
  76. package/dist/links/internals/parseJSONStream.d.ts +5 -6
  77. package/dist/links/internals/parseJSONStream.d.ts.map +1 -1
  78. package/dist/links/internals/parseJSONStream.js +118 -0
  79. package/dist/links/internals/parseJSONStream.mjs +115 -0
  80. package/dist/links/internals/retryLink.d.ts +2 -2
  81. package/dist/links/internals/retryLink.d.ts.map +1 -1
  82. package/dist/links/loggerLink.d.ts +4 -4
  83. package/dist/links/loggerLink.d.ts.map +1 -1
  84. package/dist/links/loggerLink.js +6 -4
  85. package/dist/links/loggerLink.mjs +6 -2
  86. package/dist/links/splitLink.d.ts +2 -2
  87. package/dist/links/splitLink.d.ts.map +1 -1
  88. package/dist/links/splitLink.js +23 -6
  89. package/dist/links/splitLink.mjs +25 -2
  90. package/dist/links/types.d.ts +15 -14
  91. package/dist/links/types.d.ts.map +1 -1
  92. package/dist/links/wsLink.d.ts +44 -13
  93. package/dist/links/wsLink.d.ts.map +1 -1
  94. package/dist/links/wsLink.js +64 -24
  95. package/dist/links/wsLink.mjs +64 -22
  96. package/dist/links.d.ts +10 -0
  97. package/dist/links.d.ts.map +1 -0
  98. package/dist/unstable-internals.d.ts +2 -0
  99. package/dist/unstable-internals.d.ts.map +1 -0
  100. package/dist/unstable-internals.js +7 -0
  101. package/dist/unstable-internals.mjs +1 -0
  102. package/package.json +26 -28
  103. package/src/TRPCClientError.ts +24 -13
  104. package/src/createTRPCClient.ts +58 -51
  105. package/src/createTRPCUntypedClient.ts +3 -5
  106. package/src/getFetch.ts +1 -1
  107. package/src/index.ts +2 -0
  108. package/src/internals/TRPCUntypedClient.ts +14 -84
  109. package/src/internals/dataLoader.ts +1 -1
  110. package/src/internals/getAbortController.ts +2 -2
  111. package/src/internals/transformer.ts +76 -0
  112. package/src/internals/types.ts +8 -1
  113. package/src/links/HTTPBatchLinkOptions.ts +17 -15
  114. package/src/links/httpBatchLink.ts +9 -8
  115. package/src/links/httpBatchStreamLink.ts +17 -17
  116. package/src/links/httpFormDataLink.ts +11 -12
  117. package/src/links/httpLink.ts +27 -19
  118. package/src/links/internals/createChain.ts +6 -2
  119. package/src/links/internals/createHTTPBatchLink.ts +24 -16
  120. package/src/links/internals/dedupeLink.ts +4 -3
  121. package/src/links/internals/getTextDecoder.ts +1 -1
  122. package/src/links/internals/httpUtils.ts +42 -21
  123. package/src/links/internals/parseJSONStream.ts +12 -14
  124. package/src/links/internals/retryLink.ts +4 -3
  125. package/src/links/loggerLink.ts +5 -5
  126. package/src/links/splitLink.ts +2 -2
  127. package/src/links/types.ts +27 -22
  128. package/src/links/wsLink.ts +124 -36
  129. package/src/links.ts +14 -0
  130. package/src/unstable-internals.ts +1 -0
  131. package/unstable-internals/index.d.ts +1 -0
  132. package/unstable-internals/index.js +1 -0
  133. package/dist/TRPCClientError-23c8aa93.js +0 -61
  134. package/dist/httpBatchLink-64fceaac.js +0 -251
  135. package/dist/httpBatchLink-92dab48e.js +0 -247
  136. package/dist/httpUtils-35e50476.js +0 -145
  137. package/dist/internals/isObject.d.ts +0 -2
  138. package/dist/internals/isObject.d.ts.map +0 -1
  139. package/dist/internals/retryDelay.d.ts +0 -2
  140. package/dist/internals/retryDelay.d.ts.map +0 -1
  141. package/dist/links/index.d.ts +0 -10
  142. package/dist/links/index.d.ts.map +0 -1
  143. package/dist/shared/index.d.ts +0 -2
  144. package/dist/shared/index.d.ts.map +0 -1
  145. package/dist/shared/index.js +0 -9
  146. package/dist/shared/index.mjs +0 -1
  147. package/dist/shared/transformResult.d.ts +0 -34
  148. package/dist/shared/transformResult.d.ts.map +0 -1
  149. package/dist/splitLink-0df96fdc.js +0 -41
  150. package/dist/transformResult-ace864b8.mjs +0 -58
  151. package/dist/transformResult-c1422cb5.js +0 -60
  152. package/dist/transformResult-dfce8f15.js +0 -61
  153. package/shared/index.d.ts +0 -1
  154. package/shared/index.js +0 -1
  155. package/src/internals/isObject.ts +0 -4
  156. package/src/internals/retryDelay.ts +0 -3
  157. package/src/links/index.ts +0 -14
  158. package/src/shared/index.ts +0 -1
  159. package/src/shared/transformResult.ts +0 -79
@@ -1,7 +1,4 @@
1
- import { observable } from '@trpc/server/observable';
2
- import { t as transformResult } from './transformResult-ace864b8.mjs';
3
- import { T as TRPCClientError } from './TRPCClientError-0de4d231.mjs';
4
- import { r as resolveHTTPLinkOptions, g as getUrl, j as jsonHttpRequester } from './httpUtils-f58ceda1.mjs';
1
+ 'use strict';
5
2
 
6
3
  /* eslint-disable @typescript-eslint/no-non-null-assertion */ /**
7
4
  * A function that should never be called unless we messed something up.
@@ -133,116 +130,4 @@ import { r as resolveHTTPLinkOptions, g as getUrl, j as jsonHttpRequester } from
133
130
  };
134
131
  }
135
132
 
136
- /**
137
- * @internal
138
- */ function createHTTPBatchLink(requester) {
139
- return function httpBatchLink(opts) {
140
- const resolvedOpts = resolveHTTPLinkOptions(opts);
141
- const maxURLLength = opts.maxURLLength ?? Infinity;
142
- // initialized config
143
- return (runtime)=>{
144
- const batchLoader = (type)=>{
145
- const validate = (batchOps)=>{
146
- if (maxURLLength === Infinity) {
147
- // escape hatch for quick calcs
148
- return true;
149
- }
150
- const path = batchOps.map((op)=>op.path).join(',');
151
- const inputs = batchOps.map((op)=>op.input);
152
- const url = getUrl({
153
- ...resolvedOpts,
154
- runtime,
155
- type,
156
- path,
157
- inputs
158
- });
159
- return url.length <= maxURLLength;
160
- };
161
- const fetch = requester({
162
- ...resolvedOpts,
163
- runtime,
164
- type,
165
- opts
166
- });
167
- return {
168
- validate,
169
- fetch
170
- };
171
- };
172
- const query = dataLoader(batchLoader('query'));
173
- const mutation = dataLoader(batchLoader('mutation'));
174
- const subscription = dataLoader(batchLoader('subscription'));
175
- const loaders = {
176
- query,
177
- subscription,
178
- mutation
179
- };
180
- return ({ op })=>{
181
- return observable((observer)=>{
182
- const loader = loaders[op.type];
183
- const { promise , cancel } = loader.load(op);
184
- let _res = undefined;
185
- promise.then((res)=>{
186
- _res = res;
187
- const transformed = transformResult(res.json, runtime);
188
- if (!transformed.ok) {
189
- observer.error(TRPCClientError.from(transformed.error, {
190
- meta: res.meta
191
- }));
192
- return;
193
- }
194
- observer.next({
195
- context: res.meta,
196
- result: transformed.result
197
- });
198
- observer.complete();
199
- }).catch((err)=>{
200
- observer.error(TRPCClientError.from(err, {
201
- meta: _res?.meta
202
- }));
203
- });
204
- return ()=>{
205
- cancel();
206
- };
207
- });
208
- };
209
- };
210
- };
211
- }
212
-
213
- const batchRequester = (requesterOpts)=>{
214
- return (batchOps)=>{
215
- const path = batchOps.map((op)=>op.path).join(',');
216
- const inputs = batchOps.map((op)=>op.input);
217
- const { promise , cancel } = jsonHttpRequester({
218
- ...requesterOpts,
219
- path,
220
- inputs,
221
- headers () {
222
- if (!requesterOpts.opts.headers) {
223
- return {};
224
- }
225
- if (typeof requesterOpts.opts.headers === 'function') {
226
- return requesterOpts.opts.headers({
227
- opList: batchOps
228
- });
229
- }
230
- return requesterOpts.opts.headers;
231
- }
232
- });
233
- return {
234
- promise: promise.then((res)=>{
235
- const resJSON = Array.isArray(res.json) ? res.json : batchOps.map(()=>res.json);
236
- const result = resJSON.map((item)=>({
237
- meta: res.meta,
238
- json: item
239
- }));
240
- return result;
241
- }),
242
- cancel
243
- };
244
- };
245
- };
246
- const httpBatchLink = createHTTPBatchLink(batchRequester);
247
-
248
- export { createHTTPBatchLink as c, httpBatchLink as h };
133
+ exports.dataLoader = dataLoader;
@@ -0,0 +1,131 @@
1
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /**
2
+ * A function that should never be called unless we messed something up.
3
+ */ const throwFatalError = ()=>{
4
+ throw new Error('Something went wrong. Please submit an issue at https://github.com/trpc/trpc/issues/new');
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
+ */ function dataLoader(batchLoader) {
11
+ let pendingItems = null;
12
+ let dispatchTimer = null;
13
+ const destroyTimerAndPendingItems = ()=>{
14
+ clearTimeout(dispatchTimer);
15
+ dispatchTimer = null;
16
+ pendingItems = null;
17
+ };
18
+ /**
19
+ * Iterate through the items and split them into groups based on the `batchLoader`'s validate function
20
+ */ function groupItems(items) {
21
+ const groupedItems = [
22
+ []
23
+ ];
24
+ let index = 0;
25
+ while(true){
26
+ const item = items[index];
27
+ if (!item) {
28
+ break;
29
+ }
30
+ const lastGroup = groupedItems[groupedItems.length - 1];
31
+ if (item.aborted) {
32
+ // Item was aborted before it was dispatched
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
+ // Create new group, next iteration will try to add the item to that
49
+ groupedItems.push([]);
50
+ }
51
+ return groupedItems;
52
+ }
53
+ function dispatch() {
54
+ const groupedItems = groupItems(pendingItems);
55
+ destroyTimerAndPendingItems();
56
+ // Create batches for each group of items
57
+ for (const items of groupedItems){
58
+ if (!items.length) {
59
+ continue;
60
+ }
61
+ const batch = {
62
+ items,
63
+ cancel: throwFatalError
64
+ };
65
+ for (const item of items){
66
+ item.batch = batch;
67
+ }
68
+ const unitResolver = (index, value)=>{
69
+ const item = batch.items[index];
70
+ item.resolve?.(value);
71
+ item.batch = null;
72
+ item.reject = null;
73
+ item.resolve = null;
74
+ };
75
+ const { promise , cancel } = batchLoader.fetch(batch.items.map((_item)=>_item.key), unitResolver);
76
+ batch.cancel = cancel;
77
+ promise.then((result)=>{
78
+ for(let i = 0; i < result.length; i++){
79
+ const value = result[i];
80
+ unitResolver(i, value);
81
+ }
82
+ for (const item of batch.items){
83
+ item.reject?.(new Error('Missing result'));
84
+ item.batch = null;
85
+ }
86
+ }).catch((cause)=>{
87
+ for (const item of batch.items){
88
+ item.reject?.(cause);
89
+ item.batch = null;
90
+ }
91
+ });
92
+ }
93
+ }
94
+ function load(key) {
95
+ const item = {
96
+ aborted: false,
97
+ key,
98
+ batch: null,
99
+ resolve: throwFatalError,
100
+ reject: throwFatalError
101
+ };
102
+ const promise = new Promise((resolve, reject)=>{
103
+ item.reject = reject;
104
+ item.resolve = resolve;
105
+ if (!pendingItems) {
106
+ pendingItems = [];
107
+ }
108
+ pendingItems.push(item);
109
+ });
110
+ if (!dispatchTimer) {
111
+ dispatchTimer = setTimeout(dispatch);
112
+ }
113
+ const cancel = ()=>{
114
+ item.aborted = true;
115
+ if (item.batch?.items.every((item)=>item.aborted)) {
116
+ // All items in the batch have been cancelled
117
+ item.batch.cancel();
118
+ item.batch = null;
119
+ }
120
+ };
121
+ return {
122
+ promise,
123
+ cancel
124
+ };
125
+ }
126
+ return {
127
+ load
128
+ };
129
+ }
130
+
131
+ export { dataLoader };
@@ -1,4 +1,4 @@
1
- import { Maybe } from '@trpc/server';
2
- import { AbortControllerEsque } from './types';
1
+ import type { Maybe } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { AbortControllerEsque } from './types';
3
3
  export declare function getAbortController(customAbortControllerImpl: Maybe<AbortControllerEsque>): AbortControllerEsque | null;
4
4
  //# sourceMappingURL=getAbortController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getAbortController.d.ts","sourceRoot":"","sources":["../../src/internals/getAbortController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,wBAAgB,kBAAkB,CAChC,yBAAyB,EAAE,KAAK,CAAC,oBAAoB,CAAC,GACrD,oBAAoB,GAAG,IAAI,CAe7B"}
1
+ {"version":3,"file":"getAbortController.d.ts","sourceRoot":"","sources":["../../src/internals/getAbortController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0CAA0C,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,wBAAgB,kBAAkB,CAChC,yBAAyB,EAAE,KAAK,CAAC,oBAAoB,CAAC,GACrD,oBAAoB,GAAG,IAAI,CAe7B"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ function getAbortController(customAbortControllerImpl) {
4
+ if (customAbortControllerImpl) {
5
+ return customAbortControllerImpl;
6
+ }
7
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
8
+ if (typeof window !== 'undefined' && window.AbortController) {
9
+ return window.AbortController;
10
+ }
11
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
12
+ if (typeof globalThis !== 'undefined' && globalThis.AbortController) {
13
+ return globalThis.AbortController;
14
+ }
15
+ return null;
16
+ }
17
+
18
+ exports.getAbortController = getAbortController;
@@ -0,0 +1,16 @@
1
+ function getAbortController(customAbortControllerImpl) {
2
+ if (customAbortControllerImpl) {
3
+ return customAbortControllerImpl;
4
+ }
5
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
6
+ if (typeof window !== 'undefined' && window.AbortController) {
7
+ return window.AbortController;
8
+ }
9
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
10
+ if (typeof globalThis !== 'undefined' && globalThis.AbortController) {
11
+ return globalThis.AbortController;
12
+ }
13
+ return null;
14
+ }
15
+
16
+ export { getAbortController };
@@ -0,0 +1,42 @@
1
+ import type { AnyClientTypes, CombinedDataTransformer, DataTransformerOptions, TypeError } from '@trpc/server/unstable-core-do-not-import';
2
+ /**
3
+ * @internal
4
+ */
5
+ export type CoercedTransformerParameters = {
6
+ transformer?: DataTransformerOptions;
7
+ };
8
+ type TransformerOptionYes = {
9
+ /**
10
+ * Data transformer
11
+ *
12
+ * You must use the same transformer on the backend and frontend
13
+ * @link https://trpc.io/docs/v11/data-transformers
14
+ **/
15
+ transformer: DataTransformerOptions;
16
+ };
17
+ type TransformerOptionNo = {
18
+ /**
19
+ * Data transformer
20
+ *
21
+ * You must use the same transformer on the backend and frontend
22
+ * @link https://trpc.io/docs/v11/data-transformers
23
+ **/
24
+ transformer?: TypeError<'You must define a transformer on your your `initTRPC`-object first'>;
25
+ };
26
+ /**
27
+ * @internal
28
+ */
29
+ export type TransformerOptions<TRoot extends Pick<AnyClientTypes, 'transformer'>> = TRoot['transformer'] extends true ? TransformerOptionYes : TransformerOptionNo;
30
+ /**
31
+ * @internal
32
+ */
33
+ /**
34
+ * @internal
35
+ */
36
+ export declare function getTransformer(transformer: TransformerOptions<{
37
+ transformer: false;
38
+ }>['transformer'] | TransformerOptions<{
39
+ transformer: true;
40
+ }>['transformer'] | undefined): CombinedDataTransformer;
41
+ export {};
42
+ //# sourceMappingURL=transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../src/internals/transformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,SAAS,EACV,MAAM,0CAA0C,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B;;;;;QAKI;IACJ,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AACF,KAAK,mBAAmB,GAAG;IACzB;;;;;QAKI;IACJ,WAAW,CAAC,EAAE,SAAS,CAAC,oEAAoE,CAAC,CAAC;CAC/F,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAC5B,KAAK,SAAS,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,IAC/C,KAAK,CAAC,aAAa,CAAC,SAAS,IAAI,GACjC,oBAAoB,GACpB,mBAAmB,CAAC;AACxB;;GAEG;AAEH;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EACP,kBAAkB,CAAC;IAAE,WAAW,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,aAAa,CAAC,GACzD,kBAAkB,CAAC;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC,aAAa,CAAC,GACxD,SAAS,GACZ,uBAAuB,CAsBzB"}
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @internal
5
+ */ /**
6
+ * @internal
7
+ */ function getTransformer(transformer) {
8
+ const _transformer = transformer;
9
+ if (!_transformer) {
10
+ return {
11
+ input: {
12
+ serialize: (data)=>data,
13
+ deserialize: (data)=>data
14
+ },
15
+ output: {
16
+ serialize: (data)=>data,
17
+ deserialize: (data)=>data
18
+ }
19
+ };
20
+ }
21
+ if ('input' in _transformer) {
22
+ return _transformer;
23
+ }
24
+ return {
25
+ input: _transformer,
26
+ output: _transformer
27
+ };
28
+ }
29
+
30
+ exports.getTransformer = getTransformer;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @internal
3
+ */ /**
4
+ * @internal
5
+ */ function getTransformer(transformer) {
6
+ const _transformer = transformer;
7
+ if (!_transformer) {
8
+ return {
9
+ input: {
10
+ serialize: (data)=>data,
11
+ deserialize: (data)=>data
12
+ },
13
+ output: {
14
+ serialize: (data)=>data,
15
+ deserialize: (data)=>data
16
+ }
17
+ };
18
+ }
19
+ if ('input' in _transformer) {
20
+ return _transformer;
21
+ }
22
+ return {
23
+ input: _transformer,
24
+ output: _transformer
25
+ };
26
+ }
27
+
28
+ export { getTransformer };
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  export type AbortControllerEsque = new () => AbortControllerInstanceEsque;
3
2
  /**
4
3
  * Allows you to abort one or more requests.
@@ -62,12 +61,15 @@ export interface RequestInitEsque {
62
61
  export type WebReadableStreamEsque = {
63
62
  getReader: () => ReadableStreamDefaultReader<Uint8Array>;
64
63
  };
64
+ export type NodeJSReadableStreamEsque = {
65
+ on(eventName: string | symbol, listener: (...args: any[]) => void): NodeJSReadableStreamEsque;
66
+ };
65
67
  /**
66
68
  * A subset of the standard Response properties needed by tRPC internally.
67
69
  * @see Response from lib.dom.d.ts
68
70
  */
69
71
  export interface ResponseEsque {
70
- readonly body?: NodeJS.ReadableStream | WebReadableStreamEsque | null;
72
+ readonly body?: NodeJSReadableStreamEsque | WebReadableStreamEsque | null;
71
73
  /**
72
74
  * @remarks
73
75
  * The built-in Response::json() method returns Promise<any>, but
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/internals/types.ts"],"names":[],"mappings":";AAAA,MAAM,MAAM,oBAAoB,GAAG,UAAU,4BAA4B,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,CACvB,KAAK,EAAE,WAAW,GAAG,GAAG,GAAG,MAAM,EACjC,IAAI,CAAC,EAAE,WAAW,GAAG,gBAAgB,KAClC,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,IAAI,CAAC,EAAE,yBAAyB,KAC7B,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtD;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,2BAA2B,CAAC,UAAU,CAAC,CAAC;CAC1D,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,sBAAsB,GAAG,IAAI,CAAC;IACtE;;;;;OAKG;IACH,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/internals/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,UAAU,4BAA4B,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,CACvB,KAAK,EAAE,WAAW,GAAG,GAAG,GAAG,MAAM,EACjC,IAAI,CAAC,EAAE,WAAW,GAAG,gBAAgB,KAClC,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,IAAI,CAAC,EAAE,yBAAyB,KAC7B,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtD;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,2BAA2B,CAAC,UAAU,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,CACA,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,yBAAyB,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,yBAAyB,GAAG,sBAAsB,GAAG,IAAI,CAAC;IAC1E;;;;;OAKG;IACH,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC"}
@@ -1,7 +1,8 @@
1
- import { NonEmptyArray } from '../internals/types';
2
- import { HTTPLinkBaseOptions } from './internals/httpUtils';
3
- import { HTTPHeaders, Operation } from './types';
4
- export interface HTTPBatchLinkOptions extends HTTPLinkBaseOptions {
1
+ import type { AnyClientTypes } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { NonEmptyArray } from '../internals/types';
3
+ import type { HTTPLinkBaseOptions } from './internals/httpUtils';
4
+ import type { HTTPHeaders, Operation } from './types';
5
+ export type HTTPBatchLinkOptions<TRoot extends AnyClientTypes> = HTTPLinkBaseOptions<TRoot> & {
5
6
  maxURLLength?: number;
6
7
  /**
7
8
  * Headers to be set on outgoing requests or a callback that of said headers
@@ -10,5 +11,5 @@ export interface HTTPBatchLinkOptions extends HTTPLinkBaseOptions {
10
11
  headers?: HTTPHeaders | ((opts: {
11
12
  opList: NonEmptyArray<Operation>;
12
13
  }) => HTTPHeaders | Promise<HTTPHeaders>);
13
- }
14
+ };
14
15
  //# sourceMappingURL=HTTPBatchLinkOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HTTPBatchLinkOptions.d.ts","sourceRoot":"","sources":["../../src/links/HTTPBatchLinkOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EACJ,WAAW,GACX,CAAC,CAAC,IAAI,EAAE;QACN,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;KAClC,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;CAC/C"}
1
+ {"version":3,"file":"HTTPBatchLinkOptions.d.ts","sourceRoot":"","sources":["../../src/links/HTTPBatchLinkOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,MAAM,oBAAoB,CAAC,KAAK,SAAS,cAAc,IAC3D,mBAAmB,CAAC,KAAK,CAAC,GAAG;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EACJ,WAAW,GACX,CAAC,CAAC,IAAI,EAAE;QACN,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;KAClC,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;CAC/C,CAAC"}
@@ -1,3 +1,3 @@
1
- import { HTTPBatchLinkOptions } from './HTTPBatchLinkOptions';
2
- export declare const httpBatchLink: <TRouter extends import("@trpc/server").AnyRouter>(opts: HTTPBatchLinkOptions) => import("./types").TRPCLink<TRouter>;
1
+ import type { HTTPBatchLinkOptions } from './HTTPBatchLinkOptions';
2
+ export declare const httpBatchLink: <TRouter extends import("@trpc/server/unstable-core-do-not-import").AnyRouter>(opts: HTTPBatchLinkOptions<import("@trpc/server/unstable-core-do-not-import").inferClientTypes<TRouter>>) => import("./types").TRPCLink<TRouter>;
3
3
  //# sourceMappingURL=httpBatchLink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpBatchLink.d.ts","sourceRoot":"","sources":["../../src/links/httpBatchLink.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAgD9D,eAAO,MAAM,aAAa,uHAAsC,CAAC"}
1
+ {"version":3,"file":"httpBatchLink.d.ts","sourceRoot":"","sources":["../../src/links/httpBatchLink.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAgDnE,eAAO,MAAM,aAAa,iOAAsC,CAAC"}
@@ -1,13 +1,41 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
3
+ var createHTTPBatchLink = require('./internals/createHTTPBatchLink.js');
4
+ var httpUtils = require('./internals/httpUtils.js');
4
5
 
5
- var links_httpBatchLink = require('../httpBatchLink-64fceaac.js');
6
- require('../httpUtils-c0e7bf5a.js');
7
- require('@trpc/server/observable');
8
- require('../transformResult-dfce8f15.js');
9
- require('../TRPCClientError-e224e397.js');
6
+ const batchRequester = (requesterOpts)=>{
7
+ return (batchOps)=>{
8
+ const path = batchOps.map((op)=>op.path).join(',');
9
+ const inputs = batchOps.map((op)=>op.input);
10
+ const { promise , cancel } = httpUtils.jsonHttpRequester({
11
+ ...requesterOpts,
12
+ path,
13
+ inputs,
14
+ headers () {
15
+ if (!requesterOpts.opts.headers) {
16
+ return {};
17
+ }
18
+ if (typeof requesterOpts.opts.headers === 'function') {
19
+ return requesterOpts.opts.headers({
20
+ opList: batchOps
21
+ });
22
+ }
23
+ return requesterOpts.opts.headers;
24
+ }
25
+ });
26
+ return {
27
+ promise: promise.then((res)=>{
28
+ const resJSON = Array.isArray(res.json) ? res.json : batchOps.map(()=>res.json);
29
+ const result = resJSON.map((item)=>({
30
+ meta: res.meta,
31
+ json: item
32
+ }));
33
+ return result;
34
+ }),
35
+ cancel
36
+ };
37
+ };
38
+ };
39
+ const httpBatchLink = createHTTPBatchLink.createHTTPBatchLink(batchRequester);
10
40
 
11
-
12
-
13
- exports.httpBatchLink = links_httpBatchLink.httpBatchLink;
41
+ exports.httpBatchLink = httpBatchLink;
@@ -1,5 +1,39 @@
1
- export { h as httpBatchLink } from '../httpBatchLink-204206a5.mjs';
2
- import '../httpUtils-f58ceda1.mjs';
3
- import '@trpc/server/observable';
4
- import '../transformResult-ace864b8.mjs';
5
- import '../TRPCClientError-0de4d231.mjs';
1
+ import { createHTTPBatchLink } from './internals/createHTTPBatchLink.mjs';
2
+ import { jsonHttpRequester } from './internals/httpUtils.mjs';
3
+
4
+ const batchRequester = (requesterOpts)=>{
5
+ return (batchOps)=>{
6
+ const path = batchOps.map((op)=>op.path).join(',');
7
+ const inputs = batchOps.map((op)=>op.input);
8
+ const { promise , cancel } = jsonHttpRequester({
9
+ ...requesterOpts,
10
+ path,
11
+ inputs,
12
+ headers () {
13
+ if (!requesterOpts.opts.headers) {
14
+ return {};
15
+ }
16
+ if (typeof requesterOpts.opts.headers === 'function') {
17
+ return requesterOpts.opts.headers({
18
+ opList: batchOps
19
+ });
20
+ }
21
+ return requesterOpts.opts.headers;
22
+ }
23
+ });
24
+ return {
25
+ promise: promise.then((res)=>{
26
+ const resJSON = Array.isArray(res.json) ? res.json : batchOps.map(()=>res.json);
27
+ const result = resJSON.map((item)=>({
28
+ meta: res.meta,
29
+ json: item
30
+ }));
31
+ return result;
32
+ }),
33
+ cancel
34
+ };
35
+ };
36
+ };
37
+ const httpBatchLink = createHTTPBatchLink(batchRequester);
38
+
39
+ export { httpBatchLink };
@@ -1,12 +1,13 @@
1
- import { HTTPBatchLinkOptions } from './HTTPBatchLinkOptions';
2
- import { TextDecoderEsque } from './internals/streamingUtils';
3
- export interface HTTPBatchStreamLinkOptions extends HTTPBatchLinkOptions {
1
+ import type { AnyRootTypes } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { HTTPBatchLinkOptions } from './HTTPBatchLinkOptions';
3
+ import type { TextDecoderEsque } from './internals/streamingUtils';
4
+ export type HTTPBatchStreamLinkOptions<TRoot extends AnyRootTypes> = HTTPBatchLinkOptions<TRoot> & {
4
5
  /**
5
6
  * Will default to the webAPI `TextDecoder`,
6
7
  * but you can use this option if your client
7
8
  * runtime doesn't provide it.
8
9
  */
9
10
  textDecoder?: TextDecoderEsque;
10
- }
11
- export declare const unstable_httpBatchStreamLink: <TRouter extends import("@trpc/server").AnyRouter>(opts: HTTPBatchStreamLinkOptions) => import("./types").TRPCLink<TRouter>;
11
+ };
12
+ export declare const unstable_httpBatchStreamLink: <TRouter extends import("@trpc/server/unstable-core-do-not-import").AnyRouter>(opts: HTTPBatchLinkOptions<import("@trpc/server/unstable-core-do-not-import").inferClientTypes<TRouter>>) => import("./types").TRPCLink<TRouter>;
12
13
  //# sourceMappingURL=httpBatchStreamLink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpBatchStreamLink.d.ts","sourceRoot":"","sources":["../../src/links/httpBatchStreamLink.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAO9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE;;;;OAIG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC;AA6CD,eAAO,MAAM,4BAA4B,6HACH,CAAC"}
1
+ {"version":3,"file":"httpBatchStreamLink.d.ts","sourceRoot":"","sources":["../../src/links/httpBatchStreamLink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAKnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,MAAM,MAAM,0BAA0B,CAAC,KAAK,SAAS,YAAY,IAC/D,oBAAoB,CAAC,KAAK,CAAC,GAAG;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC,CAAC;AA6CJ,eAAO,MAAM,4BAA4B,iOACH,CAAC"}
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ var createHTTPBatchLink = require('./internals/createHTTPBatchLink.js');
4
+ var getTextDecoder = require('./internals/getTextDecoder.js');
5
+ var parseJSONStream = require('./internals/parseJSONStream.js');
6
+
7
+ const streamRequester = (requesterOpts)=>{
8
+ const textDecoder = getTextDecoder.getTextDecoder(requesterOpts.opts.textDecoder);
9
+ return (batchOps, unitResolver)=>{
10
+ const path = batchOps.map((op)=>op.path).join(',');
11
+ const inputs = batchOps.map((op)=>op.input);
12
+ const { cancel , promise } = parseJSONStream.streamingJsonHttpRequester({
13
+ ...requesterOpts,
14
+ textDecoder,
15
+ path,
16
+ inputs,
17
+ headers () {
18
+ if (!requesterOpts.opts.headers) {
19
+ return {};
20
+ }
21
+ if (typeof requesterOpts.opts.headers === 'function') {
22
+ return requesterOpts.opts.headers({
23
+ opList: batchOps
24
+ });
25
+ }
26
+ return requesterOpts.opts.headers;
27
+ }
28
+ }, (index, res)=>{
29
+ unitResolver(index, res);
30
+ });
31
+ return {
32
+ /**
33
+ * return an empty array because the batchLoader expects an array of results
34
+ * but we've already called the `unitResolver` for each of them, there's
35
+ * nothing left to do here.
36
+ */ promise: promise.then(()=>[]),
37
+ cancel
38
+ };
39
+ };
40
+ };
41
+ const unstable_httpBatchStreamLink = createHTTPBatchLink.createHTTPBatchLink(streamRequester);
42
+
43
+ exports.unstable_httpBatchStreamLink = unstable_httpBatchStreamLink;