Skip to content

Repository files navigation

📦 container

githubnpmdocsci

Lightweight decorator-based dependency injection container for TypeScript.

pnpm i @half0wl/container
import{Container,BaseService,Service,Inject}from"@half0wl/container";interfaceContainerDeps{db: DatabaseClient;logger: Logger;}
@Service()classUserServiceextendsBaseService<ContainerDeps>{findById(id: string){returnthis.deps.db.users.findUnique({where: { id }});}}
@Service()classAuthServiceextendsBaseService<ContainerDeps>{
@Inject(()=>UserService)declarereadonlyuserService: UserService;authenticate(token: string){returnthis.userService.findById(tokenToId(token));}}constcontainer=Container.create<ContainerDeps>({ db, logger });constauth=container.get(AuthService);

Requires "experimentalDecorators": true in tsconfig.json.

Documentation

Full guide and API reference at container.lib.ray.cat.

Development

# install dependencies
pnpm install
# build all packages
pnpm -r build
# run tests
pnpm -r test# lint with biome
pnpm lint
# lint and auto-fix
pnpm lint:fix
# run documentation site locally
pnpm --filter docs dev
# build documentation for production
pnpm --filter docs build
# run the demo
pnpm --filter demo build && pnpm --filter demo start

License

MIT

About

📦 Lightweight decorator-based dependency injection container for TypeScript.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages