Skip to content

Pipeline

ts
import { Pipeline } from "@dpg.gg/core/utils";

Overview

Pipeline представляет собой основу для реализации middleware системы.

На его основе реализует система middleware для Renderer

ts
const ms = new Pipeline();
ms.use((ctx, next) => {
	// some logic
	return next();
});
await ms.run(ctx);

// Or
const res = await(new Pipeline()).use(fn1).use(fn2).run(ctx);

Либо можно использовать Pipeline как родительский класс

ts
class Traverse extends Pipeline<any> {
	// ...
	async build(node: any): Promise<ComponentChildren> {
		// ...
		await this.run(node);
		// ...
	}
}

Methods

use(...middlewares)

  • Arg: middlewares: Middleware | Middleware[] - одна или несколько Middleware подобных функций

Добавляет middleware в стек pipeline

ts
ms.use((ctx, next) => {
	// some logic
	return next();
});

async run(context)

  • Arg context: any

Выполнение стека middleware функций для работы с контекстом

ts
await this.run(ctx);

Middleware

Это тип callback функции передаваемой в метод use.

Функция получает 2 аргумента:

context

  • Type: any

Контекст который был передан при запуске Pipeline методом run и возможно модифицирован предыдущими middleware функциями

next

  • Type: () => Promise<void> | void

Это функция котораязавершает выполнение текущей middleware функции.

ts
const ms = new Pipeline();
ms.use((ctx, next) => {
	// some logic
	return next(); 
});
await ms.run(ctx);

WARNING

Если next не будет вызываться, то последующие middlewares из стака не выполнятся