@trpc/client 10.28.1 → 10.29.0

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 (64) hide show
  1. package/dist/TRPCClientError.d.ts +1 -1
  2. package/dist/TRPCClientError.d.ts.map +1 -1
  3. package/dist/createTRPCClient.d.ts +1 -1
  4. package/dist/createTRPCClient.d.ts.map +1 -1
  5. package/dist/createTRPCClientProxy.d.ts +1 -1
  6. package/dist/createTRPCClientProxy.d.ts.map +1 -1
  7. package/dist/httpBatchLink-38dcf5f2.js +243 -0
  8. package/dist/httpBatchLink-e66c0674.mjs +240 -0
  9. package/dist/httpBatchLink-f35df745.js +239 -0
  10. package/dist/{httpUtils-00c8b54e.js → httpUtils-145e783b.js} +27 -23
  11. package/dist/{httpUtils-90a6bccb.js → httpUtils-21cbb35d.js} +27 -20
  12. package/dist/{httpUtils-8a5c637a.mjs → httpUtils-b2fcc20c.mjs} +26 -21
  13. package/dist/index.js +149 -4
  14. package/dist/index.mjs +151 -6
  15. package/dist/internals/TRPCUntypedClient.d.ts +1 -1
  16. package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
  17. package/dist/internals/dataLoader.d.ts +1 -1
  18. package/dist/internals/dataLoader.d.ts.map +1 -1
  19. package/dist/internals/types.d.ts +2 -0
  20. package/dist/internals/types.d.ts.map +1 -1
  21. package/dist/links/HTTPBatchLinkOptions.d.ts +20 -0
  22. package/dist/links/HTTPBatchLinkOptions.d.ts.map +1 -0
  23. package/dist/links/httpBatchLink.d.ts +1 -15
  24. package/dist/links/httpBatchLink.d.ts.map +1 -1
  25. package/dist/links/httpBatchLink.js +5 -217
  26. package/dist/links/httpBatchLink.mjs +4 -220
  27. package/dist/links/httpBatchStreamLink.d.ts +2 -0
  28. package/dist/links/httpBatchStreamLink.d.ts.map +1 -0
  29. package/dist/links/httpLink.d.ts.map +1 -1
  30. package/dist/links/httpLink.js +1 -1
  31. package/dist/links/httpLink.mjs +1 -1
  32. package/dist/links/index.d.ts +2 -0
  33. package/dist/links/index.d.ts.map +1 -1
  34. package/dist/links/internals/createHTTPBatchLink.d.ts +20 -0
  35. package/dist/links/internals/createHTTPBatchLink.d.ts.map +1 -0
  36. package/dist/links/internals/httpUtils.d.ts +3 -1
  37. package/dist/links/internals/httpUtils.d.ts.map +1 -1
  38. package/dist/links/internals/parseJSONStream.d.ts +36 -0
  39. package/dist/links/internals/parseJSONStream.d.ts.map +1 -0
  40. package/dist/links/types.d.ts +1 -1
  41. package/dist/links/types.d.ts.map +1 -1
  42. package/dist/links/wsLink.d.ts +1 -1
  43. package/dist/links/wsLink.d.ts.map +1 -1
  44. package/dist/shared/transformResult.d.ts.map +1 -1
  45. package/package.json +4 -4
  46. package/src/TRPCClientError.ts +1 -1
  47. package/src/createTRPCClient.ts +1 -1
  48. package/src/createTRPCClientProxy.ts +1 -1
  49. package/src/internals/TRPCUntypedClient.ts +2 -2
  50. package/src/internals/dataLoader.ts +21 -7
  51. package/src/internals/types.ts +1 -0
  52. package/src/links/HTTPBatchLinkOptions.ts +21 -0
  53. package/src/links/httpBatchLink.ts +44 -133
  54. package/src/links/httpBatchStreamLink.ts +47 -0
  55. package/src/links/httpFormDataLink.ts +1 -1
  56. package/src/links/httpLink.ts +2 -2
  57. package/src/links/index.ts +2 -0
  58. package/src/links/internals/createHTTPBatchLink.ts +113 -0
  59. package/src/links/internals/httpUtils.ts +33 -24
  60. package/src/links/internals/parseJSONStream.ts +165 -0
  61. package/src/links/retryLink.ts +1 -1
  62. package/src/links/types.ts +1 -1
  63. package/src/links/wsLink.ts +3 -3
  64. package/src/shared/transformResult.ts +1 -1
@@ -1,220 +1,4 @@
1
- import { observable } from '@trpc/server/observable';
2
- import { t as transformResult, T as TRPCClientError } from '../transformResult-9a244fe7.mjs';
3
- import { r as resolveHTTPLinkOptions, a as getUrl, j as jsonHttpRequester } from '../httpUtils-8a5c637a.mjs';
4
-
5
- /* eslint-disable @typescript-eslint/no-non-null-assertion */ /**
6
- * A function that should never be called unless we messed something up.
7
- */ const throwFatalError = ()=>{
8
- throw new Error('Something went wrong. Please submit an issue at https://github.com/trpc/trpc/issues/new');
9
- };
10
- /**
11
- * Dataloader that's very inspired by https://github.com/graphql/dataloader
12
- * Less configuration, no caching, and allows you to cancel requests
13
- * When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled
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
- */ function groupItems(items) {
25
- const groupedItems = [
26
- []
27
- ];
28
- let index = 0;
29
- while(true){
30
- const item = items[index];
31
- if (!item) {
32
- break;
33
- }
34
- const lastGroup = groupedItems[groupedItems.length - 1];
35
- if (item.aborted) {
36
- // Item was aborted before it was dispatched
37
- item.reject(new Error('Aborted'));
38
- index++;
39
- continue;
40
- }
41
- const isValid = batchLoader.validate(lastGroup.concat(item).map((it)=>it.key));
42
- if (isValid) {
43
- lastGroup.push(item);
44
- index++;
45
- continue;
46
- }
47
- if (lastGroup.length === 0) {
48
- item.reject(new Error('Input is too big for a single dispatch'));
49
- index++;
50
- continue;
51
- }
52
- // Create new group, next iteration will try to add the item to that
53
- groupedItems.push([]);
54
- }
55
- return groupedItems;
56
- }
57
- function dispatch() {
58
- const groupedItems = groupItems(pendingItems);
59
- destroyTimerAndPendingItems();
60
- // Create batches for each group of items
61
- for (const items of groupedItems){
62
- if (!items.length) {
63
- continue;
64
- }
65
- const batch = {
66
- items,
67
- cancel: throwFatalError
68
- };
69
- for (const item of items){
70
- item.batch = batch;
71
- }
72
- const { promise , cancel } = batchLoader.fetch(batch.items.map((_item)=>_item.key));
73
- batch.cancel = cancel;
74
- promise.then((result)=>{
75
- for(let i = 0; i < result.length; i++){
76
- const value = result[i];
77
- const item = batch.items[i];
78
- item.resolve(value);
79
- item.batch = null;
80
- }
81
- }).catch((cause)=>{
82
- for (const item of batch.items){
83
- item.reject(cause);
84
- item.batch = null;
85
- }
86
- });
87
- }
88
- }
89
- function load(key) {
90
- const item = {
91
- aborted: false,
92
- key,
93
- batch: null,
94
- resolve: throwFatalError,
95
- reject: throwFatalError
96
- };
97
- const promise = new Promise((resolve, reject)=>{
98
- item.reject = reject;
99
- item.resolve = resolve;
100
- if (!pendingItems) {
101
- pendingItems = [];
102
- }
103
- pendingItems.push(item);
104
- });
105
- if (!dispatchTimer) {
106
- dispatchTimer = setTimeout(dispatch);
107
- }
108
- const cancel = ()=>{
109
- item.aborted = true;
110
- if (item.batch?.items.every((item)=>item.aborted)) {
111
- // All items in the batch have been cancelled
112
- item.batch.cancel();
113
- item.batch = null;
114
- }
115
- };
116
- return {
117
- promise,
118
- cancel
119
- };
120
- }
121
- return {
122
- load
123
- };
124
- }
125
-
126
- function httpBatchLink(opts) {
127
- const resolvedOpts = resolveHTTPLinkOptions(opts);
128
- // initialized config
129
- return (runtime)=>{
130
- const maxURLLength = opts.maxURLLength || Infinity;
131
- const batchLoader = (type)=>{
132
- const validate = (batchOps)=>{
133
- if (maxURLLength === Infinity) {
134
- // escape hatch for quick calcs
135
- return true;
136
- }
137
- const path = batchOps.map((op)=>op.path).join(',');
138
- const inputs = batchOps.map((op)=>op.input);
139
- const url = getUrl({
140
- ...resolvedOpts,
141
- runtime,
142
- type,
143
- path,
144
- inputs
145
- });
146
- return url.length <= maxURLLength;
147
- };
148
- const fetch = (batchOps)=>{
149
- const path = batchOps.map((op)=>op.path).join(',');
150
- const inputs = batchOps.map((op)=>op.input);
151
- const { promise , cancel } = jsonHttpRequester({
152
- ...resolvedOpts,
153
- runtime,
154
- type,
155
- path,
156
- inputs,
157
- headers () {
158
- if (!opts.headers) {
159
- return {};
160
- }
161
- if (typeof opts.headers === 'function') {
162
- return opts.headers({
163
- opList: batchOps
164
- });
165
- }
166
- return opts.headers;
167
- }
168
- });
169
- return {
170
- promise: promise.then((res)=>{
171
- const resJSON = Array.isArray(res.json) ? res.json : batchOps.map(()=>res.json);
172
- const result = resJSON.map((item)=>({
173
- meta: res.meta,
174
- json: item
175
- }));
176
- return result;
177
- }),
178
- cancel
179
- };
180
- };
181
- return {
182
- validate,
183
- fetch
184
- };
185
- };
186
- const query = dataLoader(batchLoader('query'));
187
- const mutation = dataLoader(batchLoader('mutation'));
188
- const subscription = dataLoader(batchLoader('subscription'));
189
- const loaders = {
190
- query,
191
- subscription,
192
- mutation
193
- };
194
- return ({ op })=>{
195
- return observable((observer)=>{
196
- const loader = loaders[op.type];
197
- const { promise , cancel } = loader.load(op);
198
- promise.then((res)=>{
199
- const transformed = transformResult(res.json, runtime);
200
- if (!transformed.ok) {
201
- observer.error(TRPCClientError.from(transformed.error, {
202
- meta: res.meta
203
- }));
204
- return;
205
- }
206
- observer.next({
207
- context: res.meta,
208
- result: transformed.result
209
- });
210
- observer.complete();
211
- }).catch((err)=>observer.error(TRPCClientError.from(err)));
212
- return ()=>{
213
- cancel();
214
- };
215
- });
216
- };
217
- };
218
- }
219
-
220
- export { httpBatchLink };
1
+ export { h as httpBatchLink } from '../httpBatchLink-e66c0674.mjs';
2
+ import '../httpUtils-b2fcc20c.mjs';
3
+ import '@trpc/server/observable';
4
+ import '../transformResult-9a244fe7.mjs';
@@ -0,0 +1,2 @@
1
+ export declare const unstable_httpBatchStreamLink: <TRouter extends import("@trpc/server").AnyRouter>(opts: import("./HTTPBatchLinkOptions").HTTPBatchLinkOptions) => import("./types").TRPCLink<TRouter>;
2
+ //# sourceMappingURL=httpBatchStreamLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpBatchStreamLink.d.ts","sourceRoot":"","sources":["../../src/links/httpBatchStreamLink.ts"],"names":[],"mappings":"AA6CA,eAAO,MAAM,4BAA4B,wJACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"httpLink.d.ts","sourceRoot":"","sources":["../../src/links/httpLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EACL,mBAAmB,EACnB,SAAS,EAGV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE3D,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D;;;OAGG;IACH,OAAO,CAAC,EACJ,WAAW,GACX,CAAC,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,SAAS,CAAA;KAAE,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;CACvE;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,qCAE3D,eAAe,uBAmDxB;AAED,eAAO,MAAM,QAAQ,oCArDX,eAAe,sBAqDgD,CAAC"}
1
+ {"version":3,"file":"httpLink.d.ts","sourceRoot":"","sources":["../../src/links/httpLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EACL,mBAAmB,EAEnB,SAAS,EAEV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE3D,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D;;;OAGG;IACH,OAAO,CAAC,EACJ,WAAW,GACX,CAAC,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,SAAS,CAAA;KAAE,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;CACvE;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,qCAE3D,eAAe,uBAmDxB;AAED,eAAO,MAAM,QAAQ,oCArDX,eAAe,sBAqDgD,CAAC"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var observable = require('@trpc/server/observable');
6
6
  var transformResult = require('../transformResult-70f95ffb.js');
7
- var httpUtils = require('../httpUtils-90a6bccb.js');
7
+ var httpUtils = require('../httpUtils-21cbb35d.js');
8
8
 
9
9
  function httpLinkFactory(factoryOpts) {
10
10
  return (opts)=>{
@@ -1,6 +1,6 @@
1
1
  import { observable } from '@trpc/server/observable';
2
2
  import { t as transformResult, T as TRPCClientError } from '../transformResult-9a244fe7.mjs';
3
- import { r as resolveHTTPLinkOptions, j as jsonHttpRequester } from '../httpUtils-8a5c637a.mjs';
3
+ import { r as resolveHTTPLinkOptions, j as jsonHttpRequester } from '../httpUtils-b2fcc20c.mjs';
4
4
 
5
5
  function httpLinkFactory(factoryOpts) {
6
6
  return (opts)=>{
@@ -1,5 +1,7 @@
1
1
  export * from './types';
2
2
  export * from './httpBatchLink';
3
+ export * from './httpBatchStreamLink';
4
+ export * from './HTTPBatchLinkOptions';
3
5
  export * from './httpLink';
4
6
  export * from './loggerLink';
5
7
  export * from './splitLink';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/links/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/links/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { AnyRouter, ProcedureType } from '@trpc/server';
2
+ import { HTTPBatchLinkOptions } from '../HTTPBatchLinkOptions';
3
+ import { CancelFn, Operation, TRPCClientRuntime, TRPCLink } from '../types';
4
+ import { HTTPResult, ResolvedHTTPLinkOptions } from './httpUtils';
5
+ /**
6
+ * @internal
7
+ */
8
+ export type RequesterFn = (requesterOpts: ResolvedHTTPLinkOptions & {
9
+ runtime: TRPCClientRuntime;
10
+ type: ProcedureType;
11
+ opts: HTTPBatchLinkOptions;
12
+ }) => (batchOps: Operation[], unitResolver: (index: number, value: NonNullable<HTTPResult>) => void) => {
13
+ promise: Promise<HTTPResult[]>;
14
+ cancel: CancelFn;
15
+ };
16
+ /**
17
+ * @internal
18
+ */
19
+ export declare function createHTTPBatchLink(requester: RequesterFn): <TRouter extends AnyRouter>(opts: HTTPBatchLinkOptions) => TRPCLink<TRouter>;
20
+ //# sourceMappingURL=createHTTPBatchLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createHTTPBatchLink.d.ts","sourceRoot":"","sources":["../../../src/links/internals/createHTTPBatchLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAEL,UAAU,EACV,uBAAuB,EAExB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CACxB,aAAa,EAAE,uBAAuB,GAAG;IACvC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,oBAAoB,CAAC;CAC5B,KACE,CACH,QAAQ,EAAE,SAAS,EAAE,EACrB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,KAAK,IAAI,KAClE;IACH,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/B,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,WAAW,qCAEhD,oBAAoB,uBA4E7B"}
@@ -1,6 +1,6 @@
1
1
  import { ProcedureType } from '@trpc/server';
2
2
  import { TRPCResponse } from '@trpc/server/rpc';
3
- import { AbortControllerEsque, FetchEsque, RequestInitEsque, ResponseEsque } from '../../internals/types';
3
+ import { AbortControllerEsque, AbortControllerInstanceEsque, FetchEsque, RequestInitEsque, ResponseEsque } from '../../internals/types';
4
4
  import { HTTPHeaders, PromiseAndCancel, TRPCClientRuntime } from '../types';
5
5
  /**
6
6
  * @internal
@@ -42,6 +42,7 @@ export type HTTPBaseRequestOptions = ResolvedHTTPLinkOptions & GetInputOptions &
42
42
  export type GetUrl = (opts: HTTPBaseRequestOptions) => string;
43
43
  export type GetBody = (opts: HTTPBaseRequestOptions) => RequestInitEsque['body'];
44
44
  export type ContentOptions = {
45
+ batchModeHeader?: 'stream';
45
46
  contentTypeHeader?: string;
46
47
  getUrl: GetUrl;
47
48
  getBody: GetBody;
@@ -55,6 +56,7 @@ export declare const jsonHttpRequester: Requester;
55
56
  export type HTTPRequestOptions = HTTPBaseRequestOptions & ContentOptions & {
56
57
  headers: () => HTTPHeaders | Promise<HTTPHeaders>;
57
58
  };
59
+ export declare function fetchHTTPResponse(opts: HTTPRequestOptions, ac?: AbortControllerInstanceEsque | null): Promise<ResponseEsque>;
58
60
  export declare function httpRequest(opts: HTTPRequestOptions): PromiseAndCancel<HTTPResult>;
59
61
  export {};
60
62
  //# sourceMappingURL=httpUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpUtils.d.ts","sourceRoot":"","sources":["../../../src/links/internals/httpUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,eAAe,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC9C;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,mBAAmB,GACxB,uBAAuB,CAMzB;AAiBD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE;QACJ,QAAQ,EAAE,aAAa,CAAC;KACzB,CAAC;CACH;AAED,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,GAAG,CAAC;IAAE,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAUjD,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,GAC1D,eAAe,GAAG;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEJ,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,sBAAsB,KAAK,MAAM,CAAC;AAC9D,MAAM,MAAM,OAAO,GAAG,CACpB,IAAI,EAAE,sBAAsB,KACzB,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE9B,MAAM,MAAM,cAAc,GAAG;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAgBpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACtB,IAAI,EAAE,sBAAsB,GAAG;IAC7B,OAAO,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACnD,KACE,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAElC,eAAO,MAAM,iBAAiB,EAAE,SAO/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GACrD,cAAc,GAAG;IACf,OAAO,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACnD,CAAC;AAEJ,wBAAgB,WAAW,CACzB,IAAI,EAAE,kBAAkB,GACvB,gBAAgB,CAAC,UAAU,CAAC,CA4C9B"}
1
+ {"version":3,"file":"httpUtils.d.ts","sourceRoot":"","sources":["../../../src/links/internals/httpUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,UAAU,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,eAAe,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC9C;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,mBAAmB,GACxB,uBAAuB,CAMzB;AAiBD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE;QACJ,QAAQ,EAAE,aAAa,CAAC;KACzB,CAAC;CACH;AAED,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,GAAG,CAAC;IAAE,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAUjD,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,GAC1D,eAAe,GAAG;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEJ,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,sBAAsB,KAAK,MAAM,CAAC;AAC9D,MAAM,MAAM,OAAO,GAAG,CACpB,IAAI,EAAE,sBAAsB,KACzB,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE9B,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAgBpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACtB,IAAI,EAAE,sBAAsB,GAAG;IAC7B,OAAO,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACnD,KACE,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAElC,eAAO,MAAM,iBAAiB,EAAE,SAO/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GACrD,cAAc,GAAG;IACf,OAAO,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACnD,CAAC;AAEJ,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,EACxB,EAAE,CAAC,EAAE,4BAA4B,GAAG,IAAI,0BAyBzC;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,kBAAkB,GACvB,gBAAgB,CAAC,UAAU,CAAC,CAsB9B"}
@@ -0,0 +1,36 @@
1
+ /// <reference types="node" />
2
+ import { HTTPHeaders } from '../types';
3
+ import { HTTPBaseRequestOptions, HTTPResult } from './httpUtils';
4
+ /**
5
+ * @internal
6
+ * @description Take a stream of bytes and call `onLine` with
7
+ * a JSON object for each line in the stream. Expected stream
8
+ * format is:
9
+ * ```json
10
+ * {"1": {...}
11
+ * ,"0": {...}
12
+ * }
13
+ * ```
14
+ */
15
+ export declare function parseJSONStream<TReturn>(opts: {
16
+ /**
17
+ * As given by `(await fetch(url)).body`
18
+ */
19
+ readableStream: ReadableStream<Uint8Array> | NodeJS.ReadableStream;
20
+ /**
21
+ * Called for each line of the stream
22
+ */
23
+ onSingle: (index: number, res: TReturn) => void;
24
+ /**
25
+ * Transform text into useable data object (defaults to JSON.parse)
26
+ */
27
+ parse?: (text: string) => TReturn;
28
+ signal?: AbortSignal;
29
+ }): Promise<void>;
30
+ export declare const streamingJsonHttpRequester: (opts: HTTPBaseRequestOptions & {
31
+ headers: () => HTTPHeaders | Promise<HTTPHeaders>;
32
+ }, onSingle: (index: number, res: HTTPResult) => void) => {
33
+ cancel: () => void | undefined;
34
+ promise: Promise<void>;
35
+ };
36
+ //# sourceMappingURL=parseJSONStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseJSONStream.d.ts","sourceRoot":"","sources":["../../../src/links/internals/parseJSONStream.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAIL,sBAAsB,EACtB,UAAU,EACX,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE;IACnD;;OAEG;IACH,cAAc,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;IACnE;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBhB;AAyED,eAAO,MAAM,0BAA0B,SAC/B,sBAAsB,GAAG;IAC7B,OAAO,EAAE,MAAM,WAAW,GAAG,QAAQ,WAAW,CAAC,CAAC;CACnD,oBACiB,MAAM,OAAO,UAAU,KAAK,IAAI;;;CA6BnD,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { AnyRouter, CombinedDataTransformer, DataTransformer } from '@trpc/server';
2
2
  import { Observable, Observer } from '@trpc/server/observable';
3
3
  import { TRPCResultMessage, TRPCSuccessResponse } from '@trpc/server/rpc';
4
- import { TRPCClientError } from '../TRPCClientError';
5
4
  import { ResponseEsque } from '../internals/types';
5
+ import { TRPCClientError } from '../TRPCClientError';
6
6
  /**
7
7
  * @internal
8
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/links/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACrC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvD;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,GAAG,OAAO,IAAI;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAExE;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CACtB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,eAAe,CAAC;IAE7B,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO;IAC9C,MAAM,EACF,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GACtC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,CACnC,OAAO,SAAS,SAAS,EACzB,OAAO,IACL,UAAU,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,SAAS,EACzB,OAAO,IACL,QAAQ,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,aAAa,CACvB,OAAO,SAAS,SAAS,EACzB,MAAM,GAAG,OAAO,EAChB,OAAO,GAAG,OAAO,IACf,CAAC,IAAI,EAAE;IACT,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CAC9E,KAAK,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,OAAO,SAAS,SAAS,IAAI,CAChD,IAAI,EAAE,iBAAiB,KACpB,aAAa,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/links/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACrC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvD;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,GAAG,OAAO,IAAI;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAExE;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CACtB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,eAAe,CAAC;IAE7B,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO;IAC9C,MAAM,EACF,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GACtC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,CACnC,OAAO,SAAS,SAAS,EACzB,OAAO,IACL,UAAU,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,SAAS,EACzB,OAAO,IACL,QAAQ,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,aAAa,CACvB,OAAO,SAAS,SAAS,EACzB,MAAM,GAAG,OAAO,EAChB,OAAO,GAAG,OAAO,IACf,CAAC,IAAI,EAAE;IACT,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CAC9E,KAAK,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,OAAO,SAAS,SAAS,IAAI,CAChD,IAAI,EAAE,iBAAiB,KACpB,aAAa,CAAC,OAAO,CAAC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { AnyRouter, inferRouterError } from '@trpc/server';
2
2
  import { Observer, UnsubscribeFn } from '@trpc/server/observable';
3
3
  import { TRPCResponseMessage } from '@trpc/server/rpc';
4
- import { TRPCClientError } from '../TRPCClientError';
5
4
  import { retryDelay } from '../internals/retryDelay';
5
+ import { TRPCClientError } from '../TRPCClientError';
6
6
  import { Operation, TRPCLink } from './types';
7
7
  type WSCallbackResult<TRouter extends AnyRouter, TOutput> = TRPCResponseMessage<TOutput, inferRouterError<TRouter>>;
8
8
  type WSCallbackObserver<TRouter extends AnyRouter, TOutput> = Observer<WSCallbackResult<TRouter, TOutput>, TRPCClientError<TRouter>>;
@@ -1 +1 @@
1
- {"version":3,"file":"wsLink.d.ts","sourceRoot":"","sources":["../../src/links/wsLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAc,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAKL,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,gBAAgB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,mBAAmB,CAC7E,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CAAC;AAEF,KAAK,kBAAkB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,QAAQ,CACpE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClC,eAAe,CAAC,OAAO,CAAC,CACzB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,UAAU,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,sBAAsB;;kBAwNpC,SAAS,wDAA0B,aAAa;;EAqDtE;AACD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AASD,wBAAgB,MAAM,CAAC,OAAO,SAAS,SAAS,EAC9C,IAAI,EAAE,oBAAoB,GACzB,QAAQ,CAAC,OAAO,CAAC,CA6CnB"}
1
+ {"version":3,"file":"wsLink.d.ts","sourceRoot":"","sources":["../../src/links/wsLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAiB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAc,QAAQ,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAKL,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,gBAAgB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,mBAAmB,CAC7E,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CAAC;AAEF,KAAK,kBAAkB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,IAAI,QAAQ,CACpE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClC,eAAe,CAAC,OAAO,CAAC,CACzB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,UAAU,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,sBAAsB;;kBAwNpC,SAAS,wDAA0B,aAAa;;EAqDtE;AACD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AASD,wBAAgB,MAAM,CAAC,OAAO,SAAS,SAAS,EAC9C,IAAI,EAAE,oBAAoB,GACzB,QAAQ,CAAC,OAAO,CAAC,CA6CnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"transformResult.d.ts","sourceRoot":"","sources":["../../src/shared/transformResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EAEpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAMlD,gBAAgB;AAChB,iBAAS,oBAAoB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,EAC9D,QAAQ,EACJ,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,GACvD,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,EACpD,OAAO,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;EAuB3B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,EAChE,QAAQ,EACJ,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,GACvD,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,EACpD,OAAO,EAAE,iBAAiB,GACzB,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAqBzC"}
1
+ {"version":3,"file":"transformResult.d.ts","sourceRoot":"","sources":["../../src/shared/transformResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EAEpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAOlD,gBAAgB;AAChB,iBAAS,oBAAoB,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,EAC9D,QAAQ,EACJ,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,GACvD,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,EACpD,OAAO,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;EAuB3B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,EAChE,QAAQ,EACJ,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,GACvD,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,EACpD,OAAO,EAAE,iBAAiB,GACzB,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAqBzC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/client",
3
- "version": "10.28.1",
3
+ "version": "10.29.0",
4
4
  "description": "The tRPC client library",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -76,11 +76,11 @@
76
76
  "!**/*.test.*"
77
77
  ],
78
78
  "peerDependencies": {
79
- "@trpc/server": "10.28.1"
79
+ "@trpc/server": "10.29.0"
80
80
  },
81
81
  "devDependencies": {
82
82
  "@testing-library/dom": "^9.0.0",
83
- "@trpc/server": "10.28.1",
83
+ "@trpc/server": "10.29.0",
84
84
  "@types/isomorphic-fetch": "^0.0.36",
85
85
  "@types/node": "^18.16.16",
86
86
  "eslint": "^8.40.0",
@@ -98,5 +98,5 @@
98
98
  "funding": [
99
99
  "https://trpc.io/sponsor"
100
100
  ],
101
- "gitHead": "ea70b1c33899b66f964a7d11f5a8710148f03f8e"
101
+ "gitHead": "49b0a55b74b57bbf7451dad5976d315d9fb7785c"
102
102
  }
@@ -2,8 +2,8 @@ import {
2
2
  AnyProcedure,
3
3
  AnyRouter,
4
4
  DefaultErrorShape,
5
- Maybe,
6
5
  inferRouterError,
6
+ Maybe,
7
7
  } from '@trpc/server';
8
8
  import { TRPCErrorResponse, TRPCErrorShape } from '@trpc/server/rpc';
9
9
 
@@ -6,7 +6,6 @@ import type {
6
6
  } from '@trpc/server';
7
7
  import { Unsubscribable } from '@trpc/server/observable';
8
8
  import { inferTransformedProcedureOutput } from '@trpc/server/shared';
9
- import { TRPCClientError } from './TRPCClientError';
10
9
  import {
11
10
  CreateTRPCClientOptions,
12
11
  TRPCRequestOptions,
@@ -14,6 +13,7 @@ import {
14
13
  TRPCUntypedClient,
15
14
  } from './internals/TRPCUntypedClient';
16
15
  import { TRPCClientRuntime } from './links';
16
+ import { TRPCClientError } from './TRPCClientError';
17
17
 
18
18
  /**
19
19
  * @deprecated
@@ -17,7 +17,6 @@ import {
17
17
  inferTransformedProcedureOutput,
18
18
  inferTransformedSubscriptionOutput,
19
19
  } from '@trpc/server/shared';
20
- import { TRPCClientError } from './TRPCClientError';
21
20
  import { TRPCClient } from './createTRPCClient';
22
21
  import { CreateTRPCClientOptions } from './createTRPCUntypedClient';
23
22
  import {
@@ -25,6 +24,7 @@ import {
25
24
  TRPCUntypedClient,
26
25
  UntypedClientProperties,
27
26
  } from './internals/TRPCUntypedClient';
27
+ import { TRPCClientError } from './TRPCClientError';
28
28
 
29
29
  /** @public */
30
30
  export type inferRouterProxyClient<TRouter extends AnyRouter> =
@@ -6,12 +6,11 @@ import {
6
6
  DefaultDataTransformer,
7
7
  } from '@trpc/server';
8
8
  import {
9
- Unsubscribable,
10
9
  inferObservableValue,
11
10
  observableToPromise,
12
11
  share,
12
+ Unsubscribable,
13
13
  } from '@trpc/server/observable';
14
- import { TRPCClientError } from '../TRPCClientError';
15
14
  import { createChain } from '../links/internals/createChain';
16
15
  import {
17
16
  OperationContext,
@@ -19,6 +18,7 @@ import {
19
18
  TRPCClientRuntime,
20
19
  TRPCLink,
21
20
  } from '../links/types';
21
+ import { TRPCClientError } from '../TRPCClientError';
22
22
 
23
23
  type CreateTRPCClientBaseOptions<TRouter extends AnyRouter> =
24
24
  TRouter['_def']['_config']['transformer'] extends DefaultDataTransformer
@@ -4,8 +4,8 @@ import { CancelFn, PromiseAndCancel } from '../links/types';
4
4
  type BatchItem<TKey, TValue> = {
5
5
  aborted: boolean;
6
6
  key: TKey;
7
- resolve: (value: TValue) => void;
8
- reject: (error: Error) => void;
7
+ resolve: ((value: TValue) => void) | null;
8
+ reject: ((error: Error) => void) | null;
9
9
  batch: Batch<TKey, TValue> | null;
10
10
  };
11
11
  type Batch<TKey, TValue> = {
@@ -14,7 +14,10 @@ type Batch<TKey, TValue> = {
14
14
  };
15
15
  type BatchLoader<TKey, TValue> = {
16
16
  validate: (keys: TKey[]) => boolean;
17
- fetch: (keys: TKey[]) => {
17
+ fetch: (
18
+ keys: TKey[],
19
+ unitResolver: (index: number, value: NonNullable<TValue>) => void,
20
+ ) => {
18
21
  promise: Promise<TValue[]>;
19
22
  cancel: CancelFn;
20
23
  };
@@ -62,7 +65,7 @@ export function dataLoader<TKey, TValue>(
62
65
 
63
66
  if (item.aborted) {
64
67
  // Item was aborted before it was dispatched
65
- item.reject(new Error('Aborted'));
68
+ item.reject?.(new Error('Aborted'));
66
69
  index++;
67
70
  continue;
68
71
  }
@@ -78,7 +81,7 @@ export function dataLoader<TKey, TValue>(
78
81
  }
79
82
 
80
83
  if (lastGroup.length === 0) {
81
- item.reject(new Error('Input is too big for a single dispatch'));
84
+ item.reject?.(new Error('Input is too big for a single dispatch'));
82
85
  index++;
83
86
  continue;
84
87
  }
@@ -104,8 +107,16 @@ export function dataLoader<TKey, TValue>(
104
107
  for (const item of items) {
105
108
  item.batch = batch;
106
109
  }
110
+ const unitResolver = (index: number, value: NonNullable<TValue>) => {
111
+ const item = batch.items[index]!;
112
+ item.resolve?.(value);
113
+ item.batch = null;
114
+ item.reject = null;
115
+ item.resolve = null;
116
+ };
107
117
  const { promise, cancel } = batchLoader.fetch(
108
118
  batch.items.map((_item) => _item.key),
119
+ unitResolver,
109
120
  );
110
121
  batch.cancel = cancel;
111
122
 
@@ -113,14 +124,17 @@ export function dataLoader<TKey, TValue>(
113
124
  .then((result) => {
114
125
  for (let i = 0; i < result.length; i++) {
115
126
  const value = result[i]!;
127
+ unitResolver(i, value);
128
+ }
129
+ for (let i = 0; i < batch.items.length; i++) {
116
130
  const item = batch.items[i]!;
117
- item.resolve(value);
131
+ item.reject?.(new Error('Missing result'));
118
132
  item.batch = null;
119
133
  }
120
134
  })
121
135
  .catch((cause) => {
122
136
  for (const item of batch.items) {
123
- item.reject(cause);
137
+ item.reject?.(cause);
124
138
  item.batch = null;
125
139
  }
126
140
  });
@@ -77,6 +77,7 @@ export interface RequestInitEsque {
77
77
  * @see Response from lib.dom.d.ts
78
78
  */
79
79
  export interface ResponseEsque {
80
+ readonly body?: ReadableStream<Uint8Array> | NodeJS.ReadableStream | null;
80
81
  /**
81
82
  * @remarks
82
83
  * The built-in Response::json() method returns Promise<any>, but
@@ -0,0 +1,21 @@
1
+ import { NonEmptyArray } from '../internals/types';
2
+ import { HTTPLinkBaseOptions } from './internals/httpUtils';
3
+ import { HTTPHeaders, Operation } from './types';
4
+
5
+ export interface HTTPBatchLinkOptions extends HTTPLinkBaseOptions {
6
+ maxURLLength?: number;
7
+ /**
8
+ * Headers to be set on outgoing requests or a callback that of said headers
9
+ * @link http://trpc.io/docs/client/headers
10
+ */
11
+ headers?:
12
+ | HTTPHeaders
13
+ | ((opts: {
14
+ opList: NonEmptyArray<Operation>;
15
+ }) => HTTPHeaders | Promise<HTTPHeaders>);
16
+ }
17
+ /**
18
+ * @alias HttpBatchLinkOptions
19
+ * @deprecated use `HTTPBatchLinkOptions` instead
20
+ */
21
+ export interface HttpBatchLinkOptions extends HTTPBatchLinkOptions {}