/
githubmirror
/
trpc
Обзор
Документация
Войти
/
githubmirror
/
trpc
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/client/src/links/internals/createChain.ts
40 строк
1 KB
Alex / KATT
fix(server): delete the `@trpc/core`-package (#5355)
19 янв 2024, 17:08
Не верифицирован
19 янв 2024, 17:08
c9f72c9
Код
Авторство
О чём код?
import { observable } from '@trpc/server/observable'; import type { AnyRouter } from '@trpc/server/unstable-core-do-not-import'; import type { Operation, OperationLink, OperationResultObservable, } from '../types'; /** @internal */ export function createChain< TRouter extends AnyRouter, TInput = unknown, TOutput = unknown, >(opts: { links: OperationLink<TRouter, TInput, TOutput>[]; op: Operation<TInput>; }): OperationResultObservable<TRouter, TOutput> { return 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?', ); } const subscription = next({ op, next(nextOp) { const nextObserver = execute(index + 1, nextOp); return nextObserver; }, }); return subscription; } const obs$ = execute(); return obs$.subscribe(observer); }); }