Задача.
Приложение, в котором клиенты проходят N шагов обработки (обмен сообщениями, например публичными ключами, аутентиф. данными и т.п.) после чего попадают в общий пул юзеров, т.е. количество шагов недетерминировано.
После N шагов все клиенты могут взаимодействовать друг с другом через сервер.
Задача стоит сделать все это со строгой типизацией(typescript) и расширяемой архитектурой (между этапами обработки можно добавить еще один, конечный пул должен быть также расширяемый по функционалу).
Какой паттерн стоит рассмотреть?
Middlewares кажутся неэффективными, поскольку данные выходящие из узла 1 нужны только в узле 2, но не в третьем, а middleware только наращивают данные или уточняют - в моем случае интерфейсы результатов работы между узлами могут быть совершенно разные.
state machine, как я понимаю, это про автоматы? если да, то у меня однонаправленный поток данных, автомат все-таки подразумевает под собой целый граф. не будет ли это оверхедом?
Israfil22, автомат не граф, а набор состояний + условия переходом между ними + действия, которые происходят в момент перехода. Вроде для js есть библиотека для такого даже неплохая https://www.npmjs.com/package/xstate