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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/README.md +4 -4
  2. package/dist/TRPCClientError.d.ts +8 -7
  3. package/dist/TRPCClientError.d.ts.map +1 -1
  4. package/dist/{TRPCClientError-e224e397.js → TRPCClientError.js} +3 -3
  5. package/dist/{TRPCClientError-0de4d231.mjs → TRPCClientError.mjs} +4 -4
  6. package/dist/bundle-analysis.json +126 -155
  7. package/dist/createTRPCClient.d.ts +27 -19
  8. package/dist/createTRPCClient.d.ts.map +1 -1
  9. package/dist/createTRPCClient.js +50 -0
  10. package/dist/createTRPCClient.mjs +45 -0
  11. package/dist/createTRPCUntypedClient.d.ts +3 -2
  12. package/dist/createTRPCUntypedClient.d.ts.map +1 -1
  13. package/dist/createTRPCUntypedClient.js +10 -0
  14. package/dist/createTRPCUntypedClient.mjs +7 -0
  15. package/dist/getFetch.d.ts +1 -1
  16. package/dist/getFetch.d.ts.map +1 -1
  17. package/dist/getFetch.js +17 -0
  18. package/dist/getFetch.mjs +15 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +32 -370
  21. package/dist/index.mjs +9 -354
  22. package/dist/internals/TRPCUntypedClient.d.ts +5 -30
  23. package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
  24. package/dist/internals/TRPCUntypedClient.js +85 -0
  25. package/dist/internals/TRPCUntypedClient.mjs +83 -0
  26. package/dist/internals/dataLoader.d.ts +1 -1
  27. package/dist/internals/dataLoader.d.ts.map +1 -1
  28. package/dist/{httpBatchLink-204206a5.mjs → internals/dataLoader.js} +2 -117
  29. package/dist/internals/dataLoader.mjs +131 -0
  30. package/dist/internals/getAbortController.d.ts +2 -2
  31. package/dist/internals/getAbortController.d.ts.map +1 -1
  32. package/dist/internals/getAbortController.js +18 -0
  33. package/dist/internals/getAbortController.mjs +16 -0
  34. package/dist/internals/transformer.d.ts +42 -0
  35. package/dist/internals/transformer.d.ts.map +1 -0
  36. package/dist/internals/transformer.js +30 -0
  37. package/dist/internals/transformer.mjs +28 -0
  38. package/dist/internals/types.d.ts +4 -2
  39. package/dist/internals/types.d.ts.map +1 -1
  40. package/dist/links/HTTPBatchLinkOptions.d.ts +6 -5
  41. package/dist/links/HTTPBatchLinkOptions.d.ts.map +1 -1
  42. package/dist/links/httpBatchLink.d.ts +2 -2
  43. package/dist/links/httpBatchLink.d.ts.map +1 -1
  44. package/dist/links/httpBatchLink.js +37 -9
  45. package/dist/links/httpBatchLink.mjs +39 -5
  46. package/dist/links/httpBatchStreamLink.d.ts +6 -5
  47. package/dist/links/httpBatchStreamLink.d.ts.map +1 -1
  48. package/dist/links/httpBatchStreamLink.js +43 -0
  49. package/dist/links/httpBatchStreamLink.mjs +41 -0
  50. package/dist/links/httpFormDataLink.d.ts +1 -1
  51. package/dist/links/httpFormDataLink.d.ts.map +1 -1
  52. package/dist/links/httpFormDataLink.js +31 -0
  53. package/dist/links/httpFormDataLink.mjs +29 -0
  54. package/dist/links/httpLink.d.ts +8 -8
  55. package/dist/links/httpLink.d.ts.map +1 -1
  56. package/dist/links/httpLink.js +6 -9
  57. package/dist/links/httpLink.mjs +6 -7
  58. package/dist/links/internals/createChain.d.ts +2 -2
  59. package/dist/links/internals/createChain.d.ts.map +1 -1
  60. package/dist/{splitLink-f29e84be.js → links/internals/createChain.js} +0 -22
  61. package/dist/{splitLink-4c75f7be.mjs → links/internals/createChain.mjs} +1 -22
  62. package/dist/links/internals/createHTTPBatchLink.d.ts +6 -6
  63. package/dist/links/internals/createHTTPBatchLink.d.ts.map +1 -1
  64. package/dist/links/internals/createHTTPBatchLink.js +85 -0
  65. package/dist/links/internals/createHTTPBatchLink.mjs +83 -0
  66. package/dist/links/internals/dedupeLink.d.ts +2 -2
  67. package/dist/links/internals/dedupeLink.d.ts.map +1 -1
  68. package/dist/links/internals/getTextDecoder.d.ts +1 -1
  69. package/dist/links/internals/getTextDecoder.d.ts.map +1 -1
  70. package/dist/links/internals/getTextDecoder.js +18 -0
  71. package/dist/links/internals/getTextDecoder.mjs +16 -0
  72. package/dist/links/internals/httpUtils.d.ts +19 -11
  73. package/dist/links/internals/httpUtils.d.ts.map +1 -1
  74. package/dist/{httpUtils-c0e7bf5a.js → links/internals/httpUtils.js} +20 -39
  75. package/dist/{httpUtils-f58ceda1.mjs → links/internals/httpUtils.mjs} +20 -38
  76. package/dist/links/internals/parseJSONStream.d.ts +5 -6
  77. package/dist/links/internals/parseJSONStream.d.ts.map +1 -1
  78. package/dist/links/internals/parseJSONStream.js +118 -0
  79. package/dist/links/internals/parseJSONStream.mjs +115 -0
  80. package/dist/links/internals/retryLink.d.ts +2 -2
  81. package/dist/links/internals/retryLink.d.ts.map +1 -1
  82. package/dist/links/loggerLink.d.ts +4 -4
  83. package/dist/links/loggerLink.d.ts.map +1 -1
  84. package/dist/links/loggerLink.js +6 -4
  85. package/dist/links/loggerLink.mjs +6 -2
  86. package/dist/links/splitLink.d.ts +2 -2
  87. package/dist/links/splitLink.d.ts.map +1 -1
  88. package/dist/links/splitLink.js +23 -6
  89. package/dist/links/splitLink.mjs +25 -2
  90. package/dist/links/types.d.ts +15 -14
  91. package/dist/links/types.d.ts.map +1 -1
  92. package/dist/links/wsLink.d.ts +44 -13
  93. package/dist/links/wsLink.d.ts.map +1 -1
  94. package/dist/links/wsLink.js +64 -24
  95. package/dist/links/wsLink.mjs +64 -22
  96. package/dist/links.d.ts +10 -0
  97. package/dist/links.d.ts.map +1 -0
  98. package/dist/unstable-internals.d.ts +2 -0
  99. package/dist/unstable-internals.d.ts.map +1 -0
  100. package/dist/unstable-internals.js +7 -0
  101. package/dist/unstable-internals.mjs +1 -0
  102. package/package.json +26 -28
  103. package/src/TRPCClientError.ts +24 -13
  104. package/src/createTRPCClient.ts +58 -51
  105. package/src/createTRPCUntypedClient.ts +3 -5
  106. package/src/getFetch.ts +1 -1
  107. package/src/index.ts +2 -0
  108. package/src/internals/TRPCUntypedClient.ts +14 -84
  109. package/src/internals/dataLoader.ts +1 -1
  110. package/src/internals/getAbortController.ts +2 -2
  111. package/src/internals/transformer.ts +76 -0
  112. package/src/internals/types.ts +8 -1
  113. package/src/links/HTTPBatchLinkOptions.ts +17 -15
  114. package/src/links/httpBatchLink.ts +9 -8
  115. package/src/links/httpBatchStreamLink.ts +17 -17
  116. package/src/links/httpFormDataLink.ts +11 -12
  117. package/src/links/httpLink.ts +27 -19
  118. package/src/links/internals/createChain.ts +6 -2
  119. package/src/links/internals/createHTTPBatchLink.ts +24 -16
  120. package/src/links/internals/dedupeLink.ts +4 -3
  121. package/src/links/internals/getTextDecoder.ts +1 -1
  122. package/src/links/internals/httpUtils.ts +42 -21
  123. package/src/links/internals/parseJSONStream.ts +12 -14
  124. package/src/links/internals/retryLink.ts +4 -3
  125. package/src/links/loggerLink.ts +5 -5
  126. package/src/links/splitLink.ts +2 -2
  127. package/src/links/types.ts +27 -22
  128. package/src/links/wsLink.ts +124 -36
  129. package/src/links.ts +14 -0
  130. package/src/unstable-internals.ts +1 -0
  131. package/unstable-internals/index.d.ts +1 -0
  132. package/unstable-internals/index.js +1 -0
  133. package/dist/TRPCClientError-23c8aa93.js +0 -61
  134. package/dist/httpBatchLink-64fceaac.js +0 -251
  135. package/dist/httpBatchLink-92dab48e.js +0 -247
  136. package/dist/httpUtils-35e50476.js +0 -145
  137. package/dist/internals/isObject.d.ts +0 -2
  138. package/dist/internals/isObject.d.ts.map +0 -1
  139. package/dist/internals/retryDelay.d.ts +0 -2
  140. package/dist/internals/retryDelay.d.ts.map +0 -1
  141. package/dist/links/index.d.ts +0 -10
  142. package/dist/links/index.d.ts.map +0 -1
  143. package/dist/shared/index.d.ts +0 -2
  144. package/dist/shared/index.d.ts.map +0 -1
  145. package/dist/shared/index.js +0 -9
  146. package/dist/shared/index.mjs +0 -1
  147. package/dist/shared/transformResult.d.ts +0 -34
  148. package/dist/shared/transformResult.d.ts.map +0 -1
  149. package/dist/splitLink-0df96fdc.js +0 -41
  150. package/dist/transformResult-ace864b8.mjs +0 -58
  151. package/dist/transformResult-c1422cb5.js +0 -60
  152. package/dist/transformResult-dfce8f15.js +0 -61
  153. package/shared/index.d.ts +0 -1
  154. package/shared/index.js +0 -1
  155. package/src/internals/isObject.ts +0 -4
  156. package/src/internals/retryDelay.ts +0 -3
  157. package/src/links/index.ts +0 -14
  158. package/src/shared/index.ts +0 -1
  159. package/src/shared/transformResult.ts +0 -79
@@ -0,0 +1,41 @@
1
+ import { createHTTPBatchLink } from './internals/createHTTPBatchLink.mjs';
2
+ import { getTextDecoder } from './internals/getTextDecoder.mjs';
3
+ import { streamingJsonHttpRequester } from './internals/parseJSONStream.mjs';
4
+
5
+ const streamRequester = (requesterOpts)=>{
6
+ const textDecoder = getTextDecoder(requesterOpts.opts.textDecoder);
7
+ return (batchOps, unitResolver)=>{
8
+ const path = batchOps.map((op)=>op.path).join(',');
9
+ const inputs = batchOps.map((op)=>op.input);
10
+ const { cancel , promise } = streamingJsonHttpRequester({
11
+ ...requesterOpts,
12
+ textDecoder,
13
+ path,
14
+ inputs,
15
+ headers () {
16
+ if (!requesterOpts.opts.headers) {
17
+ return {};
18
+ }
19
+ if (typeof requesterOpts.opts.headers === 'function') {
20
+ return requesterOpts.opts.headers({
21
+ opList: batchOps
22
+ });
23
+ }
24
+ return requesterOpts.opts.headers;
25
+ }
26
+ }, (index, res)=>{
27
+ unitResolver(index, res);
28
+ });
29
+ return {
30
+ /**
31
+ * return an empty array because the batchLoader expects an array of results
32
+ * but we've already called the `unitResolver` for each of them, there's
33
+ * nothing left to do here.
34
+ */ promise: promise.then(()=>[]),
35
+ cancel
36
+ };
37
+ };
38
+ };
39
+ const unstable_httpBatchStreamLink = createHTTPBatchLink(streamRequester);
40
+
41
+ export { unstable_httpBatchStreamLink };
@@ -1,2 +1,2 @@
1
- export declare const experimental_formDataLink: <TRouter extends import("@trpc/server").AnyRouter>(opts: import("./httpLink").HTTPLinkOptions) => import("./types").TRPCLink<TRouter>;
1
+ export declare const experimental_formDataLink: <TRouter extends import("@trpc/server/unstable-core-do-not-import").AnyRouter>(opts: import("./httpLink").HTTPLinkOptions<TRouter["_def"]["_config"]["$types"]>) => import("./types").TRPCLink<TRouter>;
2
2
  //# sourceMappingURL=httpFormDataLink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpFormDataLink.d.ts","sourceRoot":"","sources":["../../src/links/httpFormDataLink.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,yBAAyB,uIAEpC,CAAC"}
1
+ {"version":3,"file":"httpFormDataLink.d.ts","sourceRoot":"","sources":["../../src/links/httpFormDataLink.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,yBAAyB,yMAEpC,CAAC"}
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var httpLink = require('./httpLink.js');
4
+ var httpUtils = require('./internals/httpUtils.js');
5
+
6
+ const formDataRequester = (opts)=>{
7
+ if (opts.type !== 'mutation') {
8
+ // TODO(?) handle formdata queries
9
+ throw new Error('We only handle mutations with formdata');
10
+ }
11
+ return httpUtils.httpRequest({
12
+ ...opts,
13
+ getUrl () {
14
+ return `${opts.url}/${opts.path}`;
15
+ },
16
+ getBody (opts) {
17
+ if (!('input' in opts)) {
18
+ return undefined;
19
+ }
20
+ if (!(opts.input instanceof FormData)) {
21
+ throw new Error('Input is not FormData');
22
+ }
23
+ return opts.input;
24
+ }
25
+ });
26
+ };
27
+ const experimental_formDataLink = httpLink.httpLinkFactory({
28
+ requester: formDataRequester
29
+ });
30
+
31
+ exports.experimental_formDataLink = experimental_formDataLink;
@@ -0,0 +1,29 @@
1
+ import { httpLinkFactory } from './httpLink.mjs';
2
+ import { httpRequest } from './internals/httpUtils.mjs';
3
+
4
+ const formDataRequester = (opts)=>{
5
+ if (opts.type !== 'mutation') {
6
+ // TODO(?) handle formdata queries
7
+ throw new Error('We only handle mutations with formdata');
8
+ }
9
+ return httpRequest({
10
+ ...opts,
11
+ getUrl () {
12
+ return `${opts.url}/${opts.path}`;
13
+ },
14
+ getBody (opts) {
15
+ if (!('input' in opts)) {
16
+ return undefined;
17
+ }
18
+ if (!(opts.input instanceof FormData)) {
19
+ throw new Error('Input is not FormData');
20
+ }
21
+ return opts.input;
22
+ }
23
+ });
24
+ };
25
+ const experimental_formDataLink = httpLinkFactory({
26
+ requester: formDataRequester
27
+ });
28
+
29
+ export { experimental_formDataLink };
@@ -1,7 +1,7 @@
1
- import { AnyRouter } from '@trpc/server';
2
- import { HTTPLinkBaseOptions, Requester } from './internals/httpUtils';
3
- import { HTTPHeaders, Operation, TRPCLink } from './types';
4
- export interface HTTPLinkOptions extends HTTPLinkBaseOptions {
1
+ import type { AnyRootTypes, AnyRouter } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { HTTPLinkBaseOptions, Requester } from './internals/httpUtils';
3
+ import type { HTTPHeaders, Operation, TRPCLink } from './types';
4
+ export type HTTPLinkOptions<TRoot extends AnyRootTypes> = HTTPLinkBaseOptions<TRoot> & {
5
5
  /**
6
6
  * Headers to be set on outgoing requests or a callback that of said headers
7
7
  * @link http://trpc.io/docs/client/headers
@@ -9,12 +9,12 @@ export interface HTTPLinkOptions extends HTTPLinkBaseOptions {
9
9
  headers?: HTTPHeaders | ((opts: {
10
10
  op: Operation;
11
11
  }) => HTTPHeaders | Promise<HTTPHeaders>);
12
- }
12
+ };
13
13
  export declare function httpLinkFactory(factoryOpts: {
14
14
  requester: Requester;
15
- }): <TRouter extends AnyRouter>(opts: HTTPLinkOptions) => TRPCLink<TRouter>;
15
+ }): <TRouter extends AnyRouter>(opts: HTTPLinkOptions<TRouter['_def']['_config']['$types']>) => TRPCLink<TRouter>;
16
16
  /**
17
- * @see https://trpc.io/docs/client/links/httpLink
17
+ * @link https://trpc.io/docs/v11/client/links/httpLink
18
18
  */
19
- export declare const httpLink: <TRouter extends AnyRouter>(opts: HTTPLinkOptions) => TRPCLink<TRouter>;
19
+ export declare const httpLink: <TRouter extends AnyRouter>(opts: HTTPLinkOptions<TRouter['_def']['_config']['$types']>) => TRPCLink<TRouter>;
20
20
  //# sourceMappingURL=httpLink.d.ts.map
@@ -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,EAGnB,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,uBAuDxB;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,oCA5DX,eAAe,sBA4DgD,CAAC"}
1
+ {"version":3,"file":"httpLink.d.ts","sourceRoot":"","sources":["../../src/links/httpLink.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACV,MAAM,0CAA0C,CAAC;AAGlD,OAAO,KAAK,EACV,mBAAmB,EAEnB,SAAS,EACV,MAAM,uBAAuB,CAAC;AAK/B,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,YAAY,IACpD,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;AAEJ,wBAAgB,eAAe,CAAC,WAAW,EAAE;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,qCAE3D,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,KAC1D,SAAS,OAAO,CAAC,CAwDrB;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,oCA9DX,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,KAC1D,SAAS,OAAO,CA6DoD,CAAC"}
@@ -1,20 +1,17 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var observable = require('@trpc/server/observable');
6
- var transformResult = require('../transformResult-dfce8f15.js');
7
- var TRPCClientError = require('../TRPCClientError-e224e397.js');
8
- var httpUtils = require('../httpUtils-c0e7bf5a.js');
4
+ var unstableCoreDoNotImport = require('@trpc/server/unstable-core-do-not-import');
5
+ var TRPCClientError = require('../TRPCClientError.js');
6
+ var httpUtils = require('./internals/httpUtils.js');
9
7
 
10
8
  function httpLinkFactory(factoryOpts) {
11
9
  return (opts)=>{
12
10
  const resolvedOpts = httpUtils.resolveHTTPLinkOptions(opts);
13
- return (runtime)=>({ op })=>observable.observable((observer)=>{
11
+ return ()=>({ op })=>observable.observable((observer)=>{
14
12
  const { path , input , type } = op;
15
13
  const { promise , cancel } = factoryOpts.requester({
16
14
  ...resolvedOpts,
17
- runtime,
18
15
  type,
19
16
  path,
20
17
  input,
@@ -33,7 +30,7 @@ function httpLinkFactory(factoryOpts) {
33
30
  let meta = undefined;
34
31
  promise.then((res)=>{
35
32
  meta = res.meta;
36
- const transformed = transformResult.transformResult(res.json, runtime);
33
+ const transformed = unstableCoreDoNotImport.transformResult(res.json, resolvedOpts.transformer.output);
37
34
  if (!transformed.ok) {
38
35
  observer.error(TRPCClientError.TRPCClientError.from(transformed.error, {
39
36
  meta
@@ -57,7 +54,7 @@ function httpLinkFactory(factoryOpts) {
57
54
  };
58
55
  }
59
56
  /**
60
- * @see https://trpc.io/docs/client/links/httpLink
57
+ * @link https://trpc.io/docs/v11/client/links/httpLink
61
58
  */ const httpLink = httpLinkFactory({
62
59
  requester: httpUtils.jsonHttpRequester
63
60
  });
@@ -1,16 +1,15 @@
1
1
  import { observable } from '@trpc/server/observable';
2
- import { t as transformResult } from '../transformResult-ace864b8.mjs';
3
- import { T as TRPCClientError } from '../TRPCClientError-0de4d231.mjs';
4
- import { r as resolveHTTPLinkOptions, j as jsonHttpRequester } from '../httpUtils-f58ceda1.mjs';
2
+ import { transformResult } from '@trpc/server/unstable-core-do-not-import';
3
+ import { TRPCClientError } from '../TRPCClientError.mjs';
4
+ import { resolveHTTPLinkOptions, jsonHttpRequester } from './internals/httpUtils.mjs';
5
5
 
6
6
  function httpLinkFactory(factoryOpts) {
7
7
  return (opts)=>{
8
8
  const resolvedOpts = resolveHTTPLinkOptions(opts);
9
- return (runtime)=>({ op })=>observable((observer)=>{
9
+ return ()=>({ op })=>observable((observer)=>{
10
10
  const { path , input , type } = op;
11
11
  const { promise , cancel } = factoryOpts.requester({
12
12
  ...resolvedOpts,
13
- runtime,
14
13
  type,
15
14
  path,
16
15
  input,
@@ -29,7 +28,7 @@ function httpLinkFactory(factoryOpts) {
29
28
  let meta = undefined;
30
29
  promise.then((res)=>{
31
30
  meta = res.meta;
32
- const transformed = transformResult(res.json, runtime);
31
+ const transformed = transformResult(res.json, resolvedOpts.transformer.output);
33
32
  if (!transformed.ok) {
34
33
  observer.error(TRPCClientError.from(transformed.error, {
35
34
  meta
@@ -53,7 +52,7 @@ function httpLinkFactory(factoryOpts) {
53
52
  };
54
53
  }
55
54
  /**
56
- * @see https://trpc.io/docs/client/links/httpLink
55
+ * @link https://trpc.io/docs/v11/client/links/httpLink
57
56
  */ const httpLink = httpLinkFactory({
58
57
  requester: jsonHttpRequester
59
58
  });
@@ -1,5 +1,5 @@
1
- import { AnyRouter } from '@trpc/server';
2
- import { Operation, OperationLink, OperationResultObservable } from '../types';
1
+ import type { AnyRouter } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { Operation, OperationLink, OperationResultObservable } from '../types';
3
3
  /** @internal */
4
4
  export declare function createChain<TRouter extends AnyRouter, TInput = unknown, TOutput = unknown>(opts: {
5
5
  links: OperationLink<TRouter, TInput, TOutput>[];
@@ -1 +1 @@
1
- {"version":3,"file":"createChain.d.ts","sourceRoot":"","sources":["../../../src/links/internals/createChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE/E,gBAAgB;AAChB,wBAAgB,WAAW,CACzB,OAAO,SAAS,SAAS,EACzB,MAAM,GAAG,OAAO,EAChB,OAAO,GAAG,OAAO,EACjB,IAAI,EAAE;IACN,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjD,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACvB,GAAG,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAuB9C"}
1
+ {"version":3,"file":"createChain.d.ts","sourceRoot":"","sources":["../../../src/links/internals/createChain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,yBAAyB,EAC1B,MAAM,UAAU,CAAC;AAElB,gBAAgB;AAChB,wBAAgB,WAAW,CACzB,OAAO,SAAS,SAAS,EACzB,MAAM,GAAG,OAAO,EAChB,OAAO,GAAG,OAAO,EACjB,IAAI,EAAE;IACN,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjD,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACvB,GAAG,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAuB9C"}
@@ -23,26 +23,4 @@ var observable = require('@trpc/server/observable');
23
23
  });
24
24
  }
25
25
 
26
- function asArray(value) {
27
- return Array.isArray(value) ? value : [
28
- value
29
- ];
30
- }
31
- function splitLink(opts) {
32
- return (runtime)=>{
33
- const yes = asArray(opts.true).map((link)=>link(runtime));
34
- const no = asArray(opts.false).map((link)=>link(runtime));
35
- return (props)=>{
36
- return observable.observable((observer)=>{
37
- const links = opts.condition(props.op) ? yes : no;
38
- return createChain({
39
- op: props.op,
40
- links
41
- }).subscribe(observer);
42
- });
43
- };
44
- };
45
- }
46
-
47
26
  exports.createChain = createChain;
48
- exports.splitLink = splitLink;
@@ -21,25 +21,4 @@ import { observable } from '@trpc/server/observable';
21
21
  });
22
22
  }
23
23
 
24
- function asArray(value) {
25
- return Array.isArray(value) ? value : [
26
- value
27
- ];
28
- }
29
- function splitLink(opts) {
30
- return (runtime)=>{
31
- const yes = asArray(opts.true).map((link)=>link(runtime));
32
- const no = asArray(opts.false).map((link)=>link(runtime));
33
- return (props)=>{
34
- return observable((observer)=>{
35
- const links = opts.condition(props.op) ? yes : no;
36
- return createChain({
37
- op: props.op,
38
- links
39
- }).subscribe(observer);
40
- });
41
- };
42
- };
43
- }
44
-
45
- export { createChain as c, splitLink as s };
24
+ export { createChain };
@@ -1,11 +1,11 @@
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';
1
+ import type { AnyRootTypes, AnyRouter, inferClientTypes, ProcedureType } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { HTTPBatchLinkOptions } from '../HTTPBatchLinkOptions';
3
+ import type { CancelFn, Operation, TRPCClientRuntime, TRPCLink } from '../types';
4
+ import type { HTTPResult, ResolvedHTTPLinkOptions } from './httpUtils';
5
5
  /**
6
6
  * @internal
7
7
  */
8
- export type RequesterFn<TOptions extends HTTPBatchLinkOptions> = (requesterOpts: ResolvedHTTPLinkOptions & {
8
+ export type RequesterFn<TOptions extends HTTPBatchLinkOptions<AnyRootTypes>> = (requesterOpts: ResolvedHTTPLinkOptions & {
9
9
  runtime: TRPCClientRuntime;
10
10
  type: ProcedureType;
11
11
  opts: TOptions;
@@ -16,5 +16,5 @@ export type RequesterFn<TOptions extends HTTPBatchLinkOptions> = (requesterOpts:
16
16
  /**
17
17
  * @internal
18
18
  */
19
- export declare function createHTTPBatchLink<TOptions extends HTTPBatchLinkOptions>(requester: RequesterFn<TOptions>): <TRouter extends AnyRouter>(opts: TOptions) => TRPCLink<TRouter>;
19
+ export declare function createHTTPBatchLink(requester: RequesterFn<HTTPBatchLinkOptions<AnyRootTypes>>): <TRouter extends AnyRouter>(opts: HTTPBatchLinkOptions<inferClientTypes<TRouter>>) => TRPCLink<TRouter>;
20
20
  //# sourceMappingURL=createHTTPBatchLink.d.ts.map
@@ -1 +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,CAAC,QAAQ,SAAS,oBAAoB,IAAI,CAC/D,aAAa,EAAE,uBAAuB,GAAG;IACvC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB,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,QAAQ,SAAS,oBAAoB,EACvE,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,qCAGxB,QAAQ,uBAsFjB"}
1
+ {"version":3,"file":"createHTTPBatchLink.d.ts","sourceRoot":"","sources":["../../../src/links/internals/createHTTPBatchLink.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,aAAa,EACd,MAAM,0CAA0C,CAAC;AAIlD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACT,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGvE;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,QAAQ,SAAS,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAC7E,aAAa,EAAE,uBAAuB,GAAG;IACvC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB,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,CACjC,SAAS,EAAE,WAAW,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,qCAGlD,qBAAqB,iBAAiB,OAAO,CAAC,CAAC,KACpD,SAAS,OAAO,CAAC,CAuFrB"}
@@ -0,0 +1,85 @@
1
+ 'use strict';
2
+
3
+ var observable = require('@trpc/server/observable');
4
+ var unstableCoreDoNotImport = require('@trpc/server/unstable-core-do-not-import');
5
+ var dataLoader = require('../../internals/dataLoader.js');
6
+ var TRPCClientError = require('../../TRPCClientError.js');
7
+ var httpUtils = require('./httpUtils.js');
8
+
9
+ /**
10
+ * @internal
11
+ */ function createHTTPBatchLink(requester) {
12
+ return function httpBatchLink(opts) {
13
+ const resolvedOpts = httpUtils.resolveHTTPLinkOptions(opts);
14
+ const maxURLLength = opts.maxURLLength ?? Infinity;
15
+ // initialized config
16
+ return (runtime)=>{
17
+ const batchLoader = (type)=>{
18
+ const validate = (batchOps)=>{
19
+ if (maxURLLength === Infinity) {
20
+ // escape hatch for quick calcs
21
+ return true;
22
+ }
23
+ const path = batchOps.map((op)=>op.path).join(',');
24
+ const inputs = batchOps.map((op)=>op.input);
25
+ const url = httpUtils.getUrl({
26
+ ...resolvedOpts,
27
+ type,
28
+ path,
29
+ inputs
30
+ });
31
+ return url.length <= maxURLLength;
32
+ };
33
+ const fetch = requester({
34
+ ...resolvedOpts,
35
+ runtime,
36
+ type,
37
+ opts
38
+ });
39
+ return {
40
+ validate,
41
+ fetch
42
+ };
43
+ };
44
+ const query = dataLoader.dataLoader(batchLoader('query'));
45
+ const mutation = dataLoader.dataLoader(batchLoader('mutation'));
46
+ const subscription = dataLoader.dataLoader(batchLoader('subscription'));
47
+ const loaders = {
48
+ query,
49
+ subscription,
50
+ mutation
51
+ };
52
+ return ({ op })=>{
53
+ return observable.observable((observer)=>{
54
+ const loader = loaders[op.type];
55
+ const { promise , cancel } = loader.load(op);
56
+ let _res = undefined;
57
+ promise.then((res)=>{
58
+ _res = res;
59
+ const transformed = unstableCoreDoNotImport.transformResult(res.json, resolvedOpts.transformer.output);
60
+ if (!transformed.ok) {
61
+ observer.error(TRPCClientError.TRPCClientError.from(transformed.error, {
62
+ meta: res.meta
63
+ }));
64
+ return;
65
+ }
66
+ observer.next({
67
+ context: res.meta,
68
+ result: transformed.result
69
+ });
70
+ observer.complete();
71
+ }).catch((err)=>{
72
+ observer.error(TRPCClientError.TRPCClientError.from(err, {
73
+ meta: _res?.meta
74
+ }));
75
+ });
76
+ return ()=>{
77
+ cancel();
78
+ };
79
+ });
80
+ };
81
+ };
82
+ };
83
+ }
84
+
85
+ exports.createHTTPBatchLink = createHTTPBatchLink;
@@ -0,0 +1,83 @@
1
+ import { observable } from '@trpc/server/observable';
2
+ import { transformResult } from '@trpc/server/unstable-core-do-not-import';
3
+ import { dataLoader } from '../../internals/dataLoader.mjs';
4
+ import { TRPCClientError } from '../../TRPCClientError.mjs';
5
+ import { resolveHTTPLinkOptions, getUrl } from './httpUtils.mjs';
6
+
7
+ /**
8
+ * @internal
9
+ */ function createHTTPBatchLink(requester) {
10
+ return function httpBatchLink(opts) {
11
+ const resolvedOpts = resolveHTTPLinkOptions(opts);
12
+ const maxURLLength = opts.maxURLLength ?? Infinity;
13
+ // initialized config
14
+ return (runtime)=>{
15
+ const batchLoader = (type)=>{
16
+ const validate = (batchOps)=>{
17
+ if (maxURLLength === Infinity) {
18
+ // escape hatch for quick calcs
19
+ return true;
20
+ }
21
+ const path = batchOps.map((op)=>op.path).join(',');
22
+ const inputs = batchOps.map((op)=>op.input);
23
+ const url = getUrl({
24
+ ...resolvedOpts,
25
+ type,
26
+ path,
27
+ inputs
28
+ });
29
+ return url.length <= maxURLLength;
30
+ };
31
+ const fetch = requester({
32
+ ...resolvedOpts,
33
+ runtime,
34
+ type,
35
+ opts
36
+ });
37
+ return {
38
+ validate,
39
+ fetch
40
+ };
41
+ };
42
+ const query = dataLoader(batchLoader('query'));
43
+ const mutation = dataLoader(batchLoader('mutation'));
44
+ const subscription = dataLoader(batchLoader('subscription'));
45
+ const loaders = {
46
+ query,
47
+ subscription,
48
+ mutation
49
+ };
50
+ return ({ op })=>{
51
+ return observable((observer)=>{
52
+ const loader = loaders[op.type];
53
+ const { promise , cancel } = loader.load(op);
54
+ let _res = undefined;
55
+ promise.then((res)=>{
56
+ _res = res;
57
+ const transformed = transformResult(res.json, resolvedOpts.transformer.output);
58
+ if (!transformed.ok) {
59
+ observer.error(TRPCClientError.from(transformed.error, {
60
+ meta: res.meta
61
+ }));
62
+ return;
63
+ }
64
+ observer.next({
65
+ context: res.meta,
66
+ result: transformed.result
67
+ });
68
+ observer.complete();
69
+ }).catch((err)=>{
70
+ observer.error(TRPCClientError.from(err, {
71
+ meta: _res?.meta
72
+ }));
73
+ });
74
+ return ()=>{
75
+ cancel();
76
+ };
77
+ });
78
+ };
79
+ };
80
+ };
81
+ }
82
+
83
+ export { createHTTPBatchLink };
@@ -1,5 +1,5 @@
1
- import { AnyRouter } from '@trpc/server';
2
- import { TRPCLink } from '../types';
1
+ import type { AnyRouter } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { TRPCLink } from '../types';
3
3
  /**
4
4
  * @internal used for testing
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dedupeLink.d.ts","sourceRoot":"","sources":["../../../src/links/internals/dedupeLink.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;GAEG;AACH,wBAAgB,UAAU,CACxB,OAAO,SAAS,SAAS,GAAG,SAAS,KAClC,QAAQ,CAAC,OAAO,CAAC,CA2CrB"}
1
+ {"version":3,"file":"dedupeLink.d.ts","sourceRoot":"","sources":["../../../src/links/internals/dedupeLink.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,wBAAgB,UAAU,CACxB,OAAO,SAAS,SAAS,GAAG,SAAS,KAClC,QAAQ,CAAC,OAAO,CAAC,CA2CrB"}
@@ -1,3 +1,3 @@
1
- import { TextDecoderEsque } from './streamingUtils';
1
+ import type { TextDecoderEsque } from './streamingUtils';
2
2
  export declare function getTextDecoder(customTextDecoder?: TextDecoderEsque): TextDecoderEsque;
3
3
  //# sourceMappingURL=getTextDecoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTextDecoder.d.ts","sourceRoot":"","sources":["../../../src/links/internals/getTextDecoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,wBAAgB,cAAc,CAC5B,iBAAiB,CAAC,EAAE,gBAAgB,GACnC,gBAAgB,CAelB"}
1
+ {"version":3,"file":"getTextDecoder.d.ts","sourceRoot":"","sources":["../../../src/links/internals/getTextDecoder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,wBAAgB,cAAc,CAC5B,iBAAiB,CAAC,EAAE,gBAAgB,GACnC,gBAAgB,CAelB"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ function getTextDecoder(customTextDecoder) {
4
+ if (customTextDecoder) {
5
+ return customTextDecoder;
6
+ }
7
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
8
+ if (typeof window !== 'undefined' && window.TextDecoder) {
9
+ return new window.TextDecoder();
10
+ }
11
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
12
+ if (typeof globalThis !== 'undefined' && globalThis.TextDecoder) {
13
+ return new globalThis.TextDecoder();
14
+ }
15
+ throw new Error('No TextDecoder implementation found');
16
+ }
17
+
18
+ exports.getTextDecoder = getTextDecoder;
@@ -0,0 +1,16 @@
1
+ function getTextDecoder(customTextDecoder) {
2
+ if (customTextDecoder) {
3
+ return customTextDecoder;
4
+ }
5
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
6
+ if (typeof window !== 'undefined' && window.TextDecoder) {
7
+ return new window.TextDecoder();
8
+ }
9
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
10
+ if (typeof globalThis !== 'undefined' && globalThis.TextDecoder) {
11
+ return new globalThis.TextDecoder();
12
+ }
13
+ throw new Error('No TextDecoder implementation found');
14
+ }
15
+
16
+ export { getTextDecoder };
@@ -1,12 +1,12 @@
1
- import { ProcedureType } from '@trpc/server';
2
- import { TRPCResponse } from '@trpc/server/rpc';
3
- import { AbortControllerEsque, AbortControllerInstanceEsque, FetchEsque, RequestInitEsque, ResponseEsque } from '../../internals/types';
4
- import { TextDecoderEsque } from '../internals/streamingUtils';
5
- import { HTTPHeaders, PromiseAndCancel, TRPCClientRuntime } from '../types';
1
+ import type { AnyRootTypes, CombinedDataTransformer, ProcedureType, TRPCResponse } from '@trpc/server/unstable-core-do-not-import';
2
+ import type { AbortControllerEsque, AbortControllerInstanceEsque, FetchEsque, RequestInitEsque, ResponseEsque } from '../../internals/types';
3
+ import type { TransformerOptions } from '../../unstable-internals';
4
+ import type { TextDecoderEsque } from '../internals/streamingUtils';
5
+ import type { HTTPHeaders, PromiseAndCancel } from '../types';
6
6
  /**
7
7
  * @internal
8
8
  */
9
- export interface HTTPLinkBaseOptions {
9
+ export type HTTPLinkBaseOptions<TRoot extends Pick<AnyRootTypes, 'transformer'>> = {
10
10
  url: string | URL;
11
11
  /**
12
12
  * Add ponyfill for fetch
@@ -16,13 +16,21 @@ export interface HTTPLinkBaseOptions {
16
16
  * Add ponyfill for AbortController
17
17
  */
18
18
  AbortController?: AbortControllerEsque | null;
19
- }
19
+ /**
20
+ * Send all requests `as POST`s requests regardless of the procedure type
21
+ * The HTTP handler must separately allow overriding the method. See:
22
+ * @link https://trpc.io/docs/rpc
23
+ */
24
+ methodOverride?: 'POST';
25
+ } & TransformerOptions<TRoot>;
20
26
  export interface ResolvedHTTPLinkOptions {
21
27
  url: string;
22
28
  fetch?: FetchEsque;
23
29
  AbortController: AbortControllerEsque | null;
30
+ transformer: CombinedDataTransformer;
31
+ methodOverride?: 'POST';
24
32
  }
25
- export declare function resolveHTTPLinkOptions(opts: HTTPLinkBaseOptions): ResolvedHTTPLinkOptions;
33
+ export declare function resolveHTTPLinkOptions(opts: HTTPLinkBaseOptions<AnyRootTypes>): ResolvedHTTPLinkOptions;
26
34
  export interface HTTPResult {
27
35
  json: TRPCResponse;
28
36
  meta: {
@@ -31,7 +39,7 @@ export interface HTTPResult {
31
39
  };
32
40
  }
33
41
  type GetInputOptions = {
34
- runtime: TRPCClientRuntime;
42
+ transformer: CombinedDataTransformer;
35
43
  } & ({
36
44
  input: unknown;
37
45
  } | {
@@ -41,8 +49,8 @@ export type HTTPBaseRequestOptions = GetInputOptions & ResolvedHTTPLinkOptions &
41
49
  type: ProcedureType;
42
50
  path: string;
43
51
  };
44
- export type GetUrl = (opts: HTTPBaseRequestOptions) => string;
45
- export type GetBody = (opts: HTTPBaseRequestOptions) => RequestInitEsque['body'];
52
+ type GetUrl = (opts: HTTPBaseRequestOptions) => string;
53
+ type GetBody = (opts: HTTPBaseRequestOptions) => RequestInitEsque['body'];
46
54
  export type ContentOptions = {
47
55
  batchModeHeader?: 'stream';
48
56
  contentTypeHeader?: string;