diff --git a/.gitignore b/.gitignore index 3c3629e..22d59e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ node_modules +.DS_Store +.idea diff --git a/lib/index.js b/lib/index.js index 3c838a0..3348f41 100644 --- a/lib/index.js +++ b/lib/index.js @@ -11,27 +11,28 @@ const defaults = { exports.register = function(server, options, next) { let settings = Hoek.clone(options); settings = Hoek.applyToDefaults(defaults, settings); - let filter = () => true; + const ignoreRules = []; + const filter = data => !ignoreRules.some(f => f(data)); if (settings.ignore && Array.isArray(settings.ignore) && settings.ignore.length) { - filter = data => { - let isLoggable = true; - - const checkIgnore = (ignore, value) => - Object.keys(ignore).some(key => { - const regexp = new RegExp(ignore[key]); - - return regexp.exec(value[key]) !== null; - }); - - for (let i = 0, len = settings.ignore.length; i < len && isLoggable; i++) { - isLoggable = !checkIgnore(settings.ignore[i], data); - } + settings.ignore.forEach(ignore => { + ignoreRules.push(value => Object.keys(ignore).some(key => { + const regexp = new RegExp(ignore[key]); + return regexp.exec(value[key]) !== null; + })); + }); + } - return isLoggable; - }; + if (settings.ignoreIfEmpty && + Array.isArray(settings.ignoreIfEmpty) && + settings.ignoreIfEmpty.length) { + ignoreRules.push( + value => settings.ignoreIfEmpty.some( + key => typeof value[key] === 'undefined' + ) + ); } server.route({ @@ -47,6 +48,7 @@ exports.register = function(server, options, next) { if (data.userAgent) { data.browser = userAgentLib.parse(data.userAgent).toString(); } + if (filter(data)) { request.server.log(tags, { data diff --git a/package.json b/package.json index 3bbdfa3..010f1d7 100644 --- a/package.json +++ b/package.json @@ -25,16 +25,16 @@ }, "homepage": "https://github.com/firstandthird/hapi-browser-log#readme", "devDependencies": { - "eslint": "^3.8.1", - "eslint-config-firstandthird": "^3.0.2", - "eslint-plugin-import": "2.2.0", + "eslint": "^4.10.0", + "eslint-config-firstandthird": "^4.0.1", + "eslint-plugin-import": "^2.8.0", "handlebars": "^4.0.5", "hapi": "^16.0.2", "inert": "^4.0.2", "vision": "^4.1.0" }, "dependencies": { - "hoek": "^4.1.0", + "hoek": "^5.0.1", "useragent": "^2.2.1" }, "eslintConfig": {