@trpc/client 11.0.0-next.92 → 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.
- package/README.md +4 -4
- package/dist/TRPCClientError.d.ts +8 -7
- package/dist/TRPCClientError.d.ts.map +1 -1
- package/dist/{TRPCClientError-e224e397.js → TRPCClientError.js} +3 -3
- package/dist/{TRPCClientError-0de4d231.mjs → TRPCClientError.mjs} +4 -4
- package/dist/bundle-analysis.json +126 -155
- package/dist/createTRPCClient.d.ts +27 -19
- package/dist/createTRPCClient.d.ts.map +1 -1
- package/dist/createTRPCClient.js +50 -0
- package/dist/createTRPCClient.mjs +45 -0
- package/dist/createTRPCUntypedClient.d.ts +3 -2
- package/dist/createTRPCUntypedClient.d.ts.map +1 -1
- package/dist/createTRPCUntypedClient.js +10 -0
- package/dist/createTRPCUntypedClient.mjs +7 -0
- package/dist/getFetch.d.ts +1 -1
- package/dist/getFetch.d.ts.map +1 -1
- package/dist/getFetch.js +17 -0
- package/dist/getFetch.mjs +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -370
- package/dist/index.mjs +9 -354
- package/dist/internals/TRPCUntypedClient.d.ts +5 -30
- package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
- package/dist/internals/TRPCUntypedClient.js +85 -0
- package/dist/internals/TRPCUntypedClient.mjs +83 -0
- package/dist/internals/dataLoader.d.ts +1 -1
- package/dist/internals/dataLoader.d.ts.map +1 -1
- package/dist/{httpBatchLink-204206a5.mjs → internals/dataLoader.js} +2 -117
- package/dist/internals/dataLoader.mjs +131 -0
- package/dist/internals/getAbortController.d.ts +2 -2
- package/dist/internals/getAbortController.d.ts.map +1 -1
- package/dist/internals/getAbortController.js +18 -0
- package/dist/internals/getAbortController.mjs +16 -0
- package/dist/internals/transformer.d.ts +42 -0
- package/dist/internals/transformer.d.ts.map +1 -0
- package/dist/internals/transformer.js +30 -0
- package/dist/internals/transformer.mjs +28 -0
- package/dist/internals/types.d.ts +4 -2
- package/dist/internals/types.d.ts.map +1 -1
- package/dist/links/HTTPBatchLinkOptions.d.ts +6 -5
- package/dist/links/HTTPBatchLinkOptions.d.ts.map +1 -1
- package/dist/links/httpBatchLink.d.ts +2 -2
- package/dist/links/httpBatchLink.d.ts.map +1 -1
- package/dist/links/httpBatchLink.js +37 -9
- package/dist/links/httpBatchLink.mjs +39 -5
- package/dist/links/httpBatchStreamLink.d.ts +6 -5
- package/dist/links/httpBatchStreamLink.d.ts.map +1 -1
- package/dist/links/httpBatchStreamLink.js +43 -0
- package/dist/links/httpBatchStreamLink.mjs +41 -0
- package/dist/links/httpFormDataLink.d.ts +1 -1
- package/dist/links/httpFormDataLink.d.ts.map +1 -1
- package/dist/links/httpFormDataLink.js +31 -0
- package/dist/links/httpFormDataLink.mjs +29 -0
- package/dist/links/httpLink.d.ts +8 -8
- package/dist/links/httpLink.d.ts.map +1 -1
- package/dist/links/httpLink.js +6 -9
- package/dist/links/httpLink.mjs +6 -7
- package/dist/links/internals/createChain.d.ts +2 -2
- package/dist/links/internals/createChain.d.ts.map +1 -1
- package/dist/{splitLink-f29e84be.js → links/internals/createChain.js} +0 -22
- package/dist/{splitLink-4c75f7be.mjs → links/internals/createChain.mjs} +1 -22
- package/dist/links/internals/createHTTPBatchLink.d.ts +6 -6
- package/dist/links/internals/createHTTPBatchLink.d.ts.map +1 -1
- package/dist/links/internals/createHTTPBatchLink.js +85 -0
- package/dist/links/internals/createHTTPBatchLink.mjs +83 -0
- package/dist/links/internals/dedupeLink.d.ts +2 -2
- package/dist/links/internals/dedupeLink.d.ts.map +1 -1
- package/dist/links/internals/getTextDecoder.d.ts +1 -1
- package/dist/links/internals/getTextDecoder.d.ts.map +1 -1
- package/dist/links/internals/getTextDecoder.js +18 -0
- package/dist/links/internals/getTextDecoder.mjs +16 -0
- package/dist/links/internals/httpUtils.d.ts +19 -11
- package/dist/links/internals/httpUtils.d.ts.map +1 -1
- package/dist/{httpUtils-c0e7bf5a.js → links/internals/httpUtils.js} +20 -39
- package/dist/{httpUtils-f58ceda1.mjs → links/internals/httpUtils.mjs} +20 -38
- package/dist/links/internals/parseJSONStream.d.ts +5 -6
- package/dist/links/internals/parseJSONStream.d.ts.map +1 -1
- package/dist/links/internals/parseJSONStream.js +118 -0
- package/dist/links/internals/parseJSONStream.mjs +115 -0
- package/dist/links/internals/retryLink.d.ts +2 -2
- package/dist/links/internals/retryLink.d.ts.map +1 -1
- package/dist/links/loggerLink.d.ts +4 -4
- package/dist/links/loggerLink.d.ts.map +1 -1
- package/dist/links/loggerLink.js +6 -4
- package/dist/links/loggerLink.mjs +6 -2
- package/dist/links/splitLink.d.ts +2 -2
- package/dist/links/splitLink.d.ts.map +1 -1
- package/dist/links/splitLink.js +23 -6
- package/dist/links/splitLink.mjs +25 -2
- package/dist/links/types.d.ts +15 -14
- package/dist/links/types.d.ts.map +1 -1
- package/dist/links/wsLink.d.ts +44 -13
- package/dist/links/wsLink.d.ts.map +1 -1
- package/dist/links/wsLink.js +64 -24
- package/dist/links/wsLink.mjs +64 -22
- package/dist/links.d.ts +10 -0
- package/dist/links.d.ts.map +1 -0
- package/dist/unstable-internals.d.ts +2 -0
- package/dist/unstable-internals.d.ts.map +1 -0
- package/dist/unstable-internals.js +7 -0
- package/dist/unstable-internals.mjs +1 -0
- package/package.json +26 -28
- package/src/TRPCClientError.ts +24 -13
- package/src/createTRPCClient.ts +58 -51
- package/src/createTRPCUntypedClient.ts +3 -5
- package/src/getFetch.ts +1 -1
- package/src/index.ts +2 -0
- package/src/internals/TRPCUntypedClient.ts +14 -84
- package/src/internals/dataLoader.ts +1 -1
- package/src/internals/getAbortController.ts +2 -2
- package/src/internals/transformer.ts +76 -0
- package/src/internals/types.ts +8 -1
- package/src/links/HTTPBatchLinkOptions.ts +17 -15
- package/src/links/httpBatchLink.ts +9 -8
- package/src/links/httpBatchStreamLink.ts +17 -17
- package/src/links/httpFormDataLink.ts +11 -12
- package/src/links/httpLink.ts +27 -19
- package/src/links/internals/createChain.ts +6 -2
- package/src/links/internals/createHTTPBatchLink.ts +24 -16
- package/src/links/internals/dedupeLink.ts +4 -3
- package/src/links/internals/getTextDecoder.ts +1 -1
- package/src/links/internals/httpUtils.ts +42 -21
- package/src/links/internals/parseJSONStream.ts +12 -14
- package/src/links/internals/retryLink.ts +4 -3
- package/src/links/loggerLink.ts +5 -5
- package/src/links/splitLink.ts +2 -2
- package/src/links/types.ts +27 -22
- package/src/links/wsLink.ts +124 -36
- package/src/links.ts +14 -0
- package/src/unstable-internals.ts +1 -0
- package/unstable-internals/index.d.ts +1 -0
- package/unstable-internals/index.js +1 -0
- package/dist/TRPCClientError-23c8aa93.js +0 -61
- package/dist/httpBatchLink-64fceaac.js +0 -251
- package/dist/httpBatchLink-92dab48e.js +0 -247
- package/dist/httpUtils-35e50476.js +0 -145
- package/dist/internals/isObject.d.ts +0 -2
- package/dist/internals/isObject.d.ts.map +0 -1
- package/dist/internals/retryDelay.d.ts +0 -2
- package/dist/internals/retryDelay.d.ts.map +0 -1
- package/dist/links/index.d.ts +0 -10
- package/dist/links/index.d.ts.map +0 -1
- package/dist/shared/index.d.ts +0 -2
- package/dist/shared/index.d.ts.map +0 -1
- package/dist/shared/index.js +0 -9
- package/dist/shared/index.mjs +0 -1
- package/dist/shared/transformResult.d.ts +0 -34
- package/dist/shared/transformResult.d.ts.map +0 -1
- package/dist/splitLink-0df96fdc.js +0 -41
- package/dist/transformResult-ace864b8.mjs +0 -58
- package/dist/transformResult-c1422cb5.js +0 -60
- package/dist/transformResult-dfce8f15.js +0 -61
- package/shared/index.d.ts +0 -1
- package/shared/index.js +0 -1
- package/src/internals/isObject.ts +0 -4
- package/src/internals/retryDelay.ts +0 -3
- package/src/links/index.ts +0 -14
- package/src/shared/index.ts +0 -1
- package/src/shared/transformResult.ts +0 -79
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
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,
|
|
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?:
|
|
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":"
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
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;
|
|
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":"
|
|
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
|
-
|
|
3
|
+
var createHTTPBatchLink = require('./internals/createHTTPBatchLink.js');
|
|
4
|
+
var httpUtils = require('./internals/httpUtils.js');
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
2
|
-
import '
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
|
|
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:
|
|
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":"
|
|
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;
|