0.2.4-dev • Published 1 year ago

@bilisjs/bilis v0.2.4-dev

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

@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

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

0.2.2-dev

1 year ago

0.2.4-dev

1 year ago

0.2.1-dev

1 year ago

0.2.0-dev

1 year ago

0.1.1-dev

1 year ago

0.1.0-dev

1 year ago

0.0.1-dev

1 year ago