Published in

A Laravel(ish) Resource/Transformer in javascript.

My basic attempt at javascript data transformation, resources.js

check out the npm package, resources.js

We‘ve gone serverless at work and we’re using my favorite, nodejs! That means a lot of javascript.

I’ve been using callbacks to transform my results but I’ve become accustomed to Fractal and now Laravels own Eloquent Resources. I like having a “view layer” for my responses, it makes things a lot easier to modify months later.

I don’t need all the features, just basic transformation, so the script is pretty slim.

Resources are defined nearly the same as Laravel.

class UserResource extends Resource {
toArray() {
return {
id: Number(,
posts: PostResource.collection(this.posts),
created_at: this.created_at,
updated_at: this.updated_at,

You even execute it nearly the same.

// Collections are static
const collection = UserResource.collection(data);
// Single items are not
const single = new UserResource(data[0]).exec();

Is it the same? Not at all, Laravel and Fractal actually do a bit more. I’m in the market for something similar but simpler, if you are too maybe this will be of use.

It would be nice to have more features, use a process method and the filter for even more options. We’ll see where it goes.


By default your results will be wrapped in a data key. You can disable this by passing the second parameter as false.

new UserResource({...}, false).exec()
UserResource.collection(data, false)

You can now pass a paginated object to collection, the data field is required for parsing. The rest of your fields will be merged with the results.

A full example

I’ve made this a package instead, check out the npmjs page for its readme.


I love writing javascript. It’s fun. I hope sharing will help provide some feed back so please let me know your opinions.




A day-to-day log of the questions we’ve asked & the answers we’ve found.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Will Bowman

Will Bowman

Web Developer Since 1998

More from Medium

5 interview questions for Vue.js developers

A Detailed Comparison Between VueJS & ReactJS

Create Your Own Layout Component in React

Separating Monolith Laravel + VueJS to Backend and Frontend with Webpack5