Skip to content
/ trob Public

Safe Function Transform (trob) is a small JavaScript util function that helps applying the same function call whether you use an object or an array of objects.

License

Notifications You must be signed in to change notification settings

ALLOcloud/trob

Repository files navigation

Safe Function Transform (aka. trob)

npm version Build Status dependencies Status devDependencies Status License: MIT

A small utility function to run a function on either an array of objects or an object without knowing the argument type before.

This is needed for us because we run almost the same logic on both our user and users GraphQL's resolvers and thus we can leverage code re-use easily without having to write the same trob logic every time.

Installation

Simply run the following to add trob into your project:

$ yarn add trob

# Or if you prefer NPM:
$ npm install trob

Example

Imagine you have either an user object, or an array of user objects. Now you want to run the exactly same function on them because they share the same interface. For example, you'd like to update the user's name by adding its last name. Here's where trob comes to the rescue.

// ES6
import trob from "trob";

// ES5
const trob = require("trob");

// CommonJS
const trob = require("trob").default;

// Fixtures
const user = { id: 1, firstName: "John" };
const users = [...user, { id: 2, firstName: "Dan" }];

// Transform function
const addLastName = u => ({ ...u, lastName: "Doe", fullName: `${u.name} Doe` });

// NOW LET'S TROB DO THE MAGIC.
const trobdUser = trob(user, addLastName);
const trobdUsers = trob(users, addLastName);

// Results: It rocks! :3
assert(trobdUser.lastName === "Doe");
assert(trobdUser.fullName === "John Doe");
assert(trobdUsers[1].lastName === "Doe");
assert(trobdUsers[1].fullName === "Dan Doe");

See the examples/ folder for more examples.

License

MIT © OpenS SPRL, ALLOcloud

About

Safe Function Transform (trob) is a small JavaScript util function that helps applying the same function call whether you use an object or an array of objects.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published