pathmirror

    1.1.1 • Public • Published

    pathmirror

    Build Status

    Advanced key mirror function that can mirror nested object keys. Intended for the generation of flux action type names.

    Installation

    npm install pathmirror --save
    

    Usage

    import pathMirror from 'pathmirror';
     
    const mirrored = pathMirror({
        foo: {
            bar: {
                baz: null
            }
        }
    });
     
    console.log(foo.bar.baz); // foo_bar_baz

    You can change the default delimiter via the second parameter.

    import pathMirror from 'pathmirror';
     
    const mirrored = pathMirror({
        foo: {
            bar: {
                baz: null
            }
        }
    }, '.');
     
    console.log(mirrored.foo.bar.baz); // foo.bar.baz

    Advanced Options

    There are several hooks to manipulate the produced output.

    For example can you add a prefix or suffix to your created paths, change the separator or transform the path before creating the mirrored object.

    import pathMirror from 'pathmirror';
     
    const mirrored = pathMirror({
        foo: {
            bar: {
                baz: null
            }
        }
    }, {
        separator: '_',
        prefix: 'prefix/',
        suffix: '/suffix',
        transform: (key, value, path) => key.toUpperCase()
    });
     
    console.log(mirrored.foo.bar.baz); // prefix/FOO_BAR_BAZ/suffix

    For more advanced scenarios each string option can be a function which is called with the final path as string array.

    import pathMirror from 'pathmirror';
     
    const mirrored = pathMirror({
        foo: {
            bar: null
        },
        baz: {
            foobar: null
        }
    }, {
        separator: (path) => path[0] === 'foo' ? ':' : '.',
        prefix: (path) => path[0] === 'foo' ? '1/' : '2/',
        suffix: (path) => path[1] === 'foobar' ? '/1' : '/2',
    });
     
    console.log(mirrored.foo.bar); // 1/foo:bar/2
    console.log(mirrored.baz.foobar); // 2/baz.foobar/1

    Use Case

    This module is intended for generating hierachical action names when working with flux:

    import pathMirror from 'pathmirror';
     
    const actions = pathMirror({
        APP: {
            INIT: null
        },
        POSTS: {
            REQUEST: null,
            FETCHED: null,
            ERROR: null
        }
    });
     
    console.log(actions);
    /*
    {
        APP: {
            INIT: 'APP_INIT'
        },
        POSTS: {
            REQUEST: 'POSTS_REQUEST',
            FETECHED: 'POSTS_FETECHED',
            ERROR: 'POSTS_ERROR'
        }
    }
     */

    Install

    npm i pathmirror

    DownloadsWeekly Downloads

    44

    Version

    1.1.1

    License

    MIT

    Last publish

    Collaborators

    • mlegenhausen