@trpc/client 10.0.0-alpha.4 → 10.0.0-alpha.40
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 +58 -1
- package/dist/TRPCClientError.d.ts +3 -11
- package/dist/TRPCClientError.d.ts.map +1 -1
- package/dist/createTRPCClient.d.ts +2 -3
- package/dist/createTRPCClient.d.ts.map +1 -1
- package/dist/createTRPCClientProxy.d.ts +24 -0
- package/dist/createTRPCClientProxy.d.ts.map +1 -0
- package/dist/{httpUtils-c09d7b79.mjs → httpUtils-089853f6.mjs} +38 -30
- package/dist/{httpUtils-1f9e4e3c.js → httpUtils-a0169eef.js} +38 -29
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +240 -102
- package/dist/index.mjs +228 -94
- package/dist/internals/TRPCClient.d.ts +14 -17
- package/dist/internals/TRPCClient.d.ts.map +1 -1
- package/dist/internals/dataLoader.d.ts +7 -4
- package/dist/internals/dataLoader.d.ts.map +1 -1
- package/dist/links/dedupeLink.d.ts.map +1 -1
- package/dist/links/httpBatchLink.d.ts +5 -2
- package/dist/links/httpBatchLink.d.ts.map +1 -1
- package/dist/links/httpBatchLink.js +197 -69
- package/dist/links/httpBatchLink.mjs +197 -69
- package/dist/links/httpLink.d.ts +1 -1
- package/dist/links/httpLink.d.ts.map +1 -1
- package/dist/links/httpLink.js +5 -5
- package/dist/links/httpLink.mjs +5 -5
- package/dist/links/index.d.ts +9 -0
- package/dist/links/index.d.ts.map +1 -0
- package/dist/links/internals/createChain.d.ts.map +1 -1
- package/dist/links/internals/httpUtils.d.ts +30 -0
- package/dist/links/internals/httpUtils.d.ts.map +1 -0
- package/dist/links/internals/transformOperationResult.d.ts +17 -3
- package/dist/links/internals/transformOperationResult.d.ts.map +1 -1
- package/dist/links/loggerLink.d.ts.map +1 -1
- package/dist/links/loggerLink.js +2 -3
- package/dist/links/loggerLink.mjs +1 -2
- package/dist/links/retryLink.d.ts.map +1 -1
- package/dist/links/splitLink.d.ts +1 -1
- package/dist/links/splitLink.d.ts.map +1 -1
- package/dist/links/splitLink.js +3 -25
- package/dist/links/splitLink.mjs +2 -28
- package/dist/links/types.d.ts +12 -9
- package/dist/links/types.d.ts.map +1 -1
- package/dist/links/wsLink.d.ts +3 -3
- package/dist/links/wsLink.d.ts.map +1 -1
- package/dist/links/wsLink.js +12 -376
- package/dist/links/wsLink.mjs +10 -369
- package/dist/splitLink-0202cd7b.mjs +54 -0
- package/dist/splitLink-23c5ce5c.js +57 -0
- package/dist/wsLink-11ee4922.mjs +439 -0
- package/dist/wsLink-807f4ad9.js +455 -0
- package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.cjs.dev.js +4 -4
- package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.cjs.prod.js +4 -4
- package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.esm.js +4 -4
- package/links/httpBatchLink/index.d.ts +1 -1
- package/links/httpBatchLink/index.js +1 -1
- package/links/httpLink/dist/trpc-client-links-httpLink.cjs.dev.js +1 -1
- package/links/httpLink/dist/trpc-client-links-httpLink.cjs.prod.js +1 -1
- package/links/httpLink/dist/trpc-client-links-httpLink.esm.js +1 -1
- package/links/httpLink/index.d.ts +1 -1
- package/links/httpLink/index.js +1 -1
- package/links/loggerLink/index.d.ts +1 -1
- package/links/loggerLink/index.js +1 -1
- package/links/splitLink/index.d.ts +1 -1
- package/links/splitLink/index.js +1 -1
- package/links/wsLink/dist/trpc-client-links-wsLink.cjs.dev.js +3 -1
- package/links/wsLink/dist/trpc-client-links-wsLink.cjs.prod.js +3 -1
- package/links/wsLink/dist/trpc-client-links-wsLink.esm.js +3 -1
- package/links/wsLink/index.d.ts +1 -1
- package/links/wsLink/index.js +1 -1
- package/package.json +23 -30
- package/src/TRPCClientError.ts +5 -13
- package/src/createTRPCClient.ts +7 -3
- package/src/createTRPCClientProxy.ts +59 -0
- package/src/index.ts +2 -1
- package/src/internals/TRPCClient.ts +52 -36
- package/src/internals/dataLoader.ts +120 -45
- package/src/links/dedupeLink.test.ts +1 -1
- package/src/links/dedupeLink.ts +6 -7
- package/src/links/httpBatchLink.ts +64 -31
- package/src/links/httpLink.ts +4 -4
- package/src/links/index.ts +8 -0
- package/src/links/internals/createChain.test.ts +5 -5
- package/src/links/internals/createChain.ts +8 -3
- package/src/links/internals/httpUtils.ts +116 -0
- package/src/links/internals/transformOperationResult.ts +40 -12
- package/src/links/loggerLink.ts +1 -2
- package/src/links/retryLink.ts +1 -2
- package/src/links/splitLink.test.ts +3 -3
- package/src/links/splitLink.ts +5 -5
- package/src/links/types.ts +14 -9
- package/src/links/wsLink.ts +17 -16
- package/dist/TRPCClientError-17b117e1.mjs +0 -81
- package/dist/TRPCClientError-ec6bd2ca.js +0 -94
- package/dist/createChain-389cc116.mjs +0 -25
- package/dist/createChain-864dbb30.js +0 -27
- package/dist/internals/transformRPCResponse.d.ts +0 -15
- package/dist/internals/transformRPCResponse.d.ts.map +0 -1
- package/dist/links/httpUtils.d.ts +0 -22
- package/dist/links/httpUtils.d.ts.map +0 -1
- package/dist/links/transformerLink.d.ts +0 -4
- package/dist/links/transformerLink.d.ts.map +0 -1
- package/dist/links/transformerLink.js +0 -75
- package/dist/links/transformerLink.mjs +0 -67
- package/dist/links/transformerLink.ts.js +0 -1
- package/dist/observable-7e66cb56.mjs +0 -102
- package/dist/observable-85669100.js +0 -104
- package/dist/rx/index.d.ts +0 -3
- package/dist/rx/index.d.ts.map +0 -1
- package/dist/rx/index.js +0 -9
- package/dist/rx/index.mjs +0 -1
- package/dist/rx/index.ts.js +0 -1
- package/dist/rx/observable.d.ts +0 -4
- package/dist/rx/observable.d.ts.map +0 -1
- package/dist/rx/operators/index.d.ts +0 -4
- package/dist/rx/operators/index.d.ts.map +0 -1
- package/dist/rx/operators/index.js +0 -38
- package/dist/rx/operators/index.mjs +0 -32
- package/dist/rx/operators/index.ts.js +0 -1
- package/dist/rx/operators/map.d.ts +0 -3
- package/dist/rx/operators/map.d.ts.map +0 -1
- package/dist/rx/operators/share.d.ts +0 -6
- package/dist/rx/operators/share.d.ts.map +0 -1
- package/dist/rx/operators/tap.d.ts +0 -3
- package/dist/rx/operators/tap.d.ts.map +0 -1
- package/dist/rx/types.d.ts +0 -29
- package/dist/rx/types.d.ts.map +0 -1
- package/dist/rx/util/identity.d.ts +0 -2
- package/dist/rx/util/identity.d.ts.map +0 -1
- package/dist/rx/util/observableToPromise.d.ts +0 -10
- package/dist/rx/util/observableToPromise.d.ts.map +0 -1
- package/dist/rx/util/pipe.d.ts +0 -4
- package/dist/rx/util/pipe.d.ts.map +0 -1
- package/dist/share-4d79dc49.js +0 -110
- package/dist/share-671b63fa.mjs +0 -108
- package/dist/tap-538fa07f.mjs +0 -30
- package/dist/tap-799a2d33.js +0 -32
- package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.d.ts +0 -1
- package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.dev.js +0 -67
- package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.js +0 -7
- package/links/transformerLink/dist/trpc-client-links-transformerLink.cjs.prod.js +0 -67
- package/links/transformerLink/dist/trpc-client-links-transformerLink.esm.js +0 -63
- package/links/transformerLink/index.d.ts +0 -1
- package/links/transformerLink/index.js +0 -1
- package/rx/dist/trpc-client-rx.cjs.d.ts +0 -1
- package/rx/dist/trpc-client-rx.cjs.dev.js +0 -9
- package/rx/dist/trpc-client-rx.cjs.js +0 -7
- package/rx/dist/trpc-client-rx.cjs.prod.js +0 -9
- package/rx/dist/trpc-client-rx.esm.js +0 -1
- package/rx/index.d.ts +0 -1
- package/rx/index.js +0 -1
- package/rx/operators/dist/trpc-client-rx-operators.cjs.d.ts +0 -1
- package/rx/operators/dist/trpc-client-rx-operators.cjs.dev.js +0 -39
- package/rx/operators/dist/trpc-client-rx-operators.cjs.js +0 -7
- package/rx/operators/dist/trpc-client-rx-operators.cjs.prod.js +0 -39
- package/rx/operators/dist/trpc-client-rx-operators.esm.js +0 -33
- package/rx/operators/index.d.ts +0 -1
- package/rx/operators/index.js +0 -1
- package/src/internals/transformRPCResponse.ts +0 -25
- package/src/links/httpUtils.ts +0 -94
- package/src/links/transformerLink.ts +0 -70
- package/src/rx/index.ts +0 -2
- package/src/rx/observable.test.ts +0 -83
- package/src/rx/observable.ts +0 -70
- package/src/rx/operators/index.ts +0 -3
- package/src/rx/operators/map.test.ts +0 -92
- package/src/rx/operators/map.ts +0 -25
- package/src/rx/operators/share.test.ts +0 -60
- package/src/rx/operators/share.ts +0 -67
- package/src/rx/operators/tap.ts +0 -26
- package/src/rx/types.ts +0 -69
- package/src/rx/util/identity.ts +0 -3
- package/src/rx/util/observableToPromise.ts +0 -49
- package/src/rx/util/pipe.ts +0 -22
package/dist/index.mjs
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
2
2
|
import _createClass from '@babel/runtime/helpers/createClass';
|
|
3
|
+
import { observable, share, observableToPromise } from '@trpc/server/observable';
|
|
4
|
+
import { T as TRPCClientError } from './wsLink-11ee4922.mjs';
|
|
5
|
+
export { T as TRPCClientError, c as createWSClient, w as wsLink } from './wsLink-11ee4922.mjs';
|
|
3
6
|
import { httpBatchLink } from './links/httpBatchLink.mjs';
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import '
|
|
14
|
-
import '
|
|
15
|
-
import '@
|
|
7
|
+
export { httpBatchLink } from './links/httpBatchLink.mjs';
|
|
8
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
9
|
+
import '@babel/runtime/helpers/slicedToArray';
|
|
10
|
+
import { c as createChain } from './splitLink-0202cd7b.mjs';
|
|
11
|
+
export { s as splitLink } from './splitLink-0202cd7b.mjs';
|
|
12
|
+
import '@babel/runtime/helpers/assertThisInitialized';
|
|
13
|
+
import '@babel/runtime/helpers/inherits';
|
|
14
|
+
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
15
|
+
import '@babel/runtime/helpers/getPrototypeOf';
|
|
16
|
+
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
17
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
18
|
+
import { createProxy } from '@trpc/server/shared';
|
|
19
|
+
export { httpLink } from './links/httpLink.mjs';
|
|
20
|
+
export { loggerLink } from './links/loggerLink.mjs';
|
|
21
|
+
import './httpUtils-089853f6.mjs';
|
|
16
22
|
|
|
17
23
|
function getWindow() {
|
|
18
24
|
if (typeof window !== 'undefined') {
|
|
@@ -40,12 +46,134 @@ function getFetch(f) {
|
|
|
40
46
|
throw new Error('No fetch implementation found');
|
|
41
47
|
}
|
|
42
48
|
|
|
49
|
+
function dedupeLink() {
|
|
50
|
+
// initialized config
|
|
51
|
+
return function () {
|
|
52
|
+
// initialized in app
|
|
53
|
+
var pending = {};
|
|
54
|
+
return function (_ref) {
|
|
55
|
+
var op = _ref.op,
|
|
56
|
+
next = _ref.next;
|
|
57
|
+
|
|
58
|
+
// initialized for request
|
|
59
|
+
if (op.type !== 'query') {
|
|
60
|
+
// pass through
|
|
61
|
+
return next(op);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
var key = JSON.stringify([op.path, op.input]);
|
|
65
|
+
var obs$ = pending[key];
|
|
66
|
+
|
|
67
|
+
if (obs$) {
|
|
68
|
+
// console.log('hooking into pending', { op });
|
|
69
|
+
return observable(function (observer) {
|
|
70
|
+
return obs$.subscribe(observer);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
var shared$ = observable(function (observer) {
|
|
75
|
+
function reset() {
|
|
76
|
+
delete pending[key];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
var subscription = next(op).subscribe({
|
|
80
|
+
next: function next(v) {
|
|
81
|
+
observer.next(v);
|
|
82
|
+
},
|
|
83
|
+
error: function error(e) {
|
|
84
|
+
reset();
|
|
85
|
+
observer.error(e);
|
|
86
|
+
},
|
|
87
|
+
complete: function complete() {
|
|
88
|
+
reset();
|
|
89
|
+
observer.complete();
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return function () {
|
|
93
|
+
reset();
|
|
94
|
+
subscription.unsubscribe();
|
|
95
|
+
};
|
|
96
|
+
}).pipe(share());
|
|
97
|
+
pending[key] = shared$;
|
|
98
|
+
return shared$;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function retryLink(opts) {
|
|
104
|
+
// initialized config
|
|
105
|
+
return function () {
|
|
106
|
+
// initialized in app
|
|
107
|
+
return function (_ref) {
|
|
108
|
+
var op = _ref.op,
|
|
109
|
+
next = _ref.next;
|
|
110
|
+
// initialized for request
|
|
111
|
+
return observable(function (observer) {
|
|
112
|
+
var next$ = null;
|
|
113
|
+
var attempts = 0;
|
|
114
|
+
var isDone = false;
|
|
115
|
+
|
|
116
|
+
function attempt() {
|
|
117
|
+
var _next$;
|
|
118
|
+
|
|
119
|
+
attempts++;
|
|
120
|
+
(_next$ = next$) === null || _next$ === void 0 ? void 0 : _next$.unsubscribe();
|
|
121
|
+
next$ = next(op).subscribe({
|
|
122
|
+
error: function error(_error) {
|
|
123
|
+
if (attempts >= opts.attempts) {
|
|
124
|
+
observer.error(_error);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
attempt();
|
|
129
|
+
},
|
|
130
|
+
next: function next(result) {
|
|
131
|
+
if ('result' in result.data) {
|
|
132
|
+
isDone = true;
|
|
133
|
+
observer.next(result);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (attempts >= opts.attempts) {
|
|
138
|
+
isDone = true;
|
|
139
|
+
observer.next(result);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
attempt();
|
|
144
|
+
},
|
|
145
|
+
complete: function complete() {
|
|
146
|
+
if (isDone) {
|
|
147
|
+
observer.complete();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
attempt();
|
|
154
|
+
return function () {
|
|
155
|
+
var _next$2;
|
|
156
|
+
|
|
157
|
+
isDone = true;
|
|
158
|
+
(_next$2 = next$) === null || _next$2 === void 0 ? void 0 : _next$2.unsubscribe();
|
|
159
|
+
};
|
|
160
|
+
});
|
|
161
|
+
};
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
166
|
+
|
|
167
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
168
|
+
|
|
43
169
|
/** @internal */
|
|
44
|
-
function transformOperationResult(result) {
|
|
170
|
+
function transformOperationResult(result, runtime) {
|
|
45
171
|
var context = result.context;
|
|
46
172
|
|
|
47
173
|
if ('error' in result.data) {
|
|
48
|
-
var error = TRPCClientError.from(result.data)
|
|
174
|
+
var error = TRPCClientError.from(_objectSpread(_objectSpread({}, result.data), {}, {
|
|
175
|
+
error: runtime.transformer.deserialize(result.data.error)
|
|
176
|
+
}));
|
|
49
177
|
return {
|
|
50
178
|
ok: false,
|
|
51
179
|
error: error,
|
|
@@ -53,75 +181,39 @@ function transformOperationResult(result) {
|
|
|
53
181
|
};
|
|
54
182
|
}
|
|
55
183
|
|
|
56
|
-
var data = result.data.result.data;
|
|
184
|
+
var data = runtime.transformer.deserialize(result.data.result.data);
|
|
57
185
|
return {
|
|
58
186
|
ok: true,
|
|
59
187
|
data: data,
|
|
60
188
|
context: context
|
|
61
189
|
};
|
|
62
190
|
}
|
|
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
191
|
/** @internal */
|
|
87
192
|
|
|
88
|
-
function
|
|
89
|
-
var
|
|
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();
|
|
101
|
-
}
|
|
193
|
+
function transformSubscriptionOperationResult(result, runtime) {
|
|
194
|
+
var context = result.context;
|
|
102
195
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
}
|
|
196
|
+
if ('error' in result.data) {
|
|
197
|
+
var error = TRPCClientError.from(_objectSpread(_objectSpread({}, result.data), {}, {
|
|
198
|
+
error: runtime.transformer.deserialize(result.data.error)
|
|
199
|
+
}), {
|
|
200
|
+
meta: context
|
|
118
201
|
});
|
|
119
|
-
|
|
202
|
+
return {
|
|
203
|
+
ok: false,
|
|
204
|
+
error: error,
|
|
205
|
+
context: context
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
var data = _objectSpread(_objectSpread({}, result.data.result), result.data.result.type === 'data' && {
|
|
210
|
+
data: runtime.transformer.deserialize(result.data.result.data)
|
|
120
211
|
});
|
|
212
|
+
|
|
121
213
|
return {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
214
|
+
ok: true,
|
|
215
|
+
data: data,
|
|
216
|
+
context: context
|
|
125
217
|
};
|
|
126
218
|
}
|
|
127
219
|
|
|
@@ -157,10 +249,22 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
157
249
|
};
|
|
158
250
|
}
|
|
159
251
|
|
|
252
|
+
var transformer = opts.transformer ? 'input' in opts.transformer ? {
|
|
253
|
+
serialize: opts.transformer.input.serialize,
|
|
254
|
+
deserialize: opts.transformer.output.deserialize
|
|
255
|
+
} : opts.transformer : {
|
|
256
|
+
serialize: function serialize(data) {
|
|
257
|
+
return data;
|
|
258
|
+
},
|
|
259
|
+
deserialize: function deserialize(data) {
|
|
260
|
+
return data;
|
|
261
|
+
}
|
|
262
|
+
};
|
|
160
263
|
this.runtime = {
|
|
161
264
|
AbortController: AC,
|
|
162
265
|
fetch: _fetch,
|
|
163
|
-
headers: getHeadersFn()
|
|
266
|
+
headers: getHeadersFn(),
|
|
267
|
+
transformer: transformer
|
|
164
268
|
};
|
|
165
269
|
|
|
166
270
|
if ('links' in opts) {
|
|
@@ -197,6 +301,8 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
197
301
|
}, {
|
|
198
302
|
key: "requestAsPromise",
|
|
199
303
|
value: function requestAsPromise(opts) {
|
|
304
|
+
var _this2 = this;
|
|
305
|
+
|
|
200
306
|
var req$ = this.$request(opts);
|
|
201
307
|
|
|
202
308
|
var _observableToPromise = observableToPromise(req$),
|
|
@@ -205,7 +311,7 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
205
311
|
|
|
206
312
|
var cancellablePromise = new Promise(function (resolve, reject) {
|
|
207
313
|
promise.then(function (result) {
|
|
208
|
-
var transformed = transformOperationResult(result);
|
|
314
|
+
var transformed = transformOperationResult(result, _this2.runtime);
|
|
209
315
|
|
|
210
316
|
if (transformed.ok) {
|
|
211
317
|
resolve(transformed.data);
|
|
@@ -223,26 +329,34 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
223
329
|
}, {
|
|
224
330
|
key: "query",
|
|
225
331
|
value: function query(path) {
|
|
226
|
-
var
|
|
332
|
+
var _args$;
|
|
227
333
|
|
|
228
|
-
var
|
|
334
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
335
|
+
args[_key - 1] = arguments[_key];
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
var context = (_args$ = args[1]) === null || _args$ === void 0 ? void 0 : _args$.context;
|
|
229
339
|
return this.requestAsPromise({
|
|
230
340
|
type: 'query',
|
|
231
341
|
path: path,
|
|
232
|
-
input:
|
|
342
|
+
input: args[0],
|
|
233
343
|
context: context
|
|
234
344
|
});
|
|
235
345
|
}
|
|
236
346
|
}, {
|
|
237
347
|
key: "mutation",
|
|
238
348
|
value: function mutation(path) {
|
|
239
|
-
var
|
|
349
|
+
var _args$2;
|
|
350
|
+
|
|
351
|
+
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
352
|
+
args[_key2 - 1] = arguments[_key2];
|
|
353
|
+
}
|
|
240
354
|
|
|
241
|
-
var context = (
|
|
355
|
+
var context = (_args$2 = args[1]) === null || _args$2 === void 0 ? void 0 : _args$2.context;
|
|
242
356
|
return this.requestAsPromise({
|
|
243
357
|
type: 'mutation',
|
|
244
358
|
path: path,
|
|
245
|
-
input:
|
|
359
|
+
input: args[0],
|
|
246
360
|
context: context
|
|
247
361
|
});
|
|
248
362
|
}
|
|
@@ -255,21 +369,21 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
255
369
|
input: input,
|
|
256
370
|
context: opts.context
|
|
257
371
|
});
|
|
258
|
-
var
|
|
372
|
+
var runtime = this.runtime;
|
|
373
|
+
return observable$.subscribe({
|
|
259
374
|
next: function next(result) {
|
|
260
|
-
var _opts$
|
|
375
|
+
var _opts$error;
|
|
376
|
+
|
|
377
|
+
var transformed = transformSubscriptionOperationResult(result, runtime);
|
|
261
378
|
|
|
262
|
-
if (
|
|
263
|
-
var _opts$
|
|
379
|
+
if (transformed.ok) {
|
|
380
|
+
var _opts$next;
|
|
264
381
|
|
|
265
|
-
|
|
266
|
-
meta: result.context
|
|
267
|
-
});
|
|
268
|
-
(_opts$error = opts.error) === null || _opts$error === void 0 ? void 0 : _opts$error.call(opts, err);
|
|
382
|
+
(_opts$next = opts.next) === null || _opts$next === void 0 ? void 0 : _opts$next.call(opts, transformed.data);
|
|
269
383
|
return;
|
|
270
384
|
}
|
|
271
385
|
|
|
272
|
-
(_opts$
|
|
386
|
+
(_opts$error = opts.error) === null || _opts$error === void 0 ? void 0 : _opts$error.call(opts, transformed.error);
|
|
273
387
|
},
|
|
274
388
|
error: function error(err) {
|
|
275
389
|
var _opts$error2;
|
|
@@ -282,18 +396,38 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
282
396
|
(_opts$complete = opts.complete) === null || _opts$complete === void 0 ? void 0 : _opts$complete.call(opts);
|
|
283
397
|
}
|
|
284
398
|
});
|
|
285
|
-
return function () {
|
|
286
|
-
observer.unsubscribe();
|
|
287
|
-
};
|
|
288
399
|
}
|
|
289
400
|
}]);
|
|
290
401
|
|
|
291
402
|
return TRPCClient;
|
|
292
403
|
}();
|
|
293
404
|
|
|
294
|
-
/* eslint-disable @typescript-eslint/no-
|
|
405
|
+
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
295
406
|
function createTRPCClient(opts) {
|
|
296
|
-
|
|
407
|
+
var client = new TRPCClient(opts);
|
|
408
|
+
return client;
|
|
409
|
+
} // Also the client created above needs to somehow be like `TRPCClient<Router> & Omit<Router, 'createCaller' | 'createProcedure' | '_def' | 'transformer' | 'errorFormatter' | 'getErrorShape>`
|
|
410
|
+
|
|
411
|
+
var clientCallTypeMap = {
|
|
412
|
+
query: 'query',
|
|
413
|
+
mutate: 'mutation',
|
|
414
|
+
subscribe: 'subscription'
|
|
415
|
+
};
|
|
416
|
+
function createTRPCClientProxy(client) {
|
|
417
|
+
var proxy = createProxy(function (_ref) {
|
|
418
|
+
var _ref2;
|
|
419
|
+
|
|
420
|
+
var path = _ref.path,
|
|
421
|
+
args = _ref.args;
|
|
422
|
+
|
|
423
|
+
var pathCopy = _toConsumableArray(path);
|
|
424
|
+
|
|
425
|
+
var clientCallType = pathCopy.pop();
|
|
426
|
+
var procedureType = clientCallTypeMap[clientCallType];
|
|
427
|
+
var fullPath = pathCopy.join('.');
|
|
428
|
+
return (_ref2 = client)[procedureType].apply(_ref2, [fullPath].concat(_toConsumableArray(args)));
|
|
429
|
+
});
|
|
430
|
+
return proxy;
|
|
297
431
|
}
|
|
298
432
|
|
|
299
|
-
export { createTRPCClient, getFetch };
|
|
433
|
+
export { createTRPCClient, createTRPCClientProxy, dedupeLink, getFetch, retryLink };
|
|
@@ -1,20 +1,12 @@
|
|
|
1
|
-
import { AnyRouter, inferHandlerInput, inferProcedureInput, inferSubscriptionOutput } from '@trpc/server';
|
|
2
|
-
import {
|
|
1
|
+
import { AnyRouter, ClientDataTransformerOptions, inferHandlerInput, inferProcedureInput, inferProcedureOutput, inferSubscriptionOutput } from '@trpc/server';
|
|
2
|
+
import { Observer, Unsubscribable } from '@trpc/server/observable';
|
|
3
|
+
import { TRPCResultMessage } from '@trpc/server/rpc';
|
|
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
|
|
39
|
+
* @link https://trpc.io/docs/links
|
|
43
40
|
**/
|
|
44
41
|
links: TRPCLink<TRouter>[];
|
|
45
42
|
}
|
|
@@ -53,13 +50,13 @@ export interface TRPCRequestOptions {
|
|
|
53
50
|
export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientWithLinksOptions<TRouter> | CreateTRPCClientWithURLOptions;
|
|
54
51
|
export declare class TRPCClient<TRouter extends AnyRouter> {
|
|
55
52
|
private readonly links;
|
|
56
|
-
readonly runtime:
|
|
53
|
+
readonly runtime: TRPCClientRuntime;
|
|
57
54
|
constructor(opts: CreateTRPCClientOptions<TRouter>);
|
|
58
55
|
private $request;
|
|
59
56
|
private requestAsPromise;
|
|
60
|
-
query<TQueries extends TRouter['_def']['queries'], TPath extends string & keyof TQueries>(path: TPath, ...args: [...inferHandlerInput<TQueries[TPath]>, TRPCRequestOptions?]): CancellablePromise<
|
|
61
|
-
mutation<TMutations extends TRouter['_def']['mutations'], TPath extends string & keyof TMutations>(path: TPath, ...args: [...inferHandlerInput<TMutations[TPath]>, TRPCRequestOptions?]): CancellablePromise<
|
|
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<
|
|
57
|
+
query<TQueries extends TRouter['_def']['queries'], TPath extends string & keyof TQueries>(path: TPath, ...args: [...inferHandlerInput<TQueries[TPath]>, TRPCRequestOptions?]): CancellablePromise<inferProcedureOutput<TQueries[TPath]>>;
|
|
58
|
+
mutation<TMutations extends TRouter['_def']['mutations'], TPath extends string & keyof TMutations>(path: TPath, ...args: [...inferHandlerInput<TMutations[TPath]>, TRPCRequestOptions?]): CancellablePromise<inferProcedureOutput<TMutations[TPath]>>;
|
|
59
|
+
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<TRPCResultMessage<TOutput>, TRPCClientError<TRouter>>>): Unsubscribable;
|
|
63
60
|
}
|
|
64
61
|
export {};
|
|
65
62
|
//# sourceMappingURL=TRPCClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../src/internals/TRPCClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../src/internals/TRPCClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { CancelFn, PromiseAndCancel } from '../links/types';
|
|
2
|
-
declare type
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
declare type BatchLoader<TKey, TValue> = {
|
|
3
|
+
validate: (keys: TKey[]) => boolean;
|
|
4
|
+
fetch: (keys: TKey[]) => {
|
|
5
|
+
promise: Promise<TValue[]>;
|
|
6
|
+
cancel: CancelFn;
|
|
7
|
+
};
|
|
5
8
|
};
|
|
6
9
|
/**
|
|
7
10
|
* Dataloader that's very inspired by https://github.com/graphql/dataloader
|
|
8
11
|
* Less configuration, no caching, and allows you to cancel requests
|
|
9
12
|
* When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled
|
|
10
13
|
*/
|
|
11
|
-
export declare function dataLoader<TKey, TValue>(
|
|
14
|
+
export declare function dataLoader<TKey, TValue>(batchLoader: BatchLoader<TKey, TValue>): {
|
|
12
15
|
load: (key: TKey) => PromiseAndCancel<TValue>;
|
|
13
16
|
};
|
|
14
17
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataLoader.d.ts","sourceRoot":"","sources":["../../src/internals/dataLoader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataLoader.d.ts","sourceRoot":"","sources":["../../src/internals/dataLoader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAa5D,aAAK,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC;IACpC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK;QACvB,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3B,MAAM,EAAE,QAAQ,CAAC;KAClB,CAAC;CACH,CAAC;AAWF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EACrC,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;gBA2FnB,IAAI,KAAG,iBAAiB,MAAM,CAAC;EAsCnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dedupeLink.d.ts","sourceRoot":"","sources":["../../src/links/dedupeLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"dedupeLink.d.ts","sourceRoot":"","sources":["../../src/links/dedupeLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,wBAAgB,UAAU,CACxB,OAAO,SAAS,SAAS,GAAG,SAAS,KAClC,QAAQ,CAAC,OAAO,CAAC,CA6CrB"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { AnyRouter } from '@trpc/server';
|
|
2
|
+
import { HTTPLinkOptions } from './internals/httpUtils';
|
|
2
3
|
import { TRPCLink } from './types';
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
export interface HttpBatchLinkOptions extends HTTPLinkOptions {
|
|
5
|
+
maxURLLength?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function httpBatchLink<TRouter extends AnyRouter>(opts: HttpBatchLinkOptions): TRPCLink<TRouter>;
|
|
5
8
|
//# sourceMappingURL=httpBatchLink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpBatchLink.d.ts","sourceRoot":"","sources":["../../src/links/httpBatchLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"httpBatchLink.d.ts","sourceRoot":"","sources":["../../src/links/httpBatchLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,MAAM,cAAc,CAAC;AAGxD,OAAO,EACL,eAAe,EAIhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,aAAa,CAAC,OAAO,SAAS,SAAS,EACrD,IAAI,EAAE,oBAAoB,GACzB,QAAQ,CAAC,OAAO,CAAC,CAoFnB"}
|