@trpc/client 10.0.0-alpha.8 → 10.0.0-proxy-alpha.53
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 +16 -20
- 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 +37 -0
- package/dist/createTRPCClientProxy.d.ts.map +1 -0
- package/dist/httpUtils-44781613.mjs +76 -0
- package/dist/httpUtils-801112a6.js +79 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +260 -280
- package/dist/index.mjs +253 -271
- package/dist/internals/TRPCClient.d.ts +39 -21
- package/dist/internals/TRPCClient.d.ts.map +1 -1
- package/dist/internals/dataLoader.d.ts +7 -6
- package/dist/internals/dataLoader.d.ts.map +1 -1
- package/dist/internals/fetchHelpers.d.ts +1 -1
- package/dist/internals/fetchHelpers.d.ts.map +1 -1
- package/dist/internals/retryDelay.d.ts.map +1 -1
- package/dist/links/dedupeLink.d.ts.map +1 -1
- package/dist/links/httpBatchLink.d.ts +2 -2
- package/dist/links/httpBatchLink.d.ts.map +1 -1
- package/dist/links/httpBatchLink.js +189 -172
- package/dist/links/httpBatchLink.mjs +189 -172
- package/dist/links/httpLink.d.ts +1 -1
- package/dist/links/httpLink.d.ts.map +1 -1
- package/dist/links/httpLink.js +31 -35
- package/dist/links/httpLink.mjs +31 -35
- 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 +31 -0
- package/dist/links/internals/httpUtils.d.ts.map +1 -0
- package/dist/links/internals/transformResult.d.ts +28 -0
- package/dist/links/internals/transformResult.d.ts.map +1 -0
- package/dist/links/loggerLink.d.ts +3 -3
- package/dist/links/loggerLink.d.ts.map +1 -1
- package/dist/links/loggerLink.js +90 -96
- package/dist/links/loggerLink.mjs +90 -91
- 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 +13 -12
- package/dist/links/types.d.ts.map +1 -1
- package/dist/links/wsLink.d.ts +12 -5
- package/dist/links/wsLink.d.ts.map +1 -1
- package/dist/links/wsLink.js +250 -358
- package/dist/links/wsLink.mjs +250 -348
- package/dist/splitLink-695ae288.js +48 -0
- package/dist/splitLink-ad44a55d.mjs +45 -0
- package/dist/transformResult-106791d7.mjs +62 -0
- package/dist/transformResult-e15ccdf6.js +65 -0
- package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.cjs.dev.js +15 -13
- package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.cjs.prod.js +15 -13
- package/links/httpBatchLink/dist/trpc-client-links-httpBatchLink.esm.js +12 -10
- package/links/httpLink/dist/trpc-client-links-httpLink.cjs.dev.js +4 -4
- package/links/httpLink/dist/trpc-client-links-httpLink.cjs.prod.js +4 -4
- package/links/httpLink/dist/trpc-client-links-httpLink.esm.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/package.json +23 -34
- package/src/TRPCClientError.ts +38 -28
- package/src/createTRPCClient.ts +8 -3
- package/src/createTRPCClientProxy.ts +113 -0
- package/src/index.ts +2 -1
- package/src/internals/TRPCClient.ts +118 -77
- package/src/internals/dataLoader.ts +116 -53
- package/src/internals/fetchHelpers.ts +2 -2
- package/src/links/dedupeLink.test.ts +9 -15
- package/src/links/dedupeLink.ts +6 -7
- package/src/links/httpBatchLink.ts +73 -36
- package/src/links/httpLink.ts +18 -6
- package/src/links/index.ts +8 -0
- package/src/links/internals/createChain.test.ts +23 -38
- package/src/links/internals/createChain.ts +8 -3
- package/src/links/internals/httpUtils.ts +117 -0
- package/src/links/internals/transformResult.ts +40 -0
- package/src/links/loggerLink.ts +6 -7
- package/src/links/retryLink.ts +2 -3
- package/src/links/splitLink.test.ts +3 -3
- package/src/links/splitLink.ts +5 -5
- package/src/links/types.ts +15 -12
- package/src/links/wsLink.ts +57 -23
- 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/httpUtils-1f9e4e3c.js +0 -97
- package/dist/httpUtils-c09d7b79.mjs +0 -91
- package/dist/index.ts.js +0 -1
- package/dist/internals/transformRPCResponse.d.ts +0 -15
- package/dist/internals/transformRPCResponse.d.ts.map +0 -1
- package/dist/links/httpBatchLink.ts.js +0 -1
- package/dist/links/httpLink.ts.js +0 -1
- package/dist/links/httpUtils.d.ts +0 -22
- package/dist/links/httpUtils.d.ts.map +0 -1
- package/dist/links/internals/transformOperationResult.d.ts +0 -16
- package/dist/links/internals/transformOperationResult.d.ts.map +0 -1
- package/dist/links/loggerLink.ts.js +0 -1
- package/dist/links/splitLink.ts.js +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/links/wsLink.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/internals/transformOperationResult.ts +0 -25
- 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,299 +1,281 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
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
|
-
|
|
5
|
-
import {
|
|
6
|
-
export {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import
|
|
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
|
-
|
|
19
|
-
|
|
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
|
-
|
|
26
|
-
|
|
21
|
+
const win = getWindow();
|
|
22
|
+
return (ac ?? win.AbortController) ?? undefined;
|
|
27
23
|
}
|
|
28
24
|
|
|
29
25
|
function getFetch(f) {
|
|
30
|
-
|
|
31
|
-
|
|
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 _createClass(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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
167
|
-
|
|
168
|
-
return
|
|
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
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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 abortablePromise = new Promise((resolve, reject)=>{
|
|
156
|
+
opts.signal?.addEventListener('abort', abort);
|
|
157
|
+
promise.then((envelope)=>{
|
|
158
|
+
resolve(envelope.result.data);
|
|
159
|
+
}).catch((err)=>{
|
|
160
|
+
reject(TRPCClientError.from(err));
|
|
161
|
+
});
|
|
218
162
|
});
|
|
219
|
-
|
|
220
|
-
cancellablePromise.cancel = abort;
|
|
221
|
-
return cancellablePromise;
|
|
163
|
+
return abortablePromise;
|
|
222
164
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
});
|
|
165
|
+
query(path, ...args) {
|
|
166
|
+
// FIXME: Should be inferred from `args`
|
|
167
|
+
const context = args[1]?.context;
|
|
168
|
+
const signal = args[1]?.signal;
|
|
169
|
+
return this.requestAsPromise({
|
|
170
|
+
type: 'query',
|
|
171
|
+
path,
|
|
172
|
+
input: args[0],
|
|
173
|
+
context,
|
|
174
|
+
signal
|
|
175
|
+
});
|
|
235
176
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
});
|
|
177
|
+
mutation(path, ...args) {
|
|
178
|
+
// FIXME: Should be inferred from `args`
|
|
179
|
+
const context = args[1]?.context;
|
|
180
|
+
const signal = args[1]?.signal;
|
|
181
|
+
return this.requestAsPromise({
|
|
182
|
+
type: 'mutation',
|
|
183
|
+
path,
|
|
184
|
+
input: args[0],
|
|
185
|
+
context,
|
|
186
|
+
signal
|
|
187
|
+
});
|
|
248
188
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
189
|
+
subscription(path, input, opts) {
|
|
190
|
+
const observable$ = this.$request({
|
|
191
|
+
type: 'subscription',
|
|
192
|
+
path,
|
|
193
|
+
input,
|
|
194
|
+
context: opts?.context
|
|
195
|
+
});
|
|
196
|
+
return observable$.subscribe({
|
|
197
|
+
next (envelope) {
|
|
198
|
+
if (envelope.result.type === 'started') {
|
|
199
|
+
opts.onStarted?.();
|
|
200
|
+
} else if (envelope.result.type === 'stopped') {
|
|
201
|
+
opts.onStopped?.();
|
|
202
|
+
} else {
|
|
203
|
+
opts.onData?.(envelope.result.data);
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
error (err) {
|
|
207
|
+
opts.onError?.(err);
|
|
208
|
+
},
|
|
209
|
+
complete () {
|
|
210
|
+
opts.onComplete?.();
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
constructor(opts){
|
|
215
|
+
const _fetch = getFetch(opts?.fetch);
|
|
216
|
+
const AC = getAbortController(opts?.AbortController);
|
|
217
|
+
this.requestId = 0;
|
|
218
|
+
function getHeadersFn() {
|
|
219
|
+
if (opts.headers) {
|
|
220
|
+
const headers = opts.headers;
|
|
221
|
+
return typeof headers === 'function' ? headers : ()=>headers;
|
|
222
|
+
}
|
|
223
|
+
return ()=>({});
|
|
224
|
+
}
|
|
225
|
+
const transformer = opts.transformer ? 'input' in opts.transformer ? {
|
|
226
|
+
serialize: opts.transformer.input.serialize,
|
|
227
|
+
deserialize: opts.transformer.output.deserialize
|
|
228
|
+
} : opts.transformer : {
|
|
229
|
+
serialize: (data)=>data,
|
|
230
|
+
deserialize: (data)=>data
|
|
231
|
+
};
|
|
232
|
+
this.runtime = {
|
|
233
|
+
AbortController: AC,
|
|
234
|
+
fetch: _fetch,
|
|
235
|
+
headers: getHeadersFn(),
|
|
236
|
+
transformer
|
|
237
|
+
};
|
|
238
|
+
if ('links' in opts) {
|
|
239
|
+
this.links = opts.links.map((link)=>link(this.runtime));
|
|
240
|
+
} else {
|
|
241
|
+
this.links = [
|
|
242
|
+
httpBatchLink({
|
|
243
|
+
url: opts.url
|
|
244
|
+
})(this.runtime),
|
|
245
|
+
];
|
|
283
246
|
}
|
|
284
|
-
});
|
|
285
|
-
return function () {
|
|
286
|
-
observer.unsubscribe();
|
|
287
|
-
};
|
|
288
247
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
return TRPCClient;
|
|
292
|
-
}();
|
|
248
|
+
}
|
|
293
249
|
|
|
294
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
295
250
|
function createTRPCClient(opts) {
|
|
296
|
-
|
|
251
|
+
const client = new TRPCClient(opts);
|
|
252
|
+
return client;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
const clientCallTypeMap = {
|
|
256
|
+
query: 'query',
|
|
257
|
+
mutate: 'mutation',
|
|
258
|
+
subscribe: 'subscription'
|
|
259
|
+
};
|
|
260
|
+
/**
|
|
261
|
+
* @deprecated use createTRPCProxyClient instead
|
|
262
|
+
* @internal
|
|
263
|
+
*/ function createTRPCClientProxy(client) {
|
|
264
|
+
const proxy = createProxy(({ path , args })=>{
|
|
265
|
+
const pathCopy = [
|
|
266
|
+
...path
|
|
267
|
+
];
|
|
268
|
+
const clientCallType = pathCopy.pop();
|
|
269
|
+
const procedureType = clientCallTypeMap[clientCallType];
|
|
270
|
+
const fullPath = pathCopy.join('.');
|
|
271
|
+
return client[procedureType](fullPath, ...args);
|
|
272
|
+
});
|
|
273
|
+
return proxy;
|
|
274
|
+
}
|
|
275
|
+
function createTRPCProxyClient(opts) {
|
|
276
|
+
const client = createTRPCClient(opts);
|
|
277
|
+
const proxy = createTRPCClientProxy(client);
|
|
278
|
+
return proxy;
|
|
297
279
|
}
|
|
298
280
|
|
|
299
|
-
export { createTRPCClient, getFetch };
|
|
281
|
+
export { createTRPCClient, createTRPCClientProxy, createTRPCProxyClient, dedupeLink, getFetch, retryLink };
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
import { AnyRouter, inferHandlerInput, inferProcedureInput, inferSubscriptionOutput } from '@trpc/server';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { HTTPHeaders, LinkRuntime, OperationContext, TRPCLink } from '../links/types';
|
|
5
|
-
import { UnsubscribeFn } from '../rx';
|
|
6
|
-
import { Observer } from '../rx/types';
|
|
1
|
+
import { AnyRouter, ClientDataTransformerOptions, inferHandlerInput, inferProcedureInput, inferProcedureOutput, inferSubscriptionOutput } from '@trpc/server';
|
|
2
|
+
import { ProcedureRecord } from '@trpc/server';
|
|
3
|
+
import { Unsubscribable } from '@trpc/server/observable';
|
|
7
4
|
import { TRPCClientError } from '../TRPCClientError';
|
|
8
|
-
|
|
9
|
-
cancel: CancelFn;
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* @deprecated no longer used
|
|
13
|
-
*/
|
|
14
|
-
export interface FetchOptions {
|
|
15
|
-
fetch?: typeof fetch;
|
|
16
|
-
AbortController?: typeof AbortController;
|
|
17
|
-
}
|
|
5
|
+
import { HTTPHeaders, OperationContext, TRPCClientRuntime, TRPCLink } from '../links/types';
|
|
18
6
|
interface CreateTRPCClientBaseOptions {
|
|
19
7
|
/**
|
|
20
8
|
* Add ponyfill for fetch
|
|
@@ -28,6 +16,11 @@ interface CreateTRPCClientBaseOptions {
|
|
|
28
16
|
* headers to be set on outgoing requests / callback that of said headers
|
|
29
17
|
*/
|
|
30
18
|
headers?: HTTPHeaders | (() => HTTPHeaders | Promise<HTTPHeaders>);
|
|
19
|
+
/**
|
|
20
|
+
* Data transformer
|
|
21
|
+
* @link https://trpc.io/docs/data-transformers
|
|
22
|
+
**/
|
|
23
|
+
transformer?: ClientDataTransformerOptions;
|
|
31
24
|
}
|
|
32
25
|
/** @internal */
|
|
33
26
|
export interface CreateTRPCClientWithURLOptions extends CreateTRPCClientBaseOptions {
|
|
@@ -39,7 +32,7 @@ export interface CreateTRPCClientWithURLOptions extends CreateTRPCClientBaseOpti
|
|
|
39
32
|
/** @internal */
|
|
40
33
|
export interface CreateTRPCClientWithLinksOptions<TRouter extends AnyRouter> extends CreateTRPCClientBaseOptions {
|
|
41
34
|
/**
|
|
42
|
-
* @link
|
|
35
|
+
* @link https://trpc.io/docs/links
|
|
43
36
|
**/
|
|
44
37
|
links: TRPCLink<TRouter>[];
|
|
45
38
|
}
|
|
@@ -48,18 +41,43 @@ export interface TRPCRequestOptions {
|
|
|
48
41
|
* Pass additional context to links
|
|
49
42
|
*/
|
|
50
43
|
context?: OperationContext;
|
|
44
|
+
signal?: AbortSignal;
|
|
45
|
+
}
|
|
46
|
+
export interface TRPCSubscriptionObserver<TValue, TError> {
|
|
47
|
+
onStarted: () => void;
|
|
48
|
+
onData: (value: TValue) => void;
|
|
49
|
+
onError: (err: TError) => void;
|
|
50
|
+
onStopped: () => void;
|
|
51
|
+
onComplete: () => void;
|
|
51
52
|
}
|
|
52
53
|
/** @internal */
|
|
53
54
|
export declare type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientWithLinksOptions<TRouter> | CreateTRPCClientWithURLOptions;
|
|
55
|
+
export declare type AssertType<T, K> = T extends K ? T : never;
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated
|
|
58
|
+
*/
|
|
59
|
+
export declare type AssertLegacyDef<TRouter extends AnyRouter> = TRouter['_def']['legacy'] extends Record<'subscriptions' | 'queries' | 'mutations', ProcedureRecord> ? TRouter['_def']['legacy'] : {
|
|
60
|
+
subscriptions: {};
|
|
61
|
+
queries: {};
|
|
62
|
+
mutations: {};
|
|
63
|
+
};
|
|
54
64
|
export declare class TRPCClient<TRouter extends AnyRouter> {
|
|
55
65
|
private readonly links;
|
|
56
|
-
readonly runtime:
|
|
66
|
+
readonly runtime: TRPCClientRuntime;
|
|
67
|
+
private requestId;
|
|
68
|
+
private getRequestId;
|
|
57
69
|
constructor(opts: CreateTRPCClientOptions<TRouter>);
|
|
58
70
|
private $request;
|
|
59
71
|
private requestAsPromise;
|
|
60
|
-
query<TQueries extends TRouter['
|
|
61
|
-
|
|
62
|
-
|
|
72
|
+
query<TQueries extends AssertLegacyDef<TRouter>['queries'], TPath extends string & keyof TQueries>(path: TPath, ...args: [
|
|
73
|
+
...inferHandlerInput<AssertType<TQueries, ProcedureRecord>[TPath]>,
|
|
74
|
+
TRPCRequestOptions?
|
|
75
|
+
]): Promise<inferProcedureOutput<TQueries[TPath]>>;
|
|
76
|
+
mutation<TMutations extends AssertLegacyDef<TRouter>['mutations'], TPath extends string & keyof TMutations>(path: TPath, ...args: [
|
|
77
|
+
...inferHandlerInput<AssertType<TMutations, ProcedureRecord>[TPath]>,
|
|
78
|
+
TRPCRequestOptions?
|
|
79
|
+
]): Promise<inferProcedureOutput<TMutations[TPath]>>;
|
|
80
|
+
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
81
|
}
|
|
64
82
|
export {};
|
|
65
83
|
//# sourceMappingURL=TRPCClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"TRPCClient.d.ts","sourceRoot":"","sources":["../../../../packages/client/src/internals/TRPCClient.ts"],"names":[],"mappings":"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"}
|