@trpc/client 11.18.1-canary.19 → 11.18.1-canary.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/intent.js +0 -0
- package/dist/TRPCClientError-CmHlBkPF.cjs +56 -0
- package/dist/{TRPCClientError-apv8gw59.mjs → TRPCClientError-CxFRO7Js.mjs} +11 -14
- package/dist/TRPCClientError-CxFRO7Js.mjs.map +1 -0
- package/dist/{httpBatchLink-RBPi17Tn.mjs → httpBatchLink-BMtWxLJV.mjs} +18 -29
- package/dist/{httpBatchLink-RBPi17Tn.mjs.map → httpBatchLink-BMtWxLJV.mjs.map} +1 -1
- package/dist/{httpBatchLink.d-7jyWtY5H.d.cts → httpBatchLink-Br-pzPXf.d.cts} +4 -8
- package/dist/httpBatchLink-Br-pzPXf.d.cts.map +1 -0
- package/dist/{httpBatchLink-CAxRfaIq.cjs → httpBatchLink-DO3WQoxu.cjs} +30 -43
- package/dist/{httpBatchLink.d-B6vCg-F-.d.mts → httpBatchLink-nvc48L_N.d.mts} +4 -8
- package/dist/httpBatchLink-nvc48L_N.d.mts.map +1 -0
- package/dist/{httpLink.d-CVOTlkUT.d.mts → httpLink-D5FQijY2.d.cts} +4 -7
- package/dist/httpLink-D5FQijY2.d.cts.map +1 -0
- package/dist/{httpLink-CxKWeCm2.cjs → httpLink-MDJTSlpi.cjs} +31 -36
- package/dist/{httpLink-esWsGBTO.mjs → httpLink-Tm93WWFA.mjs} +9 -12
- package/dist/httpLink-Tm93WWFA.mjs.map +1 -0
- package/dist/{httpLink.d-D5qR9haY.d.cts → httpLink-eSAq8J9S.d.mts} +4 -7
- package/dist/httpLink-eSAq8J9S.d.mts.map +1 -0
- package/dist/{httpUtils.d-BqmeKEGo.d.cts → httpUtils-C37jRVnj.d.mts} +4 -6
- package/dist/httpUtils-C37jRVnj.d.mts.map +1 -0
- package/dist/{httpUtils-B2s2BleG.mjs → httpUtils-CB_100ND.mjs} +10 -15
- package/dist/httpUtils-CB_100ND.mjs.map +1 -0
- package/dist/{httpUtils.d-yYSKGhiS.d.mts → httpUtils-CUqAubVD.d.cts} +4 -6
- package/dist/httpUtils-CUqAubVD.d.cts.map +1 -0
- package/dist/{httpUtils-s6LGgoIm.cjs → httpUtils-cggqcHz0.cjs} +58 -65
- package/dist/index.cjs +243 -304
- package/dist/index.d.cts +38 -41
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +38 -41
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +212 -272
- package/dist/index.mjs.map +1 -1
- package/dist/links/httpBatchLink.cjs +3 -7
- package/dist/links/httpBatchLink.d.cts +1 -5
- package/dist/links/httpBatchLink.d.mts +1 -5
- package/dist/links/httpBatchLink.mjs +2 -7
- package/dist/links/httpLink.cjs +3 -7
- package/dist/links/httpLink.d.cts +1 -5
- package/dist/links/httpLink.d.mts +1 -5
- package/dist/links/httpLink.mjs +2 -7
- package/dist/links/loggerLink.cjs +113 -4
- package/dist/links/loggerLink.d.cts +1 -3
- package/dist/links/loggerLink.d.mts +1 -3
- package/dist/links/loggerLink.mjs +113 -3
- package/dist/links/loggerLink.mjs.map +1 -0
- package/dist/links/splitLink.cjs +3 -3
- package/dist/links/splitLink.d.cts +1 -3
- package/dist/links/splitLink.d.mts +1 -3
- package/dist/links/splitLink.mjs +2 -3
- package/dist/links/wsLink/wsLink.cjs +3 -6
- package/dist/links/wsLink/wsLink.d.cts +2 -5
- package/dist/links/wsLink/wsLink.d.mts +2 -5
- package/dist/links/wsLink/wsLink.mjs +2 -6
- package/dist/{loggerLink.d-BxSIj5kx.d.cts → loggerLink-2o-uZ3r1.d.cts} +3 -4
- package/dist/loggerLink-2o-uZ3r1.d.cts.map +1 -0
- package/dist/{loggerLink.d-DBRq_5Gd.d.mts → loggerLink-CFercTVc.d.mts} +3 -4
- package/dist/loggerLink-CFercTVc.d.mts.map +1 -0
- package/dist/objectSpread2-D-dJi1gK.cjs +73 -0
- package/dist/objectSpread2-weooBxVk.mjs +62 -0
- package/dist/{splitLink-B7Cuf2c_.mjs → splitLink-BZPioDdG.mjs} +6 -11
- package/dist/splitLink-BZPioDdG.mjs.map +1 -0
- package/dist/{splitLink.d-BBFK_mCw.d.cts → splitLink-CJdcmEmS.d.cts} +3 -6
- package/dist/splitLink-CJdcmEmS.d.cts.map +1 -0
- package/dist/{splitLink.d-BKr9eE0o.d.mts → splitLink-CixmF14P.d.mts} +3 -6
- package/dist/splitLink-CixmF14P.d.mts.map +1 -0
- package/dist/{splitLink-BMgxggng.cjs → splitLink-MXnaFlEb.cjs} +17 -24
- package/dist/{subscriptions.d-Ciljg_dH.d.cts → subscriptions-DcqRZc4h.d.cts} +2 -2
- package/dist/subscriptions-DcqRZc4h.d.cts.map +1 -0
- package/dist/{subscriptions.d-Dlr1nWGD.d.mts → subscriptions-DcqRZc4h.d.mts} +2 -2
- package/dist/subscriptions-DcqRZc4h.d.mts.map +1 -0
- package/dist/{types.d-sRNtuQA-.d.mts → types-BxbMkv6C.d.cts} +4 -15
- package/dist/types-BxbMkv6C.d.cts.map +1 -0
- package/dist/{types.d-Dmmedc5G.d.cts → types-CAPs7vhA.d.mts} +4 -15
- package/dist/types-CAPs7vhA.d.mts.map +1 -0
- package/dist/{unstable-internals.d-BOmV7EK1.d.mts → unstable-internals-CE8gFBQ9.d.cts} +2 -4
- package/dist/unstable-internals-CE8gFBQ9.d.cts.map +1 -0
- package/dist/{unstable-internals.d-kWsZTlQq.d.cts → unstable-internals-CE8gFBQ9.d.mts} +2 -4
- package/dist/unstable-internals-CE8gFBQ9.d.mts.map +1 -0
- package/dist/unstable-internals.cjs +28 -3
- package/dist/unstable-internals.d.cts +2 -2
- package/dist/unstable-internals.d.mts +2 -2
- package/dist/unstable-internals.mjs +28 -2
- package/dist/unstable-internals.mjs.map +1 -0
- package/dist/{wsLink-BClZ0qKo.mjs → wsLink-Bm5LKL6z.mjs} +69 -93
- package/dist/wsLink-Bm5LKL6z.mjs.map +1 -0
- package/dist/{wsLink-adtuc895.cjs → wsLink-CKAsNP9P.cjs} +96 -122
- package/dist/{wsLink.d-DzZZZGZQ.d.cts → wsLink-DoiyfDgJ.d.cts} +10 -30
- package/dist/wsLink-DoiyfDgJ.d.cts.map +1 -0
- package/dist/{wsLink.d-DCqbZKOH.d.mts → wsLink-U8pJ7LD2.d.mts} +10 -30
- package/dist/wsLink-U8pJ7LD2.d.mts.map +1 -0
- package/package.json +8 -8
- package/src/getFetch.ts +3 -2
- package/src/links/httpBatchStreamLink.ts +7 -8
- package/src/links/httpSubscriptionLink.ts +1 -3
- package/src/links/internals/subscriptions.ts +3 -2
- package/src/links/types.ts +1 -2
- package/dist/TRPCClientError-CQrTQLrk.cjs +0 -61
- package/dist/TRPCClientError-apv8gw59.mjs.map +0 -1
- package/dist/chunk-DWy1uDak.cjs +0 -39
- package/dist/httpBatchLink.d-7jyWtY5H.d.cts.map +0 -1
- package/dist/httpBatchLink.d-B6vCg-F-.d.mts.map +0 -1
- package/dist/httpLink-esWsGBTO.mjs.map +0 -1
- package/dist/httpLink.d-CVOTlkUT.d.mts.map +0 -1
- package/dist/httpLink.d-D5qR9haY.d.cts.map +0 -1
- package/dist/httpUtils-B2s2BleG.mjs.map +0 -1
- package/dist/httpUtils.d-BqmeKEGo.d.cts.map +0 -1
- package/dist/httpUtils.d-yYSKGhiS.d.mts.map +0 -1
- package/dist/loggerLink-CuYvRzyH.cjs +0 -123
- package/dist/loggerLink-ineCN1PO.mjs +0 -118
- package/dist/loggerLink-ineCN1PO.mjs.map +0 -1
- package/dist/loggerLink.d-BxSIj5kx.d.cts.map +0 -1
- package/dist/loggerLink.d-DBRq_5Gd.d.mts.map +0 -1
- package/dist/objectSpread2-Bsvh_OqM.cjs +0 -100
- package/dist/objectSpread2-BvkFp-_Y.mjs +0 -114
- package/dist/objectSpread2-BvkFp-_Y.mjs.map +0 -1
- package/dist/splitLink-B7Cuf2c_.mjs.map +0 -1
- package/dist/splitLink.d-BBFK_mCw.d.cts.map +0 -1
- package/dist/splitLink.d-BKr9eE0o.d.mts.map +0 -1
- package/dist/subscriptions.d-Ciljg_dH.d.cts.map +0 -1
- package/dist/subscriptions.d-Dlr1nWGD.d.mts.map +0 -1
- package/dist/types.d-Dmmedc5G.d.cts.map +0 -1
- package/dist/types.d-sRNtuQA-.d.mts.map +0 -1
- package/dist/unstable-internals-Bg7n9BBj.mjs +0 -29
- package/dist/unstable-internals-Bg7n9BBj.mjs.map +0 -1
- package/dist/unstable-internals-M84gUQCV.cjs +0 -34
- package/dist/unstable-internals.d-BOmV7EK1.d.mts.map +0 -1
- package/dist/unstable-internals.d-kWsZTlQq.d.cts.map +0 -1
- package/dist/wsLink-BClZ0qKo.mjs.map +0 -1
- package/dist/wsLink.d-DCqbZKOH.d.mts.map +0 -1
- package/dist/wsLink.d-DzZZZGZQ.d.cts.map +0 -1
package/bin/intent.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const require_objectSpread2 = require("./objectSpread2-D-dJi1gK.cjs");
|
|
2
|
+
let _trpc_server_unstable_core_do_not_import = require("@trpc/server/unstable-core-do-not-import");
|
|
3
|
+
//#region src/TRPCClientError.ts
|
|
4
|
+
function isTRPCClientError(cause) {
|
|
5
|
+
return cause instanceof TRPCClientError;
|
|
6
|
+
}
|
|
7
|
+
function isTRPCErrorResponse(obj) {
|
|
8
|
+
return (0, _trpc_server_unstable_core_do_not_import.isObject)(obj) && (0, _trpc_server_unstable_core_do_not_import.isObject)(obj["error"]) && typeof obj["error"]["code"] === "number" && typeof obj["error"]["message"] === "string";
|
|
9
|
+
}
|
|
10
|
+
function getMessageFromUnknownError(err, fallback) {
|
|
11
|
+
if (typeof err === "string") return err;
|
|
12
|
+
if ((0, _trpc_server_unstable_core_do_not_import.isObject)(err) && typeof err["message"] === "string") return err["message"];
|
|
13
|
+
return fallback;
|
|
14
|
+
}
|
|
15
|
+
var TRPCClientError = class TRPCClientError extends Error {
|
|
16
|
+
constructor(message, opts) {
|
|
17
|
+
var _opts$result, _opts$result2;
|
|
18
|
+
const cause = opts === null || opts === void 0 ? void 0 : opts.cause;
|
|
19
|
+
super(message, { cause });
|
|
20
|
+
require_objectSpread2._defineProperty(this, "cause", void 0);
|
|
21
|
+
require_objectSpread2._defineProperty(this, "shape", void 0);
|
|
22
|
+
require_objectSpread2._defineProperty(this, "data", void 0);
|
|
23
|
+
require_objectSpread2._defineProperty(this, "meta", void 0);
|
|
24
|
+
this.meta = opts === null || opts === void 0 ? void 0 : opts.meta;
|
|
25
|
+
this.cause = cause;
|
|
26
|
+
this.shape = opts === null || opts === void 0 || (_opts$result = opts.result) === null || _opts$result === void 0 ? void 0 : _opts$result.error;
|
|
27
|
+
this.data = opts === null || opts === void 0 || (_opts$result2 = opts.result) === null || _opts$result2 === void 0 ? void 0 : _opts$result2.error.data;
|
|
28
|
+
this.name = "TRPCClientError";
|
|
29
|
+
Object.setPrototypeOf(this, TRPCClientError.prototype);
|
|
30
|
+
}
|
|
31
|
+
static from(_cause, opts = {}) {
|
|
32
|
+
const cause = _cause;
|
|
33
|
+
if (isTRPCClientError(cause)) {
|
|
34
|
+
if (opts.meta) cause.meta = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, cause.meta), opts.meta);
|
|
35
|
+
return cause;
|
|
36
|
+
}
|
|
37
|
+
if (isTRPCErrorResponse(cause)) return new TRPCClientError(cause.error.message, require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, opts), {}, {
|
|
38
|
+
result: cause,
|
|
39
|
+
cause: opts.cause
|
|
40
|
+
}));
|
|
41
|
+
return new TRPCClientError(getMessageFromUnknownError(cause, "Unknown error"), require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, opts), {}, { cause }));
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
//#endregion
|
|
45
|
+
Object.defineProperty(exports, "TRPCClientError", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
get: function() {
|
|
48
|
+
return TRPCClientError;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
Object.defineProperty(exports, "isTRPCClientError", {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function() {
|
|
54
|
+
return isTRPCClientError;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as _defineProperty, t as _objectSpread2 } from "./objectSpread2-weooBxVk.mjs";
|
|
2
2
|
import { isObject } from "@trpc/server/unstable-core-do-not-import";
|
|
3
|
-
|
|
4
3
|
//#region src/TRPCClientError.ts
|
|
5
|
-
var import_defineProperty = __toESM(require_defineProperty(), 1);
|
|
6
|
-
var import_objectSpread2 = __toESM(require_objectSpread2(), 1);
|
|
7
4
|
function isTRPCClientError(cause) {
|
|
8
5
|
return cause instanceof TRPCClientError;
|
|
9
6
|
}
|
|
@@ -20,10 +17,10 @@ var TRPCClientError = class TRPCClientError extends Error {
|
|
|
20
17
|
var _opts$result, _opts$result2;
|
|
21
18
|
const cause = opts === null || opts === void 0 ? void 0 : opts.cause;
|
|
22
19
|
super(message, { cause });
|
|
23
|
-
(
|
|
24
|
-
(
|
|
25
|
-
(
|
|
26
|
-
(
|
|
20
|
+
_defineProperty(this, "cause", void 0);
|
|
21
|
+
_defineProperty(this, "shape", void 0);
|
|
22
|
+
_defineProperty(this, "data", void 0);
|
|
23
|
+
_defineProperty(this, "meta", void 0);
|
|
27
24
|
this.meta = opts === null || opts === void 0 ? void 0 : opts.meta;
|
|
28
25
|
this.cause = cause;
|
|
29
26
|
this.shape = opts === null || opts === void 0 || (_opts$result = opts.result) === null || _opts$result === void 0 ? void 0 : _opts$result.error;
|
|
@@ -34,17 +31,17 @@ var TRPCClientError = class TRPCClientError extends Error {
|
|
|
34
31
|
static from(_cause, opts = {}) {
|
|
35
32
|
const cause = _cause;
|
|
36
33
|
if (isTRPCClientError(cause)) {
|
|
37
|
-
if (opts.meta) cause.meta = (
|
|
34
|
+
if (opts.meta) cause.meta = _objectSpread2(_objectSpread2({}, cause.meta), opts.meta);
|
|
38
35
|
return cause;
|
|
39
36
|
}
|
|
40
|
-
if (isTRPCErrorResponse(cause)) return new TRPCClientError(cause.error.message, (
|
|
37
|
+
if (isTRPCErrorResponse(cause)) return new TRPCClientError(cause.error.message, _objectSpread2(_objectSpread2({}, opts), {}, {
|
|
41
38
|
result: cause,
|
|
42
39
|
cause: opts.cause
|
|
43
40
|
}));
|
|
44
|
-
return new TRPCClientError(getMessageFromUnknownError(cause, "Unknown error"), (
|
|
41
|
+
return new TRPCClientError(getMessageFromUnknownError(cause, "Unknown error"), _objectSpread2(_objectSpread2({}, opts), {}, { cause }));
|
|
45
42
|
}
|
|
46
43
|
};
|
|
47
|
-
|
|
48
44
|
//#endregion
|
|
49
|
-
export {
|
|
50
|
-
|
|
45
|
+
export { isTRPCClientError as n, TRPCClientError as t };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=TRPCClientError-CxFRO7Js.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TRPCClientError-CxFRO7Js.mjs","names":[],"sources":["../src/TRPCClientError.ts"],"sourcesContent":["import type {\n inferClientTypes,\n InferrableClientTypes,\n Maybe,\n TRPCErrorResponse,\n} from '@trpc/server/unstable-core-do-not-import';\nimport {\n isObject,\n type DefaultErrorShape,\n} from '@trpc/server/unstable-core-do-not-import';\n\ntype inferErrorShape<TInferrable extends InferrableClientTypes> =\n inferClientTypes<TInferrable>['errorShape'];\nexport interface TRPCClientErrorBase<TShape extends DefaultErrorShape> {\n readonly message: string;\n readonly shape: Maybe<TShape>;\n readonly data: Maybe<TShape['data']>;\n}\nexport type TRPCClientErrorLike<TInferrable extends InferrableClientTypes> =\n TRPCClientErrorBase<inferErrorShape<TInferrable>>;\n\nexport function isTRPCClientError<TInferrable extends InferrableClientTypes>(\n cause: unknown,\n): cause is TRPCClientError<TInferrable> {\n return cause instanceof TRPCClientError;\n}\n\nfunction isTRPCErrorResponse(obj: unknown): obj is TRPCErrorResponse<any> {\n return (\n isObject(obj) &&\n isObject(obj['error']) &&\n typeof obj['error']['code'] === 'number' &&\n typeof obj['error']['message'] === 'string'\n );\n}\n\nfunction getMessageFromUnknownError(err: unknown, fallback: string): string {\n if (typeof err === 'string') {\n return err;\n }\n if (isObject(err) && typeof err['message'] === 'string') {\n return err['message'];\n }\n return fallback;\n}\n\nexport class TRPCClientError<TRouterOrProcedure extends InferrableClientTypes>\n extends Error\n implements TRPCClientErrorBase<inferErrorShape<TRouterOrProcedure>>\n{\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore override doesn't work in all environments due to \"This member cannot have an 'override' modifier because it is not declared in the base class 'Error'\"\n public override readonly cause;\n public readonly shape: Maybe<inferErrorShape<TRouterOrProcedure>>;\n public readonly data: Maybe<inferErrorShape<TRouterOrProcedure>['data']>;\n\n /**\n * Additional meta data about the error\n * In the case of HTTP-errors, we'll have `response` and potentially `responseJSON` here\n */\n public meta;\n\n constructor(\n message: string,\n opts?: {\n result?: Maybe<TRPCErrorResponse<inferErrorShape<TRouterOrProcedure>>>;\n cause?: Error;\n meta?: Record<string, unknown>;\n },\n ) {\n const cause = opts?.cause;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore https://github.com/tc39/proposal-error-cause\n super(message, { cause });\n\n this.meta = opts?.meta;\n\n this.cause = cause;\n this.shape = opts?.result?.error;\n this.data = opts?.result?.error.data;\n this.name = 'TRPCClientError';\n\n Object.setPrototypeOf(this, TRPCClientError.prototype);\n }\n\n public static from<TRouterOrProcedure extends InferrableClientTypes>(\n _cause: Error | TRPCErrorResponse<any> | object,\n opts: { meta?: Record<string, unknown>; cause?: Error } = {},\n ): TRPCClientError<TRouterOrProcedure> {\n const cause = _cause as unknown;\n\n if (isTRPCClientError(cause)) {\n if (opts.meta) {\n // Decorate with meta error data\n cause.meta = {\n ...cause.meta,\n ...opts.meta,\n };\n }\n return cause;\n }\n if (isTRPCErrorResponse(cause)) {\n return new TRPCClientError(cause.error.message, {\n ...opts,\n result: cause,\n cause: opts.cause,\n });\n }\n return new TRPCClientError(\n getMessageFromUnknownError(cause, 'Unknown error'),\n {\n ...opts,\n cause: cause as any,\n },\n );\n }\n}\n"],"mappings":";;;AAqBA,SAAgB,kBACd,OACuC;CACvC,OAAO,iBAAiB;AAC1B;AAEA,SAAS,oBAAoB,KAA6C;CACxE,OACE,SAAS,GAAG,KACZ,SAAS,IAAI,QAAQ,KACrB,OAAO,IAAI,QAAQ,CAAC,YAAY,YAChC,OAAO,IAAI,QAAQ,CAAC,eAAe;AAEvC;AAEA,SAAS,2BAA2B,KAAc,UAA0B;CAC1E,IAAI,OAAO,QAAQ,UACjB,OAAO;CAET,IAAI,SAAS,GAAG,KAAK,OAAO,IAAI,eAAe,UAC7C,OAAO,IAAI;CAEb,OAAO;AACT;AAEA,IAAa,kBAAb,MAAa,wBACH,MAEV;CAaE,YACE,SACA,MAKA;;EACA,MAAM,QAAA,SAAA,QAAA,SAAA,KAAA,IAAA,KAAA,IAAQ,KAAM;EAIpB,MAAM,SAAS,EAAE,MAAM,CAAC;EAtBD,gBAAA,MAAA,SAAA,KAAA,CAAA;EACT,gBAAA,MAAA,SAAA,KAAA,CAAA;EACA,gBAAA,MAAA,QAAA,KAAA,CAAA;EAMT,gBAAA,MAAA,QAAA,KAAA,CAAA;EAgBL,KAAK,OAAA,SAAA,QAAA,SAAA,KAAA,IAAA,KAAA,IAAO,KAAM;EAElB,KAAK,QAAQ;EACb,KAAK,QAAA,SAAA,QAAA,SAAA,KAAA,MAAA,eAAQ,KAAM,YAAA,QAAA,iBAAA,KAAA,IAAA,KAAA,IAAA,aAAQ;EAC3B,KAAK,OAAA,SAAA,QAAA,SAAA,KAAA,MAAA,gBAAO,KAAM,YAAA,QAAA,kBAAA,KAAA,IAAA,KAAA,IAAA,cAAQ,MAAM;EAChC,KAAK,OAAO;EAEZ,OAAO,eAAe,MAAM,gBAAgB,SAAS;CACvD;CAEA,OAAc,KACZ,QACA,OAA0D,CAAC,GACtB;EACrC,MAAM,QAAQ;EAEd,IAAI,kBAAkB,KAAK,GAAG;GAC5B,IAAI,KAAK,MAEP,MAAM,OAAA,eAAA,eAAA,CAAA,GACD,MAAM,IAAA,GACN,KAAK,IACV;GAEF,OAAO;EACT;EACA,IAAI,oBAAoB,KAAK,GAC3B,OAAO,IAAI,gBAAgB,MAAM,MAAM,SAAA,eAAA,eAAA,CAAA,GAClC,IAAA,GAAA,CAAA,GAAA;GACH,QAAQ;GACR,OAAO,KAAK;EACd,CAAA,CAAC;EAEH,OAAO,IAAI,gBACT,2BAA2B,OAAO,eAAe,GAAA,eAAA,eAAA,CAAA,GAE5C,IAAA,GAAA,CAAA,GAAA,EACI,MAAA,CACT,CACF;CACF;AACF"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TRPCClientError } from "./TRPCClientError-
|
|
3
|
-
import {
|
|
1
|
+
import { t as _objectSpread2 } from "./objectSpread2-weooBxVk.mjs";
|
|
2
|
+
import { t as TRPCClientError } from "./TRPCClientError-CxFRO7Js.mjs";
|
|
3
|
+
import { a as jsonHttpRequester, c as allAbortSignals, l as raceAbortSignals, o as resolveHTTPLinkOptions, r as getUrl } from "./httpUtils-CB_100ND.mjs";
|
|
4
4
|
import { observable } from "@trpc/server/observable";
|
|
5
5
|
import { transformResult } from "@trpc/server/unstable-core-do-not-import";
|
|
6
|
-
|
|
7
6
|
//#region src/internals/dataLoader.ts
|
|
8
7
|
/**
|
|
9
8
|
* A function that should never be called unless we messed something up.
|
|
@@ -36,19 +35,18 @@ function dataLoader(batchLoader) {
|
|
|
36
35
|
const lastGroup = groupedItems[groupedItems.length - 1];
|
|
37
36
|
if (item.aborted) {
|
|
38
37
|
var _item$reject;
|
|
39
|
-
(_item$reject = item.reject) === null || _item$reject === void 0 || _item$reject.call(item, new Error("Aborted"));
|
|
38
|
+
(_item$reject = item.reject) === null || _item$reject === void 0 || _item$reject.call(item, /* @__PURE__ */ new Error("Aborted"));
|
|
40
39
|
index++;
|
|
41
40
|
continue;
|
|
42
41
|
}
|
|
43
|
-
|
|
44
|
-
if (isValid) {
|
|
42
|
+
if (batchLoader.validate(lastGroup.concat(item).map((it) => it.key))) {
|
|
45
43
|
lastGroup.push(item);
|
|
46
44
|
index++;
|
|
47
45
|
continue;
|
|
48
46
|
}
|
|
49
47
|
if (lastGroup.length === 0) {
|
|
50
48
|
var _item$reject2;
|
|
51
|
-
(_item$reject2 = item.reject) === null || _item$reject2 === void 0 || _item$reject2.call(item, new Error("Input is too big for a single dispatch"));
|
|
49
|
+
(_item$reject2 = item.reject) === null || _item$reject2 === void 0 || _item$reject2.call(item, /* @__PURE__ */ new Error("Input is too big for a single dispatch"));
|
|
52
50
|
index++;
|
|
53
51
|
continue;
|
|
54
52
|
}
|
|
@@ -63,8 +61,7 @@ function dataLoader(batchLoader) {
|
|
|
63
61
|
if (!items.length) continue;
|
|
64
62
|
const batch = { items };
|
|
65
63
|
for (const item of items) item.batch = batch;
|
|
66
|
-
|
|
67
|
-
promise.then(async (result) => {
|
|
64
|
+
batchLoader.fetch(batch.items.map((_item) => _item.key)).then(async (result) => {
|
|
68
65
|
await Promise.all(result.map(async (valueOrPromise, index) => {
|
|
69
66
|
const item = batch.items[index];
|
|
70
67
|
try {
|
|
@@ -81,7 +78,7 @@ function dataLoader(batchLoader) {
|
|
|
81
78
|
}));
|
|
82
79
|
for (const item of batch.items) {
|
|
83
80
|
var _item$reject4;
|
|
84
|
-
(_item$reject4 = item.reject) === null || _item$reject4 === void 0 || _item$reject4.call(item, new Error("Missing result"));
|
|
81
|
+
(_item$reject4 = item.reject) === null || _item$reject4 === void 0 || _item$reject4.call(item, /* @__PURE__ */ new Error("Missing result"));
|
|
85
82
|
item.batch = null;
|
|
86
83
|
}
|
|
87
84
|
}).catch((cause) => {
|
|
@@ -114,10 +111,8 @@ function dataLoader(batchLoader) {
|
|
|
114
111
|
}
|
|
115
112
|
return { load };
|
|
116
113
|
}
|
|
117
|
-
|
|
118
114
|
//#endregion
|
|
119
115
|
//#region src/links/httpBatchLink.ts
|
|
120
|
-
var import_objectSpread2 = __toESM(require_objectSpread2(), 1);
|
|
121
116
|
/**
|
|
122
117
|
* @see https://trpc.io/docs/client/links/httpBatchLink
|
|
123
118
|
*/
|
|
@@ -134,19 +129,18 @@ function httpBatchLink(opts) {
|
|
|
134
129
|
if (batchOps.length > maxItems) return false;
|
|
135
130
|
const path = batchOps.map((op) => op.path).join(",");
|
|
136
131
|
const inputs = batchOps.map((op) => op.input);
|
|
137
|
-
|
|
132
|
+
return getUrl(_objectSpread2(_objectSpread2({}, resolvedOpts), {}, {
|
|
138
133
|
type,
|
|
139
134
|
path,
|
|
140
135
|
inputs,
|
|
141
136
|
signal: null
|
|
142
|
-
}));
|
|
143
|
-
return url.length <= maxURLLength;
|
|
137
|
+
})).length <= maxURLLength;
|
|
144
138
|
},
|
|
145
139
|
async fetch(batchOps) {
|
|
146
140
|
const path = batchOps.map((op) => op.path).join(",");
|
|
147
141
|
const inputs = batchOps.map((op) => op.input);
|
|
148
142
|
const signal = allAbortSignals(...batchOps.map((op) => op.signal));
|
|
149
|
-
const res = await jsonHttpRequester((
|
|
143
|
+
const res = await jsonHttpRequester(_objectSpread2(_objectSpread2({}, resolvedOpts), {}, {
|
|
150
144
|
path,
|
|
151
145
|
inputs,
|
|
152
146
|
type,
|
|
@@ -157,28 +151,23 @@ function httpBatchLink(opts) {
|
|
|
157
151
|
},
|
|
158
152
|
signal
|
|
159
153
|
}));
|
|
160
|
-
|
|
161
|
-
const result = resJSON.map((item) => ({
|
|
154
|
+
return (Array.isArray(res.json) ? res.json : batchOps.map(() => res.json)).map((item) => ({
|
|
162
155
|
meta: res.meta,
|
|
163
156
|
json: item
|
|
164
157
|
}));
|
|
165
|
-
return result;
|
|
166
158
|
}
|
|
167
159
|
};
|
|
168
160
|
};
|
|
169
|
-
const query = dataLoader(batchLoader("query"));
|
|
170
|
-
const mutation = dataLoader(batchLoader("mutation"));
|
|
171
161
|
const loaders = {
|
|
172
|
-
query,
|
|
173
|
-
mutation
|
|
162
|
+
query: dataLoader(batchLoader("query")),
|
|
163
|
+
mutation: dataLoader(batchLoader("mutation"))
|
|
174
164
|
};
|
|
175
165
|
return ({ op }) => {
|
|
176
166
|
return observable((observer) => {
|
|
177
167
|
/* istanbul ignore if -- @preserve */
|
|
178
168
|
if (op.type === "subscription") throw new Error("Subscriptions are unsupported by `httpLink` - use `httpSubscriptionLink` or `wsLink`");
|
|
179
169
|
const ac = new AbortController();
|
|
180
|
-
const
|
|
181
|
-
const promise = loader.load((0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, op), {}, { signal: raceAbortSignals(op.signal, ac.signal) }));
|
|
170
|
+
const promise = loaders[op.type].load(_objectSpread2(_objectSpread2({}, op), {}, { signal: raceAbortSignals(op.signal, ac.signal) }));
|
|
182
171
|
let isDone = false;
|
|
183
172
|
let _res = void 0;
|
|
184
173
|
promise.then((res) => {
|
|
@@ -205,7 +194,7 @@ function httpBatchLink(opts) {
|
|
|
205
194
|
};
|
|
206
195
|
};
|
|
207
196
|
}
|
|
208
|
-
|
|
209
197
|
//#endregion
|
|
210
|
-
export { dataLoader, httpBatchLink };
|
|
211
|
-
|
|
198
|
+
export { dataLoader as n, httpBatchLink as t };
|
|
199
|
+
|
|
200
|
+
//# sourceMappingURL=httpBatchLink-BMtWxLJV.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpBatchLink-RBPi17Tn.mjs","names":["batchLoader: BatchLoader<TKey, TValue>","pendingItems: BatchItem<TKey, TValue>[] | null","dispatchTimer: ReturnType<typeof setTimeout> | null","items: BatchItem<TKey, TValue>[]","groupedItems: BatchItem<TKey, TValue>[][]","batch: Batch<TKey, TValue>","key: TKey","item: BatchItem<TKey, TValue>","opts: HTTPBatchLinkOptions<TRouter['_def']['_config']['$types']>","type: ProcedureType"],"sources":["../src/internals/dataLoader.ts","../src/links/httpBatchLink.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\ntype BatchItem<TKey, TValue> = {\n aborted: boolean;\n key: TKey;\n resolve: ((value: TValue) => void) | null;\n reject: ((error: Error) => void) | null;\n batch: Batch<TKey, TValue> | null;\n};\ntype Batch<TKey, TValue> = {\n items: BatchItem<TKey, TValue>[];\n};\nexport type BatchLoader<TKey, TValue> = {\n validate: (keys: TKey[]) => boolean;\n fetch: (keys: TKey[]) => Promise<TValue[] | Promise<TValue>[]>;\n};\n\n/**\n * A function that should never be called unless we messed something up.\n */\nconst throwFatalError = () => {\n throw new Error(\n 'Something went wrong. Please submit an issue at https://github.com/trpc/trpc/issues/new',\n );\n};\n\n/**\n * Dataloader that's very inspired by https://github.com/graphql/dataloader\n * Less configuration, no caching, and allows you to cancel requests\n * When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled\n */\nexport function dataLoader<TKey, TValue>(\n batchLoader: BatchLoader<TKey, TValue>,\n) {\n let pendingItems: BatchItem<TKey, TValue>[] | null = null;\n let dispatchTimer: ReturnType<typeof setTimeout> | null = null;\n\n const destroyTimerAndPendingItems = () => {\n clearTimeout(dispatchTimer as any);\n dispatchTimer = null;\n pendingItems = null;\n };\n\n /**\n * Iterate through the items and split them into groups based on the `batchLoader`'s validate function\n */\n function groupItems(items: BatchItem<TKey, TValue>[]) {\n const groupedItems: BatchItem<TKey, TValue>[][] = [[]];\n let index = 0;\n while (true) {\n const item = items[index];\n if (!item) {\n // we're done\n break;\n }\n const lastGroup = groupedItems[groupedItems.length - 1]!;\n\n if (item.aborted) {\n // Item was aborted before it was dispatched\n item.reject?.(new Error('Aborted'));\n index++;\n continue;\n }\n\n const isValid = batchLoader.validate(\n lastGroup.concat(item).map((it) => it.key),\n );\n\n if (isValid) {\n lastGroup.push(item);\n index++;\n continue;\n }\n\n if (lastGroup.length === 0) {\n item.reject?.(new Error('Input is too big for a single dispatch'));\n index++;\n continue;\n }\n // Create new group, next iteration will try to add the item to that\n groupedItems.push([]);\n }\n return groupedItems;\n }\n\n function dispatch() {\n const groupedItems = groupItems(pendingItems!);\n destroyTimerAndPendingItems();\n\n // Create batches for each group of items\n for (const items of groupedItems) {\n if (!items.length) {\n continue;\n }\n const batch: Batch<TKey, TValue> = {\n items,\n };\n for (const item of items) {\n item.batch = batch;\n }\n const promise = batchLoader.fetch(batch.items.map((_item) => _item.key));\n\n promise\n .then(async (result) => {\n await Promise.all(\n result.map(async (valueOrPromise, index) => {\n const item = batch.items[index]!;\n try {\n const value = await Promise.resolve(valueOrPromise);\n\n item.resolve?.(value);\n } catch (cause) {\n item.reject?.(cause as Error);\n }\n\n item.batch = null;\n item.reject = null;\n item.resolve = null;\n }),\n );\n\n for (const item of batch.items) {\n item.reject?.(new Error('Missing result'));\n item.batch = null;\n }\n })\n .catch((cause) => {\n for (const item of batch.items) {\n item.reject?.(cause);\n item.batch = null;\n }\n });\n }\n }\n function load(key: TKey): Promise<TValue> {\n const item: BatchItem<TKey, TValue> = {\n aborted: false,\n key,\n batch: null,\n resolve: throwFatalError,\n reject: throwFatalError,\n };\n\n const promise = new Promise<TValue>((resolve, reject) => {\n item.reject = reject;\n item.resolve = resolve;\n\n pendingItems ??= [];\n pendingItems.push(item);\n });\n\n dispatchTimer ??= setTimeout(dispatch);\n\n return promise;\n }\n\n return {\n load,\n };\n}\n","import type { AnyRouter, ProcedureType } from '@trpc/server';\nimport { observable } from '@trpc/server/observable';\nimport { transformResult } from '@trpc/server/unstable-core-do-not-import';\nimport type { BatchLoader } from '../internals/dataLoader';\nimport { dataLoader } from '../internals/dataLoader';\nimport { allAbortSignals, raceAbortSignals } from '../internals/signals';\nimport type { NonEmptyArray } from '../internals/types';\nimport { TRPCClientError } from '../TRPCClientError';\nimport type { HTTPBatchLinkOptions } from './HTTPBatchLinkOptions';\nimport type { HTTPResult } from './internals/httpUtils';\nimport {\n getUrl,\n jsonHttpRequester,\n resolveHTTPLinkOptions,\n} from './internals/httpUtils';\nimport type { Operation, TRPCLink } from './types';\n\n/**\n * @see https://trpc.io/docs/client/links/httpBatchLink\n */\nexport function httpBatchLink<TRouter extends AnyRouter>(\n opts: HTTPBatchLinkOptions<TRouter['_def']['_config']['$types']>,\n): TRPCLink<TRouter> {\n const resolvedOpts = resolveHTTPLinkOptions(opts);\n const maxURLLength = opts.maxURLLength ?? Infinity;\n const maxItems = opts.maxItems ?? Infinity;\n\n return () => {\n const batchLoader = (\n type: ProcedureType,\n ): BatchLoader<Operation, HTTPResult> => {\n return {\n validate(batchOps) {\n if (maxURLLength === Infinity && maxItems === Infinity) {\n // escape hatch for quick calcs\n return true;\n }\n if (batchOps.length > maxItems) {\n return false;\n }\n const path = batchOps.map((op) => op.path).join(',');\n const inputs = batchOps.map((op) => op.input);\n\n const url = getUrl({\n ...resolvedOpts,\n type,\n path,\n inputs,\n signal: null,\n });\n\n return url.length <= maxURLLength;\n },\n async fetch(batchOps) {\n const path = batchOps.map((op) => op.path).join(',');\n const inputs = batchOps.map((op) => op.input);\n const signal = allAbortSignals(...batchOps.map((op) => op.signal));\n\n const res = await jsonHttpRequester({\n ...resolvedOpts,\n path,\n inputs,\n type,\n headers() {\n if (!opts.headers) {\n return {};\n }\n if (typeof opts.headers === 'function') {\n return opts.headers({\n opList: batchOps as NonEmptyArray<Operation>,\n });\n }\n return opts.headers;\n },\n signal,\n });\n const resJSON = Array.isArray(res.json)\n ? res.json\n : batchOps.map(() => res.json);\n const result = resJSON.map((item) => ({\n meta: res.meta,\n json: item,\n }));\n return result;\n },\n };\n };\n\n const query = dataLoader(batchLoader('query'));\n const mutation = dataLoader(batchLoader('mutation'));\n\n const loaders = { query, mutation };\n return ({ op }) => {\n return observable((observer) => {\n /* istanbul ignore if -- @preserve */\n if (op.type === 'subscription') {\n throw new Error(\n 'Subscriptions are unsupported by `httpLink` - use `httpSubscriptionLink` or `wsLink`',\n );\n }\n const ac = new AbortController();\n const loader = loaders[op.type];\n const promise = loader.load({\n ...op,\n signal: raceAbortSignals(op.signal, ac.signal),\n });\n\n let isDone = false;\n let _res = undefined as HTTPResult | undefined;\n promise\n .then((res) => {\n isDone = true;\n _res = res;\n const transformed = transformResult(\n res.json,\n resolvedOpts.transformer.output,\n );\n\n if (!transformed.ok) {\n observer.error(\n TRPCClientError.from(transformed.error, {\n meta: res.meta,\n }),\n );\n return;\n }\n observer.next({\n context: res.meta,\n result: transformed.result,\n });\n observer.complete();\n })\n .catch((err) => {\n isDone = true;\n observer.error(\n TRPCClientError.from(err, {\n meta: _res?.meta,\n }),\n );\n });\n\n return () => {\n if (!isDone) {\n ac.abort();\n }\n };\n });\n };\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"httpBatchLink-BMtWxLJV.mjs","names":[],"sources":["../src/internals/dataLoader.ts","../src/links/httpBatchLink.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\ntype BatchItem<TKey, TValue> = {\n aborted: boolean;\n key: TKey;\n resolve: ((value: TValue) => void) | null;\n reject: ((error: Error) => void) | null;\n batch: Batch<TKey, TValue> | null;\n};\ntype Batch<TKey, TValue> = {\n items: BatchItem<TKey, TValue>[];\n};\nexport type BatchLoader<TKey, TValue> = {\n validate: (keys: TKey[]) => boolean;\n fetch: (keys: TKey[]) => Promise<TValue[] | Promise<TValue>[]>;\n};\n\n/**\n * A function that should never be called unless we messed something up.\n */\nconst throwFatalError = () => {\n throw new Error(\n 'Something went wrong. Please submit an issue at https://github.com/trpc/trpc/issues/new',\n );\n};\n\n/**\n * Dataloader that's very inspired by https://github.com/graphql/dataloader\n * Less configuration, no caching, and allows you to cancel requests\n * When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled\n */\nexport function dataLoader<TKey, TValue>(\n batchLoader: BatchLoader<TKey, TValue>,\n) {\n let pendingItems: BatchItem<TKey, TValue>[] | null = null;\n let dispatchTimer: ReturnType<typeof setTimeout> | null = null;\n\n const destroyTimerAndPendingItems = () => {\n clearTimeout(dispatchTimer as any);\n dispatchTimer = null;\n pendingItems = null;\n };\n\n /**\n * Iterate through the items and split them into groups based on the `batchLoader`'s validate function\n */\n function groupItems(items: BatchItem<TKey, TValue>[]) {\n const groupedItems: BatchItem<TKey, TValue>[][] = [[]];\n let index = 0;\n while (true) {\n const item = items[index];\n if (!item) {\n // we're done\n break;\n }\n const lastGroup = groupedItems[groupedItems.length - 1]!;\n\n if (item.aborted) {\n // Item was aborted before it was dispatched\n item.reject?.(new Error('Aborted'));\n index++;\n continue;\n }\n\n const isValid = batchLoader.validate(\n lastGroup.concat(item).map((it) => it.key),\n );\n\n if (isValid) {\n lastGroup.push(item);\n index++;\n continue;\n }\n\n if (lastGroup.length === 0) {\n item.reject?.(new Error('Input is too big for a single dispatch'));\n index++;\n continue;\n }\n // Create new group, next iteration will try to add the item to that\n groupedItems.push([]);\n }\n return groupedItems;\n }\n\n function dispatch() {\n const groupedItems = groupItems(pendingItems!);\n destroyTimerAndPendingItems();\n\n // Create batches for each group of items\n for (const items of groupedItems) {\n if (!items.length) {\n continue;\n }\n const batch: Batch<TKey, TValue> = {\n items,\n };\n for (const item of items) {\n item.batch = batch;\n }\n const promise = batchLoader.fetch(batch.items.map((_item) => _item.key));\n\n promise\n .then(async (result) => {\n await Promise.all(\n result.map(async (valueOrPromise, index) => {\n const item = batch.items[index]!;\n try {\n const value = await Promise.resolve(valueOrPromise);\n\n item.resolve?.(value);\n } catch (cause) {\n item.reject?.(cause as Error);\n }\n\n item.batch = null;\n item.reject = null;\n item.resolve = null;\n }),\n );\n\n for (const item of batch.items) {\n item.reject?.(new Error('Missing result'));\n item.batch = null;\n }\n })\n .catch((cause) => {\n for (const item of batch.items) {\n item.reject?.(cause);\n item.batch = null;\n }\n });\n }\n }\n function load(key: TKey): Promise<TValue> {\n const item: BatchItem<TKey, TValue> = {\n aborted: false,\n key,\n batch: null,\n resolve: throwFatalError,\n reject: throwFatalError,\n };\n\n const promise = new Promise<TValue>((resolve, reject) => {\n item.reject = reject;\n item.resolve = resolve;\n\n pendingItems ??= [];\n pendingItems.push(item);\n });\n\n dispatchTimer ??= setTimeout(dispatch);\n\n return promise;\n }\n\n return {\n load,\n };\n}\n","import type { AnyRouter, ProcedureType } from '@trpc/server';\nimport { observable } from '@trpc/server/observable';\nimport { transformResult } from '@trpc/server/unstable-core-do-not-import';\nimport type { BatchLoader } from '../internals/dataLoader';\nimport { dataLoader } from '../internals/dataLoader';\nimport { allAbortSignals, raceAbortSignals } from '../internals/signals';\nimport type { NonEmptyArray } from '../internals/types';\nimport { TRPCClientError } from '../TRPCClientError';\nimport type { HTTPBatchLinkOptions } from './HTTPBatchLinkOptions';\nimport type { HTTPResult } from './internals/httpUtils';\nimport {\n getUrl,\n jsonHttpRequester,\n resolveHTTPLinkOptions,\n} from './internals/httpUtils';\nimport type { Operation, TRPCLink } from './types';\n\n/**\n * @see https://trpc.io/docs/client/links/httpBatchLink\n */\nexport function httpBatchLink<TRouter extends AnyRouter>(\n opts: HTTPBatchLinkOptions<TRouter['_def']['_config']['$types']>,\n): TRPCLink<TRouter> {\n const resolvedOpts = resolveHTTPLinkOptions(opts);\n const maxURLLength = opts.maxURLLength ?? Infinity;\n const maxItems = opts.maxItems ?? Infinity;\n\n return () => {\n const batchLoader = (\n type: ProcedureType,\n ): BatchLoader<Operation, HTTPResult> => {\n return {\n validate(batchOps) {\n if (maxURLLength === Infinity && maxItems === Infinity) {\n // escape hatch for quick calcs\n return true;\n }\n if (batchOps.length > maxItems) {\n return false;\n }\n const path = batchOps.map((op) => op.path).join(',');\n const inputs = batchOps.map((op) => op.input);\n\n const url = getUrl({\n ...resolvedOpts,\n type,\n path,\n inputs,\n signal: null,\n });\n\n return url.length <= maxURLLength;\n },\n async fetch(batchOps) {\n const path = batchOps.map((op) => op.path).join(',');\n const inputs = batchOps.map((op) => op.input);\n const signal = allAbortSignals(...batchOps.map((op) => op.signal));\n\n const res = await jsonHttpRequester({\n ...resolvedOpts,\n path,\n inputs,\n type,\n headers() {\n if (!opts.headers) {\n return {};\n }\n if (typeof opts.headers === 'function') {\n return opts.headers({\n opList: batchOps as NonEmptyArray<Operation>,\n });\n }\n return opts.headers;\n },\n signal,\n });\n const resJSON = Array.isArray(res.json)\n ? res.json\n : batchOps.map(() => res.json);\n const result = resJSON.map((item) => ({\n meta: res.meta,\n json: item,\n }));\n return result;\n },\n };\n };\n\n const query = dataLoader(batchLoader('query'));\n const mutation = dataLoader(batchLoader('mutation'));\n\n const loaders = { query, mutation };\n return ({ op }) => {\n return observable((observer) => {\n /* istanbul ignore if -- @preserve */\n if (op.type === 'subscription') {\n throw new Error(\n 'Subscriptions are unsupported by `httpLink` - use `httpSubscriptionLink` or `wsLink`',\n );\n }\n const ac = new AbortController();\n const loader = loaders[op.type];\n const promise = loader.load({\n ...op,\n signal: raceAbortSignals(op.signal, ac.signal),\n });\n\n let isDone = false;\n let _res = undefined as HTTPResult | undefined;\n promise\n .then((res) => {\n isDone = true;\n _res = res;\n const transformed = transformResult(\n res.json,\n resolvedOpts.transformer.output,\n );\n\n if (!transformed.ok) {\n observer.error(\n TRPCClientError.from(transformed.error, {\n meta: res.meta,\n }),\n );\n return;\n }\n observer.next({\n context: res.meta,\n result: transformed.result,\n });\n observer.complete();\n })\n .catch((err) => {\n isDone = true;\n observer.error(\n TRPCClientError.from(err, {\n meta: _res?.meta,\n }),\n );\n });\n\n return () => {\n if (!isDone) {\n ac.abort();\n }\n };\n });\n };\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { HTTPLinkBaseOptions } from "./httpUtils
|
|
1
|
+
import { _ as NonEmptyArray, n as Operation, t as HTTPHeaders, u as TRPCLink } from "./types-BxbMkv6C.cjs";
|
|
2
|
+
import { t as HTTPLinkBaseOptions } from "./httpUtils-CUqAubVD.cjs";
|
|
3
3
|
import { AnyClientTypes } from "@trpc/server/unstable-core-do-not-import";
|
|
4
4
|
import { AnyRouter as AnyRouter$1 } from "@trpc/server";
|
|
5
|
-
|
|
6
5
|
//#region src/links/HTTPBatchLinkOptions.d.ts
|
|
7
6
|
type HTTPBatchLinkOptions<TRoot extends AnyClientTypes> = HTTPLinkBaseOptions<TRoot> & {
|
|
8
7
|
maxURLLength?: number;
|
|
@@ -19,15 +18,12 @@ type HTTPBatchLinkOptions<TRoot extends AnyClientTypes> = HTTPLinkBaseOptions<TR
|
|
|
19
18
|
*/
|
|
20
19
|
maxItems?: number;
|
|
21
20
|
};
|
|
22
|
-
//# sourceMappingURL=HTTPBatchLinkOptions.d.ts.map
|
|
23
21
|
//#endregion
|
|
24
22
|
//#region src/links/httpBatchLink.d.ts
|
|
25
23
|
/**
|
|
26
24
|
* @see https://trpc.io/docs/client/links/httpBatchLink
|
|
27
25
|
*/
|
|
28
26
|
declare function httpBatchLink<TRouter extends AnyRouter$1>(opts: HTTPBatchLinkOptions<TRouter['_def']['_config']['$types']>): TRPCLink<TRouter>;
|
|
29
|
-
//# sourceMappingURL=httpBatchLink.d.ts.map
|
|
30
|
-
|
|
31
27
|
//#endregion
|
|
32
|
-
export { HTTPBatchLinkOptions, httpBatchLink };
|
|
33
|
-
//# sourceMappingURL=httpBatchLink
|
|
28
|
+
export { HTTPBatchLinkOptions as n, httpBatchLink as t };
|
|
29
|
+
//# sourceMappingURL=httpBatchLink-Br-pzPXf.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpBatchLink-Br-pzPXf.d.cts","names":[],"sources":["../src/links/HTTPBatchLinkOptions.ts","../src/links/httpBatchLink.ts"],"mappings":";;;;;KAKY,qBAAqB,cAAc,kBAC7C,oBAAoB;EAClB;;;;;EAKA,UACI,gBACE;IACA,QAAQ,cAAc;QAClB,cAAc,QAAQ;;;;;EAMhC;;;;;;;iBCFY,cAAc,gBAAgB,aAC5C,MAAM,qBAAqB,wCAC1B,SAAS"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const __trpc_server_unstable_core_do_not_import = require_chunk.__toESM(require("@trpc/server/unstable-core-do-not-import"));
|
|
7
|
-
|
|
1
|
+
const require_objectSpread2 = require("./objectSpread2-D-dJi1gK.cjs");
|
|
2
|
+
const require_TRPCClientError = require("./TRPCClientError-CmHlBkPF.cjs");
|
|
3
|
+
const require_httpUtils = require("./httpUtils-cggqcHz0.cjs");
|
|
4
|
+
let _trpc_server_observable = require("@trpc/server/observable");
|
|
5
|
+
let _trpc_server_unstable_core_do_not_import = require("@trpc/server/unstable-core-do-not-import");
|
|
8
6
|
//#region src/internals/dataLoader.ts
|
|
9
7
|
/**
|
|
10
8
|
* A function that should never be called unless we messed something up.
|
|
@@ -37,19 +35,18 @@ function dataLoader(batchLoader) {
|
|
|
37
35
|
const lastGroup = groupedItems[groupedItems.length - 1];
|
|
38
36
|
if (item.aborted) {
|
|
39
37
|
var _item$reject;
|
|
40
|
-
(_item$reject = item.reject) === null || _item$reject === void 0 || _item$reject.call(item, new Error("Aborted"));
|
|
38
|
+
(_item$reject = item.reject) === null || _item$reject === void 0 || _item$reject.call(item, /* @__PURE__ */ new Error("Aborted"));
|
|
41
39
|
index++;
|
|
42
40
|
continue;
|
|
43
41
|
}
|
|
44
|
-
|
|
45
|
-
if (isValid) {
|
|
42
|
+
if (batchLoader.validate(lastGroup.concat(item).map((it) => it.key))) {
|
|
46
43
|
lastGroup.push(item);
|
|
47
44
|
index++;
|
|
48
45
|
continue;
|
|
49
46
|
}
|
|
50
47
|
if (lastGroup.length === 0) {
|
|
51
48
|
var _item$reject2;
|
|
52
|
-
(_item$reject2 = item.reject) === null || _item$reject2 === void 0 || _item$reject2.call(item, new Error("Input is too big for a single dispatch"));
|
|
49
|
+
(_item$reject2 = item.reject) === null || _item$reject2 === void 0 || _item$reject2.call(item, /* @__PURE__ */ new Error("Input is too big for a single dispatch"));
|
|
53
50
|
index++;
|
|
54
51
|
continue;
|
|
55
52
|
}
|
|
@@ -64,8 +61,7 @@ function dataLoader(batchLoader) {
|
|
|
64
61
|
if (!items.length) continue;
|
|
65
62
|
const batch = { items };
|
|
66
63
|
for (const item of items) item.batch = batch;
|
|
67
|
-
|
|
68
|
-
promise.then(async (result) => {
|
|
64
|
+
batchLoader.fetch(batch.items.map((_item) => _item.key)).then(async (result) => {
|
|
69
65
|
await Promise.all(result.map(async (valueOrPromise, index) => {
|
|
70
66
|
const item = batch.items[index];
|
|
71
67
|
try {
|
|
@@ -82,7 +78,7 @@ function dataLoader(batchLoader) {
|
|
|
82
78
|
}));
|
|
83
79
|
for (const item of batch.items) {
|
|
84
80
|
var _item$reject4;
|
|
85
|
-
(_item$reject4 = item.reject) === null || _item$reject4 === void 0 || _item$reject4.call(item, new Error("Missing result"));
|
|
81
|
+
(_item$reject4 = item.reject) === null || _item$reject4 === void 0 || _item$reject4.call(item, /* @__PURE__ */ new Error("Missing result"));
|
|
86
82
|
item.batch = null;
|
|
87
83
|
}
|
|
88
84
|
}).catch((cause) => {
|
|
@@ -115,10 +111,8 @@ function dataLoader(batchLoader) {
|
|
|
115
111
|
}
|
|
116
112
|
return { load };
|
|
117
113
|
}
|
|
118
|
-
|
|
119
114
|
//#endregion
|
|
120
115
|
//#region src/links/httpBatchLink.ts
|
|
121
|
-
var import_objectSpread2 = require_chunk.__toESM(require_objectSpread2$1.require_objectSpread2(), 1);
|
|
122
116
|
/**
|
|
123
117
|
* @see https://trpc.io/docs/client/links/httpBatchLink
|
|
124
118
|
*/
|
|
@@ -135,19 +129,18 @@ function httpBatchLink(opts) {
|
|
|
135
129
|
if (batchOps.length > maxItems) return false;
|
|
136
130
|
const path = batchOps.map((op) => op.path).join(",");
|
|
137
131
|
const inputs = batchOps.map((op) => op.input);
|
|
138
|
-
|
|
132
|
+
return require_httpUtils.getUrl(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, resolvedOpts), {}, {
|
|
139
133
|
type,
|
|
140
134
|
path,
|
|
141
135
|
inputs,
|
|
142
136
|
signal: null
|
|
143
|
-
}));
|
|
144
|
-
return url.length <= maxURLLength;
|
|
137
|
+
})).length <= maxURLLength;
|
|
145
138
|
},
|
|
146
139
|
async fetch(batchOps) {
|
|
147
140
|
const path = batchOps.map((op) => op.path).join(",");
|
|
148
141
|
const inputs = batchOps.map((op) => op.input);
|
|
149
142
|
const signal = require_httpUtils.allAbortSignals(...batchOps.map((op) => op.signal));
|
|
150
|
-
const res = await require_httpUtils.jsonHttpRequester(
|
|
143
|
+
const res = await require_httpUtils.jsonHttpRequester(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, resolvedOpts), {}, {
|
|
151
144
|
path,
|
|
152
145
|
inputs,
|
|
153
146
|
type,
|
|
@@ -158,34 +151,29 @@ function httpBatchLink(opts) {
|
|
|
158
151
|
},
|
|
159
152
|
signal
|
|
160
153
|
}));
|
|
161
|
-
|
|
162
|
-
const result = resJSON.map((item) => ({
|
|
154
|
+
return (Array.isArray(res.json) ? res.json : batchOps.map(() => res.json)).map((item) => ({
|
|
163
155
|
meta: res.meta,
|
|
164
156
|
json: item
|
|
165
157
|
}));
|
|
166
|
-
return result;
|
|
167
158
|
}
|
|
168
159
|
};
|
|
169
160
|
};
|
|
170
|
-
const query = dataLoader(batchLoader("query"));
|
|
171
|
-
const mutation = dataLoader(batchLoader("mutation"));
|
|
172
161
|
const loaders = {
|
|
173
|
-
query,
|
|
174
|
-
mutation
|
|
162
|
+
query: dataLoader(batchLoader("query")),
|
|
163
|
+
mutation: dataLoader(batchLoader("mutation"))
|
|
175
164
|
};
|
|
176
165
|
return ({ op }) => {
|
|
177
|
-
return (0,
|
|
166
|
+
return (0, _trpc_server_observable.observable)((observer) => {
|
|
178
167
|
/* istanbul ignore if -- @preserve */
|
|
179
168
|
if (op.type === "subscription") throw new Error("Subscriptions are unsupported by `httpLink` - use `httpSubscriptionLink` or `wsLink`");
|
|
180
169
|
const ac = new AbortController();
|
|
181
|
-
const
|
|
182
|
-
const promise = loader.load((0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, op), {}, { signal: require_httpUtils.raceAbortSignals(op.signal, ac.signal) }));
|
|
170
|
+
const promise = loaders[op.type].load(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, op), {}, { signal: require_httpUtils.raceAbortSignals(op.signal, ac.signal) }));
|
|
183
171
|
let isDone = false;
|
|
184
172
|
let _res = void 0;
|
|
185
173
|
promise.then((res) => {
|
|
186
174
|
isDone = true;
|
|
187
175
|
_res = res;
|
|
188
|
-
const transformed = (0,
|
|
176
|
+
const transformed = (0, _trpc_server_unstable_core_do_not_import.transformResult)(res.json, resolvedOpts.transformer.output);
|
|
189
177
|
if (!transformed.ok) {
|
|
190
178
|
observer.error(require_TRPCClientError.TRPCClientError.from(transformed.error, { meta: res.meta }));
|
|
191
179
|
return;
|
|
@@ -206,17 +194,16 @@ function httpBatchLink(opts) {
|
|
|
206
194
|
};
|
|
207
195
|
};
|
|
208
196
|
}
|
|
209
|
-
|
|
210
197
|
//#endregion
|
|
211
|
-
Object.defineProperty(exports,
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
198
|
+
Object.defineProperty(exports, "dataLoader", {
|
|
199
|
+
enumerable: true,
|
|
200
|
+
get: function() {
|
|
201
|
+
return dataLoader;
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
Object.defineProperty(exports, "httpBatchLink", {
|
|
205
|
+
enumerable: true,
|
|
206
|
+
get: function() {
|
|
207
|
+
return httpBatchLink;
|
|
208
|
+
}
|
|
216
209
|
});
|
|
217
|
-
Object.defineProperty(exports, 'httpBatchLink', {
|
|
218
|
-
enumerable: true,
|
|
219
|
-
get: function () {
|
|
220
|
-
return httpBatchLink;
|
|
221
|
-
}
|
|
222
|
-
});
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { HTTPLinkBaseOptions } from "./httpUtils
|
|
1
|
+
import { _ as NonEmptyArray, n as Operation, t as HTTPHeaders, u as TRPCLink } from "./types-CAPs7vhA.mjs";
|
|
2
|
+
import { t as HTTPLinkBaseOptions } from "./httpUtils-C37jRVnj.mjs";
|
|
3
3
|
import { AnyClientTypes } from "@trpc/server/unstable-core-do-not-import";
|
|
4
4
|
import { AnyRouter as AnyRouter$1 } from "@trpc/server";
|
|
5
|
-
|
|
6
5
|
//#region src/links/HTTPBatchLinkOptions.d.ts
|
|
7
6
|
type HTTPBatchLinkOptions<TRoot extends AnyClientTypes> = HTTPLinkBaseOptions<TRoot> & {
|
|
8
7
|
maxURLLength?: number;
|
|
@@ -19,15 +18,12 @@ type HTTPBatchLinkOptions<TRoot extends AnyClientTypes> = HTTPLinkBaseOptions<TR
|
|
|
19
18
|
*/
|
|
20
19
|
maxItems?: number;
|
|
21
20
|
};
|
|
22
|
-
//# sourceMappingURL=HTTPBatchLinkOptions.d.ts.map
|
|
23
21
|
//#endregion
|
|
24
22
|
//#region src/links/httpBatchLink.d.ts
|
|
25
23
|
/**
|
|
26
24
|
* @see https://trpc.io/docs/client/links/httpBatchLink
|
|
27
25
|
*/
|
|
28
26
|
declare function httpBatchLink<TRouter extends AnyRouter$1>(opts: HTTPBatchLinkOptions<TRouter['_def']['_config']['$types']>): TRPCLink<TRouter>;
|
|
29
|
-
//# sourceMappingURL=httpBatchLink.d.ts.map
|
|
30
|
-
|
|
31
27
|
//#endregion
|
|
32
|
-
export { HTTPBatchLinkOptions, httpBatchLink };
|
|
33
|
-
//# sourceMappingURL=httpBatchLink.d
|
|
28
|
+
export { HTTPBatchLinkOptions as n, httpBatchLink as t };
|
|
29
|
+
//# sourceMappingURL=httpBatchLink-nvc48L_N.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpBatchLink-nvc48L_N.d.mts","names":[],"sources":["../src/links/HTTPBatchLinkOptions.ts","../src/links/httpBatchLink.ts"],"mappings":";;;;;KAKY,qBAAqB,cAAc,kBAC7C,oBAAoB;EAClB;;;;;EAKA,UACI,gBACE;IACA,QAAQ,cAAc;QAClB,cAAc,QAAQ;;;;;EAMhC;;;;;;;iBCFY,cAAc,gBAAgB,aAC5C,MAAM,qBAAqB,wCAC1B,SAAS"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { HTTPLinkBaseOptions } from "./httpUtils
|
|
1
|
+
import { n as Operation, t as HTTPHeaders, u as TRPCLink } from "./types-BxbMkv6C.cjs";
|
|
2
|
+
import { t as HTTPLinkBaseOptions } from "./httpUtils-CUqAubVD.cjs";
|
|
3
3
|
import { AnyClientTypes, AnyRouter } from "@trpc/server/unstable-core-do-not-import";
|
|
4
|
-
|
|
5
4
|
//#region src/links/httpLink.d.ts
|
|
6
5
|
type HTTPLinkOptions<TRoot extends AnyClientTypes> = HTTPLinkBaseOptions<TRoot> & {
|
|
7
6
|
/**
|
|
@@ -16,8 +15,6 @@ type HTTPLinkOptions<TRoot extends AnyClientTypes> = HTTPLinkBaseOptions<TRoot>
|
|
|
16
15
|
* @see https://trpc.io/docs/client/links/httpLink
|
|
17
16
|
*/
|
|
18
17
|
declare function httpLink<TRouter extends AnyRouter = AnyRouter>(opts: HTTPLinkOptions<TRouter['_def']['_config']['$types']>): TRPCLink<TRouter>;
|
|
19
|
-
//# sourceMappingURL=httpLink.d.ts.map
|
|
20
|
-
|
|
21
18
|
//#endregion
|
|
22
|
-
export {
|
|
23
|
-
//# sourceMappingURL=httpLink
|
|
19
|
+
export { httpLink as n, HTTPLinkOptions as t };
|
|
20
|
+
//# sourceMappingURL=httpLink-D5FQijY2.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpLink-D5FQijY2.d.cts","names":[],"sources":["../src/links/httpLink.ts"],"mappings":";;;;KA2BY,gBAAgB,cAAc,kBACxC,oBAAoB;;;;;EAKlB,UACI,gBACE;IAAQ,IAAI;QAAgB,cAAc,QAAQ;;;;;iBAwC5C,SAAS,gBAAgB,YAAY,WACnD,MAAM,gBAAgB,wCACrB,SAAS"}
|