API
Injectables
injectables are just objects
Injectables
Injectables are objects that represent the implementation of a reference.
Use
implements
Create an injectable and implement it by using the injectable
function:
import { injectable } from "aquinas";
import { UserServiceReference } from "./user-service.reference";
const UserService = injectable(UserServiceReference)
.implements(() => ({
async getUser(id) {
...
},
}));
deps
Declare dependencies for your injectable using the deps
method:
import { injectable } from "aquinas";
import { UserRepositoryReference } from "./user.repository.reference";
import { NotificationServiceReference } from "./notification.service.reference";
import { RegisterUserUsecaseReference } from "./register-user.usecase.reference";
const RegisterUserUsecase = injectable(RegisterUserUsecaseReference)
.deps({
userRepository: UserRepositoryReference,
notificationService: NotificationServiceReference,
})
.implements(() => ({
async getUser(id) {
const user = await this.userRepository.findById(id);
await this.notificationService.notifyUserAccess(id);
return user;
},
}));
init
Use the init
method to run synchronous initialization logic before implementing the injectable:
import { injectable } from "aquinas";
import { createUtils } from "./utils";
import { UserRepositoryReference } from "./user-repository.reference";
const UserRepository = injectable(UserRepositoryReference)
.init(() => {
const utils = createUtils()
return {
utils
}
})
.implements(({ utils }) => ({
async findById(id) {
...
},
}));
To register your injectable, check next section on docks.