Inyección de dependencias de nueva generación para TypeScript
Grafos de dependencias verificados por el compilador. Resolución rápida. Un runtime de menos de 3 KiB. Tu lógica de negocio sigue siendo TypeScript normal.
pnpm add @inferdi/inferdi
Una resolución en caché empieza con un Map.get(). El modo predeterminado conserva las comprobaciones en runtime para la resolución en frío.
Metodología y resultados completosMedianas del benchmark registrado de ocho rondas con build de producción. Mide el coste del contenedor, no el rendimiento total de la aplicación. .
Cada registro devuelve un tipo de contenedor nuevo que guarda su clave, valor, tiempo de vida, enlace asíncrono y requisitos de scope.
import { Container } from '@inferdi/inferdi'
class Logger {
info(message: string) {}
}
class Database {
findUser(id: string) {
return { id }
}
}
class UserRepo {
constructor(readonly logger: Logger, readonly database: Database) {}
}
const container = new Container()
.registerClass('logger', Logger, [])
.registerClass('database', Database, [])
.registerClass('users', UserRepo, ['logger', 'database'])
const users = container.get('users')
React 19Contexto tipado, hooks con Suspense y scopes gestionados.
Fastify 5Un scope tipado por petición con limpieza por ciclo de vida.
Hono 4Variables de contexto tipadas para Workers, Bun y Node.
Koa 3Scopes de petición que siguen el ciclo del middleware.
Express 5Scopes de petición tipados para middleware y rutas.
Elysia 1Tipos de ruta llevados hasta los servicios de petición.Mantén el grafo en un solo lugar para que sus decisiones sean fáciles de leer y cambiar.