@trpc/client 11.1.3-alpha-tmp-issues-6785.34 → 11.1.3-alpha-tmp-tsdown.24
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 +32 -0
- package/dist/TRPCClientError.d.mts.map +1 -0
- package/dist/TRPCClientError.d.ts +28 -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 +69 -0
- package/dist/createTRPCClient.d.mts.map +1 -0
- package/dist/createTRPCClient.d.ts +34 -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 +8 -0
- package/dist/createTRPCUntypedClient.d.mts.map +1 -0
- package/dist/createTRPCUntypedClient.d.ts +7 -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 +9 -0
- package/dist/getFetch.d.mts.map +1 -0
- package/dist/getFetch.d.ts +8 -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 +42 -42
- package/dist/index.mjs +19 -15
- package/dist/internals/TRPCUntypedClient.d.mts +45 -0
- package/dist/internals/TRPCUntypedClient.d.mts.map +1 -0
- package/dist/internals/TRPCUntypedClient.d.ts +39 -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 -112
- package/dist/internals/dataLoader.mjs +101 -110
- 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 +46 -0
- package/dist/internals/transformer.d.mts.map +1 -0
- package/dist/internals/transformer.d.ts +26 -22
- 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 +84 -0
- package/dist/internals/types.d.mts.map +1 -0
- package/dist/internals/types.d.ts +44 -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 +15 -0
- package/dist/links/httpBatchLink.d.mts.map +1 -0
- package/dist/links/httpBatchLink.d.ts +11 -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 +19 -0
- package/dist/links/httpBatchStreamLink.d.mts.map +1 -0
- package/dist/links/httpBatchStreamLink.d.ts +12 -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 +23 -0
- package/dist/links/httpLink.d.mts.map +1 -0
- package/dist/links/httpLink.d.ts +18 -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 +29 -0
- package/dist/links/httpSubscriptionLink.d.mts.map +1 -0
- package/dist/links/httpSubscriptionLink.d.ts +20 -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 +9 -0
- package/dist/links/internals/contentTypes.d.mts.map +1 -0
- package/dist/links/internals/contentTypes.d.ts +8 -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 +25 -0
- package/dist/links/internals/httpUtils.d.mts.map +1 -0
- package/dist/links/internals/httpUtils.d.ts +20 -63
- 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 +19 -0
- package/dist/links/internals/subscriptions.d.mts.map +1 -0
- package/dist/links/internals/subscriptions.d.ts +10 -8
- package/dist/links/internals/subscriptions.d.ts.map +1 -1
- package/dist/links/internals/urlWithConnectionParams.d.mts +24 -0
- package/dist/links/internals/urlWithConnectionParams.d.mts.map +1 -0
- package/dist/links/internals/urlWithConnectionParams.d.ts +19 -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 +21 -0
- package/dist/links/localLink.d.mts.map +1 -0
- package/dist/links/localLink.d.ts +21 -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 +55 -0
- package/dist/links/loggerLink.d.mts.map +1 -0
- package/dist/links/loggerLink.d.ts +39 -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 +36 -0
- package/dist/links/retryLink.d.mts.map +1 -0
- package/dist/links/retryLink.d.ts +28 -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 +20 -0
- package/dist/links/splitLink.d.mts.map +1 -0
- package/dist/links/splitLink.d.ts +18 -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 +68 -0
- package/dist/links/types.d.mts.map +1 -0
- package/dist/links/types.d.ts +34 -29
- package/dist/links/types.d.ts.map +1 -1
- package/dist/links/wsLink/createWsClient.d.mts +9 -0
- package/dist/links/wsLink/createWsClient.d.mts.map +1 -0
- package/dist/links/wsLink/createWsClient.d.ts +8 -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 +53 -63
- 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 -140
- package/dist/links/wsLink/wsClient/requestManager.mjs +133 -137
- 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 +101 -0
- package/dist/links/wsLink/wsClient/wsClient.d.mts.map +1 -0
- package/dist/links/wsLink/wsClient/wsClient.d.ts +95 -78
- 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 +14 -0
- package/dist/links/wsLink/wsLink.d.mts.map +1 -0
- package/dist/links/wsLink/wsLink.d.ts +12 -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.72.2/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js +68 -0
- package/dist/node_modules/.pnpm/@oxc-project_runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/usingCtx.mjs +66 -0
- package/dist/node_modules/.pnpm/@oxc-project_runtime@0.72.2/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 +63 -30
- package/src/TRPCClientError.ts +4 -9
- package/src/internals/signals.ts +16 -0
- package/src/links/httpSubscriptionLink.ts +3 -18
- package/src/links/localLink.ts +277 -0
- package/src/links.ts +1 -0
- package/unstable-internals/package.json +1 -0
- package/dist/bundle-analysis.json +0 -433
- 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 -106
- 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
- package/links/httpBatchLink/index.d.ts +0 -1
- package/links/httpBatchLink/index.js +0 -1
- package/links/httpLink/index.d.ts +0 -1
- package/links/httpLink/index.js +0 -1
- package/links/loggerLink/index.d.ts +0 -1
- package/links/loggerLink/index.js +0 -1
- package/links/splitLink/index.d.ts +0 -1
- package/links/splitLink/index.js +0 -1
- package/links/wsLink/wsLink/index.d.ts +0 -1
- package/links/wsLink/wsLink/index.js +0 -1
- package/unstable-internals/index.d.ts +0 -1
- package/unstable-internals/index.js +0 -1
|
@@ -1,94 +1,77 @@
|
|
|
1
|
-
|
|
1
|
+
const require_urlWithConnectionParams = require('../../internals/urlWithConnectionParams.js');
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
writable: true
|
|
12
|
-
});
|
|
13
|
-
} else {
|
|
14
|
-
obj[key] = value;
|
|
15
|
-
}
|
|
16
|
-
return obj;
|
|
17
|
-
}
|
|
18
|
-
class TRPCWebSocketClosedError extends Error {
|
|
19
|
-
constructor(opts){
|
|
20
|
-
super(opts.message, {
|
|
21
|
-
cause: opts.cause
|
|
22
|
-
});
|
|
23
|
-
this.name = 'TRPCWebSocketClosedError';
|
|
24
|
-
Object.setPrototypeOf(this, TRPCWebSocketClosedError.prototype);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
3
|
+
//#region src/links/wsLink/wsClient/utils.ts
|
|
4
|
+
var TRPCWebSocketClosedError = class TRPCWebSocketClosedError extends Error {
|
|
5
|
+
constructor(opts) {
|
|
6
|
+
super(opts.message, { cause: opts.cause });
|
|
7
|
+
this.name = "TRPCWebSocketClosedError";
|
|
8
|
+
Object.setPrototypeOf(this, TRPCWebSocketClosedError.prototype);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
27
11
|
/**
|
|
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
|
-
// Ponyfill for Promise.withResolvers https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers
|
|
12
|
+
* Utility class for managing a timeout that can be started, stopped, and reset.
|
|
13
|
+
* Useful for scenarios where the timeout duration is reset dynamically based on events.
|
|
14
|
+
*/
|
|
15
|
+
var ResettableTimeout = class {
|
|
16
|
+
timeout;
|
|
17
|
+
constructor(onTimeout, timeoutMs) {
|
|
18
|
+
this.onTimeout = onTimeout;
|
|
19
|
+
this.timeoutMs = timeoutMs;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resets the current timeout, restarting it with the same duration.
|
|
23
|
+
* Does nothing if no timeout is active.
|
|
24
|
+
*/
|
|
25
|
+
reset() {
|
|
26
|
+
if (!this.timeout) return;
|
|
27
|
+
clearTimeout(this.timeout);
|
|
28
|
+
this.timeout = setTimeout(this.onTimeout, this.timeoutMs);
|
|
29
|
+
}
|
|
30
|
+
start() {
|
|
31
|
+
clearTimeout(this.timeout);
|
|
32
|
+
this.timeout = setTimeout(this.onTimeout, this.timeoutMs);
|
|
33
|
+
}
|
|
34
|
+
stop() {
|
|
35
|
+
clearTimeout(this.timeout);
|
|
36
|
+
this.timeout = void 0;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
56
39
|
function withResolvers() {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
};
|
|
40
|
+
let resolve;
|
|
41
|
+
let reject;
|
|
42
|
+
const promise = new Promise((res, rej) => {
|
|
43
|
+
resolve = res;
|
|
44
|
+
reject = rej;
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
promise,
|
|
48
|
+
resolve,
|
|
49
|
+
reject
|
|
50
|
+
};
|
|
69
51
|
}
|
|
70
52
|
/**
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
53
|
+
* Resolves a WebSocket URL and optionally appends connection parameters.
|
|
54
|
+
*
|
|
55
|
+
* If connectionParams are provided, appends 'connectionParams=1' query parameter.
|
|
56
|
+
*/
|
|
57
|
+
async function prepareUrl(urlOptions) {
|
|
58
|
+
const url = await require_urlWithConnectionParams.resultOf(urlOptions.url);
|
|
59
|
+
if (!urlOptions.connectionParams) return url;
|
|
60
|
+
const prefix = url.includes("?") ? "&" : "?";
|
|
61
|
+
const connectionParams = `${prefix}connectionParams=1`;
|
|
62
|
+
return url + connectionParams;
|
|
81
63
|
}
|
|
82
64
|
async function buildConnectionMessage(connectionParams) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
65
|
+
const message = {
|
|
66
|
+
method: "connectionParams",
|
|
67
|
+
data: await require_urlWithConnectionParams.resultOf(connectionParams)
|
|
68
|
+
};
|
|
69
|
+
return JSON.stringify(message);
|
|
88
70
|
}
|
|
89
71
|
|
|
72
|
+
//#endregion
|
|
90
73
|
exports.ResettableTimeout = ResettableTimeout;
|
|
91
74
|
exports.TRPCWebSocketClosedError = TRPCWebSocketClosedError;
|
|
92
75
|
exports.buildConnectionMessage = buildConnectionMessage;
|
|
93
76
|
exports.prepareUrl = prepareUrl;
|
|
94
|
-
exports.withResolvers = withResolvers;
|
|
77
|
+
exports.withResolvers = withResolvers;
|
|
@@ -1,88 +1,74 @@
|
|
|
1
|
-
import { resultOf } from
|
|
1
|
+
import { resultOf } from "../../internals/urlWithConnectionParams.mjs";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} else {
|
|
12
|
-
obj[key] = value;
|
|
13
|
-
}
|
|
14
|
-
return obj;
|
|
15
|
-
}
|
|
16
|
-
class TRPCWebSocketClosedError extends Error {
|
|
17
|
-
constructor(opts){
|
|
18
|
-
super(opts.message, {
|
|
19
|
-
cause: opts.cause
|
|
20
|
-
});
|
|
21
|
-
this.name = 'TRPCWebSocketClosedError';
|
|
22
|
-
Object.setPrototypeOf(this, TRPCWebSocketClosedError.prototype);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
3
|
+
//#region src/links/wsLink/wsClient/utils.ts
|
|
4
|
+
var TRPCWebSocketClosedError = class TRPCWebSocketClosedError extends Error {
|
|
5
|
+
constructor(opts) {
|
|
6
|
+
super(opts.message, { cause: opts.cause });
|
|
7
|
+
this.name = "TRPCWebSocketClosedError";
|
|
8
|
+
Object.setPrototypeOf(this, TRPCWebSocketClosedError.prototype);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
25
11
|
/**
|
|
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
|
-
// Ponyfill for Promise.withResolvers https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers
|
|
12
|
+
* Utility class for managing a timeout that can be started, stopped, and reset.
|
|
13
|
+
* Useful for scenarios where the timeout duration is reset dynamically based on events.
|
|
14
|
+
*/
|
|
15
|
+
var ResettableTimeout = class {
|
|
16
|
+
timeout;
|
|
17
|
+
constructor(onTimeout, timeoutMs) {
|
|
18
|
+
this.onTimeout = onTimeout;
|
|
19
|
+
this.timeoutMs = timeoutMs;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resets the current timeout, restarting it with the same duration.
|
|
23
|
+
* Does nothing if no timeout is active.
|
|
24
|
+
*/
|
|
25
|
+
reset() {
|
|
26
|
+
if (!this.timeout) return;
|
|
27
|
+
clearTimeout(this.timeout);
|
|
28
|
+
this.timeout = setTimeout(this.onTimeout, this.timeoutMs);
|
|
29
|
+
}
|
|
30
|
+
start() {
|
|
31
|
+
clearTimeout(this.timeout);
|
|
32
|
+
this.timeout = setTimeout(this.onTimeout, this.timeoutMs);
|
|
33
|
+
}
|
|
34
|
+
stop() {
|
|
35
|
+
clearTimeout(this.timeout);
|
|
36
|
+
this.timeout = void 0;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
54
39
|
function withResolvers() {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
};
|
|
40
|
+
let resolve;
|
|
41
|
+
let reject;
|
|
42
|
+
const promise = new Promise((res, rej) => {
|
|
43
|
+
resolve = res;
|
|
44
|
+
reject = rej;
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
promise,
|
|
48
|
+
resolve,
|
|
49
|
+
reject
|
|
50
|
+
};
|
|
67
51
|
}
|
|
68
52
|
/**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
53
|
+
* Resolves a WebSocket URL and optionally appends connection parameters.
|
|
54
|
+
*
|
|
55
|
+
* If connectionParams are provided, appends 'connectionParams=1' query parameter.
|
|
56
|
+
*/
|
|
57
|
+
async function prepareUrl(urlOptions) {
|
|
58
|
+
const url = await resultOf(urlOptions.url);
|
|
59
|
+
if (!urlOptions.connectionParams) return url;
|
|
60
|
+
const prefix = url.includes("?") ? "&" : "?";
|
|
61
|
+
const connectionParams = `${prefix}connectionParams=1`;
|
|
62
|
+
return url + connectionParams;
|
|
79
63
|
}
|
|
80
64
|
async function buildConnectionMessage(connectionParams) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
65
|
+
const message = {
|
|
66
|
+
method: "connectionParams",
|
|
67
|
+
data: await resultOf(connectionParams)
|
|
68
|
+
};
|
|
69
|
+
return JSON.stringify(message);
|
|
86
70
|
}
|
|
87
71
|
|
|
72
|
+
//#endregion
|
|
88
73
|
export { ResettableTimeout, TRPCWebSocketClosedError, buildConnectionMessage, prepareUrl, withResolvers };
|
|
74
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":["opts: { message: string; cause?: unknown }","onTimeout: () => void","timeoutMs: number","resolve: (value: T | PromiseLike<T>) => void","reject: (reason?: any) => void","urlOptions: UrlOptionsWithConnectionParams","connectionParams: CallbackOrValue<TRPCRequestInfo['connectionParams']>","message: TRPCConnectionParamsMessage"],"sources":["../../../../src/links/wsLink/wsClient/utils.ts"],"sourcesContent":["import type {\n TRPCConnectionParamsMessage,\n TRPCRequestInfo,\n} from '@trpc/server/unstable-core-do-not-import';\nimport type {\n CallbackOrValue,\n UrlOptionsWithConnectionParams,\n} from '../../internals/urlWithConnectionParams';\nimport { resultOf } from '../../internals/urlWithConnectionParams';\n\nexport class TRPCWebSocketClosedError extends Error {\n constructor(opts: { message: string; cause?: unknown }) {\n super(opts.message, {\n cause: opts.cause,\n });\n this.name = 'TRPCWebSocketClosedError';\n Object.setPrototypeOf(this, TRPCWebSocketClosedError.prototype);\n }\n}\n\n/**\n * Utility class for managing a timeout that can be started, stopped, and reset.\n * Useful for scenarios where the timeout duration is reset dynamically based on events.\n */\nexport class ResettableTimeout {\n private timeout: ReturnType<typeof setTimeout> | undefined;\n\n constructor(\n private readonly onTimeout: () => void,\n private readonly timeoutMs: number,\n ) {}\n\n /**\n * Resets the current timeout, restarting it with the same duration.\n * Does nothing if no timeout is active.\n */\n public reset() {\n if (!this.timeout) return;\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(this.onTimeout, this.timeoutMs);\n }\n\n public start() {\n clearTimeout(this.timeout);\n this.timeout = setTimeout(this.onTimeout, this.timeoutMs);\n }\n\n public stop() {\n clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n}\n\n// Ponyfill for Promise.withResolvers https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\nexport function withResolvers<T>() {\n let resolve: (value: T | PromiseLike<T>) => void;\n let reject: (reason?: any) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return { promise, resolve: resolve!, reject: reject! };\n}\n\n/**\n * Resolves a WebSocket URL and optionally appends connection parameters.\n *\n * If connectionParams are provided, appends 'connectionParams=1' query parameter.\n */\nexport async function prepareUrl(urlOptions: UrlOptionsWithConnectionParams) {\n const url = await resultOf(urlOptions.url);\n\n if (!urlOptions.connectionParams) return url;\n\n // append `?connectionParams=1` when connection params are used\n const prefix = url.includes('?') ? '&' : '?';\n const connectionParams = `${prefix}connectionParams=1`;\n\n return url + connectionParams;\n}\n\nexport async function buildConnectionMessage(\n connectionParams: CallbackOrValue<TRPCRequestInfo['connectionParams']>,\n) {\n const message: TRPCConnectionParamsMessage = {\n method: 'connectionParams',\n data: await resultOf(connectionParams),\n };\n\n return JSON.stringify(message);\n}\n"],"mappings":";;;AAUA,IAAa,2BAAb,MAAa,iCAAiC,MAAM;CAClD,YAAYA,MAA4C;AACtD,QAAM,KAAK,SAAS,EAClB,OAAO,KAAK,MACb,EAAC;AACF,OAAK,OAAO;AACZ,SAAO,eAAe,MAAM,yBAAyB,UAAU;CAChE;AACF;;;;;AAMD,IAAa,oBAAb,MAA+B;CAC7B,AAAQ;CAER,YACmBC,WACAC,WACjB;EAFiB;EACA;CACf;;;;;CAMJ,AAAO,QAAQ;AACb,OAAK,KAAK,QAAS;AAEnB,eAAa,KAAK,QAAQ;AAC1B,OAAK,UAAU,WAAW,KAAK,WAAW,KAAK,UAAU;CAC1D;CAED,AAAO,QAAQ;AACb,eAAa,KAAK,QAAQ;AAC1B,OAAK,UAAU,WAAW,KAAK,WAAW,KAAK,UAAU;CAC1D;CAED,AAAO,OAAO;AACZ,eAAa,KAAK,QAAQ;AAC1B,OAAK;CACN;AACF;AAGD,SAAgB,gBAAmB;CACjC,IAAIC;CACJ,IAAIC;CACJ,MAAM,UAAU,IAAI,QAAW,CAAC,KAAK,QAAQ;AAC3C,YAAU;AACV,WAAS;CACV;AAGD,QAAO;EAAE;EAAkB;EAAkB;CAAS;AACvD;;;;;;AAOD,eAAsB,WAAWC,YAA4C;CAC3E,MAAM,MAAM,MAAM,SAAS,WAAW,IAAI;AAE1C,MAAK,WAAW,iBAAkB,QAAO;CAGzC,MAAM,SAAS,IAAI,SAAS,IAAI,GAAG,MAAM;CACzC,MAAM,oBAAoB,EAAE,OAAO;AAEnC,QAAO,MAAM;AACd;AAED,eAAsB,uBACpBC,kBACA;CACA,MAAMC,UAAuC;EAC3C,QAAQ;EACR,MAAM,MAAM,SAAS,iBAAiB;CACvC;AAED,QAAO,KAAK,UAAU,QAAQ;AAC/B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { TRPCConnectionState } from "../../internals/subscriptions.mjs";
|
|
2
|
+
import { TRPCClientError } from "../../../TRPCClientError.mjs";
|
|
3
|
+
import { Operation, OperationResultEnvelope } from "../../types.mjs";
|
|
4
|
+
import { WebSocketClientOptions } from "./options.mjs";
|
|
5
|
+
import * as _trpc_server_observable0 from "@trpc/server/observable";
|
|
6
|
+
import { BehaviorSubject } from "@trpc/server/observable";
|
|
7
|
+
import { CombinedDataTransformer } from "@trpc/server/unstable-core-do-not-import";
|
|
8
|
+
import { AnyTRPCRouter } from "@trpc/server";
|
|
9
|
+
|
|
10
|
+
//#region src/links/wsLink/wsClient/wsClient.d.ts
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A WebSocket client for managing TRPC operations, supporting lazy initialization,
|
|
14
|
+
* reconnection, keep-alive, and request management.
|
|
15
|
+
*/
|
|
16
|
+
declare class WsClient {
|
|
17
|
+
/**
|
|
18
|
+
* Observable tracking the current connection state, including errors.
|
|
19
|
+
*/
|
|
20
|
+
readonly connectionState: BehaviorSubject<TRPCConnectionState<TRPCClientError<AnyTRPCRouter>>>;
|
|
21
|
+
private allowReconnect;
|
|
22
|
+
private requestManager;
|
|
23
|
+
private readonly activeConnection;
|
|
24
|
+
private readonly reconnectRetryDelay;
|
|
25
|
+
private inactivityTimeout;
|
|
26
|
+
private readonly callbacks;
|
|
27
|
+
private readonly lazyMode;
|
|
28
|
+
constructor(opts: WebSocketClientOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Opens the WebSocket connection. Handles reconnection attempts and updates
|
|
31
|
+
* the connection state accordingly.
|
|
32
|
+
*/
|
|
33
|
+
private open;
|
|
34
|
+
/**
|
|
35
|
+
* Closes the WebSocket connection and stops managing requests.
|
|
36
|
+
* Ensures all outgoing and pending requests are properly finalized.
|
|
37
|
+
*/
|
|
38
|
+
close(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Method to request the server.
|
|
41
|
+
* Handles data transformation, batching of requests, and subscription lifecycle.
|
|
42
|
+
*
|
|
43
|
+
* @param op - The operation details including id, type, path, input and signal
|
|
44
|
+
* @param transformer - Data transformer for serializing requests and deserializing responses
|
|
45
|
+
* @param lastEventId - Optional ID of the last received event for subscriptions
|
|
46
|
+
*
|
|
47
|
+
* @returns An observable that emits operation results and handles cleanup
|
|
48
|
+
*/
|
|
49
|
+
request({
|
|
50
|
+
op: {
|
|
51
|
+
id,
|
|
52
|
+
type,
|
|
53
|
+
path,
|
|
54
|
+
input,
|
|
55
|
+
signal
|
|
56
|
+
},
|
|
57
|
+
transformer,
|
|
58
|
+
lastEventId
|
|
59
|
+
}: {
|
|
60
|
+
op: Pick<Operation, 'id' | 'type' | 'path' | 'input' | 'signal'>;
|
|
61
|
+
transformer: CombinedDataTransformer;
|
|
62
|
+
lastEventId?: string;
|
|
63
|
+
}): _trpc_server_observable0.Observable<OperationResultEnvelope<unknown, TRPCClientError<AnyTRPCRouter>>, TRPCClientError<AnyTRPCRouter>>;
|
|
64
|
+
get connection(): {
|
|
65
|
+
readonly id: number;
|
|
66
|
+
readonly state: "open";
|
|
67
|
+
readonly ws: WebSocket;
|
|
68
|
+
} | {
|
|
69
|
+
readonly id: number;
|
|
70
|
+
readonly state: "closed";
|
|
71
|
+
readonly ws: WebSocket;
|
|
72
|
+
} | {
|
|
73
|
+
readonly id: number;
|
|
74
|
+
readonly state: "connecting";
|
|
75
|
+
readonly ws: WebSocket;
|
|
76
|
+
} | null;
|
|
77
|
+
/**
|
|
78
|
+
* Manages the reconnection process for the WebSocket using retry logic.
|
|
79
|
+
* Ensures that only one reconnection attempt is active at a time by tracking the current
|
|
80
|
+
* reconnection state in the `reconnecting` promise.
|
|
81
|
+
*/
|
|
82
|
+
private reconnecting;
|
|
83
|
+
private reconnect;
|
|
84
|
+
private setupWebSocketListeners;
|
|
85
|
+
private handleResponseMessage;
|
|
86
|
+
private handleIncomingRequest;
|
|
87
|
+
/**
|
|
88
|
+
* Sends a message or batch of messages directly to the server.
|
|
89
|
+
*/
|
|
90
|
+
private send;
|
|
91
|
+
/**
|
|
92
|
+
* Groups requests for batch sending.
|
|
93
|
+
*
|
|
94
|
+
* @returns A function to abort the batched request.
|
|
95
|
+
*/
|
|
96
|
+
private batchSend;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=wsClient.d.ts.map
|
|
99
|
+
//#endregion
|
|
100
|
+
export { WsClient };
|
|
101
|
+
//# sourceMappingURL=wsClient.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsClient.d.mts","names":[],"sources":["../../../../src/links/wsLink/wsClient/wsClient.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;AA6BA;AAAqB,cAAR,QAAA,CAAQ;EAAA;;;EAKE,SADY,eAAA,EAAA,eAAA,CAC/B,mBAD+B,CACX,eADW,CACK,aADL,CAAA,CAAA,CAAA;EAAe,QAe9B,cAAA;EAAsB,QA0FtB,cAAA;EAAA,iBA0CV,gBAAA;EAAE,iBAAE,mBAAA;EAAI,QAAE,iBAAA;EAAI,iBAAE,SAAA;EAAK,iBAAE,QAAA;EAAM,WACnC,CAAA,IAAA,EArIgB,sBAqIhB;EAAW;;;;EAIyB,QAErC,IAAA;EAAA;;;;EAAA,KAAA,CAAA,CAAA,EAjDiB,OAiDjB,CAAA,IAAA,CAAA;EAAA;;;;;;;;;;;;;;;;;;;;;QAHK,KAAK;iBACI;;MAEd,wBAAA,CAAA,WAAA,iCAAA,gBAAA,iBAAA,gBAAA;;;;iBAAA"}
|
|
@@ -1,84 +1,101 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
1
|
+
import { TRPCConnectionState } from "../../internals/subscriptions.js";
|
|
2
|
+
import { TRPCClientError } from "../../../TRPCClientError.js";
|
|
3
|
+
import { Operation, OperationResultEnvelope } from "../../types.js";
|
|
4
|
+
import { WebSocketClientOptions } from "./options.js";
|
|
5
|
+
import { CombinedDataTransformer } from "@trpc/server/unstable-core-do-not-import";
|
|
6
|
+
import * as _trpc_server_observable0 from "@trpc/server/observable";
|
|
7
|
+
import { BehaviorSubject } from "@trpc/server/observable";
|
|
8
|
+
import { AnyTRPCRouter } from "@trpc/server";
|
|
9
|
+
|
|
10
|
+
//#region src/links/wsLink/wsClient/wsClient.d.ts
|
|
11
|
+
|
|
8
12
|
/**
|
|
9
13
|
* A WebSocket client for managing TRPC operations, supporting lazy initialization,
|
|
10
14
|
* reconnection, keep-alive, and request management.
|
|
11
15
|
*/
|
|
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
|
-
|
|
16
|
+
declare class WsClient {
|
|
17
|
+
/**
|
|
18
|
+
* Observable tracking the current connection state, including errors.
|
|
19
|
+
*/
|
|
20
|
+
readonly connectionState: BehaviorSubject<TRPCConnectionState<TRPCClientError<AnyTRPCRouter>>>;
|
|
21
|
+
private allowReconnect;
|
|
22
|
+
private requestManager;
|
|
23
|
+
private readonly activeConnection;
|
|
24
|
+
private readonly reconnectRetryDelay;
|
|
25
|
+
private inactivityTimeout;
|
|
26
|
+
private readonly callbacks;
|
|
27
|
+
private readonly lazyMode;
|
|
28
|
+
constructor(opts: WebSocketClientOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Opens the WebSocket connection. Handles reconnection attempts and updates
|
|
31
|
+
* the connection state accordingly.
|
|
32
|
+
*/
|
|
33
|
+
private open;
|
|
34
|
+
/**
|
|
35
|
+
* Closes the WebSocket connection and stops managing requests.
|
|
36
|
+
* Ensures all outgoing and pending requests are properly finalized.
|
|
37
|
+
*/
|
|
38
|
+
close(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Method to request the server.
|
|
41
|
+
* Handles data transformation, batching of requests, and subscription lifecycle.
|
|
42
|
+
*
|
|
43
|
+
* @param op - The operation details including id, type, path, input and signal
|
|
44
|
+
* @param transformer - Data transformer for serializing requests and deserializing responses
|
|
45
|
+
* @param lastEventId - Optional ID of the last received event for subscriptions
|
|
46
|
+
*
|
|
47
|
+
* @returns An observable that emits operation results and handles cleanup
|
|
48
|
+
*/
|
|
49
|
+
request({
|
|
50
|
+
op: {
|
|
51
|
+
id,
|
|
52
|
+
type,
|
|
53
|
+
path,
|
|
54
|
+
input,
|
|
55
|
+
signal
|
|
56
|
+
},
|
|
57
|
+
transformer,
|
|
58
|
+
lastEventId
|
|
59
|
+
}: {
|
|
60
|
+
op: Pick<Operation, 'id' | 'type' | 'path' | 'input' | 'signal'>;
|
|
61
|
+
transformer: CombinedDataTransformer;
|
|
62
|
+
lastEventId?: string;
|
|
63
|
+
}): _trpc_server_observable0.Observable<OperationResultEnvelope<unknown, TRPCClientError<AnyTRPCRouter>>, TRPCClientError<AnyTRPCRouter>>;
|
|
64
|
+
get connection(): {
|
|
65
|
+
readonly id: number;
|
|
66
|
+
readonly state: "open";
|
|
67
|
+
readonly ws: WebSocket;
|
|
68
|
+
} | {
|
|
69
|
+
readonly id: number;
|
|
70
|
+
readonly state: "closed";
|
|
71
|
+
readonly ws: WebSocket;
|
|
72
|
+
} | {
|
|
73
|
+
readonly id: number;
|
|
74
|
+
readonly state: "connecting";
|
|
75
|
+
readonly ws: WebSocket;
|
|
76
|
+
} | null;
|
|
77
|
+
/**
|
|
78
|
+
* Manages the reconnection process for the WebSocket using retry logic.
|
|
79
|
+
* Ensures that only one reconnection attempt is active at a time by tracking the current
|
|
80
|
+
* reconnection state in the `reconnecting` promise.
|
|
81
|
+
*/
|
|
82
|
+
private reconnecting;
|
|
83
|
+
private reconnect;
|
|
84
|
+
private setupWebSocketListeners;
|
|
85
|
+
private handleResponseMessage;
|
|
86
|
+
private handleIncomingRequest;
|
|
87
|
+
/**
|
|
88
|
+
* Sends a message or batch of messages directly to the server.
|
|
89
|
+
*/
|
|
90
|
+
private send;
|
|
91
|
+
/**
|
|
92
|
+
* Groups requests for batch sending.
|
|
93
|
+
*
|
|
94
|
+
* @returns A function to abort the batched request.
|
|
95
|
+
*/
|
|
96
|
+
private batchSend;
|
|
83
97
|
}
|
|
98
|
+
//# sourceMappingURL=wsClient.d.ts.map
|
|
99
|
+
//#endregion
|
|
100
|
+
export { WsClient };
|
|
84
101
|
//# sourceMappingURL=wsClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wsClient.d.ts","
|
|
1
|
+
{"version":3,"file":"wsClient.d.ts","names":[],"sources":["../../../../src/links/wsLink/wsClient/wsClient.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;AA6BA;AAAqB,cAAR,QAAA,CAAQ;EAAA;;;EAKE,SADY,eAAA,EAAA,eAAA,CAC/B,mBAD+B,CACX,eADW,CACK,aADL,CAAA,CAAA,CAAA;EAAe,QAe9B,cAAA;EAAsB,QA0FtB,cAAA;EAAA,iBA0CV,gBAAA;EAAE,iBAAE,mBAAA;EAAI,QAAE,iBAAA;EAAI,iBAAE,SAAA;EAAK,iBAAE,QAAA;EAAM,WACnC,CAAA,IAAA,EArIgB,sBAqIhB;EAAW;;;;EAIyB,QAErC,IAAA;EAAA;;;;EAAA,KAAA,CAAA,CAAA,EAjDiB,OAiDjB,CAAA,IAAA,CAAA;EAAA;;;;;;;;;;;;;;;;;;;;;QAHK,KAAK;iBACI;;MAEd,wBAAA,CAAA,WAAA,iCAAA,gBAAA,iBAAA,gBAAA;;;;iBAAA"}
|