| /** | 
|  *  angular-simple-logger | 
|  * | 
|  * @version: 0.1.7 | 
|  * @author: Nicholas McCready | 
|  * @date: Tue Jan 26 2016 10:15:01 GMT-0500 (EST) | 
|  * @license: MIT | 
|  */ | 
|   | 
| (function (window, angular){ | 
|   angular.module('nemLogging', []); | 
|   | 
| angular.module('nemLogging').provider('nemDebug', function (){ | 
|   var ourDebug = null; | 
|    | 
|   this.$get =  function(){ | 
|     //avail as service | 
|     return ourDebug; | 
|   }; | 
|   | 
|   //avail at provider, config time | 
|   this.debug = ourDebug; | 
|   | 
|   return this; | 
| }); | 
| var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, | 
|   slice = [].slice; | 
|   | 
| angular.module('nemLogging').provider('nemSimpleLogger', [ | 
|   'nemDebugProvider', function(nemDebugProvider) { | 
|     var LEVELS, Logger, _debugCache, _fns, _isValidLogObject, _maybeExecLevel, _wrapDebug, i, key, len, nemDebug, val; | 
|     nemDebug = nemDebugProvider.debug; | 
|     _debugCache = {}; | 
|     _fns = ['debug', 'info', 'warn', 'error', 'log']; | 
|     LEVELS = {}; | 
|     for (key = i = 0, len = _fns.length; i < len; key = ++i) { | 
|       val = _fns[key]; | 
|       LEVELS[val] = key; | 
|     } | 
|     _maybeExecLevel = function(level, current, fn) { | 
|       if (level >= current) { | 
|         return fn(); | 
|       } | 
|     }; | 
|     _isValidLogObject = function(logObject) { | 
|       var isValid, j, len1; | 
|       isValid = false; | 
|       if (!logObject) { | 
|         return isValid; | 
|       } | 
|       for (j = 0, len1 = _fns.length; j < len1; j++) { | 
|         val = _fns[j]; | 
|         isValid = (logObject[val] != null) && typeof logObject[val] === 'function'; | 
|         if (!isValid) { | 
|           break; | 
|         } | 
|       } | 
|       return isValid; | 
|     }; | 
|   | 
|     /* | 
|       Overide logeObject.debug with a nemDebug instance | 
|       see: https://github.com/visionmedia/debug/blob/master/Readme.md | 
|      */ | 
|     _wrapDebug = function(namespace, logObject) { | 
|       var debugInstance, j, len1, newLogger; | 
|       if (_debugCache[namespace] == null) { | 
|         _debugCache[namespace] = nemDebug(namespace); | 
|       } | 
|       debugInstance = _debugCache[namespace]; | 
|       newLogger = {}; | 
|       for (j = 0, len1 = _fns.length; j < len1; j++) { | 
|         val = _fns[j]; | 
|         newLogger[val] = val === 'debug' ? debugInstance : logObject[val]; | 
|       } | 
|       return newLogger; | 
|     }; | 
|     Logger = (function() { | 
|       function Logger($log1) { | 
|         var fn1, j, len1, level, logFns; | 
|         this.$log = $log1; | 
|         this.spawn = bind(this.spawn, this); | 
|         if (!this.$log) { | 
|           throw 'internalLogger undefined'; | 
|         } | 
|         if (!_isValidLogObject(this.$log)) { | 
|           throw '@$log is invalid'; | 
|         } | 
|         this.doLog = true; | 
|         logFns = {}; | 
|         fn1 = (function(_this) { | 
|           return function(level) { | 
|             logFns[level] = function() { | 
|               var args; | 
|               args = 1 <= arguments.length ? slice.call(arguments, 0) : []; | 
|               if (_this.doLog) { | 
|                 return _maybeExecLevel(LEVELS[level], _this.currentLevel, function() { | 
|                   var ref; | 
|                   return (ref = _this.$log)[level].apply(ref, args); | 
|                 }); | 
|               } | 
|             }; | 
|             return _this[level] = logFns[level]; | 
|           }; | 
|         })(this); | 
|         for (j = 0, len1 = _fns.length; j < len1; j++) { | 
|           level = _fns[j]; | 
|           fn1(level); | 
|         } | 
|         this.LEVELS = LEVELS; | 
|         this.currentLevel = LEVELS.error; | 
|       } | 
|   | 
|       Logger.prototype.spawn = function(newInternalLogger) { | 
|         if (typeof newInternalLogger === 'string') { | 
|           if (!_isValidLogObject(this.$log)) { | 
|             throw '@$log is invalid'; | 
|           } | 
|           if (!nemDebug) { | 
|             throw 'nemDebug is undefined this is probably the light version of this library sep debug logggers is not supported!'; | 
|           } | 
|           return _wrapDebug(newInternalLogger, this.$log); | 
|         } | 
|         return new Logger(newInternalLogger || this.$log); | 
|       }; | 
|   | 
|       return Logger; | 
|   | 
|     })(); | 
|     this.decorator = [ | 
|       '$log', function($delegate) { | 
|         var log; | 
|         log = new Logger($delegate); | 
|         log.currentLevel = LEVELS.debug; | 
|         return log; | 
|       } | 
|     ]; | 
|     this.$get = [ | 
|       '$log', function($log) { | 
|         return new Logger($log); | 
|       } | 
|     ]; | 
|     return this; | 
|   } | 
| ]); | 
|   | 
| })(window, angular); |