@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.js
CHANGED
|
@@ -2,313 +2,293 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
var
|
|
5
|
+
var observable = require('@trpc/server/observable');
|
|
6
|
+
var transformResult = require('./transformResult-e15ccdf6.js');
|
|
7
7
|
var links_httpBatchLink = require('./links/httpBatchLink.js');
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
|
|
15
|
-
var _wrapNativeSuper = require('@babel/runtime/helpers/wrapNativeSuper');
|
|
16
|
-
require('./observable-85669100.js');
|
|
17
|
-
require('./httpUtils-1f9e4e3c.js');
|
|
18
|
-
require('@babel/runtime/helpers/defineProperty');
|
|
19
|
-
|
|
20
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
21
|
-
|
|
22
|
-
var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
|
|
23
|
-
var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
|
|
24
|
-
var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);
|
|
25
|
-
var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
|
|
26
|
-
var _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);
|
|
27
|
-
var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);
|
|
28
|
-
var _wrapNativeSuper__default = /*#__PURE__*/_interopDefaultLegacy(_wrapNativeSuper);
|
|
8
|
+
var links_splitLink = require('./splitLink-695ae288.js');
|
|
9
|
+
var shared = require('@trpc/server/shared');
|
|
10
|
+
var links_httpLink = require('./links/httpLink.js');
|
|
11
|
+
var links_loggerLink = require('./links/loggerLink.js');
|
|
12
|
+
var links_wsLink = require('./links/wsLink.js');
|
|
13
|
+
require('./httpUtils-801112a6.js');
|
|
29
14
|
|
|
30
15
|
function getWindow() {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return global;
|
|
16
|
+
if (typeof window !== 'undefined') {
|
|
17
|
+
return window;
|
|
18
|
+
}
|
|
19
|
+
return global;
|
|
36
20
|
}
|
|
37
21
|
function getAbortController(ac) {
|
|
38
|
-
|
|
39
|
-
|
|
22
|
+
const win = getWindow();
|
|
23
|
+
return (ac ?? win.AbortController) ?? undefined;
|
|
40
24
|
}
|
|
41
25
|
|
|
42
26
|
function getFetch(f) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
var win = getWindow();
|
|
48
|
-
|
|
49
|
-
if (win.fetch) {
|
|
50
|
-
return typeof win.fetch.bind === 'function' ? win.fetch.bind(win) : win.fetch;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
throw new Error('No fetch implementation found');
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/** @internal */
|
|
57
|
-
function transformOperationResult(result) {
|
|
58
|
-
var context = result.context;
|
|
59
|
-
|
|
60
|
-
if ('error' in result.data) {
|
|
61
|
-
var error = TRPCClientError.TRPCClientError.from(result.data);
|
|
62
|
-
return {
|
|
63
|
-
ok: false,
|
|
64
|
-
error: error,
|
|
65
|
-
context: context
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
var data = result.data.result.data;
|
|
70
|
-
return {
|
|
71
|
-
ok: true,
|
|
72
|
-
data: data,
|
|
73
|
-
context: context
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
|
|
78
|
-
|
|
79
|
-
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; } }
|
|
80
|
-
|
|
81
|
-
var ObservableAbortError = /*#__PURE__*/function (_Error) {
|
|
82
|
-
_inherits__default["default"](ObservableAbortError, _Error);
|
|
83
|
-
|
|
84
|
-
var _super = /*#__PURE__*/_createSuper(ObservableAbortError);
|
|
85
|
-
|
|
86
|
-
function ObservableAbortError(message) {
|
|
87
|
-
var _this;
|
|
88
|
-
|
|
89
|
-
_classCallCheck__default["default"](this, ObservableAbortError);
|
|
90
|
-
|
|
91
|
-
_this = _super.call(this, message);
|
|
92
|
-
_this.name = 'ObservableAbortError';
|
|
93
|
-
Object.setPrototypeOf(_assertThisInitialized__default["default"](_this), ObservableAbortError.prototype);
|
|
94
|
-
return _this;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return _createClass__default["default"](ObservableAbortError);
|
|
98
|
-
}( /*#__PURE__*/_wrapNativeSuper__default["default"](Error));
|
|
99
|
-
/** @internal */
|
|
100
|
-
|
|
101
|
-
function observableToPromise(observable) {
|
|
102
|
-
var abort;
|
|
103
|
-
var promise = new Promise(function (resolve, reject) {
|
|
104
|
-
var isDone = false;
|
|
105
|
-
|
|
106
|
-
function onDone() {
|
|
107
|
-
if (isDone) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
isDone = true;
|
|
112
|
-
reject(new ObservableAbortError('This operation was cancelled.'));
|
|
113
|
-
obs$.unsubscribe();
|
|
27
|
+
if (f) {
|
|
28
|
+
return f;
|
|
114
29
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
onDone();
|
|
121
|
-
},
|
|
122
|
-
error: function error(data) {
|
|
123
|
-
isDone = true;
|
|
124
|
-
reject(data);
|
|
125
|
-
onDone();
|
|
126
|
-
},
|
|
127
|
-
complete: function complete() {
|
|
128
|
-
isDone = true;
|
|
129
|
-
onDone();
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
abort = onDone;
|
|
133
|
-
});
|
|
134
|
-
return {
|
|
135
|
-
promise: promise,
|
|
136
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
137
|
-
abort: abort
|
|
138
|
-
};
|
|
30
|
+
const win = getWindow();
|
|
31
|
+
if (win.fetch) {
|
|
32
|
+
return typeof win.fetch.bind === 'function' ? win.fetch.bind(win) : win.fetch;
|
|
33
|
+
}
|
|
34
|
+
throw new Error('No fetch implementation found');
|
|
139
35
|
}
|
|
140
36
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
37
|
+
function dedupeLink() {
|
|
38
|
+
// initialized config
|
|
39
|
+
return ()=>{
|
|
40
|
+
// initialized in app
|
|
41
|
+
const pending = {};
|
|
42
|
+
return ({ op , next })=>{
|
|
43
|
+
// initialized for request
|
|
44
|
+
if (op.type !== 'query') {
|
|
45
|
+
// pass through
|
|
46
|
+
return next(op);
|
|
47
|
+
}
|
|
48
|
+
const key = JSON.stringify([
|
|
49
|
+
op.path,
|
|
50
|
+
op.input
|
|
51
|
+
]);
|
|
52
|
+
const obs$ = pending[key];
|
|
53
|
+
if (obs$) {
|
|
54
|
+
// console.log('hooking into pending', { op });
|
|
55
|
+
return observable.observable((observer)=>obs$.subscribe(observer));
|
|
56
|
+
}
|
|
57
|
+
const shared$ = observable.observable((observer)=>{
|
|
58
|
+
function reset() {
|
|
59
|
+
delete pending[key];
|
|
60
|
+
}
|
|
61
|
+
const subscription = next(op).subscribe({
|
|
62
|
+
next (v) {
|
|
63
|
+
observer.next(v);
|
|
64
|
+
},
|
|
65
|
+
error (e) {
|
|
66
|
+
reset();
|
|
67
|
+
observer.error(e);
|
|
68
|
+
},
|
|
69
|
+
complete () {
|
|
70
|
+
reset();
|
|
71
|
+
observer.complete();
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return ()=>{
|
|
75
|
+
reset();
|
|
76
|
+
subscription.unsubscribe();
|
|
77
|
+
};
|
|
78
|
+
}).pipe(observable.share());
|
|
79
|
+
pending[key] = shared$;
|
|
80
|
+
return shared$;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
145
83
|
}
|
|
146
84
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
85
|
+
function retryLink(opts) {
|
|
86
|
+
// initialized config
|
|
87
|
+
return ()=>{
|
|
88
|
+
// initialized in app
|
|
89
|
+
return ({ op , next })=>{
|
|
90
|
+
// initialized for request
|
|
91
|
+
return observable.observable((observer)=>{
|
|
92
|
+
let next$ = null;
|
|
93
|
+
let attempts = 0;
|
|
94
|
+
let isDone = false;
|
|
95
|
+
function attempt() {
|
|
96
|
+
attempts++;
|
|
97
|
+
next$?.unsubscribe();
|
|
98
|
+
next$ = next(op).subscribe({
|
|
99
|
+
error (error) {
|
|
100
|
+
if (attempts >= opts.attempts) {
|
|
101
|
+
observer.error(error);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
attempt();
|
|
105
|
+
},
|
|
106
|
+
next (result) {
|
|
107
|
+
if ('result' in result.result) {
|
|
108
|
+
isDone = true;
|
|
109
|
+
observer.next(result);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (attempts >= opts.attempts) {
|
|
113
|
+
isDone = true;
|
|
114
|
+
observer.next(result);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
attempt();
|
|
118
|
+
},
|
|
119
|
+
complete () {
|
|
120
|
+
if (isDone) {
|
|
121
|
+
observer.complete();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
attempt();
|
|
127
|
+
return ()=>{
|
|
128
|
+
isDone = true;
|
|
129
|
+
next$?.unsubscribe();
|
|
130
|
+
};
|
|
131
|
+
});
|
|
165
132
|
};
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
return function () {
|
|
169
|
-
return {};
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
this.runtime = {
|
|
174
|
-
AbortController: AC,
|
|
175
|
-
fetch: _fetch,
|
|
176
|
-
headers: getHeadersFn()
|
|
177
133
|
};
|
|
134
|
+
}
|
|
178
135
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
return
|
|
182
|
-
});
|
|
183
|
-
} else {
|
|
184
|
-
this.links = [links_httpBatchLink.httpBatchLink({
|
|
185
|
-
url: opts.url
|
|
186
|
-
})(this.runtime)];
|
|
136
|
+
class TRPCClient {
|
|
137
|
+
getRequestId() {
|
|
138
|
+
return ++this.requestId;
|
|
187
139
|
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
op: {
|
|
201
|
-
id: getRequestId(),
|
|
202
|
-
type: type,
|
|
203
|
-
path: path,
|
|
204
|
-
input: input,
|
|
205
|
-
context: context
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
return chain$.pipe(share.share());
|
|
140
|
+
$request({ type , input , path , context ={} }) {
|
|
141
|
+
const chain$ = links_splitLink.createChain({
|
|
142
|
+
links: this.links,
|
|
143
|
+
op: {
|
|
144
|
+
id: this.getRequestId(),
|
|
145
|
+
type,
|
|
146
|
+
path,
|
|
147
|
+
input,
|
|
148
|
+
context
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
return chain$.pipe(observable.share());
|
|
209
152
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
promise.then(function (result) {
|
|
221
|
-
var transformed = transformOperationResult(result);
|
|
222
|
-
|
|
223
|
-
if (transformed.ok) {
|
|
224
|
-
resolve(transformed.data);
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
reject(transformed.error);
|
|
229
|
-
}).catch(function (err) {
|
|
230
|
-
reject(TRPCClientError.TRPCClientError.from(err));
|
|
153
|
+
requestAsPromise(opts) {
|
|
154
|
+
const req$ = this.$request(opts);
|
|
155
|
+
const { promise , abort } = observable.observableToPromise(req$);
|
|
156
|
+
const abortablePromise = new Promise((resolve, reject)=>{
|
|
157
|
+
opts.signal?.addEventListener('abort', abort);
|
|
158
|
+
promise.then((envelope)=>{
|
|
159
|
+
resolve(envelope.result.data);
|
|
160
|
+
}).catch((err)=>{
|
|
161
|
+
reject(transformResult.TRPCClientError.from(err));
|
|
162
|
+
});
|
|
231
163
|
});
|
|
232
|
-
|
|
233
|
-
cancellablePromise.cancel = abort;
|
|
234
|
-
return cancellablePromise;
|
|
164
|
+
return abortablePromise;
|
|
235
165
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
});
|
|
166
|
+
query(path, ...args) {
|
|
167
|
+
// FIXME: Should be inferred from `args`
|
|
168
|
+
const context = args[1]?.context;
|
|
169
|
+
const signal = args[1]?.signal;
|
|
170
|
+
return this.requestAsPromise({
|
|
171
|
+
type: 'query',
|
|
172
|
+
path,
|
|
173
|
+
input: args[0],
|
|
174
|
+
context,
|
|
175
|
+
signal
|
|
176
|
+
});
|
|
248
177
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
});
|
|
178
|
+
mutation(path, ...args) {
|
|
179
|
+
// FIXME: Should be inferred from `args`
|
|
180
|
+
const context = args[1]?.context;
|
|
181
|
+
const signal = args[1]?.signal;
|
|
182
|
+
return this.requestAsPromise({
|
|
183
|
+
type: 'mutation',
|
|
184
|
+
path,
|
|
185
|
+
input: args[0],
|
|
186
|
+
context,
|
|
187
|
+
signal
|
|
188
|
+
});
|
|
261
189
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
190
|
+
subscription(path, input, opts) {
|
|
191
|
+
const observable$ = this.$request({
|
|
192
|
+
type: 'subscription',
|
|
193
|
+
path,
|
|
194
|
+
input,
|
|
195
|
+
context: opts?.context
|
|
196
|
+
});
|
|
197
|
+
return observable$.subscribe({
|
|
198
|
+
next (envelope) {
|
|
199
|
+
if (envelope.result.type === 'started') {
|
|
200
|
+
opts.onStarted?.();
|
|
201
|
+
} else if (envelope.result.type === 'stopped') {
|
|
202
|
+
opts.onStopped?.();
|
|
203
|
+
} else {
|
|
204
|
+
opts.onData?.(envelope.result.data);
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
error (err) {
|
|
208
|
+
opts.onError?.(err);
|
|
209
|
+
},
|
|
210
|
+
complete () {
|
|
211
|
+
opts.onComplete?.();
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
constructor(opts){
|
|
216
|
+
const _fetch = getFetch(opts?.fetch);
|
|
217
|
+
const AC = getAbortController(opts?.AbortController);
|
|
218
|
+
this.requestId = 0;
|
|
219
|
+
function getHeadersFn() {
|
|
220
|
+
if (opts.headers) {
|
|
221
|
+
const headers = opts.headers;
|
|
222
|
+
return typeof headers === 'function' ? headers : ()=>headers;
|
|
223
|
+
}
|
|
224
|
+
return ()=>({});
|
|
225
|
+
}
|
|
226
|
+
const transformer = opts.transformer ? 'input' in opts.transformer ? {
|
|
227
|
+
serialize: opts.transformer.input.serialize,
|
|
228
|
+
deserialize: opts.transformer.output.deserialize
|
|
229
|
+
} : opts.transformer : {
|
|
230
|
+
serialize: (data)=>data,
|
|
231
|
+
deserialize: (data)=>data
|
|
232
|
+
};
|
|
233
|
+
this.runtime = {
|
|
234
|
+
AbortController: AC,
|
|
235
|
+
fetch: _fetch,
|
|
236
|
+
headers: getHeadersFn(),
|
|
237
|
+
transformer
|
|
238
|
+
};
|
|
239
|
+
if ('links' in opts) {
|
|
240
|
+
this.links = opts.links.map((link)=>link(this.runtime));
|
|
241
|
+
} else {
|
|
242
|
+
this.links = [
|
|
243
|
+
links_httpBatchLink.httpBatchLink({
|
|
244
|
+
url: opts.url
|
|
245
|
+
})(this.runtime),
|
|
246
|
+
];
|
|
296
247
|
}
|
|
297
|
-
});
|
|
298
|
-
return function () {
|
|
299
|
-
observer.unsubscribe();
|
|
300
|
-
};
|
|
301
248
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
return TRPCClient;
|
|
305
|
-
}();
|
|
249
|
+
}
|
|
306
250
|
|
|
307
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
308
251
|
function createTRPCClient(opts) {
|
|
309
|
-
|
|
252
|
+
const client = new TRPCClient(opts);
|
|
253
|
+
return client;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
const clientCallTypeMap = {
|
|
257
|
+
query: 'query',
|
|
258
|
+
mutate: 'mutation',
|
|
259
|
+
subscribe: 'subscription'
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* @deprecated use createTRPCProxyClient instead
|
|
263
|
+
* @internal
|
|
264
|
+
*/ function createTRPCClientProxy(client) {
|
|
265
|
+
const proxy = shared.createProxy(({ path , args })=>{
|
|
266
|
+
const pathCopy = [
|
|
267
|
+
...path
|
|
268
|
+
];
|
|
269
|
+
const clientCallType = pathCopy.pop();
|
|
270
|
+
const procedureType = clientCallTypeMap[clientCallType];
|
|
271
|
+
const fullPath = pathCopy.join('.');
|
|
272
|
+
return client[procedureType](fullPath, ...args);
|
|
273
|
+
});
|
|
274
|
+
return proxy;
|
|
275
|
+
}
|
|
276
|
+
function createTRPCProxyClient(opts) {
|
|
277
|
+
const client = createTRPCClient(opts);
|
|
278
|
+
const proxy = createTRPCClientProxy(client);
|
|
279
|
+
return proxy;
|
|
310
280
|
}
|
|
311
281
|
|
|
312
|
-
exports.TRPCClientError =
|
|
282
|
+
exports.TRPCClientError = transformResult.TRPCClientError;
|
|
283
|
+
exports.httpBatchLink = links_httpBatchLink.httpBatchLink;
|
|
284
|
+
exports.splitLink = links_splitLink.splitLink;
|
|
285
|
+
exports.httpLink = links_httpLink.httpLink;
|
|
286
|
+
exports.loggerLink = links_loggerLink.loggerLink;
|
|
287
|
+
exports.createWSClient = links_wsLink.createWSClient;
|
|
288
|
+
exports.wsLink = links_wsLink.wsLink;
|
|
313
289
|
exports.createTRPCClient = createTRPCClient;
|
|
290
|
+
exports.createTRPCClientProxy = createTRPCClientProxy;
|
|
291
|
+
exports.createTRPCProxyClient = createTRPCProxyClient;
|
|
292
|
+
exports.dedupeLink = dedupeLink;
|
|
314
293
|
exports.getFetch = getFetch;
|
|
294
|
+
exports.retryLink = retryLink;
|