@trpc/client 11.0.0-rc.449 → 11.0.0-rc.455

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 (49) hide show
  1. package/dist/TRPCClientError.d.ts.map +1 -1
  2. package/dist/TRPCClientError.js +11 -8
  3. package/dist/TRPCClientError.mjs +12 -9
  4. package/dist/bundle-analysis.json +54 -68
  5. package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
  6. package/dist/internals/TRPCUntypedClient.js +15 -19
  7. package/dist/internals/TRPCUntypedClient.mjs +15 -19
  8. package/dist/internals/dataLoader.d.ts +2 -6
  9. package/dist/internals/dataLoader.d.ts.map +1 -1
  10. package/dist/internals/dataLoader.js +3 -16
  11. package/dist/internals/dataLoader.mjs +3 -16
  12. package/dist/internals/types.d.ts +0 -15
  13. package/dist/internals/types.d.ts.map +1 -1
  14. package/dist/links/httpBatchLink.d.ts.map +1 -1
  15. package/dist/links/httpBatchLink.js +15 -17
  16. package/dist/links/httpBatchLink.mjs +16 -18
  17. package/dist/links/httpBatchStreamLink.d.ts.map +1 -1
  18. package/dist/links/httpBatchStreamLink.js +40 -43
  19. package/dist/links/httpBatchStreamLink.mjs +41 -44
  20. package/dist/links/httpLink.d.ts.map +1 -1
  21. package/dist/links/httpLink.js +3 -2
  22. package/dist/links/httpLink.mjs +3 -2
  23. package/dist/links/httpSubscriptionLink.js +1 -1
  24. package/dist/links/httpSubscriptionLink.mjs +1 -1
  25. package/dist/links/internals/httpUtils.d.ts +14 -11
  26. package/dist/links/internals/httpUtils.d.ts.map +1 -1
  27. package/dist/links/internals/httpUtils.js +39 -33
  28. package/dist/links/internals/httpUtils.mjs +39 -34
  29. package/dist/links/types.d.ts +2 -12
  30. package/dist/links/types.d.ts.map +1 -1
  31. package/dist/links/wsLink.js +2 -1
  32. package/dist/links/wsLink.mjs +2 -1
  33. package/package.json +4 -4
  34. package/src/TRPCClientError.ts +15 -10
  35. package/src/internals/TRPCUntypedClient.ts +18 -28
  36. package/src/internals/dataLoader.ts +4 -22
  37. package/src/internals/types.ts +0 -18
  38. package/src/links/httpBatchLink.ts +16 -19
  39. package/src/links/httpBatchStreamLink.ts +65 -72
  40. package/src/links/httpLink.ts +3 -2
  41. package/src/links/httpSubscriptionLink.ts +1 -1
  42. package/src/links/internals/httpUtils.ts +58 -44
  43. package/src/links/types.ts +2 -13
  44. package/src/links/wsLink.ts +1 -1
  45. package/dist/internals/getAbortController.d.ts +0 -4
  46. package/dist/internals/getAbortController.d.ts.map +0 -1
  47. package/dist/internals/getAbortController.js +0 -16
  48. package/dist/internals/getAbortController.mjs +0 -14
  49. package/src/internals/getAbortController.ts +0 -20
@@ -25,14 +25,16 @@ var httpUtils = require('./internals/httpUtils.js');
25
25
  ...resolvedOpts,
26
26
  type,
27
27
  path,
28
- inputs
28
+ inputs,
29
+ signal: null
29
30
  });
30
31
  return url.length <= maxURLLength;
31
32
  },
32
- fetch (batchOps) {
33
+ async fetch (batchOps) {
33
34
  const path = batchOps.map((op)=>op.path).join(',');
34
35
  const inputs = batchOps.map((op)=>op.input);
35
- const requester = httpUtils.jsonHttpRequester({
36
+ const ac = httpUtils.mergeAbortSignals(batchOps);
37
+ const res = await httpUtils.jsonHttpRequester({
36
38
  ...resolvedOpts,
37
39
  path,
38
40
  inputs,
@@ -47,19 +49,15 @@ var httpUtils = require('./internals/httpUtils.js');
47
49
  });
48
50
  }
49
51
  return opts.headers;
50
- }
52
+ },
53
+ signal: ac.signal
51
54
  });
52
- return {
53
- cancel: requester.cancel,
54
- promise: requester.promise.then((res)=>{
55
- const resJSON = Array.isArray(res.json) ? res.json : batchOps.map(()=>res.json);
56
- const result = resJSON.map((item)=>({
57
- meta: res.meta,
58
- json: item
59
- }));
60
- return result;
61
- })
62
- };
55
+ const resJSON = Array.isArray(res.json) ? res.json : batchOps.map(()=>res.json);
56
+ const result = resJSON.map((item)=>({
57
+ meta: res.meta,
58
+ json: item
59
+ }));
60
+ return result;
63
61
  }
64
62
  };
65
63
  };
@@ -75,7 +73,7 @@ var httpUtils = require('./internals/httpUtils.js');
75
73
  throw new Error('Subscriptions are unsupported by `httpLink` - use `httpSubscriptionLink` or `wsLink`');
76
74
  }
77
75
  const loader = loaders[op.type];
78
- const { promise , cancel } = loader.load(op);
76
+ const promise = loader.load(op);
79
77
  let _res = undefined;
80
78
  promise.then((res)=>{
81
79
  _res = res;
@@ -97,7 +95,7 @@ var httpUtils = require('./internals/httpUtils.js');
97
95
  }));
98
96
  });
99
97
  return ()=>{
100
- cancel();
98
+ // noop
101
99
  };
102
100
  });
103
101
  };
@@ -2,7 +2,7 @@ import { observable } from '@trpc/server/observable';
2
2
  import { transformResult } from '@trpc/server/unstable-core-do-not-import';
3
3
  import { dataLoader } from '../internals/dataLoader.mjs';
4
4
  import { TRPCClientError } from '../TRPCClientError.mjs';
5
- import { resolveHTTPLinkOptions, getUrl, jsonHttpRequester } from './internals/httpUtils.mjs';
5
+ import { resolveHTTPLinkOptions, getUrl, mergeAbortSignals, jsonHttpRequester } from './internals/httpUtils.mjs';
6
6
 
7
7
  /**
8
8
  * @see https://trpc.io/docs/client/links/httpBatchLink
@@ -23,14 +23,16 @@ import { resolveHTTPLinkOptions, getUrl, jsonHttpRequester } from './internals/h
23
23
  ...resolvedOpts,
24
24
  type,
25
25
  path,
26
- inputs
26
+ inputs,
27
+ signal: null
27
28
  });
28
29
  return url.length <= maxURLLength;
29
30
  },
30
- fetch (batchOps) {
31
+ async fetch (batchOps) {
31
32
  const path = batchOps.map((op)=>op.path).join(',');
32
33
  const inputs = batchOps.map((op)=>op.input);
33
- const requester = jsonHttpRequester({
34
+ const ac = mergeAbortSignals(batchOps);
35
+ const res = await jsonHttpRequester({
34
36
  ...resolvedOpts,
35
37
  path,
36
38
  inputs,
@@ -45,19 +47,15 @@ import { resolveHTTPLinkOptions, getUrl, jsonHttpRequester } from './internals/h
45
47
  });
46
48
  }
47
49
  return opts.headers;
48
- }
50
+ },
51
+ signal: ac.signal
49
52
  });
50
- return {
51
- cancel: requester.cancel,
52
- promise: requester.promise.then((res)=>{
53
- const resJSON = Array.isArray(res.json) ? res.json : batchOps.map(()=>res.json);
54
- const result = resJSON.map((item)=>({
55
- meta: res.meta,
56
- json: item
57
- }));
58
- return result;
59
- })
60
- };
53
+ const resJSON = Array.isArray(res.json) ? res.json : batchOps.map(()=>res.json);
54
+ const result = resJSON.map((item)=>({
55
+ meta: res.meta,
56
+ json: item
57
+ }));
58
+ return result;
61
59
  }
62
60
  };
63
61
  };
@@ -73,7 +71,7 @@ import { resolveHTTPLinkOptions, getUrl, jsonHttpRequester } from './internals/h
73
71
  throw new Error('Subscriptions are unsupported by `httpLink` - use `httpSubscriptionLink` or `wsLink`');
74
72
  }
75
73
  const loader = loaders[op.type];
76
- const { promise , cancel } = loader.load(op);
74
+ const promise = loader.load(op);
77
75
  let _res = undefined;
78
76
  promise.then((res)=>{
79
77
  _res = res;
@@ -95,7 +93,7 @@ import { resolveHTTPLinkOptions, getUrl, jsonHttpRequester } from './internals/h
95
93
  }));
96
94
  });
97
95
  return ()=>{
98
- cancel();
96
+ // noop
99
97
  };
100
98
  });
101
99
  };
@@ -1 +1 @@
1
- {"version":3,"file":"httpBatchStreamLink.d.ts","sourceRoot":"","sources":["../../src/links/httpBatchStreamLink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,cAAc,CAAC;AAG7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAM7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAQnE,OAAO,KAAK,EAAa,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,0BAA0B,CAAC,KAAK,SAAS,YAAY,IAC/D,oBAAoB,CAAC,KAAK,CAAC,GAAG;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEJ;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,SAAS,SAAS,EACpE,IAAI,EAAE,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,GACrE,QAAQ,CAAC,OAAO,CAAC,CAqKnB"}
1
+ {"version":3,"file":"httpBatchStreamLink.d.ts","sourceRoot":"","sources":["../../src/links/httpBatchStreamLink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,cAAc,CAAC;AAG7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAM7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AASnE,OAAO,KAAK,EAAa,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,0BAA0B,CAAC,KAAK,SAAS,YAAY,IAC/D,oBAAoB,CAAC,KAAK,CAAC,GAAG;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEJ;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,SAAS,SAAS,EACpE,IAAI,EAAE,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,GACrE,QAAQ,CAAC,OAAO,CAAC,CA6JnB"}
@@ -29,16 +29,18 @@ var httpUtils = require('./internals/httpUtils.js');
29
29
  ...resolvedOpts,
30
30
  type,
31
31
  path,
32
- inputs
32
+ inputs,
33
+ signal: null
33
34
  });
34
35
  return url.length <= maxURLLength;
35
36
  },
36
- fetch (batchOps) {
37
+ async fetch (batchOps) {
37
38
  const path = batchOps.map((op)=>op.path).join(',');
38
39
  const inputs = batchOps.map((op)=>op.input);
39
- const ac = resolvedOpts.AbortController ? new resolvedOpts.AbortController() : null;
40
+ const ac = httpUtils.mergeAbortSignals(batchOps);
40
41
  const responsePromise = httpUtils.fetchHTTPResponse({
41
42
  ...resolvedOpts,
43
+ signal: ac.signal,
42
44
  type,
43
45
  contentTypeHeader: 'application/json',
44
46
  trpcAcceptHeader: 'application/jsonl',
@@ -57,47 +59,42 @@ var httpUtils = require('./internals/httpUtils.js');
57
59
  }
58
60
  return opts.headers;
59
61
  }
60
- }, ac);
61
- return {
62
- promise: responsePromise.then(async (res)=>{
63
- const [head] = await unstableCoreDoNotImport.jsonlStreamConsumer({
64
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
65
- from: res.body,
66
- deserialize: resolvedOpts.transformer.output.deserialize,
67
- // onError: console.error,
68
- formatError (opts) {
69
- const error = opts.error;
70
- return TRPCClientError.TRPCClientError.from({
71
- error
72
- });
73
- }
62
+ });
63
+ const res = await responsePromise;
64
+ const [head] = await unstableCoreDoNotImport.jsonlStreamConsumer({
65
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
66
+ from: res.body,
67
+ deserialize: resolvedOpts.transformer.output.deserialize,
68
+ // onError: console.error,
69
+ formatError (opts) {
70
+ const error = opts.error;
71
+ return TRPCClientError.TRPCClientError.from({
72
+ error
74
73
  });
75
- const promises = Object.keys(batchOps).map(async (key)=>{
76
- let json = await Promise.resolve(head[key]);
77
- if ('result' in json) {
78
- /**
79
- * Not very pretty, but we need to unwrap nested data as promises
80
- * Our stream producer will only resolve top-level async values or async values that are directly nested in another async value
81
- */ const result = await Promise.resolve(json.result);
82
- json = {
83
- result: {
84
- data: await Promise.resolve(result.data)
85
- }
86
- };
74
+ },
75
+ abortController: ac
76
+ });
77
+ const promises = Object.keys(batchOps).map(async (key)=>{
78
+ let json = await Promise.resolve(head[key]);
79
+ if ('result' in json) {
80
+ /**
81
+ * Not very pretty, but we need to unwrap nested data as promises
82
+ * Our stream producer will only resolve top-level async values or async values that are directly nested in another async value
83
+ */ const result = await Promise.resolve(json.result);
84
+ json = {
85
+ result: {
86
+ data: await Promise.resolve(result.data)
87
87
  }
88
- return {
89
- json,
90
- meta: {
91
- response: res
92
- }
93
- };
94
- });
95
- return promises;
96
- }),
97
- cancel () {
98
- ac?.abort();
88
+ };
99
89
  }
100
- };
90
+ return {
91
+ json,
92
+ meta: {
93
+ response: res
94
+ }
95
+ };
96
+ });
97
+ return promises;
101
98
  }
102
99
  };
103
100
  };
@@ -113,7 +110,7 @@ var httpUtils = require('./internals/httpUtils.js');
113
110
  throw new Error('Subscriptions are unsupported by `httpLink` - use `httpSubscriptionLink` or `wsLink`');
114
111
  }
115
112
  const loader = loaders[op.type];
116
- const { promise , cancel } = loader.load(op);
113
+ const promise = loader.load(op);
117
114
  let _res = undefined;
118
115
  promise.then((res)=>{
119
116
  _res = res;
@@ -137,7 +134,7 @@ var httpUtils = require('./internals/httpUtils.js');
137
134
  }));
138
135
  });
139
136
  return ()=>{
140
- cancel();
137
+ // noop
141
138
  };
142
139
  });
143
140
  };
@@ -2,7 +2,7 @@ import { observable } from '@trpc/server/observable';
2
2
  import { jsonlStreamConsumer } from '@trpc/server/unstable-core-do-not-import';
3
3
  import { dataLoader } from '../internals/dataLoader.mjs';
4
4
  import { TRPCClientError } from '../TRPCClientError.mjs';
5
- import { resolveHTTPLinkOptions, getUrl, fetchHTTPResponse, getBody } from './internals/httpUtils.mjs';
5
+ import { resolveHTTPLinkOptions, getUrl, mergeAbortSignals, fetchHTTPResponse, getBody } from './internals/httpUtils.mjs';
6
6
 
7
7
  /**
8
8
  * @see https://trpc.io/docs/client/links/httpBatchStreamLink
@@ -27,16 +27,18 @@ import { resolveHTTPLinkOptions, getUrl, fetchHTTPResponse, getBody } from './in
27
27
  ...resolvedOpts,
28
28
  type,
29
29
  path,
30
- inputs
30
+ inputs,
31
+ signal: null
31
32
  });
32
33
  return url.length <= maxURLLength;
33
34
  },
34
- fetch (batchOps) {
35
+ async fetch (batchOps) {
35
36
  const path = batchOps.map((op)=>op.path).join(',');
36
37
  const inputs = batchOps.map((op)=>op.input);
37
- const ac = resolvedOpts.AbortController ? new resolvedOpts.AbortController() : null;
38
+ const ac = mergeAbortSignals(batchOps);
38
39
  const responsePromise = fetchHTTPResponse({
39
40
  ...resolvedOpts,
41
+ signal: ac.signal,
40
42
  type,
41
43
  contentTypeHeader: 'application/json',
42
44
  trpcAcceptHeader: 'application/jsonl',
@@ -55,47 +57,42 @@ import { resolveHTTPLinkOptions, getUrl, fetchHTTPResponse, getBody } from './in
55
57
  }
56
58
  return opts.headers;
57
59
  }
58
- }, ac);
59
- return {
60
- promise: responsePromise.then(async (res)=>{
61
- const [head] = await jsonlStreamConsumer({
62
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
63
- from: res.body,
64
- deserialize: resolvedOpts.transformer.output.deserialize,
65
- // onError: console.error,
66
- formatError (opts) {
67
- const error = opts.error;
68
- return TRPCClientError.from({
69
- error
70
- });
71
- }
60
+ });
61
+ const res = await responsePromise;
62
+ const [head] = await jsonlStreamConsumer({
63
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
64
+ from: res.body,
65
+ deserialize: resolvedOpts.transformer.output.deserialize,
66
+ // onError: console.error,
67
+ formatError (opts) {
68
+ const error = opts.error;
69
+ return TRPCClientError.from({
70
+ error
72
71
  });
73
- const promises = Object.keys(batchOps).map(async (key)=>{
74
- let json = await Promise.resolve(head[key]);
75
- if ('result' in json) {
76
- /**
77
- * Not very pretty, but we need to unwrap nested data as promises
78
- * Our stream producer will only resolve top-level async values or async values that are directly nested in another async value
79
- */ const result = await Promise.resolve(json.result);
80
- json = {
81
- result: {
82
- data: await Promise.resolve(result.data)
83
- }
84
- };
72
+ },
73
+ abortController: ac
74
+ });
75
+ const promises = Object.keys(batchOps).map(async (key)=>{
76
+ let json = await Promise.resolve(head[key]);
77
+ if ('result' in json) {
78
+ /**
79
+ * Not very pretty, but we need to unwrap nested data as promises
80
+ * Our stream producer will only resolve top-level async values or async values that are directly nested in another async value
81
+ */ const result = await Promise.resolve(json.result);
82
+ json = {
83
+ result: {
84
+ data: await Promise.resolve(result.data)
85
85
  }
86
- return {
87
- json,
88
- meta: {
89
- response: res
90
- }
91
- };
92
- });
93
- return promises;
94
- }),
95
- cancel () {
96
- ac?.abort();
86
+ };
97
87
  }
98
- };
88
+ return {
89
+ json,
90
+ meta: {
91
+ response: res
92
+ }
93
+ };
94
+ });
95
+ return promises;
99
96
  }
100
97
  };
101
98
  };
@@ -111,7 +108,7 @@ import { resolveHTTPLinkOptions, getUrl, fetchHTTPResponse, getBody } from './in
111
108
  throw new Error('Subscriptions are unsupported by `httpLink` - use `httpSubscriptionLink` or `wsLink`');
112
109
  }
113
110
  const loader = loaders[op.type];
114
- const { promise , cancel } = loader.load(op);
111
+ const promise = loader.load(op);
115
112
  let _res = undefined;
116
113
  promise.then((res)=>{
117
114
  _res = res;
@@ -135,7 +132,7 @@ import { resolveHTTPLinkOptions, getUrl, fetchHTTPResponse, getBody } from './in
135
132
  }));
136
133
  });
137
134
  return ()=>{
138
- cancel();
135
+ // noop
139
136
  };
140
137
  });
141
138
  };
@@ -1 +1 @@
1
- {"version":3,"file":"httpLink.d.ts","sourceRoot":"","sources":["../../src/links/httpLink.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACV,MAAM,0CAA0C,CAAC;AAGlD,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,cAAc,IACtD,mBAAmB,CAAC,KAAK,CAAC,GAAG;IAC3B;;;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,CAAC;AAmCJ;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,SAAS,SAAS,GAAG,SAAS,EAC5D,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,GAC1D,QAAQ,CAAC,OAAO,CAAC,CA+DnB"}
1
+ {"version":3,"file":"httpLink.d.ts","sourceRoot":"","sources":["../../src/links/httpLink.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACV,MAAM,0CAA0C,CAAC;AAGlD,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,cAAc,IACtD,mBAAmB,CAAC,KAAK,CAAC,GAAG;IAC3B;;;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,CAAC;AAmCJ;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,SAAS,SAAS,GAAG,SAAS,EAC5D,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,GAC1D,QAAQ,CAAC,OAAO,CAAC,CAgEnB"}
@@ -49,6 +49,7 @@ const universalRequester = (opts)=>{
49
49
  type,
50
50
  path,
51
51
  input,
52
+ signal: op.signal,
52
53
  headers () {
53
54
  if (!opts.headers) {
54
55
  return {};
@@ -62,7 +63,7 @@ const universalRequester = (opts)=>{
62
63
  }
63
64
  });
64
65
  let meta = undefined;
65
- request.promise.then((res)=>{
66
+ request.then((res)=>{
66
67
  meta = res.meta;
67
68
  const transformed = unstableCoreDoNotImport.transformResult(res.json, resolvedOpts.transformer.output);
68
69
  if (!transformed.ok) {
@@ -82,7 +83,7 @@ const universalRequester = (opts)=>{
82
83
  }));
83
84
  });
84
85
  return ()=>{
85
- request.cancel();
86
+ // noop
86
87
  };
87
88
  });
88
89
  };
@@ -47,6 +47,7 @@ const universalRequester = (opts)=>{
47
47
  type,
48
48
  path,
49
49
  input,
50
+ signal: op.signal,
50
51
  headers () {
51
52
  if (!opts.headers) {
52
53
  return {};
@@ -60,7 +61,7 @@ const universalRequester = (opts)=>{
60
61
  }
61
62
  });
62
63
  let meta = undefined;
63
- request.promise.then((res)=>{
64
+ request.then((res)=>{
64
65
  meta = res.meta;
65
66
  const transformed = transformResult(res.json, resolvedOpts.transformer.output);
66
67
  if (!transformed.ok) {
@@ -80,7 +81,7 @@ const universalRequester = (opts)=>{
80
81
  }));
81
82
  });
82
83
  return ()=>{
83
- request.cancel();
84
+ // noop
84
85
  };
85
86
  });
86
87
  };
@@ -36,7 +36,7 @@ async function urlWithConnectionParams(opts) {
36
36
  input,
37
37
  path,
38
38
  type,
39
- AbortController: null
39
+ signal: null
40
40
  });
41
41
  /* istanbul ignore if -- @preserve */ if (unsubscribed) {
42
42
  // already unsubscribed - rare race condition
@@ -34,7 +34,7 @@ async function urlWithConnectionParams(opts) {
34
34
  input,
35
35
  path,
36
36
  type,
37
- AbortController: null
37
+ signal: null
38
38
  });
39
39
  /* istanbul ignore if -- @preserve */ if (unsubscribed) {
40
40
  // already unsubscribed - rare race condition
@@ -1,7 +1,7 @@
1
- import type { AnyClientTypes, CombinedDataTransformer, ProcedureType, TRPCAcceptHeader, TRPCResponse } from '@trpc/server/unstable-core-do-not-import';
2
- import type { AbortControllerEsque, AbortControllerInstanceEsque, FetchEsque, RequestInitEsque, ResponseEsque } from '../../internals/types';
1
+ import type { AnyClientTypes, CombinedDataTransformer, Maybe, ProcedureType, TRPCAcceptHeader, TRPCResponse } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { FetchEsque, RequestInitEsque, ResponseEsque } from '../../internals/types';
3
3
  import type { TransformerOptions } from '../../unstable-internals';
4
- import type { HTTPHeaders, PromiseAndCancel } from '../types';
4
+ import type { HTTPHeaders } from '../types';
5
5
  /**
6
6
  * @internal
7
7
  */
@@ -11,10 +11,6 @@ export type HTTPLinkBaseOptions<TRoot extends Pick<AnyClientTypes, 'transformer'
11
11
  * Add ponyfill for fetch
12
12
  */
13
13
  fetch?: FetchEsque;
14
- /**
15
- * Add ponyfill for AbortController
16
- */
17
- AbortController?: AbortControllerEsque | null;
18
14
  /**
19
15
  * Send all requests `as POST`s requests regardless of the procedure type
20
16
  * The HTTP handler must separately allow overriding the method. See:
@@ -25,7 +21,6 @@ export type HTTPLinkBaseOptions<TRoot extends Pick<AnyClientTypes, 'transformer'
25
21
  export interface ResolvedHTTPLinkOptions {
26
22
  url: string;
27
23
  fetch?: FetchEsque;
28
- AbortController: AbortControllerEsque | null;
29
24
  transformer: CombinedDataTransformer;
30
25
  methodOverride?: 'POST';
31
26
  }
@@ -48,6 +43,7 @@ export declare function getInput(opts: GetInputOptions): any;
48
43
  export type HTTPBaseRequestOptions = GetInputOptions & ResolvedHTTPLinkOptions & {
49
44
  type: ProcedureType;
50
45
  path: string;
46
+ signal: Maybe<AbortSignal>;
51
47
  };
52
48
  type GetUrl = (opts: HTTPBaseRequestOptions) => string;
53
49
  type GetBody = (opts: HTTPBaseRequestOptions) => RequestInitEsque['body'];
@@ -61,12 +57,19 @@ export declare const getUrl: GetUrl;
61
57
  export declare const getBody: GetBody;
62
58
  export type Requester = (opts: HTTPBaseRequestOptions & {
63
59
  headers: () => HTTPHeaders | Promise<HTTPHeaders>;
64
- }) => PromiseAndCancel<HTTPResult>;
60
+ }) => Promise<HTTPResult>;
65
61
  export declare const jsonHttpRequester: Requester;
66
62
  export type HTTPRequestOptions = ContentOptions & HTTPBaseRequestOptions & {
67
63
  headers: () => HTTPHeaders | Promise<HTTPHeaders>;
68
64
  };
69
- export declare function fetchHTTPResponse(opts: HTTPRequestOptions, ac?: AbortControllerInstanceEsque | null): Promise<ResponseEsque>;
70
- export declare function httpRequest(opts: HTTPRequestOptions): PromiseAndCancel<HTTPResult>;
65
+ export declare function fetchHTTPResponse(opts: HTTPRequestOptions): Promise<ResponseEsque>;
66
+ export declare function httpRequest(opts: HTTPRequestOptions): Promise<HTTPResult>;
67
+ /**
68
+ * Merges multiple abort signals into a single one
69
+ * - When all signals have been aborted, the merged signal will be aborted
70
+ */
71
+ export declare function mergeAbortSignals(opts: {
72
+ signal: Maybe<AbortSignal>;
73
+ }[]): AbortController;
71
74
  export {};
72
75
  //# sourceMappingURL=httpUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpUtils.d.ts","sourceRoot":"","sources":["../../../src/links/internals/httpUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpUtils.d.ts","sourceRoot":"","sources":["../../../src/links/internals/httpUtils.ts"],"names":[],"mappings":"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"}