Converts the class reference to a callable function. Invoking this method internally creates a new instance of the class using the container and invokes the method using the container.
You can create a callable function using the container instance as shown below
const fn = moduleCaller(HomeController, 'handle')
.toCallable(container)
// Call the function and pass context to it
await fn(ctx)
Another option is to not pass the container at the time of creating the callable function, but instead pass a resolver instance at the time of calling the function
const fn = moduleCaller(HomeController, 'handle')
.toCallable()
// Call the function and pass context to it
const resolver = container.createResolver()
await fn(resolver, ctx)
Optionalcontainer: TConverts the class reference to an object with handle method. Invoking this method internally creates a new instance of the class using the container and invokes the method using the container.
You can create a handle method object using the container instance as shown below
const handler = moduleCaller(HomeController, 'handle')
.toHandleMethod(container)
// Call the function and pass context to it
await handler.handle(ctx)
Another option is to not pass the container at the time of creating the handle method object, but instead pass a resolver instance at the time of calling the function
const handler = moduleCaller(HomeController, 'handle')
.toHandleMethod()
// Call the function and pass context to it
const resolver = container.createResolver()
await handler.handle(resolver, ctx)
Optionalcontainer: T
The moduleCaller works around a very specific pattern we use with AdonisJS, ie to construct classes and call methods using the container.
For example: Controllers of AdonisJS allows defining a controller as follows
Behind the scenes, we have to run following operations in order to call the handle method on the defined middleware.