@bilisjs/bilis
v0.2.4-dev
Published
Bilis.js - framework for building standalone and distributed JavaScript applications in bun runtime
Downloads
9
Maintainers
Readme
@bilisjs/bilis
Bilis.js - framework for building distributed and standalone JavaScript applications, for Bun runtime written in TypeScript.
Warning: Please keep in mind that this project still in development. and might be not suitable for production purposes just yet.
Documentation - read to get familiar with Bilis.js and how to use it.
- App initialization
- Decorators
- Modules
- Controllers
- Actions
- Providers
- Supported Transport Protocols
- Dependency Incjection
- Benchmark
App initialization
const options: BilisOptions = {
appId: "example-app",
http: {
on: true,
host: "0.0.0.0",
port: 3000,
},
};
const bilis = new BilisApplication();
bilis
.setOptions(options)
.setModule(ConfigModule, AuthModule, UsersModule)
.start();
Decorators
Below you can find useful decorators.
@module
@controller
@action
@provider
@load
@module
Applied to a class, defines module properties.
@module({
name: "users",
imports: [ConfigModule],
controllers: [UserController, ProfileController],
providers: [UserService],
})
export class UsersModule {}
@controller
Must be applied to all controllers which are part of the module.
@controller()
export class UserController {}
@action
@action({
route: { path: "/user", methods: [HttpMethod.GET] },
})
async listUsers(req: BilisRequest): Promise<BilisResponse> {}
@action({
name: "get-user",
route: { path: "/user/<userId>", methods: [HttpMethod.GET] },
})
async getUser(req: BilisRequest): Promise<BilisResponse> {
return { userId: req.params?.userId };
}
@provider
Must be applied to all classes which can be injectable through @load
in controllers or other providers.
@provider()
export class UserService {}
@load
Applied to inject and initialize module providers in controllers and providers constructors.
@controller()
export class UserController {
constructor(
@load(UserService)
private readonly userService: UserService
) {}
@action({
route: { path: "/user", methods: [HttpMethod.GET] },
})
async listUsers(req: BilisRequest): Promise<BilisResponse> {
return this.userService.getAllUsers();
}
}
Author: Maciej (Mac) Lisowski