Files
nest/packages/core/middleware/resolver.ts
2026-02-15 13:07:08 +01:00

29 lines
1.0 KiB
TypeScript

import type { InjectionToken } from '@nestjs/common';
import { Injector } from '../injector/injector.js';
import { InstanceWrapper } from '../injector/instance-wrapper.js';
import { Module } from '../injector/module.js';
import { MiddlewareContainer } from './container.js';
export class MiddlewareResolver {
constructor(
private readonly middlewareContainer: MiddlewareContainer,
private readonly injector: Injector,
) {}
public async resolveInstances(moduleRef: Module, moduleName: string) {
const middlewareMap =
this.middlewareContainer.getMiddlewareCollection(moduleName);
const resolveInstance = async (wrapper: InstanceWrapper) =>
this.resolveMiddlewareInstance(wrapper, middlewareMap, moduleRef);
await Promise.all([...middlewareMap.values()].map(resolveInstance));
}
private async resolveMiddlewareInstance(
wrapper: InstanceWrapper,
middlewareMap: Map<InjectionToken, InstanceWrapper>,
moduleRef: Module,
) {
await this.injector.loadMiddleware(wrapper, middlewareMap, moduleRef);
}
}