redux-logger
Advanced tools
Comparing version 2.4.0 to 2.5.0
@@ -103,3 +103,3 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
var _options$logger = options.logger; | ||
var logger = _options$logger === undefined ? window.console : _options$logger; | ||
var logger = _options$logger === undefined ? console : _options$logger; | ||
var _options$logErrors = options.logErrors; | ||
@@ -106,0 +106,0 @@ var logErrors = _options$logErrors === undefined ? true : _options$logErrors; |
@@ -1,1 +0,1 @@ | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.reduxLogger=e():t.reduxLogger=e()}(this,function(){return function(t){function e(o){if(r[o])return r[o].exports;var n=r[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){r(1),t.exports=r(1)},function(t,e){"use strict";function r(){function t(){F.forEach(function(t,e){var r=t.started,n=t.action,u=t.prevState,a=t.error,f=t.took,d=t.nextState,p=F[e+1];p&&(d=p.prevState,f=p.started-r);var g=S(n),x=new Date(r),m="function"==typeof s?s(function(){return d},n):s,h=i(x),y=j.title?"color: "+j.title(g)+";":null,w="action "+g.type+(v?h:"")+(l?" in "+f.toFixed(2)+" ms":"");try{m?j.title?c.groupCollapsed("%c "+w,y):c.groupCollapsed(w):j.title?c.group("%c "+w,y):c.group(w)}catch(b){c.log(w)}j.prevState?c[o]("%c prev state","color: "+j.prevState(u)+"; font-weight: bold",u):c[o]("prev state",u),j.action?c[o]("%c action","color: "+j.action(g)+"; font-weight: bold",g):c[o]("action",g),a&&(j.error?c[o]("%c error","color: "+j.error(a,u)+"; font-weight: bold",a):c[o]("error",a)),j.nextState?c[o]("%c next state","color: "+j.nextState(d)+"; font-weight: bold",d):c[o]("next state",d);try{c.groupEnd()}catch(b){c.log("—— log end ——")}}),F.length=0}var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=e.level,o=void 0===r?"log":r,n=e.logger,c=void 0===n?window.console:n,a=e.logErrors,f=void 0===a?!0:a,s=e.collapsed,d=e.predicate,p=e.duration,l=void 0===p?!1:p,g=e.timestamp,v=void 0===g?!0:g,x=e.transformer,m=e.stateTransformer,h=void 0===m?function(t){return t}:m,y=e.actionTransformer,S=void 0===y?function(t){return t}:y,w=e.errorTransformer,b=void 0===w?function(t){return t}:w,E=e.colors,j=void 0===E?{title:function(){return"#000000"},prevState:function(){return"#9E9E9E"},action:function(){return"#03A9F4"},nextState:function(){return"#4CAF50"},error:function(){return"#F20404"}}:E;if("undefined"==typeof c)return function(){return function(t){return function(e){return t(e)}}};x&&console.error("Option 'transformer' is deprecated, use stateTransformer instead");var F=[];return function(e){var r=e.getState;return function(e){return function(o){if("function"==typeof d&&!d(r,o))return e(o);var n={};F.push(n),n.started=u.now(),n.prevState=h(r()),n.action=o;var i=void 0;if(f)try{i=e(o)}catch(c){n.error=b(c)}else i=e(o);if(n.took=u.now()-n.started,n.nextState=h(r()),t(),n.error)throw n.error;return i}}}}var o=function(t,e){return new Array(e+1).join(t)},n=function(t,e){return o("0",e-t.toString().length)+t},i=function(t){return" @ "+n(t.getHours(),2)+":"+n(t.getMinutes(),2)+":"+n(t.getSeconds(),2)+"."+n(t.getMilliseconds(),3)},u="undefined"!=typeof performance&&"function"==typeof performance.now?performance:Date;t.exports=r}])}); | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.reduxLogger=e():t.reduxLogger=e()}(this,function(){return function(t){function e(o){if(r[o])return r[o].exports;var n=r[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){r(1),t.exports=r(1)},function(t,e){"use strict";function r(){function t(){F.forEach(function(t,e){var r=t.started,n=t.action,u=t.prevState,a=t.error,f=t.took,d=t.nextState,p=F[e+1];p&&(d=p.prevState,f=p.started-r);var g=S(n),x=new Date(r),m="function"==typeof s?s(function(){return d},n):s,h=i(x),y=j.title?"color: "+j.title(g)+";":null,w="action "+g.type+(v?h:"")+(l?" in "+f.toFixed(2)+" ms":"");try{m?j.title?c.groupCollapsed("%c "+w,y):c.groupCollapsed(w):j.title?c.group("%c "+w,y):c.group(w)}catch(b){c.log(w)}j.prevState?c[o]("%c prev state","color: "+j.prevState(u)+"; font-weight: bold",u):c[o]("prev state",u),j.action?c[o]("%c action","color: "+j.action(g)+"; font-weight: bold",g):c[o]("action",g),a&&(j.error?c[o]("%c error","color: "+j.error(a,u)+"; font-weight: bold",a):c[o]("error",a)),j.nextState?c[o]("%c next state","color: "+j.nextState(d)+"; font-weight: bold",d):c[o]("next state",d);try{c.groupEnd()}catch(b){c.log("—— log end ——")}}),F.length=0}var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=e.level,o=void 0===r?"log":r,n=e.logger,c=void 0===n?console:n,a=e.logErrors,f=void 0===a?!0:a,s=e.collapsed,d=e.predicate,p=e.duration,l=void 0===p?!1:p,g=e.timestamp,v=void 0===g?!0:g,x=e.transformer,m=e.stateTransformer,h=void 0===m?function(t){return t}:m,y=e.actionTransformer,S=void 0===y?function(t){return t}:y,w=e.errorTransformer,b=void 0===w?function(t){return t}:w,E=e.colors,j=void 0===E?{title:function(){return"#000000"},prevState:function(){return"#9E9E9E"},action:function(){return"#03A9F4"},nextState:function(){return"#4CAF50"},error:function(){return"#F20404"}}:E;if("undefined"==typeof c)return function(){return function(t){return function(e){return t(e)}}};x&&console.error("Option 'transformer' is deprecated, use stateTransformer instead");var F=[];return function(e){var r=e.getState;return function(e){return function(o){if("function"==typeof d&&!d(r,o))return e(o);var n={};F.push(n),n.started=u.now(),n.prevState=h(r()),n.action=o;var i=void 0;if(f)try{i=e(o)}catch(c){n.error=b(c)}else i=e(o);if(n.took=u.now()-n.started,n.nextState=h(r()),t(),n.error)throw n.error;return i}}}}var o=function(t,e){return new Array(e+1).join(t)},n=function(t,e){return o("0",e-t.toString().length)+t},i=function(t){return" @ "+n(t.getHours(),2)+":"+n(t.getMinutes(),2)+":"+n(t.getSeconds(),2)+"."+n(t.getMilliseconds(),3)},u="undefined"!=typeof performance&&"function"==typeof performance.now?performance:Date;t.exports=r}])}); |
@@ -39,3 +39,3 @@ "use strict"; | ||
var _options$logger = options.logger; | ||
var logger = _options$logger === undefined ? window.console : _options$logger; | ||
var logger = _options$logger === undefined ? console : _options$logger; | ||
var _options$logErrors = options.logErrors; | ||
@@ -42,0 +42,0 @@ var logErrors = _options$logErrors === undefined ? true : _options$logErrors; |
{ | ||
"name": "redux-logger", | ||
"version": "2.4.0", | ||
"version": "2.5.0", | ||
"description": "Logger for redux", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -26,6 +26,25 @@ # Logger for Redux | ||
__createLogger(options?: Object)__ | ||
``` | ||
createLogger(options?: Object) => LoggerMiddleware | ||
``` | ||
### Options | ||
```js | ||
{ | ||
level = 'log': 'log' | 'console' | 'warn' | 'error' | 'info', // console's level | ||
duration = false: Boolean, // Print the duration of each action? | ||
timestamp = true: Boolean, // Print the timestamp with each action? | ||
colors: ColorsObject, // Object with color getters. See the ColorsObject interface. | ||
logger = window.console: LoggerObject, // Implementation of the `console` API. | ||
logErrors = true: Boolean, // Should the logger catch, log, and re-throw errors? | ||
collapsed, // Takes a boolean or optionally a function that receives `getState` function for accessing current store state and `action` object as parameters. Returns `true` if the log group should be collapsed, `false` otherwise. | ||
predicate, // If specified this function will be called before each action is processed with this middleware. | ||
stateTransformer, // Transform state before print. Eg. convert Immutable object to plain JSON. | ||
actionTransformer, // Transform state before print. Eg. convert Immutable object to plain JSON. | ||
errorTransformer // Transform state before print. Eg. convert Immutable object to plain JSON. | ||
} | ||
``` | ||
### Options | ||
#### __level (String)__ | ||
@@ -93,3 +112,3 @@ Level of `console`. `warn`, `error`, `info` or [else](https://developer.mozilla.org/en/docs/Web/API/console). | ||
### Examples: | ||
### Recipes | ||
#### log only in dev mode | ||
@@ -142,4 +161,50 @@ ```javascript | ||
#### log batched actions | ||
Thanks to [@smashercosmo](https://github.com/smashercosmo) | ||
```javascript | ||
import createLogger from 'redux-logger'; | ||
const actionTransformer = action => { | ||
if (action.type === 'BATCHING_REDUCER.BATCH') { | ||
action.payload.type = action.payload.reduce((result, next) => { | ||
const prefix = result ? result + ' => ' : ''; | ||
return prefix + next.type; | ||
}, ''); | ||
return action.payload; | ||
} | ||
return action; | ||
}; | ||
const level = 'info'; | ||
const logger = {}; | ||
for (const method in console) { | ||
if (typeof console[method] === 'function') { | ||
logger[method] = console[method].bind(console); | ||
} | ||
} | ||
logger[level] = function levelFn(...args) { | ||
const lastArg = args.pop(); | ||
if (Array.isArray(lastArg)) { | ||
return lastArg.forEach(item => { | ||
console[level].apply(console, [...args, item]); | ||
}); | ||
} | ||
console[level].apply(console, arguments); | ||
}; | ||
export default createLogger({ | ||
level, | ||
actionTransformer, | ||
logger | ||
}); | ||
``` | ||
### License | ||
MIT |
@@ -29,3 +29,3 @@ const repeat = (str, times) => (new Array(times + 1)).join(str); | ||
level = `log`, | ||
logger = window.console, | ||
logger = console, | ||
logErrors = true, | ||
@@ -32,0 +32,0 @@ collapsed, |
33139
208