skeleton-mapper
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

SKELETON MAPPER

This module provides an easy object mapper from a template skeleton.

Mapping objects

The definition of the function is:

declare function skeletonMap(
    source: {[key: string]: any} | {[key: string]: any}[],
    skeleton: {[key: string]: string},
    addUndefinedFields = false
): {[key: string]: any} | {[keystring]any}[]
  • source is an object, or a collection of objects.

  • skeleton is the template to be mapped, its keys should have as value the fields from the source object. If the field is inside an object, you can access it by a dot notation.

  • addUndefinedFields maps the undefined fields inside the result object (usually keys undefined are not given).

Examples

Map an object

const source = {
    name: "Team 1",
    shield: "shield.jpg",
    university: 5,
    players: [
        {
            name: "Poe",
            surname: "Doe",
        },
        {
            name: "John",
            surname: "Msk",
        },
    ],
};
 
const skeleton = {
    teamName: "name",
    image: "shield",
    players: "players",
};
 
const r = skeletonMap(source, skeleton);
 
/*
    {
        teamName: "Team 1",
        image: "shield.jpg",
        players: [
            {
                name: "Poe",
                surname: "Doe",
            },
            {
                name: "John",
                surname: "Msk",
            },
        ],
    }
*/

Map keys inside keys using dot notation

const source = {
    name: "Angel",
    surname: "Main",
    role: {
        id: 1,
        name: "Admin",
    },
    team: {
        id: 1,
        name: "Team 1",
        university: {
            id: 1,
            name: "University 1",
        },
    },
};
 
const skeleton = {
    name: "name",
    surname: "surname",
    roleId: "role.id",
    universityName: "team.university.name",
};
 
const r = skeletonMap(source, skeleton);
 
/*
    {
        name: "Angel",
        surname: "Main",
        roleId: 1,
        universityName: "University 1",
    }
*/

Map an array and give a different shape as output

const source = [
    {
        name: "Angel",
        surname: "Main",
        team: {
            id: 1,
            name: "Team 1",
            university: {
                id: 1,
                name: "University 1",
            },
        },
    },
    {
        name: "Lisa",
        surname: "Maz",
        team: {
            id: 2,
            name: "Team 2",
            university: {
                id: 2,
                name: "University 2",
            },
        },
    },
];
 
const skeleton = {
    athlete: {
        name: "name",
    },
    university: {
        name: "team.university.name",
        team: {
            id: "team.id",
            name: "team.name"
        }
    }
};
 
const r = skeletonMap(source, skeleton);
 
/*
    [
        {
            athlete: {
                name: "Angel",
            },
            university: {
                name: "University 1",
                team: {
                    id: 1,
                    name: "Team 1"
                }
            }
        },
        {
            athlete: {
                name: "Lisa",
            },
            university: {
                name: "University 2",
                team: {
                    id: 2,
                    name: "Team 2"
                }
            }
        }
    ]
*/

Readme

Keywords

Package Sidebar

Install

npm i skeleton-mapper

Weekly Downloads

31

Version

1.0.2

License

ISC

Unpacked Size

7.92 kB

Total Files

11

Last publish

Collaborators

  • rolandoandrade