levelheaded

⚖️ Generate object containing functions deemed operational by level

Usage no npm install needed!

<script type="module">
  import levelheaded from 'https://cdn.skypack.dev/levelheaded';
</script>

README

levelheaded

⚖️ Generate object containing functions deemed operational by level

Assigns functions by level. Functions lower than the minimal level will be assigned with no operation, while minimal level and above are assigned the desired operation.

| Option | Type | Meaning | Default | - | - | - | - | levels | Array[String] | Levels will become functions | [ 'debug', 'verbose', 'info', 'warn', 'error', 'critical' ] | minimal | String | Minimal level to execute | levels[0] | action | Function | The action to execute when minimal level was matched | console.log | object | Object | An object to assign the functions on | {} | noop | Function | Function to call when event should not be triggered | ()=>undefined

ℹ️ All options are optional

import levelheaded from 'levelheaded';

const logger = levelheaded({
    minimal: isDevelopment() ? 'debug' : 'warn',
    action: function (message) {
        fetch(
            'https://error.logger.com',
            {
                method: 'POST',
                body: JSON.stringify({
                    message,
                    url: document.location.href,
                    level: this.level,
                })
            }
        );
    }
})

logger.debug('Something trivial'); // ⛔️ Won't fire
logger.error('Something I need to know'); // ✅ Will fire

Custom levels

const logger = levelheaded({
    levels: ['a', 'b', 'c'],
    minimal: 'b',
});

logger.a('Something'); // ⛔️ Won't fire
logger.b('Something'); // ✅ Will fire

Transpiled version

Environments which exclude node_modules from the transpiling pipeline should include the "browser" entry instead of "main". This exposes an ES5 commonjs module.

Also available for explicit import:

const reduce = require('levelheaded/dist');