Non-Partisan Magicians

    camel-humps

    1.0.3 • Public • Published

    npm Build Status Coverage Status Known Vulnerabilities style NPM

    camelHumps

    Allow accessing object with snake_case property names using camelCase property names

    Why do I need it?

    One example is whenever you'd like to seamlessly destructure or access an API request or response that are described in snake_case, by using camelCase for having a consistent code

    Why choosing camelHumps over other similar packages?

    Basically camelHumps utilizes NodeJS Proxy class and doesn't deep-clone the original object as other similar packages do.

    Which results in

    ✅ No overhead of deep-cloning objects

    ✅ Minimal effect on memory footprint

    ✅ Applied only to fields that have being accessed

    ✅ Supports both snake_case and kebab-case

    ✅ Can mutate the original object 😱

    Install

    npm i camel-humps

    API

    camelHumps(obj, options)

    options:

    • kebab (false) - given object properties are in kebeb-case

    Usage

    const camelHumps = require('camelHumps');
    const snakeObj = camelHumps(obj); // for snake_case
    const kebabObj = camelHumps(obj, {kebeb: true}); // for kebab-case

    Examples

    const body = fetchData('/313');
    console.info(body);
    // result: { 
    //     customer_details: { first_name: 'Jon', last_name: 'Stark' },
    //     birth_place: 'Tower of Joy' }
     
    const camelBody = camelHumps(body);
    const { characterDetails } = camelBody;
    console.info(characterDetails);
    // result: { first_name: 'Jon', last_name: 'Stark' }
     
    const { firstName, lastName } = characterDetails;
    console.info({ firstName, lastName });
    // result: { first_name: 'Jon', last_name: 'Stark' }
     
    camelBody.characterDetails.firstName = 'Arya';
    camelBody.birthPlace = 'Winterfel';
    console.info(camelBody);
    // result: {
    //   characterDetails: { first_name: 'Arya', last_name: 'Stark' },
    //   birthPlace: 'Winterfel' }

    Install

    npm i camel-humps

    DownloadsWeekly Downloads

    5

    Version

    1.0.3

    License

    Apache-2.0

    Unpacked Size

    16.6 kB

    Total Files

    4

    Last publish

    Collaborators

    • kobic
    • idanto