
Security News
MCP Community Begins Work on Official MCP Metaregistry
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
adonis-api-resources
Advanced tools
Provides a transformation layer between models and actual API endpont responses in JSON format.
Install the package:
npm install adonis-api-resources
Configure the package:
node ace configure adonis-api-resources
Generate a new resource (i.e. for a user):
node ace make:resource user
Import your generated resource before using it, i.e. in a controller:
import UserResource from '#resources/user_resource'
Remove old endpoint return declaration:
return user
Use the your generated resource instead:
return new UserResource(user).refine()
redefine() modifies a model or array of models according to your custom map defined in resource file. Used along with get() method, which indicates that data processing is done and provides the result. You can also use refine(), which is an alias of redefine().get(), see example below.
Edit newly generated app/resources/user_resource.ts to create output you need. This example shows how you may output user's full name even if your implementation of user model has separate fields for the first and last names:
...
return {
full_name: data.firstName + ' ' + data.lastName,
}
...
You may also use arrays of models with resources:
return new UserResource(users).refine()
Model:
{
"full_name": "John Doe"
}
Array of models:
[
{
"full_name": "John Doe"
},
{
"full_name": "Jane Doe"
}
]
In case you are dealing with not paginateable array you can still create pagination using this extension. refinePaginate() is an alias of redefine().paginate(), see examples below:
return new UserResource(users).refinePaginate(page, limit)
return new UserResource(users).redefine().paginate(page, limit)
Arguments:
page - number of page to show (optional, default value: 1)
limit - items per page (optional, default value: 10)
No map definition is needed, once you only want to pick a few values of the object and leave other values behind. Examples:
return new UserResource(users).pick('firstName').get()
return new UserResource(users).pick('firstName', 'lastName', 'email').paginate(1, 20)
No map definition is needed, once you only want to exclude a few values from the object. Examples:
return new UserResource(users).omit('id').paginate()
return new UserResource(users).omit('createdAt', 'updatedAt').get()
get() finalizes data processing. While pick(), omit() and redefine() modify data, trailing get() or paginate() is needed to complete the response. This requirement is not applied to refine() and refinePaginate()
Lucid offset-based pagination is supported.
FAQs
API resources for AdonisJS
We found that adonis-api-resources demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.