Next Phenomenal Microbrewery

    decamelcase-keys
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.1 • Public • Published

    decamelcase-keys · Build Status npm version minzipped size

    Convert object keys from camelCase/PascalCase to snake_case or into a lowercased one with a custom separator.

    Distinctive features from similar packages:

    • convertible object keys are cached to increase performance when re-converting a key
    • supports different languages ​​for writing convertible keys (not only English)

    This project uses decamelize and was made on the basis of camelcase-keys

    Install

    npm i decamelcase-keys

    Usage

    const decamelcaseKeys = require('decamelcase-keys');
     
    // Convert an object
    decamelcaseKeys({fooBar: true});
    //=> {foo_bar: true}
     
    // Convert an array of objects
    decamelcaseKeys([{fooBar: true}, {barFoo: false}]);
    //=> [{foo_bar: true}, {bar_foo: false}]
     
    // Recurse nested objects
    decamelcaseKeys({fooBar: true, nested: {unicornRainbow: true}}, {deep: true});
    //=> {foo_bar: true, nested: {unicorn_rainbow: true}}
     
    // Convert object keys with a custom separator (for example, in kebab case)
    decamelcaseKeys({FooBar: true, Nested: {UnicornRainbow: true}}, {deep: true, separator: '-'});
    //=> {'foo-bar': true, nested: {'unicorn-rainbow': true}}
     
    // Exclude keys from being snake-cased
    decamelcaseKeys({fooBar: true, barFoo: false}, {exclude: ['barFoo']});
    //=> {foo_bar: true, barFoo: false}
     
    // Exclude children at the given object paths
    decamelcaseKeys({aB: 1, aC: {cD: 1, cE: {eF: 1}}}, {deep: true, stopPaths: ['aC.cE']});
    //=> {a_b: 1, a_c: {c_d: 1, c_e: {eF: 1}}}

    API

    decamelcaseKeys(input, options?)

    input

    Type: object | object[]

    An object or array of objects to snake-case.

    options

    Type: object

    deep

    Type: boolean
    Default: false

    Recurse nested objects and objects in arrays.

    separator

    Type: string
    Default: '_'

    The separator to use to put in between the words.

    exclude

    Type: Array<string | RegExp>
    Default: []

    Exclude keys from being snake-cased.

    stopPaths

    Type: string[]
    Default: []

    Exclude children at the given object paths in dot-notation from being snake-cased. For example, with an object like {a: {b: '🦄'}}, the object path to reach the unicorn is 'a.b'.

    decamelcaseKeys({
        aB: 1,
        aC: {
            cD: 1,
            cE: {
                eF: 1
            }
        }
    }, {
        deep: true,
        stopPaths: [
            'aC.cE'
        ]
    }),
    /*
    {
        a_b: 1,
        a_c: {
            c_d: 1,
            c_e: {
                eF: 1
            }
        }
    }
    */

    Related

    See camelcase-keys for the inverse.

    License

    decamelcase-keys is MIT licensed.

    Install

    npm i decamelcase-keys

    DownloadsWeekly Downloads

    769

    Version

    1.1.1

    License

    MIT

    Unpacked Size

    9.71 kB

    Total Files

    5

    Last publish

    Collaborators

    • mahovich