@trpc/client 10.0.0-alpha.3 → 10.0.0-alpha.30
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/dist/TRPCClientError.d.ts +3 -11
- package/dist/TRPCClientError.d.ts.map +1 -1
- package/dist/createTRPCClient.d.ts +7 -4
- package/dist/createTRPCClient.d.ts.map +1 -1
- 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 +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +257 -103
- package/dist/index.mjs +246 -95
- 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/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 +11 -376
- package/dist/links/wsLink.mjs +9 -369
- package/dist/splitLink-62ff9db0.mjs +49 -0
- package/dist/splitLink-8202386e.js +52 -0
- package/dist/wsLink-69f5adb8.js +451 -0
- package/dist/wsLink-9468a563.mjs +436 -0
- package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.cjs.dev.js +81 -15
- package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.cjs.prod.js +81 -15
- package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.esm.js +77 -15
- 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 +76 -9
- package/links/httpLink/dist/trpc-client-links-httpLink.cjs.prod.js +76 -9
- package/links/httpLink/dist/trpc-client-links-httpLink.esm.js +72 -9
- 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 +57 -3
- package/src/index.ts +1 -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 +3 -5
- 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 +3 -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 +16 -14
- 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,23 @@
|
|
|
1
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
1
2
|
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
2
3
|
import _createClass from '@babel/runtime/helpers/createClass';
|
|
4
|
+
import { observable, share, observableToPromise } from '@trpc/server/observable';
|
|
5
|
+
import { T as TRPCClientError } from './wsLink-9468a563.mjs';
|
|
6
|
+
export { T as TRPCClientError, c as createWSClient, w as wsLink } from './wsLink-9468a563.mjs';
|
|
3
7
|
import { httpBatchLink } from './links/httpBatchLink.mjs';
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import '
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
export { httpBatchLink } from './links/httpBatchLink.mjs';
|
|
9
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
10
|
+
import '@babel/runtime/helpers/slicedToArray';
|
|
11
|
+
import { c as createChain } from './splitLink-62ff9db0.mjs';
|
|
12
|
+
export { s as splitLink } from './splitLink-62ff9db0.mjs';
|
|
13
|
+
import '@babel/runtime/helpers/assertThisInitialized';
|
|
14
|
+
import '@babel/runtime/helpers/inherits';
|
|
15
|
+
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
16
|
+
import '@babel/runtime/helpers/getPrototypeOf';
|
|
17
|
+
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
18
|
+
export { httpLink } from './links/httpLink.mjs';
|
|
19
|
+
export { loggerLink } from './links/loggerLink.mjs';
|
|
20
|
+
import './httpUtils-089853f6.mjs';
|
|
16
21
|
|
|
17
22
|
function getWindow() {
|
|
18
23
|
if (typeof window !== 'undefined') {
|
|
@@ -40,12 +45,133 @@ function getFetch(f) {
|
|
|
40
45
|
throw new Error('No fetch implementation found');
|
|
41
46
|
}
|
|
42
47
|
|
|
48
|
+
function dedupeLink() {
|
|
49
|
+
// initialized config
|
|
50
|
+
return function () {
|
|
51
|
+
// initialized in app
|
|
52
|
+
var pending = {};
|
|
53
|
+
return function (_ref) {
|
|
54
|
+
var op = _ref.op,
|
|
55
|
+
next = _ref.next;
|
|
56
|
+
|
|
57
|
+
// initialized for request
|
|
58
|
+
if (op.type !== 'query') {
|
|
59
|
+
// pass through
|
|
60
|
+
return next(op);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
var key = JSON.stringify([op.path, op.input]);
|
|
64
|
+
|
|
65
|
+
if (pending[key]) {
|
|
66
|
+
// console.log('hooking into pending', { op });
|
|
67
|
+
return observable(function (observer) {
|
|
68
|
+
return pending[key].subscribe(observer);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
var shared$ = observable(function (observer) {
|
|
73
|
+
function reset() {
|
|
74
|
+
delete pending[key];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
var subscription = next(op).subscribe({
|
|
78
|
+
next: function next(v) {
|
|
79
|
+
observer.next(v);
|
|
80
|
+
},
|
|
81
|
+
error: function error(e) {
|
|
82
|
+
reset();
|
|
83
|
+
observer.error(e);
|
|
84
|
+
},
|
|
85
|
+
complete: function complete() {
|
|
86
|
+
reset();
|
|
87
|
+
observer.complete();
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
return function () {
|
|
91
|
+
reset();
|
|
92
|
+
subscription.unsubscribe();
|
|
93
|
+
};
|
|
94
|
+
}).pipe(share());
|
|
95
|
+
pending[key] = shared$;
|
|
96
|
+
return shared$;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function retryLink(opts) {
|
|
102
|
+
// initialized config
|
|
103
|
+
return function () {
|
|
104
|
+
// initialized in app
|
|
105
|
+
return function (_ref) {
|
|
106
|
+
var op = _ref.op,
|
|
107
|
+
next = _ref.next;
|
|
108
|
+
// initialized for request
|
|
109
|
+
return observable(function (observer) {
|
|
110
|
+
var next$ = null;
|
|
111
|
+
var attempts = 0;
|
|
112
|
+
var isDone = false;
|
|
113
|
+
|
|
114
|
+
function attempt() {
|
|
115
|
+
var _next$;
|
|
116
|
+
|
|
117
|
+
attempts++;
|
|
118
|
+
(_next$ = next$) === null || _next$ === void 0 ? void 0 : _next$.unsubscribe();
|
|
119
|
+
next$ = next(op).subscribe({
|
|
120
|
+
error: function error(_error) {
|
|
121
|
+
if (attempts >= opts.attempts) {
|
|
122
|
+
observer.error(_error);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
attempt();
|
|
127
|
+
},
|
|
128
|
+
next: function next(result) {
|
|
129
|
+
if ('result' in result.data) {
|
|
130
|
+
isDone = true;
|
|
131
|
+
observer.next(result);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (attempts >= opts.attempts) {
|
|
136
|
+
isDone = true;
|
|
137
|
+
observer.next(result);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
attempt();
|
|
142
|
+
},
|
|
143
|
+
complete: function complete() {
|
|
144
|
+
if (isDone) {
|
|
145
|
+
observer.complete();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
attempt();
|
|
152
|
+
return function () {
|
|
153
|
+
var _next$2;
|
|
154
|
+
|
|
155
|
+
isDone = true;
|
|
156
|
+
(_next$2 = next$) === null || _next$2 === void 0 ? void 0 : _next$2.unsubscribe();
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
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; }
|
|
164
|
+
|
|
165
|
+
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; }
|
|
166
|
+
|
|
43
167
|
/** @internal */
|
|
44
|
-
function transformOperationResult(result) {
|
|
168
|
+
function transformOperationResult(result, runtime) {
|
|
45
169
|
var context = result.context;
|
|
46
170
|
|
|
47
171
|
if ('error' in result.data) {
|
|
48
|
-
var error = TRPCClientError.from(result.data)
|
|
172
|
+
var error = TRPCClientError.from(_objectSpread(_objectSpread({}, result.data), {}, {
|
|
173
|
+
error: runtime.transformer.deserialize(result.data.error)
|
|
174
|
+
}));
|
|
49
175
|
return {
|
|
50
176
|
ok: false,
|
|
51
177
|
error: error,
|
|
@@ -53,75 +179,39 @@ function transformOperationResult(result) {
|
|
|
53
179
|
};
|
|
54
180
|
}
|
|
55
181
|
|
|
56
|
-
var data = result.data.result.data;
|
|
182
|
+
var data = runtime.transformer.deserialize(result.data.result.data);
|
|
57
183
|
return {
|
|
58
184
|
ok: true,
|
|
59
185
|
data: data,
|
|
60
186
|
context: context
|
|
61
187
|
};
|
|
62
188
|
}
|
|
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
189
|
/** @internal */
|
|
87
190
|
|
|
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
|
-
}
|
|
191
|
+
function transformSubscriptionOperationResult(result, runtime) {
|
|
192
|
+
var context = result.context;
|
|
102
193
|
|
|
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
|
-
}
|
|
194
|
+
if ('error' in result.data) {
|
|
195
|
+
var error = TRPCClientError.from(_objectSpread(_objectSpread({}, result.data), {}, {
|
|
196
|
+
error: runtime.transformer.deserialize(result.data.error)
|
|
197
|
+
}), {
|
|
198
|
+
meta: context
|
|
118
199
|
});
|
|
119
|
-
|
|
200
|
+
return {
|
|
201
|
+
ok: false,
|
|
202
|
+
error: error,
|
|
203
|
+
context: context
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
var data = _objectSpread(_objectSpread({}, result.data.result), result.data.result.type === 'data' && {
|
|
208
|
+
data: runtime.transformer.deserialize(result.data.result.data)
|
|
120
209
|
});
|
|
210
|
+
|
|
121
211
|
return {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
212
|
+
ok: true,
|
|
213
|
+
data: data,
|
|
214
|
+
context: context
|
|
125
215
|
};
|
|
126
216
|
}
|
|
127
217
|
|
|
@@ -157,10 +247,22 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
157
247
|
};
|
|
158
248
|
}
|
|
159
249
|
|
|
250
|
+
var transformer = opts.transformer ? 'input' in opts.transformer ? {
|
|
251
|
+
serialize: opts.transformer.input.serialize,
|
|
252
|
+
deserialize: opts.transformer.output.deserialize
|
|
253
|
+
} : opts.transformer : {
|
|
254
|
+
serialize: function serialize(data) {
|
|
255
|
+
return data;
|
|
256
|
+
},
|
|
257
|
+
deserialize: function deserialize(data) {
|
|
258
|
+
return data;
|
|
259
|
+
}
|
|
260
|
+
};
|
|
160
261
|
this.runtime = {
|
|
161
262
|
AbortController: AC,
|
|
162
263
|
fetch: _fetch,
|
|
163
|
-
headers: getHeadersFn()
|
|
264
|
+
headers: getHeadersFn(),
|
|
265
|
+
transformer: transformer
|
|
164
266
|
};
|
|
165
267
|
|
|
166
268
|
if ('links' in opts) {
|
|
@@ -197,6 +299,8 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
197
299
|
}, {
|
|
198
300
|
key: "requestAsPromise",
|
|
199
301
|
value: function requestAsPromise(opts) {
|
|
302
|
+
var _this2 = this;
|
|
303
|
+
|
|
200
304
|
var req$ = this.$request(opts);
|
|
201
305
|
|
|
202
306
|
var _observableToPromise = observableToPromise(req$),
|
|
@@ -205,7 +309,7 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
205
309
|
|
|
206
310
|
var cancellablePromise = new Promise(function (resolve, reject) {
|
|
207
311
|
promise.then(function (result) {
|
|
208
|
-
var transformed = transformOperationResult(result);
|
|
312
|
+
var transformed = transformOperationResult(result, _this2.runtime);
|
|
209
313
|
|
|
210
314
|
if (transformed.ok) {
|
|
211
315
|
resolve(transformed.data);
|
|
@@ -223,26 +327,34 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
223
327
|
}, {
|
|
224
328
|
key: "query",
|
|
225
329
|
value: function query(path) {
|
|
226
|
-
var
|
|
330
|
+
var _args$;
|
|
331
|
+
|
|
332
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
333
|
+
args[_key - 1] = arguments[_key];
|
|
334
|
+
}
|
|
227
335
|
|
|
228
|
-
var context = (
|
|
336
|
+
var context = (_args$ = args[1]) === null || _args$ === void 0 ? void 0 : _args$.context;
|
|
229
337
|
return this.requestAsPromise({
|
|
230
338
|
type: 'query',
|
|
231
339
|
path: path,
|
|
232
|
-
input:
|
|
340
|
+
input: args[0],
|
|
233
341
|
context: context
|
|
234
342
|
});
|
|
235
343
|
}
|
|
236
344
|
}, {
|
|
237
345
|
key: "mutation",
|
|
238
346
|
value: function mutation(path) {
|
|
239
|
-
var
|
|
347
|
+
var _args$2;
|
|
240
348
|
|
|
241
|
-
var
|
|
349
|
+
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
350
|
+
args[_key2 - 1] = arguments[_key2];
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
var context = (_args$2 = args[1]) === null || _args$2 === void 0 ? void 0 : _args$2.context;
|
|
242
354
|
return this.requestAsPromise({
|
|
243
355
|
type: 'mutation',
|
|
244
356
|
path: path,
|
|
245
|
-
input:
|
|
357
|
+
input: args[0],
|
|
246
358
|
context: context
|
|
247
359
|
});
|
|
248
360
|
}
|
|
@@ -255,21 +367,21 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
255
367
|
input: input,
|
|
256
368
|
context: opts.context
|
|
257
369
|
});
|
|
258
|
-
var
|
|
370
|
+
var runtime = this.runtime;
|
|
371
|
+
return observable$.subscribe({
|
|
259
372
|
next: function next(result) {
|
|
260
|
-
var _opts$
|
|
373
|
+
var _opts$error;
|
|
261
374
|
|
|
262
|
-
|
|
263
|
-
var _opts$error;
|
|
375
|
+
var transformed = transformSubscriptionOperationResult(result, runtime);
|
|
264
376
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
(_opts$
|
|
377
|
+
if (transformed.ok) {
|
|
378
|
+
var _opts$next;
|
|
379
|
+
|
|
380
|
+
(_opts$next = opts.next) === null || _opts$next === void 0 ? void 0 : _opts$next.call(opts, transformed.data);
|
|
269
381
|
return;
|
|
270
382
|
}
|
|
271
383
|
|
|
272
|
-
(_opts$
|
|
384
|
+
(_opts$error = opts.error) === null || _opts$error === void 0 ? void 0 : _opts$error.call(opts, transformed.error);
|
|
273
385
|
},
|
|
274
386
|
error: function error(err) {
|
|
275
387
|
var _opts$error2;
|
|
@@ -282,18 +394,57 @@ var TRPCClient = /*#__PURE__*/function () {
|
|
|
282
394
|
(_opts$complete = opts.complete) === null || _opts$complete === void 0 ? void 0 : _opts$complete.call(opts);
|
|
283
395
|
}
|
|
284
396
|
});
|
|
285
|
-
return function () {
|
|
286
|
-
observer.unsubscribe();
|
|
287
|
-
};
|
|
288
397
|
}
|
|
289
398
|
}]);
|
|
290
399
|
|
|
291
400
|
return TRPCClient;
|
|
292
401
|
}();
|
|
293
402
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
403
|
+
function makeProxy(client) {
|
|
404
|
+
for (var _len = arguments.length, path = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
405
|
+
path[_key - 1] = arguments[_key];
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
var proxy = new Proxy(function () {// noop
|
|
409
|
+
}, {
|
|
410
|
+
get: function get(_obj, name) {
|
|
411
|
+
if (name in client && !path.length) {
|
|
412
|
+
return client[name];
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
if (typeof name === 'string') {
|
|
416
|
+
return makeProxy.apply(void 0, [client].concat(path, [name]));
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
return client;
|
|
420
|
+
},
|
|
421
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
422
|
+
apply: function apply(_1, _2, args) {
|
|
423
|
+
var _ref;
|
|
424
|
+
|
|
425
|
+
var pathCopy = [].concat(path);
|
|
426
|
+
var type = pathCopy.pop();
|
|
427
|
+
|
|
428
|
+
if (type === 'mutate') {
|
|
429
|
+
type = 'mutation';
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
var fullPath = pathCopy.join('.');
|
|
433
|
+
|
|
434
|
+
if (type.startsWith('use')) {
|
|
435
|
+
throw new Error("Invalid hook call");
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
return (_ref = client)[type].apply(_ref, [fullPath].concat(_toConsumableArray(args)));
|
|
439
|
+
}
|
|
440
|
+
});
|
|
441
|
+
return proxy;
|
|
297
442
|
}
|
|
298
443
|
|
|
299
|
-
|
|
444
|
+
function createTRPCClient(opts) {
|
|
445
|
+
var client = new TRPCClient(opts); // Here we need to wrap the client in a Proxy to be able to call deep objects and translate them to `client.query`-calls
|
|
446
|
+
|
|
447
|
+
return makeProxy(client);
|
|
448
|
+
} // Also the client created above needs to somehow be like `TRPCClient<Router> & Omit<Router, 'createCaller' | 'createProcedure' | '_def' | 'transformer' | 'errorFormatter' | 'getErrorShape>`
|
|
449
|
+
|
|
450
|
+
export { createTRPCClient, 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,CA4CrB"}
|
|
@@ -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"}
|