0.1.5 • Published 10 months ago

safe-invoke v0.1.5

Weekly downloads
2
License
MIT
Repository
github
Last release
10 months ago

safe-invoke

NPM version NPM downloads CircleCI

Tiny function used to avoid "&&" hell.

Install

# use npm
npm i --save safe-invoke

# use yarn
yarn add safe-invoke

# use pnpm
pnpm add safe-invoke

How to use

Suppose we have an object like this.

let âge = {
    muv: {
        luv: [
            {
                extra: (...) => {...}
            },
            {
                unlimited: (...) => {...}
            },
            {
                alternative: (...) => {...}
            }
        ]
    }
};

If we want to call the function extra, unlimited, alternative safely.

Original

âge
    && âge.muv
    && âge.muv.luv
    && âge.muv.luv[0]
    && typeof âge.muv.luv[0].extra === 'function'
    && âge.muv.luv[0].extra();

âge
    && âge.muv
    && âge.muv.luv
    && âge.muv.luv[1]
    && typeof âge.muv.luv[1].unlimited === 'function'
    && âge.muv.luv[1].unlimited('オルタネイティヴ5');

âge
    && âge.muv
    && âge.muv.luv
    && âge.muv.luv[2]
    && typeof âge.muv.luv[2].alternative === 'function'
    && âge.muv.luv[2].alternative('オルタネイティヴ4', '桜花作戦');

Now we can write this way.

import safeInvoke from 'safe-invoke';

safeInvoke(âge, 'muv.luv.0.extra');
safeInvoke(âge, 'muv.luv.1.unlimited', 'オルタネイティヴ5');
safeInvoke(âge, 'muv.luv.2.alternative', 'オルタネイティヴ4', '桜花作戦');

Tips

If key of object contains . self, we should change second argument (path) with array of string like below.

let obj = {
    'A.I.Channel': () => console.log('kizuna ai'),
    'A': {'I': {'Channel': () => console.log('ban')}}
};

safeInvoke(obj, ['A.I.Channel']);
// out: 'kizuna ai'

safeInvoke(obj, 'A.I.Channel');
// or
safeInvoke(obj, ['A', 'I', 'Channel']);
// out: ban

License

MIT

0.1.5

10 months ago

0.1.4

3 years ago

0.1.3

4 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

7 years ago

0.0.4

7 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago