Wyrly DI: Type-safe Dependency Injection for Modern TypeScript Wyrly DI is a new dependency injection toolkit for TypeScript that uses standard TC39 decorators instead of legacy experimental decorators or `reflect-metadata`. It requires explicit declaration of dependencies through a `deps` array, making dependency relationships visible to code review and static analysis tools. The toolkit supports singleton, scoped, and transient lifetimes, includes web framework adapters that create per-request DI scopes, and provides built-in dependency graph validation to detect issues like singletons depending on scoped dependencies. We have released Wyrly DI , a dependency injection toolkit for TypeScript. Wyrly DI is designed for modern TypeScript applications that want dependency injection without relying on reflect-metadata , emitDecoratorMetadata , legacy decorators, or parameter decorators. It focuses on: - standard decorators - type-safe tokens - explicit dependency definitions - request scopes for web applications - inspectable and validatable dependency graphs In this article, "standard decorators" means TC39 decorators supported by TypeScript 5.0 and later. This is different from the older experimentalDecorators model that many existing DI libraries were built around. Links Why another DI toolkit? Many TypeScript DI libraries use runtime metadata to infer constructor dependencies. That can be convenient, but it also means important dependency information can become hidden behind runtime metadata and decorator behavior. Wyrly DI takes a more explicit approach. js import { Injectable, token } from "@wyrly/core"; type User = { id: string; name: string; }; interface UserRepository { findById id: string : Promise