UNPKG

@trpc/client

Version:

The tRPC client library

52 lines (51 loc) 1.33 kB
let _trpc_server_observable = require("@trpc/server/observable"); //#region src/links/internals/createChain.ts /** @internal */ function createChain(opts) { return (0, _trpc_server_observable.observable)((observer) => { function execute(index = 0, op = opts.op) { const next = opts.links[index]; if (!next) throw new Error("No more links to execute - did you forget to add an ending link?"); return next({ op, next(nextOp) { return execute(index + 1, nextOp); } }); } return execute().subscribe(observer); }); } //#endregion //#region src/links/splitLink.ts function asArray(value) { return Array.isArray(value) ? value : [value]; } function splitLink(opts) { return (runtime) => { const yes = asArray(opts.true).map((link) => link(runtime)); const no = asArray(opts.false).map((link) => link(runtime)); return (props) => { return (0, _trpc_server_observable.observable)((observer) => { const links = opts.condition(props.op) ? yes : no; return createChain({ op: props.op, links }).subscribe(observer); }); }; }; } //#endregion Object.defineProperty(exports, "createChain", { enumerable: true, get: function() { return createChain; } }); Object.defineProperty(exports, "splitLink", { enumerable: true, get: function() { return splitLink; } });