
Research
Security News
The Growing Risk of Malicious Browser Extensions
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
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
The npm package adonis-api-resources receives a total of 3 weekly downloads. As such, adonis-api-resources popularity was classified as not popular.
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.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
Research
Security News
An in-depth analysis of credential stealers, crypto drainers, cryptojackers, and clipboard hijackers abusing open source package registries to compromise Web3 development environments.
Security News
pnpm 10.12.1 introduces a global virtual store for faster installs and new options for managing dependencies with version catalogs.