Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const container = createContainer();
container.register({
// System
app: asClass(Application, { lifetime: Lifetime.SINGLETON }),
server: asClass(Server, { lifetime: Lifetime.SINGLETON }),
router: asFunction(router, { lifetime: Lifetime.SINGLETON }),
logger: asFunction(logger, { lifetime: Lifetime.SINGLETON }),
config: asValue(config),
//Middlewares
loggerMiddleware: asFunction(loggerMiddleware, { lifetime: Lifetime.SINGLETON }),
containerMiddleware: asValue(scopePerRequest(container)),
errorHandler: asValue(config.production ? errorHandler : devErrorHandler),
swaggerMiddleware: asValue(swaggerMiddleware),
//Repositories
usersRepository: asClass(MongoUsersRepository, { lifetime: Lifetime.SINGLETON }),
//Database
database: asFunction(database),
UserModel: asValue(UserModel),
//Operations
createUser: asClass(CreateUser),
getAllUsers: asClass(GetAllUsers),
updateUser: asClass(UpdateUser),
getUserByUid: asClass(GetByUid),
})
.register({
router: asFunction(router).singleton(),
logger: asFunction(logger).singleton()
})
.register({
config: asValue(config)
});
// Middlewares
container
.register({
loggerMiddleware: asFunction(loggerMiddleware).singleton()
})
.register({
containerMiddleware: asValue(scopePerRequest(container)),
errorHandler: asValue(config.production ? errorHandler : devErrorHandler),
swaggerMiddleware: asValue([swaggerMiddleware])
});
// Repositories
container.register({
usersRepository: asClass(SequelizeUsersRepository).singleton()
});
// Database
container.register({
database: asValue(database),
UserModel: asValue(UserModel)
});
// Operations
const container = createContainer();
container
.register({
app: asClass(Application).singleton(),
server: asClass(serverListen).singleton(),
})
.register({
router: asFunction(routerApp).singleton(),
DbContext: asClass(DbContext).scoped(),
DbContextMongo: asClass(DbContextMongo).scoped(),
});
container.register({
containerMiddleware: asValue(scopePerRequest(container)),
});
export default container;