Skip to content
Reshape JavaScript objects to match a schema
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
test Tweak data stack pushing Jun 2, 2016
LICENSE Refactor (#2) May 30, 2016


Build Status Coverage Status

Reshaper is a JavaScript library which can automatically restructure JavaScript objects to match a provided schema. It also provides users with some manual control, by way of a 'hint' system.

To see some interactive examples, check out this Kajero notebook.


npm install reshaper


reshaper(data, schema, [hint])

  • data: The JavaScript data structure to be reshaped.
  • schema: The structure we want our reshaped data to match.
  • hint: (Optional) The name of an object key, given as a 'hint'. Keys matching this hint will be preferred. An array of keys can also be provided if desired.


var reshaper = require('reshaper');

var peopleData = [
        name: 'Joel',
        info: {
            age: 22,
            height: 1.9,
            middleName: 'Robert',
            lastName: 'Auterson'
        name: 'Jake',
        info: {
            age: 24,
            height: 1.85,
            middleName: 'Wild',
            lastName: 'Hall'

var schema = ['String'];

reshaper(peopleData, schema);
// => ['Joel', 'Jake']

// We can give a 'hint', to say lastName is what we want.
reshaper(peopleData, schema, 'lastName');
// => ['Auterson', 'Hall']

// Object keys get used as hints
var schema = {
    age: ['Number'],
    height: ['Number']

reshaper(peopleData, schema);
/* =>
    age: [22, 24],
    height: [1.9, 1.85]
You can’t perform that action at this time.