@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.
- package/dist/TRPCClientError.d.ts +1 -1
- package/dist/TRPCClientError.d.ts.map +1 -1
- package/dist/createTRPCClient.d.ts +1 -1
- package/dist/createTRPCClient.d.ts.map +1 -1
- package/dist/createTRPCClientProxy.d.ts +1 -1
- package/dist/createTRPCClientProxy.d.ts.map +1 -1
- package/dist/httpBatchLink-38dcf5f2.js +243 -0
- package/dist/httpBatchLink-e66c0674.mjs +240 -0
- package/dist/httpBatchLink-f35df745.js +239 -0
- package/dist/{httpUtils-00c8b54e.js → httpUtils-145e783b.js} +27 -23
- package/dist/{httpUtils-90a6bccb.js → httpUtils-21cbb35d.js} +27 -20
- package/dist/{httpUtils-8a5c637a.mjs → httpUtils-b2fcc20c.mjs} +26 -21
- package/dist/index.js +149 -4
- package/dist/index.mjs +151 -6
- package/dist/internals/TRPCUntypedClient.d.ts +1 -1
- package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
- package/dist/internals/dataLoader.d.ts +1 -1
- package/dist/internals/dataLoader.d.ts.map +1 -1
- package/dist/internals/types.d.ts +2 -0
- package/dist/internals/types.d.ts.map +1 -1
- package/dist/links/HTTPBatchLinkOptions.d.ts +20 -0
- package/dist/links/HTTPBatchLinkOptions.d.ts.map +1 -0
- package/dist/links/httpBatchLink.d.ts +1 -15
- package/dist/links/httpBatchLink.d.ts.map +1 -1
- package/dist/links/httpBatchLink.js +5 -217
- package/dist/links/httpBatchLink.mjs +4 -220
- package/dist/links/httpBatchStreamLink.d.ts +2 -0
- package/dist/links/httpBatchStreamLink.d.ts.map +1 -0
- package/dist/links/httpLink.d.ts.map +1 -1
- package/dist/links/httpLink.js +1 -1
- package/dist/links/httpLink.mjs +1 -1
- package/dist/links/index.d.ts +2 -0
- package/dist/links/index.d.ts.map +1 -1
- package/dist/links/internals/createHTTPBatchLink.d.ts +20 -0
- package/dist/links/internals/createHTTPBatchLink.d.ts.map +1 -0
- package/dist/links/internals/httpUtils.d.ts +3 -1
- package/dist/links/internals/httpUtils.d.ts.map +1 -1
- package/dist/links/internals/parseJSONStream.d.ts +36 -0
- package/dist/links/internals/parseJSONStream.d.ts.map +1 -0
- package/dist/links/types.d.ts +1 -1
- package/dist/links/types.d.ts.map +1 -1
- package/dist/links/wsLink.d.ts +1 -1
- package/dist/links/wsLink.d.ts.map +1 -1
- package/dist/shared/transformResult.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/TRPCClientError.ts +1 -1
- package/src/createTRPCClient.ts +1 -1
- package/src/createTRPCClientProxy.ts +1 -1
- package/src/internals/TRPCUntypedClient.ts +2 -2
- package/src/internals/dataLoader.ts +21 -7
- package/src/internals/types.ts +1 -0
- package/src/links/HTTPBatchLinkOptions.ts +21 -0
- package/src/links/httpBatchLink.ts +44 -133
- package/src/links/httpBatchStreamLink.ts +47 -0
- package/src/links/httpFormDataLink.ts +1 -1
- package/src/links/httpLink.ts +2 -2
- package/src/links/index.ts +2 -0
- package/src/links/internals/createHTTPBatchLink.ts +113 -0
- package/src/links/internals/httpUtils.ts +33 -24
- package/src/links/internals/parseJSONStream.ts +165 -0
- package/src/links/retryLink.ts +1 -1
- package/src/links/types.ts +1 -1
- package/src/links/wsLink.ts +3 -3
- package/src/shared/transformResult.ts +1 -1
|
@@ -1,220 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
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 @@
|
|
|
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,
|
|
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"}
|
package/dist/links/httpLink.js
CHANGED
|
@@ -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-
|
|
7
|
+
var httpUtils = require('../httpUtils-21cbb35d.js');
|
|
8
8
|
|
|
9
9
|
function httpLinkFactory(factoryOpts) {
|
|
10
10
|
return (opts)=>{
|
package/dist/links/httpLink.mjs
CHANGED
|
@@ -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-
|
|
3
|
+
import { r as resolveHTTPLinkOptions, j as jsonHttpRequester } from '../httpUtils-b2fcc20c.mjs';
|
|
4
4
|
|
|
5
5
|
function httpLinkFactory(factoryOpts) {
|
|
6
6
|
return (opts)=>{
|
package/dist/links/index.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/links/types.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/links/wsLink.d.ts
CHANGED
|
@@ -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,
|
|
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;
|
|
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.
|
|
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.
|
|
79
|
+
"@trpc/server": "10.29.0"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
82
|
"@testing-library/dom": "^9.0.0",
|
|
83
|
-
"@trpc/server": "10.
|
|
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": "
|
|
101
|
+
"gitHead": "49b0a55b74b57bbf7451dad5976d315d9fb7785c"
|
|
102
102
|
}
|
package/src/TRPCClientError.ts
CHANGED
package/src/createTRPCClient.ts
CHANGED
|
@@ -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: (
|
|
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.
|
|
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
|
});
|
package/src/internals/types.ts
CHANGED
|
@@ -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 {}
|