1.1.0 • Published 5 years ago

good-filter v1.1.0

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

good-filter

good-filter is a transform stream useful for filtering good server events based on given conditions. Current Version

Maintainer: Yehor Manzhula

Usage

new GoodFilter([config])

Creates a new GoodFilter object with the following arguments:

- `[config]` - optional configuration object with the following keys
- `response` - filter for response event 
- `error` - filter for error event
- `log` - filter for log event
- `opts` - filter for opts event

Notice: By default good filter filters out all the events to allow event * sign should be used

In manifest.js

    const GoodFilter = require('good-filter');
    
    // Another one awesome plugin you definitely need to try
    const GoodFormat = require('good-format');

    module.exports = {
        // ...
        register: {
            plugins: {
                // ...
                plugin: 'good',
                options: {
                    reporters: {
                        consoleReporter: [
                            new GoodFilter({
                                    log: '*',   // Allow all log events
                                    error: '*', // Allow all error events
                                    response: {
                                        include: '*', 
                                        exclude: {
                                            route: /\/swaggerui\/.*/ // Route property should match regexp
                                        }
                                    }
                                }),
                            new GoodFormat(),
                            'stdout']
                    } 
                }
                // ...
            }
        }
    };

Customization

Matchers

good-filter supports few types of matcher values

- String - Property value should be equal to matcher value, * sign is used to match any value
- RegExp - Property value should match given RegExp using .match method
- Function - Function to be invoked with property value
- Array - Each array value is a separate matcher, under the hood OR logical operator is used, that mean that all of matchers should pass to pass the filter 

String

    const GoodFilter = require('good-filter');
    
    // Another one awesome plugin you definitely need to try
    const GoodFormat = require('good-format');

    module.exports = {
        // ...
        register: {
            plugins: {
                // ...
                plugin: 'good',
                options: {
                    reporters: {
                        consoleReporter: [
                            new GoodFilter({
                                log: '*', // Allow all log events
                                error: '*', // Allow all error events
                                response: {
                                    include: '*', // Include all responses
                                    exclude: {
                                        method: 'OPTIONS' // Exclude responses for OPTIONS method
                                    }
                                }
                            }),
                            new GoodFormat(),
                            'stdout']
                    }
                }
                // ...
            }
        }
    };

RegExp

    const GoodFilter = require('good-filter');

    // Another one awesome plugin you definitely need to try
    const GoodFormat = require('good-format'); 

    module.exports = {
        // ...
        register: {
            plugins: {
                // ...
                plugin: 'good',
                options: {
                    reporters: {
                        consoleReporter: [
                            new GoodFilter({
                                log: '*',
                                error: '*',
                                response: {
                                    include: '*',
                                    exclude: {
                                        route: /\/swaggerui\/.*/ // Exclude swaggerui routes
                                    }
                                }
                            }),
                            new GoodFormat(),
                            'stdout']
                    }
                }
                // ...
            }
        }
    };

Function

    const GoodFilter = require('good-filter');

    // Another one awesome plugin you definitely need to try
    const GoodFormat = require('good-format'); 

    module.exports = {
        // ...
        register: {
            plugins: {
                // ...
                plugin: 'good',
                options: {
                    reporters: {
                        consoleReporter: [
                            new GoodFilter({
                                log: '*',
                                error: '*',
                                response: {
                                    include: '*',
                                    exclude: {
                                        method: method => ['OPTIONS', 'DELETE'].includes(method); // Exclude OPTIONS and DELETE method
                                    }
                                }
                            }),
                            new GoodFormat(),
                            'stdout']
                    }
                }
                // ...
            }
        }
    };

Array values

    const GoodFilter = require('good-filter');

    // Another one awesome plugin you definitely need to try
    const GoodFormat = require('good-format'); 

    module.exports = {
        // ...
        register: {
            plugins: {
                // ...
                plugin: 'good',
                options: {
                    reporters: {
                        consoleReporter: [
                            new GoodFilter({
                                log: '*',
                                error: '*',
                                response: {
                                    include: '*',
                                    exclude: {
                                        method: ['OPTIONS', 'DELETE']
                                    }
                                }
                            }),
                            new GoodFormat(),
                            'stdout']
                    }
                }
                // ...
            }
        }
    };

Array of matchers

    const GoodFilter = require('good-filter');

    // Another one awesome plugin you definitely need to try
    const GoodFormat = require('good-format'); 

    module.exports = {
        // ...
        register: {
            plugins: {
                // ...
                plugin: 'good',
                options: {
                    reporters: {
                        consoleReporter: [
                            new GoodFilter({
                                log: '*',
                                error: '*',
                                response: {
                                    include: '*',
                                    exclude: [{
                                        method: method => ['OPTIONS', 'DELETE'].includes(method); // Exclude OPTIONS and DELETE method

                                        // Works as AND logical operator
                                        route: '/health'    
                                    }, 
                                    // Works as OR operator
                                    {
                                        route: '/test'
                                    }]
                                }
                            }),
                            new GoodFormat(),
                            'stdout']
                    }
                }
                // ...
            }
        }
    };