inversify/inversify-binding-decorators

View on GitHub
src/factory/module_factory.ts

Summary

Maintainability
A
0 mins
Test Coverage
import interfaces from "../interfaces/interfaces";
import { METADATA_KEY } from "../constants";
import { interfaces as inversifyInterfaces, ContainerModule } from "inversify";

function buildProviderModule(): inversifyInterfaces.ContainerModule {
    return new ContainerModule((bind, unbind) => {
        let provideMetadata: interfaces.ProvideSyntax[] = Reflect.getMetadata(METADATA_KEY.provide, Reflect) || [];
        provideMetadata.map(metadata => resolve(metadata, bind));
    });
}

function resolve(metadata: interfaces.ProvideSyntax, bind: inversifyInterfaces.Bind) {
    return metadata.constraint(bind, metadata.implementationType);
}
export default buildProviderModule;