@trpc/client 10.0.0-alpha.5 → 10.0.0-alpha.52

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 (178) hide show
  1. package/README.md +58 -1
  2. package/dist/TRPCClientError.d.ts +16 -20
  3. package/dist/TRPCClientError.d.ts.map +1 -1
  4. package/dist/createTRPCClient.d.ts +5 -3
  5. package/dist/createTRPCClient.d.ts.map +1 -1
  6. package/dist/createTRPCClientProxy.d.ts +37 -0
  7. package/dist/createTRPCClientProxy.d.ts.map +1 -0
  8. package/dist/httpUtils-44781613.mjs +76 -0
  9. package/dist/httpUtils-801112a6.js +79 -0
  10. package/dist/index.d.ts +2 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +256 -280
  13. package/dist/index.mjs +249 -271
  14. package/dist/internals/TRPCClient.d.ts +38 -17
  15. package/dist/internals/TRPCClient.d.ts.map +1 -1
  16. package/dist/internals/dataLoader.d.ts +7 -4
  17. package/dist/internals/dataLoader.d.ts.map +1 -1
  18. package/dist/internals/fetchHelpers.d.ts.map +1 -1
  19. package/dist/internals/retryDelay.d.ts.map +1 -1
  20. package/dist/links/dedupeLink.d.ts.map +1 -1
  21. package/dist/links/httpBatchLink.d.ts +5 -2
  22. package/dist/links/httpBatchLink.d.ts.map +1 -1
  23. package/dist/links/httpBatchLink.js +189 -166
  24. package/dist/links/httpBatchLink.mjs +189 -166
  25. package/dist/links/httpLink.d.ts +1 -1
  26. package/dist/links/httpLink.d.ts.map +1 -1
  27. package/dist/links/httpLink.js +31 -35
  28. package/dist/links/httpLink.mjs +31 -35
  29. package/dist/links/index.d.ts +9 -0
  30. package/dist/links/index.d.ts.map +1 -0
  31. package/dist/links/internals/createChain.d.ts.map +1 -1
  32. package/dist/links/internals/httpUtils.d.ts +31 -0
  33. package/dist/links/internals/httpUtils.d.ts.map +1 -0
  34. package/dist/links/internals/transformResult.d.ts +28 -0
  35. package/dist/links/internals/transformResult.d.ts.map +1 -0
  36. package/dist/links/loggerLink.d.ts +3 -3
  37. package/dist/links/loggerLink.d.ts.map +1 -1
  38. package/dist/links/loggerLink.js +90 -96
  39. package/dist/links/loggerLink.mjs +90 -91
  40. package/dist/links/retryLink.d.ts.map +1 -1
  41. package/dist/links/splitLink.d.ts +1 -1
  42. package/dist/links/splitLink.d.ts.map +1 -1
  43. package/dist/links/splitLink.js +3 -25
  44. package/dist/links/splitLink.mjs +2 -28
  45. package/dist/links/types.d.ts +13 -12
  46. package/dist/links/types.d.ts.map +1 -1
  47. package/dist/links/wsLink.d.ts +12 -5
  48. package/dist/links/wsLink.d.ts.map +1 -1
  49. package/dist/links/wsLink.js +250 -357
  50. package/dist/links/wsLink.mjs +250 -348
  51. package/dist/splitLink-695ae288.js +48 -0
  52. package/dist/splitLink-ad44a55d.mjs +45 -0
  53. package/dist/transformResult-106791d7.mjs +62 -0
  54. package/dist/transformResult-e15ccdf6.js +65 -0
  55. package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.cjs.dev.js +15 -13
  56. package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.cjs.prod.js +15 -13
  57. package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.esm.js +12 -10
  58. package/links/httpLink/dist/trpc-client-links-httpLink.cjs.dev.js +4 -4
  59. package/links/httpLink/dist/trpc-client-links-httpLink.cjs.prod.js +4 -4
  60. package/links/httpLink/dist/trpc-client-links-httpLink.esm.js +1 -1
  61. package/links/wsLink/dist/trpc-client-links-wsLink.cjs.dev.js +3 -1
  62. package/links/wsLink/dist/trpc-client-links-wsLink.cjs.prod.js +3 -1
  63. package/links/wsLink/dist/trpc-client-links-wsLink.esm.js +3 -1
  64. package/package.json +23 -34
  65. package/src/TRPCClientError.ts +38 -28
  66. package/src/createTRPCClient.ts +11 -3
  67. package/src/createTRPCClientProxy.ts +113 -0
  68. package/src/index.ts +2 -1
  69. package/src/internals/TRPCClient.ts +96 -59
  70. package/src/internals/dataLoader.ts +120 -45
  71. package/src/links/dedupeLink.test.ts +9 -15
  72. package/src/links/dedupeLink.ts +6 -7
  73. package/src/links/httpBatchLink.ts +77 -34
  74. package/src/links/httpLink.ts +18 -6
  75. package/src/links/index.ts +8 -0
  76. package/src/links/internals/createChain.test.ts +23 -38
  77. package/src/links/internals/createChain.ts +8 -3
  78. package/src/links/internals/httpUtils.ts +117 -0
  79. package/src/links/internals/transformResult.ts +40 -0
  80. package/src/links/loggerLink.ts +6 -7
  81. package/src/links/retryLink.ts +2 -3
  82. package/src/links/splitLink.test.ts +3 -3
  83. package/src/links/splitLink.ts +5 -5
  84. package/src/links/types.ts +15 -12
  85. package/src/links/wsLink.ts +57 -23
  86. package/dist/TRPCClientError-17b117e1.mjs +0 -81
  87. package/dist/TRPCClientError-ec6bd2ca.js +0 -94
  88. package/dist/createChain-389cc116.mjs +0 -25
  89. package/dist/createChain-864dbb30.js +0 -27
  90. package/dist/httpUtils-1f9e4e3c.js +0 -97
  91. package/dist/httpUtils-c09d7b79.mjs +0 -91
  92. package/dist/index.ts.js +0 -1
  93. package/dist/internals/transformRPCResponse.d.ts +0 -15
  94. package/dist/internals/transformRPCResponse.d.ts.map +0 -1
  95. package/dist/links/httpBatchLink.ts.js +0 -1
  96. package/dist/links/httpLink.ts.js +0 -1
  97. package/dist/links/httpUtils.d.ts +0 -22
  98. package/dist/links/httpUtils.d.ts.map +0 -1
  99. package/dist/links/internals/transformOperationResult.d.ts +0 -16
  100. package/dist/links/internals/transformOperationResult.d.ts.map +0 -1
  101. package/dist/links/loggerLink.ts.js +0 -1
  102. package/dist/links/splitLink.ts.js +0 -1
  103. package/dist/links/transformerLink.d.ts +0 -4
  104. package/dist/links/transformerLink.d.ts.map +0 -1
  105. package/dist/links/transformerLink.js +0 -75
  106. package/dist/links/transformerLink.mjs +0 -67
  107. package/dist/links/transformerLink.ts.js +0 -1
  108. package/dist/links/wsLink.ts.js +0 -1
  109. package/dist/observable-7e66cb56.mjs +0 -102
  110. package/dist/observable-85669100.js +0 -104
  111. package/dist/rx/index.d.ts +0 -3
  112. package/dist/rx/index.d.ts.map +0 -1
  113. package/dist/rx/index.js +0 -9
  114. package/dist/rx/index.mjs +0 -1
  115. package/dist/rx/index.ts.js +0 -1
  116. package/dist/rx/observable.d.ts +0 -4
  117. package/dist/rx/observable.d.ts.map +0 -1
  118. package/dist/rx/operators/index.d.ts +0 -4
  119. package/dist/rx/operators/index.d.ts.map +0 -1
  120. package/dist/rx/operators/index.js +0 -38
  121. package/dist/rx/operators/index.mjs +0 -32
  122. package/dist/rx/operators/index.ts.js +0 -1
  123. package/dist/rx/operators/map.d.ts +0 -3
  124. package/dist/rx/operators/map.d.ts.map +0 -1
  125. package/dist/rx/operators/share.d.ts +0 -6
  126. package/dist/rx/operators/share.d.ts.map +0 -1
  127. package/dist/rx/operators/tap.d.ts +0 -3
  128. package/dist/rx/operators/tap.d.ts.map +0 -1
  129. package/dist/rx/types.d.ts +0 -29
  130. package/dist/rx/types.d.ts.map +0 -1
  131. package/dist/rx/util/identity.d.ts +0 -2
  132. package/dist/rx/util/identity.d.ts.map +0 -1
  133. package/dist/rx/util/observableToPromise.d.ts +0 -10
  134. package/dist/rx/util/observableToPromise.d.ts.map +0 -1
  135. package/dist/rx/util/pipe.d.ts +0 -4
  136. package/dist/rx/util/pipe.d.ts.map +0 -1
  137. package/dist/share-4d79dc49.js +0 -110
  138. package/dist/share-671b63fa.mjs +0 -108
  139. package/dist/tap-538fa07f.mjs +0 -30
  140. package/dist/tap-799a2d33.js +0 -32
  141. package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.d.ts +0 -1
  142. package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.dev.js +0 -67
  143. package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.js +0 -7
  144. package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.prod.js +0 -67
  145. package/links/transformerLink/dist/trpc-client-links-transformerLink.esm.js +0 -63
  146. package/links/transformerLink/index.d.ts +0 -1
  147. package/links/transformerLink/index.js +0 -1
  148. package/rx/dist/trpc-client-rx.cjs.d.ts +0 -1
  149. package/rx/dist/trpc-client-rx.cjs.dev.js +0 -9
  150. package/rx/dist/trpc-client-rx.cjs.js +0 -7
  151. package/rx/dist/trpc-client-rx.cjs.prod.js +0 -9
  152. package/rx/dist/trpc-client-rx.esm.js +0 -1
  153. package/rx/index.d.ts +0 -1
  154. package/rx/index.js +0 -1
  155. package/rx/operators/dist/trpc-client-rx-operators.cjs.d.ts +0 -1
  156. package/rx/operators/dist/trpc-client-rx-operators.cjs.dev.js +0 -39
  157. package/rx/operators/dist/trpc-client-rx-operators.cjs.js +0 -7
  158. package/rx/operators/dist/trpc-client-rx-operators.cjs.prod.js +0 -39
  159. package/rx/operators/dist/trpc-client-rx-operators.esm.js +0 -33
  160. package/rx/operators/index.d.ts +0 -1
  161. package/rx/operators/index.js +0 -1
  162. package/src/internals/transformRPCResponse.ts +0 -25
  163. package/src/links/httpUtils.ts +0 -94
  164. package/src/links/internals/transformOperationResult.ts +0 -25
  165. package/src/links/transformerLink.ts +0 -70
  166. package/src/rx/index.ts +0 -2
  167. package/src/rx/observable.test.ts +0 -83
  168. package/src/rx/observable.ts +0 -70
  169. package/src/rx/operators/index.ts +0 -3
  170. package/src/rx/operators/map.test.ts +0 -92
  171. package/src/rx/operators/map.ts +0 -25
  172. package/src/rx/operators/share.test.ts +0 -60
  173. package/src/rx/operators/share.ts +0 -67
  174. package/src/rx/operators/tap.ts +0 -26
  175. package/src/rx/types.ts +0 -69
  176. package/src/rx/util/identity.ts +0 -3
  177. package/src/rx/util/observableToPromise.ts +0 -49
  178. package/src/rx/util/pipe.ts +0 -22
package/dist/index.mjs CHANGED
@@ -1,299 +1,277 @@
1
- import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
2
- import _createClass from '@babel/runtime/helpers/createClass';
1
+ import { observable, share, observableToPromise } from '@trpc/server/observable';
2
+ import { T as TRPCClientError } from './transformResult-106791d7.mjs';
3
+ export { T as TRPCClientError } from './transformResult-106791d7.mjs';
3
4
  import { httpBatchLink } from './links/httpBatchLink.mjs';
4
- import { c as createChain } from './createChain-389cc116.mjs';
5
- import { T as TRPCClientError } from './TRPCClientError-17b117e1.mjs';
6
- export { T as TRPCClientError } from './TRPCClientError-17b117e1.mjs';
7
- import { s as share } from './share-671b63fa.mjs';
8
- import _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';
9
- import _inherits from '@babel/runtime/helpers/inherits';
10
- import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
11
- import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
12
- import _wrapNativeSuper from '@babel/runtime/helpers/wrapNativeSuper';
13
- import './observable-7e66cb56.mjs';
14
- import './httpUtils-c09d7b79.mjs';
15
- import '@babel/runtime/helpers/defineProperty';
5
+ export { httpBatchLink } from './links/httpBatchLink.mjs';
6
+ import { c as createChain } from './splitLink-ad44a55d.mjs';
7
+ export { s as splitLink } from './splitLink-ad44a55d.mjs';
8
+ import { createProxy } from '@trpc/server/shared';
9
+ export { httpLink } from './links/httpLink.mjs';
10
+ export { loggerLink } from './links/loggerLink.mjs';
11
+ export { createWSClient, wsLink } from './links/wsLink.mjs';
12
+ import './httpUtils-44781613.mjs';
16
13
 
17
14
  function getWindow() {
18
- if (typeof window !== 'undefined') {
19
- return window;
20
- }
21
-
22
- return global;
15
+ if (typeof window !== 'undefined') {
16
+ return window;
17
+ }
18
+ return global;
23
19
  }
24
20
  function getAbortController(ac) {
25
- var win = getWindow();
26
- return ac || win.AbortController || null;
21
+ const win = getWindow();
22
+ return ac || win.AbortController || null;
27
23
  }
28
24
 
29
25
  function getFetch(f) {
30
- if (f) {
31
- return f;
32
- }
33
-
34
- var win = getWindow();
35
-
36
- if (win.fetch) {
37
- return typeof win.fetch.bind === 'function' ? win.fetch.bind(win) : win.fetch;
38
- }
39
-
40
- throw new Error('No fetch implementation found');
41
- }
42
-
43
- /** @internal */
44
- function transformOperationResult(result) {
45
- var context = result.context;
46
-
47
- if ('error' in result.data) {
48
- var error = TRPCClientError.from(result.data);
49
- return {
50
- ok: false,
51
- error: error,
52
- context: context
53
- };
54
- }
55
-
56
- var data = result.data.result.data;
57
- return {
58
- ok: true,
59
- data: data,
60
- context: context
61
- };
62
- }
63
-
64
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
65
-
66
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
67
-
68
- var ObservableAbortError = /*#__PURE__*/function (_Error) {
69
- _inherits(ObservableAbortError, _Error);
70
-
71
- var _super = /*#__PURE__*/_createSuper(ObservableAbortError);
72
-
73
- function ObservableAbortError(message) {
74
- var _this;
75
-
76
- _classCallCheck(this, ObservableAbortError);
77
-
78
- _this = _super.call(this, message);
79
- _this.name = 'ObservableAbortError';
80
- Object.setPrototypeOf(_assertThisInitialized(_this), ObservableAbortError.prototype);
81
- return _this;
82
- }
83
-
84
- return ObservableAbortError;
85
- }( /*#__PURE__*/_wrapNativeSuper(Error));
86
- /** @internal */
87
-
88
- function observableToPromise(observable) {
89
- var abort;
90
- var promise = new Promise(function (resolve, reject) {
91
- var isDone = false;
92
-
93
- function onDone() {
94
- if (isDone) {
95
- return;
96
- }
97
-
98
- isDone = true;
99
- reject(new ObservableAbortError('This operation was cancelled.'));
100
- obs$.unsubscribe();
26
+ if (f) {
27
+ return f;
101
28
  }
102
-
103
- var obs$ = observable.subscribe({
104
- next: function next(data) {
105
- isDone = true;
106
- resolve(data);
107
- onDone();
108
- },
109
- error: function error(data) {
110
- isDone = true;
111
- reject(data);
112
- onDone();
113
- },
114
- complete: function complete() {
115
- isDone = true;
116
- onDone();
117
- }
118
- });
119
- abort = onDone;
120
- });
121
- return {
122
- promise: promise,
123
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
124
- abort: abort
125
- };
29
+ const win = getWindow();
30
+ if (win.fetch) {
31
+ return typeof win.fetch.bind === 'function' ? win.fetch.bind(win) : win.fetch;
32
+ }
33
+ throw new Error('No fetch implementation found');
126
34
  }
127
35
 
128
- var idCounter = 0;
129
-
130
- function getRequestId() {
131
- return ++idCounter;
36
+ function dedupeLink() {
37
+ // initialized config
38
+ return ()=>{
39
+ // initialized in app
40
+ const pending = {};
41
+ return ({ op , next })=>{
42
+ // initialized for request
43
+ if (op.type !== 'query') {
44
+ // pass through
45
+ return next(op);
46
+ }
47
+ const key = JSON.stringify([
48
+ op.path,
49
+ op.input
50
+ ]);
51
+ const obs$ = pending[key];
52
+ if (obs$) {
53
+ // console.log('hooking into pending', { op });
54
+ return observable((observer)=>obs$.subscribe(observer));
55
+ }
56
+ const shared$ = observable((observer)=>{
57
+ function reset() {
58
+ delete pending[key];
59
+ }
60
+ const subscription = next(op).subscribe({
61
+ next (v) {
62
+ observer.next(v);
63
+ },
64
+ error (e) {
65
+ reset();
66
+ observer.error(e);
67
+ },
68
+ complete () {
69
+ reset();
70
+ observer.complete();
71
+ }
72
+ });
73
+ return ()=>{
74
+ reset();
75
+ subscription.unsubscribe();
76
+ };
77
+ }).pipe(share());
78
+ pending[key] = shared$;
79
+ return shared$;
80
+ };
81
+ };
132
82
  }
133
83
 
134
- var TRPCClient = /*#__PURE__*/function () {
135
- function TRPCClient(opts) {
136
- var _this = this;
137
-
138
- _classCallCheck(this, TRPCClient);
139
-
140
- this.links = void 0;
141
- this.runtime = void 0;
142
-
143
- var _fetch = getFetch(opts === null || opts === void 0 ? void 0 : opts.fetch);
144
-
145
- var AC = getAbortController(opts === null || opts === void 0 ? void 0 : opts.AbortController);
146
-
147
- function getHeadersFn() {
148
- if (opts.headers) {
149
- var headers = opts.headers;
150
- return typeof headers === 'function' ? headers : function () {
151
- return headers;
84
+ function retryLink(opts) {
85
+ // initialized config
86
+ return ()=>{
87
+ // initialized in app
88
+ return ({ op , next })=>{
89
+ // initialized for request
90
+ return observable((observer)=>{
91
+ let next$ = null;
92
+ let attempts = 0;
93
+ let isDone = false;
94
+ function attempt() {
95
+ attempts++;
96
+ next$?.unsubscribe();
97
+ next$ = next(op).subscribe({
98
+ error (error) {
99
+ if (attempts >= opts.attempts) {
100
+ observer.error(error);
101
+ return;
102
+ }
103
+ attempt();
104
+ },
105
+ next (result) {
106
+ if ('result' in result.result) {
107
+ isDone = true;
108
+ observer.next(result);
109
+ return;
110
+ }
111
+ if (attempts >= opts.attempts) {
112
+ isDone = true;
113
+ observer.next(result);
114
+ return;
115
+ }
116
+ attempt();
117
+ },
118
+ complete () {
119
+ if (isDone) {
120
+ observer.complete();
121
+ }
122
+ }
123
+ });
124
+ }
125
+ attempt();
126
+ return ()=>{
127
+ isDone = true;
128
+ next$?.unsubscribe();
129
+ };
130
+ });
152
131
  };
153
- }
154
-
155
- return function () {
156
- return {};
157
- };
158
- }
159
-
160
- this.runtime = {
161
- AbortController: AC,
162
- fetch: _fetch,
163
- headers: getHeadersFn()
164
132
  };
133
+ }
165
134
 
166
- if ('links' in opts) {
167
- this.links = opts.links.map(function (link) {
168
- return link(_this.runtime);
169
- });
170
- } else {
171
- this.links = [httpBatchLink({
172
- url: opts.url
173
- })(this.runtime)];
135
+ class TRPCClient {
136
+ getRequestId() {
137
+ return ++this.requestId;
174
138
  }
175
- }
176
-
177
- _createClass(TRPCClient, [{
178
- key: "$request",
179
- value: function $request(_ref) {
180
- var type = _ref.type,
181
- input = _ref.input,
182
- path = _ref.path,
183
- _ref$context = _ref.context,
184
- context = _ref$context === void 0 ? {} : _ref$context;
185
- var chain$ = createChain({
186
- links: this.links,
187
- op: {
188
- id: getRequestId(),
189
- type: type,
190
- path: path,
191
- input: input,
192
- context: context
193
- }
194
- });
195
- return chain$.pipe(share());
139
+ $request({ type , input , path , context ={} }) {
140
+ const chain$ = createChain({
141
+ links: this.links,
142
+ op: {
143
+ id: this.getRequestId(),
144
+ type,
145
+ path,
146
+ input,
147
+ context
148
+ }
149
+ });
150
+ return chain$.pipe(share());
196
151
  }
197
- }, {
198
- key: "requestAsPromise",
199
- value: function requestAsPromise(opts) {
200
- var req$ = this.$request(opts);
201
-
202
- var _observableToPromise = observableToPromise(req$),
203
- promise = _observableToPromise.promise,
204
- abort = _observableToPromise.abort;
205
-
206
- var cancellablePromise = new Promise(function (resolve, reject) {
207
- promise.then(function (result) {
208
- var transformed = transformOperationResult(result);
209
-
210
- if (transformed.ok) {
211
- resolve(transformed.data);
212
- return;
213
- }
214
-
215
- reject(transformed.error);
216
- }).catch(function (err) {
217
- reject(TRPCClientError.from(err));
152
+ requestAsPromise(opts) {
153
+ const req$ = this.$request(opts);
154
+ const { promise , abort } = observableToPromise(req$);
155
+ const cancellablePromise = new Promise((resolve, reject)=>{
156
+ promise.then((envelope)=>{
157
+ resolve(envelope.result.data);
158
+ }).catch((err)=>{
159
+ reject(TRPCClientError.from(err));
160
+ });
218
161
  });
219
- });
220
- cancellablePromise.cancel = abort;
221
- return cancellablePromise;
162
+ cancellablePromise.cancel = abort;
163
+ return cancellablePromise;
222
164
  }
223
- }, {
224
- key: "query",
225
- value: function query(path) {
226
- var _ref2;
227
-
228
- var context = (_ref2 = arguments.length <= 2 ? undefined : arguments[2]) === null || _ref2 === void 0 ? void 0 : _ref2.context;
229
- return this.requestAsPromise({
230
- type: 'query',
231
- path: path,
232
- input: arguments.length <= 1 ? undefined : arguments[1],
233
- context: context
234
- });
165
+ query(path, ...args) {
166
+ const context = args[1]?.context;
167
+ return this.requestAsPromise({
168
+ type: 'query',
169
+ path,
170
+ input: args[0],
171
+ context
172
+ });
235
173
  }
236
- }, {
237
- key: "mutation",
238
- value: function mutation(path) {
239
- var _ref3;
240
-
241
- var context = (_ref3 = arguments.length <= 2 ? undefined : arguments[2]) === null || _ref3 === void 0 ? void 0 : _ref3.context;
242
- return this.requestAsPromise({
243
- type: 'mutation',
244
- path: path,
245
- input: arguments.length <= 1 ? undefined : arguments[1],
246
- context: context
247
- });
174
+ mutation(path, ...args) {
175
+ const context = args[1]?.context;
176
+ return this.requestAsPromise({
177
+ type: 'mutation',
178
+ path,
179
+ input: args[0],
180
+ context
181
+ });
248
182
  }
249
- }, {
250
- key: "subscription",
251
- value: function subscription(path, input, opts) {
252
- var observable$ = this.$request({
253
- type: 'subscription',
254
- path: path,
255
- input: input,
256
- context: opts.context
257
- });
258
- var observer = observable$.subscribe({
259
- next: function next(result) {
260
- var _opts$next;
261
-
262
- if ('error' in result.data) {
263
- var _opts$error;
264
-
265
- var err = TRPCClientError.from(result.data, {
266
- meta: result.context
267
- });
268
- (_opts$error = opts.error) === null || _opts$error === void 0 ? void 0 : _opts$error.call(opts, err);
269
- return;
270
- }
271
-
272
- (_opts$next = opts.next) === null || _opts$next === void 0 ? void 0 : _opts$next.call(opts, result.data.result);
273
- },
274
- error: function error(err) {
275
- var _opts$error2;
276
-
277
- (_opts$error2 = opts.error) === null || _opts$error2 === void 0 ? void 0 : _opts$error2.call(opts, err);
278
- },
279
- complete: function complete() {
280
- var _opts$complete;
281
-
282
- (_opts$complete = opts.complete) === null || _opts$complete === void 0 ? void 0 : _opts$complete.call(opts);
183
+ subscription(path, input, opts) {
184
+ const observable$ = this.$request({
185
+ type: 'subscription',
186
+ path,
187
+ input,
188
+ context: opts?.context
189
+ });
190
+ return observable$.subscribe({
191
+ next (envelope) {
192
+ if (envelope.result.type === 'started') {
193
+ opts.onStarted?.();
194
+ } else if (envelope.result.type === 'stopped') {
195
+ opts.onStopped?.();
196
+ } else {
197
+ opts.onData?.(envelope.result.data);
198
+ }
199
+ },
200
+ error (err) {
201
+ opts.onError?.(err);
202
+ },
203
+ complete () {
204
+ opts.onComplete?.();
205
+ }
206
+ });
207
+ }
208
+ constructor(opts){
209
+ const _fetch = getFetch(opts?.fetch);
210
+ const AC = getAbortController(opts?.AbortController);
211
+ this.requestId = 0;
212
+ function getHeadersFn() {
213
+ if (opts.headers) {
214
+ const headers = opts.headers;
215
+ return typeof headers === 'function' ? headers : ()=>headers;
216
+ }
217
+ return ()=>({});
218
+ }
219
+ const transformer = opts.transformer ? 'input' in opts.transformer ? {
220
+ serialize: opts.transformer.input.serialize,
221
+ deserialize: opts.transformer.output.deserialize
222
+ } : opts.transformer : {
223
+ serialize: (data)=>data,
224
+ deserialize: (data)=>data
225
+ };
226
+ this.runtime = {
227
+ AbortController: AC,
228
+ fetch: _fetch,
229
+ headers: getHeadersFn(),
230
+ transformer
231
+ };
232
+ if ('links' in opts) {
233
+ this.links = opts.links.map((link)=>link(this.runtime));
234
+ } else {
235
+ this.links = [
236
+ httpBatchLink({
237
+ url: opts.url
238
+ })(this.runtime),
239
+ ];
283
240
  }
284
- });
285
- return function () {
286
- observer.unsubscribe();
287
- };
288
241
  }
289
- }]);
242
+ }
290
243
 
291
- return TRPCClient;
292
- }();
244
+ /**
245
+ * @deprecated use `createTRPCProxyClient` instead
246
+ */ function createTRPCClient(opts) {
247
+ const client = new TRPCClient(opts);
248
+ return client;
249
+ }
293
250
 
294
- /* eslint-disable @typescript-eslint/no-explicit-any */
295
- function createTRPCClient(opts) {
296
- return new TRPCClient(opts);
251
+ const clientCallTypeMap = {
252
+ query: 'query',
253
+ mutate: 'mutation',
254
+ subscribe: 'subscription'
255
+ };
256
+ /**
257
+ * @deprecated use `createTRPCProxyClient` instead
258
+ * @internal
259
+ */ function createTRPCClientProxy(client) {
260
+ const proxy = createProxy(({ path , args })=>{
261
+ const pathCopy = [
262
+ ...path
263
+ ];
264
+ const clientCallType = pathCopy.pop();
265
+ const procedureType = clientCallTypeMap[clientCallType];
266
+ const fullPath = pathCopy.join('.');
267
+ return client[procedureType](fullPath, ...args);
268
+ });
269
+ return proxy;
270
+ }
271
+ function createTRPCProxyClient(opts) {
272
+ const client = createTRPCClient(opts);
273
+ const proxy = createTRPCClientProxy(client);
274
+ return proxy;
297
275
  }
298
276
 
299
- export { createTRPCClient, getFetch };
277
+ export { createTRPCClient, createTRPCClientProxy, createTRPCProxyClient, dedupeLink, getFetch, retryLink };
@@ -1,20 +1,12 @@
1
- import { AnyRouter, inferHandlerInput, inferProcedureInput, inferSubscriptionOutput } from '@trpc/server';
2
- import { TRPCResult } from '@trpc/server/rpc';
1
+ import { AnyRouter, ClientDataTransformerOptions, inferHandlerInput, inferProcedureInput, inferProcedureOutput, inferSubscriptionOutput } from '@trpc/server';
2
+ import { ProcedureRecord } from '@trpc/server';
3
+ import { Unsubscribable } from '@trpc/server/observable';
3
4
  import { CancelFn } from '..';
4
- import { HTTPHeaders, LinkRuntime, OperationContext, TRPCLink } from '../links/types';
5
- import { UnsubscribeFn } from '../rx';
6
- import { Observer } from '../rx/types';
7
5
  import { TRPCClientError } from '../TRPCClientError';
6
+ import { HTTPHeaders, OperationContext, TRPCClientRuntime, TRPCLink } from '../links/types';
8
7
  declare type CancellablePromise<T = unknown> = Promise<T> & {
9
8
  cancel: CancelFn;
10
9
  };
11
- /**
12
- * @deprecated no longer used
13
- */
14
- export interface FetchOptions {
15
- fetch?: typeof fetch;
16
- AbortController?: typeof AbortController;
17
- }
18
10
  interface CreateTRPCClientBaseOptions {
19
11
  /**
20
12
  * Add ponyfill for fetch
@@ -28,6 +20,11 @@ interface CreateTRPCClientBaseOptions {
28
20
  * headers to be set on outgoing requests / callback that of said headers
29
21
  */
30
22
  headers?: HTTPHeaders | (() => HTTPHeaders | Promise<HTTPHeaders>);
23
+ /**
24
+ * Data transformer
25
+ * @link https://trpc.io/docs/data-transformers
26
+ **/
27
+ transformer?: ClientDataTransformerOptions;
31
28
  }
32
29
  /** @internal */
33
30
  export interface CreateTRPCClientWithURLOptions extends CreateTRPCClientBaseOptions {
@@ -39,7 +36,7 @@ export interface CreateTRPCClientWithURLOptions extends CreateTRPCClientBaseOpti
39
36
  /** @internal */
40
37
  export interface CreateTRPCClientWithLinksOptions<TRouter extends AnyRouter> extends CreateTRPCClientBaseOptions {
41
38
  /**
42
- * @link http://localhost:3000/docs/links
39
+ * @link https://trpc.io/docs/links
43
40
  **/
44
41
  links: TRPCLink<TRouter>[];
45
42
  }
@@ -49,17 +46,41 @@ export interface TRPCRequestOptions {
49
46
  */
50
47
  context?: OperationContext;
51
48
  }
49
+ export interface TRPCSubscriptionObserver<TValue, TError> {
50
+ onStarted: () => void;
51
+ onData: (value: TValue) => void;
52
+ onError: (err: TError) => void;
53
+ onStopped: () => void;
54
+ onComplete: () => void;
55
+ }
52
56
  /** @internal */
53
57
  export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientWithLinksOptions<TRouter> | CreateTRPCClientWithURLOptions;
58
+ export declare type AssertType<T, K> = T extends K ? T : never;
59
+ /**
60
+ * @deprecated
61
+ */
62
+ export declare type AssertLegacyDef<TRouter extends AnyRouter> = TRouter['_def']['legacy'] extends Record<'subscriptions' | 'queries' | 'mutations', ProcedureRecord> ? TRouter['_def']['legacy'] : {
63
+ subscriptions: {};
64
+ queries: {};
65
+ mutations: {};
66
+ };
54
67
  export declare class TRPCClient<TRouter extends AnyRouter> {
55
68
  private readonly links;
56
- readonly runtime: LinkRuntime;
69
+ readonly runtime: TRPCClientRuntime;
70
+ private requestId;
71
+ private getRequestId;
57
72
  constructor(opts: CreateTRPCClientOptions<TRouter>);
58
73
  private $request;
59
74
  private requestAsPromise;
60
- query<TQueries extends TRouter['_def']['queries'], TPath extends string & keyof TQueries>(path: TPath, ...args: [...inferHandlerInput<TQueries[TPath]>, TRPCRequestOptions?]): CancellablePromise<import("@trpc/server").ThenArg<ReturnType<TQueries[TPath]["call"]>>>;
61
- mutation<TMutations extends TRouter['_def']['mutations'], TPath extends string & keyof TMutations>(path: TPath, ...args: [...inferHandlerInput<TMutations[TPath]>, TRPCRequestOptions?]): CancellablePromise<import("@trpc/server").ThenArg<ReturnType<TMutations[TPath]["call"]>>>;
62
- subscription<TSubscriptions extends TRouter['_def']['subscriptions'], TPath extends string & keyof TSubscriptions, TOutput extends inferSubscriptionOutput<TRouter, TPath>, TInput extends inferProcedureInput<TSubscriptions[TPath]>>(path: TPath, input: TInput, opts: TRPCRequestOptions & Partial<Observer<TRPCResult<TOutput>, TRPCClientError<TRouter>>>): UnsubscribeFn;
75
+ query<TQueries extends AssertLegacyDef<TRouter>['queries'], TPath extends string & keyof TQueries>(path: TPath, ...args: [
76
+ ...inferHandlerInput<AssertType<TQueries, ProcedureRecord>[TPath]>,
77
+ TRPCRequestOptions?
78
+ ]): CancellablePromise<inferProcedureOutput<TQueries[TPath]>>;
79
+ mutation<TMutations extends AssertLegacyDef<TRouter>['mutations'], TPath extends string & keyof TMutations>(path: TPath, ...args: [
80
+ ...inferHandlerInput<AssertType<TMutations, ProcedureRecord>[TPath]>,
81
+ TRPCRequestOptions?
82
+ ]): CancellablePromise<inferProcedureOutput<TMutations[TPath]>>;
83
+ subscription<TSubscriptions extends AssertLegacyDef<TRouter>['subscriptions'], TPath extends string & keyof TSubscriptions, TOutput extends inferSubscriptionOutput<TRouter, TPath>, TInput extends inferProcedureInput<AssertType<TSubscriptions, ProcedureRecord>[TPath]>>(path: TPath, input: TInput, opts: TRPCRequestOptions & Partial<TRPCSubscriptionObserver<TOutput, TRPCClientError<TRouter>>>): Unsubscribable;
63
84
  }
64
85
  export {};
65
86
  //# sourceMappingURL=TRPCClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../src/internals/TRPCClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../../../packages/client/src/internals/TRPCClient.ts"],"names":[],"mappings":"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"}