@trpc/client 11.1.2 → 11.1.3-alpha-tmp-tsdown.23
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.mts +33 -0
- package/dist/TRPCClientError.d.mts.map +1 -0
- package/dist/TRPCClientError.d.ts +29 -25
- package/dist/TRPCClientError.d.ts.map +1 -1
- package/dist/TRPCClientError.js +48 -72
- package/dist/TRPCClientError.mjs +48 -71
- package/dist/TRPCClientError.mjs.map +1 -0
- package/dist/_virtual/rolldown_runtime.js +39 -0
- package/dist/_virtual/rolldown_runtime.mjs +27 -0
- package/dist/createTRPCClient.d.mts +73 -0
- package/dist/createTRPCClient.d.mts.map +1 -0
- package/dist/createTRPCClient.d.ts +38 -34
- package/dist/createTRPCClient.d.ts.map +1 -1
- package/dist/createTRPCClient.js +34 -34
- package/dist/createTRPCClient.mjs +33 -31
- package/dist/createTRPCClient.mjs.map +1 -0
- package/dist/createTRPCUntypedClient.d.mts +9 -0
- package/dist/createTRPCUntypedClient.d.mts.map +1 -0
- package/dist/createTRPCUntypedClient.d.ts +8 -6
- package/dist/createTRPCUntypedClient.d.ts.map +1 -1
- package/dist/createTRPCUntypedClient.js +5 -6
- package/dist/createTRPCUntypedClient.mjs +6 -3
- package/dist/createTRPCUntypedClient.mjs.map +1 -0
- package/dist/getFetch.d.mts +10 -0
- package/dist/getFetch.d.mts.map +1 -0
- package/dist/getFetch.d.ts +9 -2
- package/dist/getFetch.d.ts.map +1 -1
- package/dist/getFetch.js +8 -13
- package/dist/getFetch.mjs +8 -11
- package/dist/getFetch.mjs.map +1 -0
- package/dist/index.d.mts +21 -0
- package/dist/index.d.ts +21 -16
- package/dist/index.js +41 -42
- package/dist/index.mjs +18 -15
- package/dist/internals/TRPCUntypedClient.d.mts +46 -0
- package/dist/internals/TRPCUntypedClient.d.mts.map +1 -0
- package/dist/internals/TRPCUntypedClient.d.ts +40 -33
- package/dist/internals/TRPCUntypedClient.d.ts.map +1 -1
- package/dist/internals/TRPCUntypedClient.js +94 -113
- package/dist/internals/TRPCUntypedClient.mjs +93 -110
- package/dist/internals/TRPCUntypedClient.mjs.map +1 -0
- package/dist/internals/dataLoader.js +101 -116
- package/dist/internals/dataLoader.mjs +101 -114
- package/dist/internals/dataLoader.mjs.map +1 -0
- package/dist/internals/inputWithTrackedEventId.js +9 -12
- package/dist/internals/inputWithTrackedEventId.mjs +9 -10
- package/dist/internals/inputWithTrackedEventId.mjs.map +1 -0
- package/dist/internals/signals.js +39 -40
- package/dist/internals/signals.mjs +39 -39
- package/dist/internals/signals.mjs.map +1 -0
- package/dist/internals/transformer.d.mts +47 -0
- package/dist/internals/transformer.d.mts.map +1 -0
- package/dist/internals/transformer.d.ts +28 -23
- package/dist/internals/transformer.d.ts.map +1 -1
- package/dist/internals/transformer.js +25 -26
- package/dist/internals/transformer.mjs +25 -24
- package/dist/internals/transformer.mjs.map +1 -0
- package/dist/internals/types.d.mts +85 -0
- package/dist/internals/types.d.mts.map +1 -0
- package/dist/internals/types.d.ts +45 -42
- package/dist/internals/types.d.ts.map +1 -1
- package/dist/links/HTTPBatchLinkOptions.d.mts +25 -0
- package/dist/links/HTTPBatchLinkOptions.d.mts.map +1 -0
- package/dist/links/HTTPBatchLinkOptions.d.ts +23 -18
- package/dist/links/HTTPBatchLinkOptions.d.ts.map +1 -1
- package/dist/links/httpBatchLink.d.mts +18 -0
- package/dist/links/httpBatchLink.d.mts.map +1 -0
- package/dist/links/httpBatchLink.d.ts +14 -4
- package/dist/links/httpBatchLink.d.ts.map +1 -1
- package/dist/links/httpBatchLink.js +90 -106
- package/dist/links/httpBatchLink.mjs +89 -103
- package/dist/links/httpBatchLink.mjs.map +1 -0
- package/dist/links/httpBatchStreamLink.d.mts +22 -0
- package/dist/links/httpBatchStreamLink.d.mts.map +1 -0
- package/dist/links/httpBatchStreamLink.d.ts +15 -5
- package/dist/links/httpBatchStreamLink.d.ts.map +1 -1
- package/dist/links/httpBatchStreamLink.js +120 -144
- package/dist/links/httpBatchStreamLink.mjs +119 -141
- package/dist/links/httpBatchStreamLink.mjs.map +1 -0
- package/dist/links/httpLink.d.mts +24 -0
- package/dist/links/httpLink.d.mts.map +1 -0
- package/dist/links/httpLink.d.ts +19 -12
- package/dist/links/httpLink.d.ts.map +1 -1
- package/dist/links/httpLink.js +74 -90
- package/dist/links/httpLink.mjs +73 -87
- package/dist/links/httpLink.mjs.map +1 -0
- package/dist/links/httpSubscriptionLink.d.mts +30 -0
- package/dist/links/httpSubscriptionLink.d.mts.map +1 -0
- package/dist/links/httpSubscriptionLink.d.ts +21 -17
- package/dist/links/httpSubscriptionLink.d.ts.map +1 -1
- package/dist/links/httpSubscriptionLink.js +134 -179
- package/dist/links/httpSubscriptionLink.mjs +133 -176
- package/dist/links/httpSubscriptionLink.mjs.map +1 -0
- package/dist/links/internals/contentTypes.d.mts +10 -0
- package/dist/links/internals/contentTypes.d.mts.map +1 -0
- package/dist/links/internals/contentTypes.d.ts +9 -3
- package/dist/links/internals/contentTypes.d.ts.map +1 -1
- package/dist/links/internals/contentTypes.js +6 -6
- package/dist/links/internals/contentTypes.mjs +6 -4
- package/dist/links/internals/contentTypes.mjs.map +1 -0
- package/dist/links/internals/createChain.js +23 -23
- package/dist/links/internals/createChain.mjs +22 -20
- package/dist/links/internals/createChain.mjs.map +1 -0
- package/dist/links/internals/httpUtils.d.mts +26 -0
- package/dist/links/internals/httpUtils.d.mts.map +1 -0
- package/dist/links/internals/httpUtils.d.ts +22 -64
- package/dist/links/internals/httpUtils.d.ts.map +1 -1
- package/dist/links/internals/httpUtils.js +93 -116
- package/dist/links/internals/httpUtils.mjs +94 -113
- package/dist/links/internals/httpUtils.mjs.map +1 -0
- package/dist/links/internals/subscriptions.d.mts +20 -0
- package/dist/links/internals/subscriptions.d.mts.map +1 -0
- package/dist/links/internals/subscriptions.d.ts +11 -8
- package/dist/links/internals/subscriptions.d.ts.map +1 -1
- package/dist/links/internals/urlWithConnectionParams.d.mts +27 -0
- package/dist/links/internals/urlWithConnectionParams.d.mts.map +1 -0
- package/dist/links/internals/urlWithConnectionParams.d.ts +22 -18
- package/dist/links/internals/urlWithConnectionParams.d.ts.map +1 -1
- package/dist/links/internals/urlWithConnectionParams.js +8 -6
- package/dist/links/internals/urlWithConnectionParams.mjs +8 -4
- package/dist/links/internals/urlWithConnectionParams.mjs.map +1 -0
- package/dist/links/localLink.d.mts +22 -0
- package/dist/links/localLink.d.mts.map +1 -0
- package/dist/links/localLink.d.ts +22 -0
- package/dist/links/localLink.d.ts.map +1 -0
- package/dist/links/localLink.js +192 -0
- package/dist/links/localLink.mjs +193 -0
- package/dist/links/localLink.mjs.map +1 -0
- package/dist/links/loggerLink.d.mts +56 -0
- package/dist/links/loggerLink.d.mts.map +1 -0
- package/dist/links/loggerLink.d.ts +40 -36
- package/dist/links/loggerLink.d.ts.map +1 -1
- package/dist/links/loggerLink.js +113 -166
- package/dist/links/loggerLink.mjs +112 -163
- package/dist/links/loggerLink.mjs.map +1 -0
- package/dist/links/retryLink.d.mts +35 -0
- package/dist/links/retryLink.d.mts.map +1 -0
- package/dist/links/retryLink.d.ts +27 -25
- package/dist/links/retryLink.d.ts.map +1 -1
- package/dist/links/retryLink.js +60 -68
- package/dist/links/retryLink.mjs +59 -65
- package/dist/links/retryLink.mjs.map +1 -0
- package/dist/links/splitLink.d.mts +21 -0
- package/dist/links/splitLink.d.mts.map +1 -0
- package/dist/links/splitLink.d.ts +19 -12
- package/dist/links/splitLink.d.ts.map +1 -1
- package/dist/links/splitLink.js +20 -21
- package/dist/links/splitLink.mjs +19 -18
- package/dist/links/splitLink.mjs.map +1 -0
- package/dist/links/types.d.mts +71 -0
- package/dist/links/types.d.mts.map +1 -0
- package/dist/links/types.d.ts +37 -29
- package/dist/links/types.d.ts.map +1 -1
- package/dist/links/wsLink/createWsClient.d.mts +10 -0
- package/dist/links/wsLink/createWsClient.d.mts.map +1 -0
- package/dist/links/wsLink/createWsClient.d.ts +9 -5
- package/dist/links/wsLink/createWsClient.d.ts.map +1 -1
- package/dist/links/wsLink/createWsClient.js +5 -5
- package/dist/links/wsLink/createWsClient.mjs +5 -2
- package/dist/links/wsLink/createWsClient.mjs.map +1 -0
- package/dist/links/wsLink/wsClient/options.d.mts +69 -0
- package/dist/links/wsLink/wsClient/options.d.mts.map +1 -0
- package/dist/links/wsLink/wsClient/options.d.ts +54 -64
- package/dist/links/wsLink/wsClient/options.d.ts.map +1 -1
- package/dist/links/wsLink/wsClient/options.js +14 -12
- package/dist/links/wsLink/wsClient/options.mjs +14 -10
- package/dist/links/wsLink/wsClient/options.mjs.map +1 -0
- package/dist/links/wsLink/wsClient/requestManager.js +133 -135
- package/dist/links/wsLink/wsClient/requestManager.mjs +133 -132
- package/dist/links/wsLink/wsClient/requestManager.mjs.map +1 -0
- package/dist/links/wsLink/wsClient/utils.js +64 -81
- package/dist/links/wsLink/wsClient/utils.mjs +64 -78
- package/dist/links/wsLink/wsClient/utils.mjs.map +1 -0
- package/dist/links/wsLink/wsClient/wsClient.d.mts +104 -0
- package/dist/links/wsLink/wsClient/wsClient.d.mts.map +1 -0
- package/dist/links/wsLink/wsClient/wsClient.d.ts +99 -79
- package/dist/links/wsLink/wsClient/wsClient.d.ts.map +1 -1
- package/dist/links/wsLink/wsClient/wsClient.js +273 -322
- package/dist/links/wsLink/wsClient/wsClient.mjs +272 -319
- package/dist/links/wsLink/wsClient/wsClient.mjs.map +1 -0
- package/dist/links/wsLink/wsClient/wsConnection.js +155 -178
- package/dist/links/wsLink/wsClient/wsConnection.mjs +154 -175
- package/dist/links/wsLink/wsClient/wsConnection.mjs.map +1 -0
- package/dist/links/wsLink/wsLink.d.mts +15 -0
- package/dist/links/wsLink/wsLink.d.mts.map +1 -0
- package/dist/links/wsLink/wsLink.d.ts +13 -9
- package/dist/links/wsLink/wsLink.d.ts.map +1 -1
- package/dist/links/wsLink/wsLink.js +30 -31
- package/dist/links/wsLink/wsLink.mjs +29 -28
- package/dist/links/wsLink/wsLink.mjs.map +1 -0
- package/dist/links.js +11 -0
- package/dist/links.mjs +11 -0
- package/dist/node_modules/.pnpm/@oxc-project_runtime@0.71.0/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js +68 -0
- package/dist/node_modules/.pnpm/@oxc-project_runtime@0.71.0/node_modules/@oxc-project/runtime/src/helpers/usingCtx.mjs +66 -0
- package/dist/node_modules/.pnpm/@oxc-project_runtime@0.71.0/node_modules/@oxc-project/runtime/src/helpers/usingCtx.mjs.map +1 -0
- package/dist/unstable-internals.d.mts +3 -0
- package/dist/unstable-internals.d.ts +3 -3
- package/dist/unstable-internals.js +2 -6
- package/dist/unstable-internals.mjs +3 -1
- package/links/httpBatchLink/package.json +1 -0
- package/links/httpLink/package.json +1 -0
- package/links/loggerLink/package.json +1 -0
- package/links/splitLink/package.json +1 -0
- package/links/wsLink/wsLink/package.json +1 -0
- package/package.json +64 -29
- package/src/TRPCClientError.ts +4 -9
- package/src/internals/dataLoader.ts +2 -6
- package/src/internals/signals.ts +16 -0
- package/src/links/httpSubscriptionLink.ts +3 -18
- package/src/links/localLink.ts +277 -0
- package/src/links/wsLink/wsClient/requestManager.ts +9 -0
- package/src/links/wsLink/wsClient/wsClient.ts +1 -1
- package/src/links.ts +1 -0
- package/unstable-internals/package.json +1 -0
- package/dist/index.d.ts.map +0 -1
- package/dist/internals/dataLoader.d.ts +0 -13
- package/dist/internals/dataLoader.d.ts.map +0 -1
- package/dist/internals/inputWithTrackedEventId.d.ts +0 -2
- package/dist/internals/inputWithTrackedEventId.d.ts.map +0 -1
- package/dist/internals/signals.d.ts +0 -15
- package/dist/internals/signals.d.ts.map +0 -1
- package/dist/links/internals/createChain.d.ts +0 -8
- package/dist/links/internals/createChain.d.ts.map +0 -1
- package/dist/links/internals/dedupeLink.d.ts +0 -7
- package/dist/links/internals/dedupeLink.d.ts.map +0 -1
- package/dist/links/wsLink/wsClient/requestManager.d.ts +0 -102
- package/dist/links/wsLink/wsClient/requestManager.d.ts.map +0 -1
- package/dist/links/wsLink/wsClient/utils.d.ts +0 -38
- package/dist/links/wsLink/wsClient/utils.d.ts.map +0 -1
- package/dist/links/wsLink/wsClient/wsConnection.d.ts +0 -79
- package/dist/links/wsLink/wsClient/wsConnection.d.ts.map +0 -1
- package/dist/links.d.ts +0 -11
- package/dist/links.d.ts.map +0 -1
- package/dist/unstable-internals.d.ts.map +0 -1
|
@@ -1,113 +1,96 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { createChain } from "../links/internals/createChain.mjs";
|
|
2
|
+
import { TRPCClientError } from "../TRPCClientError.mjs";
|
|
3
|
+
import { observableToPromise, share } from "@trpc/server/observable";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
},
|
|
94
|
-
error (err) {
|
|
95
|
-
opts.onError?.(err);
|
|
96
|
-
},
|
|
97
|
-
complete () {
|
|
98
|
-
opts.onComplete?.();
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
constructor(opts){
|
|
103
|
-
_define_property(this, "links", void 0);
|
|
104
|
-
_define_property(this, "runtime", void 0);
|
|
105
|
-
_define_property(this, "requestId", void 0);
|
|
106
|
-
this.requestId = 0;
|
|
107
|
-
this.runtime = {};
|
|
108
|
-
// Initialize the links
|
|
109
|
-
this.links = opts.links.map((link)=>link(this.runtime));
|
|
110
|
-
}
|
|
111
|
-
}
|
|
5
|
+
//#region src/internals/TRPCUntypedClient.ts
|
|
6
|
+
var TRPCUntypedClient = class {
|
|
7
|
+
links;
|
|
8
|
+
runtime;
|
|
9
|
+
requestId;
|
|
10
|
+
constructor(opts) {
|
|
11
|
+
this.requestId = 0;
|
|
12
|
+
this.runtime = {};
|
|
13
|
+
this.links = opts.links.map((link) => link(this.runtime));
|
|
14
|
+
}
|
|
15
|
+
$request(opts) {
|
|
16
|
+
const chain$ = createChain({
|
|
17
|
+
links: this.links,
|
|
18
|
+
op: {
|
|
19
|
+
...opts,
|
|
20
|
+
context: opts.context ?? {},
|
|
21
|
+
id: ++this.requestId
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
return chain$.pipe(share());
|
|
25
|
+
}
|
|
26
|
+
async requestAsPromise(opts) {
|
|
27
|
+
try {
|
|
28
|
+
const req$ = this.$request(opts);
|
|
29
|
+
const envelope = await observableToPromise(req$);
|
|
30
|
+
const data = envelope.result.data;
|
|
31
|
+
return data;
|
|
32
|
+
} catch (err) {
|
|
33
|
+
throw TRPCClientError.from(err);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
query(path, input, opts) {
|
|
37
|
+
return this.requestAsPromise({
|
|
38
|
+
type: "query",
|
|
39
|
+
path,
|
|
40
|
+
input,
|
|
41
|
+
context: opts?.context,
|
|
42
|
+
signal: opts?.signal
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
mutation(path, input, opts) {
|
|
46
|
+
return this.requestAsPromise({
|
|
47
|
+
type: "mutation",
|
|
48
|
+
path,
|
|
49
|
+
input,
|
|
50
|
+
context: opts?.context,
|
|
51
|
+
signal: opts?.signal
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
subscription(path, input, opts) {
|
|
55
|
+
const observable$ = this.$request({
|
|
56
|
+
type: "subscription",
|
|
57
|
+
path,
|
|
58
|
+
input,
|
|
59
|
+
context: opts.context,
|
|
60
|
+
signal: opts.signal
|
|
61
|
+
});
|
|
62
|
+
return observable$.subscribe({
|
|
63
|
+
next(envelope) {
|
|
64
|
+
switch (envelope.result.type) {
|
|
65
|
+
case "state": {
|
|
66
|
+
opts.onConnectionStateChange?.(envelope.result);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
case "started": {
|
|
70
|
+
opts.onStarted?.({ context: envelope.context });
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
case "stopped": {
|
|
74
|
+
opts.onStopped?.();
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
case "data":
|
|
78
|
+
case void 0: {
|
|
79
|
+
opts.onData?.(envelope.result.data);
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
error(err) {
|
|
85
|
+
opts.onError?.(err);
|
|
86
|
+
},
|
|
87
|
+
complete() {
|
|
88
|
+
opts.onComplete?.();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
};
|
|
112
93
|
|
|
94
|
+
//#endregion
|
|
113
95
|
export { TRPCUntypedClient };
|
|
96
|
+
//# sourceMappingURL=TRPCUntypedClient.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TRPCUntypedClient.mjs","names":["opts: CreateTRPCClientOptions<TInferrable>","opts: {\n type: TRPCType;\n input: TInput;\n path: string;\n context?: OperationContext;\n signal: Maybe<AbortSignal>;\n }","path: string","input?: unknown","opts?: TRPCRequestOptions","input: unknown","opts: Partial<\n TRPCSubscriptionObserver<unknown, TRPCClientError<AnyRouter>>\n > &\n TRPCRequestOptions"],"sources":["../../src/internals/TRPCUntypedClient.ts"],"sourcesContent":["import type {\n inferObservableValue,\n Unsubscribable,\n} from '@trpc/server/observable';\nimport { observableToPromise, share } from '@trpc/server/observable';\nimport type {\n AnyRouter,\n inferAsyncIterableYield,\n InferrableClientTypes,\n Maybe,\n TypeError,\n} from '@trpc/server/unstable-core-do-not-import';\nimport { createChain } from '../links/internals/createChain';\nimport type { TRPCConnectionState } from '../links/internals/subscriptions';\nimport type {\n OperationContext,\n OperationLink,\n TRPCClientRuntime,\n TRPCLink,\n} from '../links/types';\nimport { TRPCClientError } from '../TRPCClientError';\n\ntype TRPCType = 'mutation' | 'query' | 'subscription';\nexport interface TRPCRequestOptions {\n /**\n * Pass additional context to links\n */\n context?: OperationContext;\n signal?: AbortSignal;\n}\n\nexport interface TRPCSubscriptionObserver<TValue, TError> {\n onStarted: (opts: { context: OperationContext | undefined }) => void;\n onData: (value: inferAsyncIterableYield<TValue>) => void;\n onError: (err: TError) => void;\n onStopped: () => void;\n onComplete: () => void;\n onConnectionStateChange: (state: TRPCConnectionState<TError>) => void;\n}\n\n/** @internal */\nexport type CreateTRPCClientOptions<TRouter extends InferrableClientTypes> = {\n links: TRPCLink<TRouter>[];\n transformer?: TypeError<'The transformer property has moved to httpLink/httpBatchLink/wsLink'>;\n};\n\nexport class TRPCUntypedClient<TInferrable extends InferrableClientTypes> {\n private readonly links: OperationLink<TInferrable>[];\n public readonly runtime: TRPCClientRuntime;\n private requestId: number;\n\n constructor(opts: CreateTRPCClientOptions<TInferrable>) {\n this.requestId = 0;\n\n this.runtime = {};\n\n // Initialize the links\n this.links = opts.links.map((link) => link(this.runtime));\n }\n\n private $request<TInput = unknown, TOutput = unknown>(opts: {\n type: TRPCType;\n input: TInput;\n path: string;\n context?: OperationContext;\n signal: Maybe<AbortSignal>;\n }) {\n const chain$ = createChain<AnyRouter, TInput, TOutput>({\n links: this.links as OperationLink<any, any, any>[],\n op: {\n ...opts,\n context: opts.context ?? {},\n id: ++this.requestId,\n },\n });\n return chain$.pipe(share());\n }\n\n private async requestAsPromise<TInput = unknown, TOutput = unknown>(opts: {\n type: TRPCType;\n input: TInput;\n path: string;\n context?: OperationContext;\n signal: Maybe<AbortSignal>;\n }): Promise<TOutput> {\n try {\n const req$ = this.$request<TInput, TOutput>(opts);\n type TValue = inferObservableValue<typeof req$>;\n\n const envelope = await observableToPromise<TValue>(req$);\n const data = (envelope.result as any).data;\n return data;\n } catch (err) {\n throw TRPCClientError.from(err as Error);\n }\n }\n public query(path: string, input?: unknown, opts?: TRPCRequestOptions) {\n return this.requestAsPromise<unknown, unknown>({\n type: 'query',\n path,\n input,\n context: opts?.context,\n signal: opts?.signal,\n });\n }\n public mutation(path: string, input?: unknown, opts?: TRPCRequestOptions) {\n return this.requestAsPromise<unknown, unknown>({\n type: 'mutation',\n path,\n input,\n context: opts?.context,\n signal: opts?.signal,\n });\n }\n public subscription(\n path: string,\n input: unknown,\n opts: Partial<\n TRPCSubscriptionObserver<unknown, TRPCClientError<AnyRouter>>\n > &\n TRPCRequestOptions,\n ): Unsubscribable {\n const observable$ = this.$request({\n type: 'subscription',\n path,\n input,\n context: opts.context,\n signal: opts.signal,\n });\n return observable$.subscribe({\n next(envelope) {\n switch (envelope.result.type) {\n case 'state': {\n opts.onConnectionStateChange?.(envelope.result);\n break;\n }\n case 'started': {\n opts.onStarted?.({\n context: envelope.context,\n });\n break;\n }\n case 'stopped': {\n opts.onStopped?.();\n break;\n }\n case 'data':\n case undefined: {\n opts.onData?.(envelope.result.data);\n break;\n }\n }\n },\n error(err) {\n opts.onError?.(err);\n },\n complete() {\n opts.onComplete?.();\n },\n });\n }\n}\n"],"mappings":";;;;;AA8CA,IAAa,oBAAb,MAA0E;CACxE,AAAiB;CACjB,AAAgB;CAChB,AAAQ;CAER,YAAYA,MAA4C;AACtD,OAAK,YAAY;AAEjB,OAAK,UAAU,CAAE;AAGjB,OAAK,QAAQ,KAAK,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK,QAAQ,CAAC;CAC1D;CAED,AAAQ,SAA8CC,MAMnD;EACD,MAAM,SAAS,YAAwC;GACrD,OAAO,KAAK;GACZ,IAAI;IACF,GAAG;IACH,SAAS,KAAK,WAAW,CAAE;IAC3B,IAAI,EAAE,KAAK;GACZ;EACF,EAAC;AACF,SAAO,OAAO,KAAK,OAAO,CAAC;CAC5B;CAED,MAAc,iBAAsDA,MAM/C;AACnB,MAAI;GACF,MAAM,OAAO,KAAK,SAA0B,KAAK;GAGjD,MAAM,WAAW,MAAM,oBAA4B,KAAK;GACxD,MAAM,OAAQ,SAAS,OAAe;AACtC,UAAO;EACR,SAAQ,KAAK;AACZ,SAAM,gBAAgB,KAAK,IAAa;EACzC;CACF;CACD,AAAO,MAAMC,MAAcC,OAAiBC,MAA2B;AACrE,SAAO,KAAK,iBAAmC;GAC7C,MAAM;GACN;GACA;GACA,SAAS,MAAM;GACf,QAAQ,MAAM;EACf,EAAC;CACH;CACD,AAAO,SAASF,MAAcC,OAAiBC,MAA2B;AACxE,SAAO,KAAK,iBAAmC;GAC7C,MAAM;GACN;GACA;GACA,SAAS,MAAM;GACf,QAAQ,MAAM;EACf,EAAC;CACH;CACD,AAAO,aACLF,MACAG,OACAC,MAIgB;EAChB,MAAM,cAAc,KAAK,SAAS;GAChC,MAAM;GACN;GACA;GACA,SAAS,KAAK;GACd,QAAQ,KAAK;EACd,EAAC;AACF,SAAO,YAAY,UAAU;GAC3B,KAAK,UAAU;AACb,YAAQ,SAAS,OAAO,MAAxB;KACE,KAAK,SAAS;AACZ,WAAK,0BAA0B,SAAS,OAAO;AAC/C;KACD;KACD,KAAK,WAAW;AACd,WAAK,YAAY,EACf,SAAS,SAAS,QACnB,EAAC;AACF;KACD;KACD,KAAK,WAAW;AACd,WAAK,aAAa;AAClB;KACD;KACD,KAAK;KACL,aAAgB;AACd,WAAK,SAAS,SAAS,OAAO,KAAK;AACnC;KACD;IACF;GACF;GACD,MAAM,KAAK;AACT,SAAK,UAAU,IAAI;GACpB;GACD,WAAW;AACT,SAAK,cAAc;GACpB;EACF,EAAC;CACH;AACF"}
|
|
@@ -1,121 +1,106 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
//#region src/internals/dataLoader.ts
|
|
3
|
+
/**
|
|
4
|
+
* A function that should never be called unless we messed something up.
|
|
5
|
+
*/
|
|
6
|
+
const throwFatalError = () => {
|
|
7
|
+
throw new Error("Something went wrong. Please submit an issue at https://github.com/trpc/trpc/issues/new");
|
|
7
8
|
};
|
|
8
9
|
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
};
|
|
103
|
-
const promise = new Promise((resolve, reject)=>{
|
|
104
|
-
item.reject = reject;
|
|
105
|
-
item.resolve = resolve;
|
|
106
|
-
if (!pendingItems) {
|
|
107
|
-
pendingItems = [];
|
|
108
|
-
}
|
|
109
|
-
pendingItems.push(item);
|
|
110
|
-
});
|
|
111
|
-
if (!dispatchTimer) {
|
|
112
|
-
dispatchTimer = setTimeout(dispatch);
|
|
113
|
-
}
|
|
114
|
-
return promise;
|
|
115
|
-
}
|
|
116
|
-
return {
|
|
117
|
-
load
|
|
118
|
-
};
|
|
10
|
+
* Dataloader that's very inspired by https://github.com/graphql/dataloader
|
|
11
|
+
* Less configuration, no caching, and allows you to cancel requests
|
|
12
|
+
* When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled
|
|
13
|
+
*/
|
|
14
|
+
function dataLoader(batchLoader) {
|
|
15
|
+
let pendingItems = null;
|
|
16
|
+
let dispatchTimer = null;
|
|
17
|
+
const destroyTimerAndPendingItems = () => {
|
|
18
|
+
clearTimeout(dispatchTimer);
|
|
19
|
+
dispatchTimer = null;
|
|
20
|
+
pendingItems = null;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Iterate through the items and split them into groups based on the `batchLoader`'s validate function
|
|
24
|
+
*/
|
|
25
|
+
function groupItems(items) {
|
|
26
|
+
const groupedItems = [[]];
|
|
27
|
+
let index = 0;
|
|
28
|
+
while (true) {
|
|
29
|
+
const item = items[index];
|
|
30
|
+
if (!item) break;
|
|
31
|
+
const lastGroup = groupedItems[groupedItems.length - 1];
|
|
32
|
+
if (item.aborted) {
|
|
33
|
+
item.reject?.(new Error("Aborted"));
|
|
34
|
+
index++;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const isValid = batchLoader.validate(lastGroup.concat(item).map((it) => it.key));
|
|
38
|
+
if (isValid) {
|
|
39
|
+
lastGroup.push(item);
|
|
40
|
+
index++;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (lastGroup.length === 0) {
|
|
44
|
+
item.reject?.(new Error("Input is too big for a single dispatch"));
|
|
45
|
+
index++;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
groupedItems.push([]);
|
|
49
|
+
}
|
|
50
|
+
return groupedItems;
|
|
51
|
+
}
|
|
52
|
+
function dispatch() {
|
|
53
|
+
const groupedItems = groupItems(pendingItems);
|
|
54
|
+
destroyTimerAndPendingItems();
|
|
55
|
+
for (const items of groupedItems) {
|
|
56
|
+
if (!items.length) continue;
|
|
57
|
+
const batch = { items };
|
|
58
|
+
for (const item of items) item.batch = batch;
|
|
59
|
+
const promise = batchLoader.fetch(batch.items.map((_item) => _item.key));
|
|
60
|
+
promise.then(async (result) => {
|
|
61
|
+
await Promise.all(result.map(async (valueOrPromise, index) => {
|
|
62
|
+
const item = batch.items[index];
|
|
63
|
+
try {
|
|
64
|
+
const value = await Promise.resolve(valueOrPromise);
|
|
65
|
+
item.resolve?.(value);
|
|
66
|
+
} catch (cause) {
|
|
67
|
+
item.reject?.(cause);
|
|
68
|
+
}
|
|
69
|
+
item.batch = null;
|
|
70
|
+
item.reject = null;
|
|
71
|
+
item.resolve = null;
|
|
72
|
+
}));
|
|
73
|
+
for (const item of batch.items) {
|
|
74
|
+
item.reject?.(new Error("Missing result"));
|
|
75
|
+
item.batch = null;
|
|
76
|
+
}
|
|
77
|
+
}).catch((cause) => {
|
|
78
|
+
for (const item of batch.items) {
|
|
79
|
+
item.reject?.(cause);
|
|
80
|
+
item.batch = null;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function load(key) {
|
|
86
|
+
const item = {
|
|
87
|
+
aborted: false,
|
|
88
|
+
key,
|
|
89
|
+
batch: null,
|
|
90
|
+
resolve: throwFatalError,
|
|
91
|
+
reject: throwFatalError
|
|
92
|
+
};
|
|
93
|
+
const promise = new Promise((resolve, reject) => {
|
|
94
|
+
item.reject = reject;
|
|
95
|
+
item.resolve = resolve;
|
|
96
|
+
pendingItems ??= [];
|
|
97
|
+
pendingItems.push(item);
|
|
98
|
+
});
|
|
99
|
+
dispatchTimer ??= setTimeout(dispatch);
|
|
100
|
+
return promise;
|
|
101
|
+
}
|
|
102
|
+
return { load };
|
|
119
103
|
}
|
|
120
104
|
|
|
121
|
-
|
|
105
|
+
//#endregion
|
|
106
|
+
exports.dataLoader = dataLoader;
|