CORD-731 Added debug decorator
Change-Id: Idd9595f30f9d09f4072dbcd2b05535dafba3202b
diff --git a/src/decorators.ts b/src/decorators.ts
new file mode 100644
index 0000000..3b2ab4e
--- /dev/null
+++ b/src/decorators.ts
@@ -0,0 +1,39 @@
+export default function XosLogDecorator($provide: ng.auto.IProvideService) {
+ $provide.decorator('$log', function($delegate: any) {
+ const isLogEnabled = () => {
+ return window.location.href.indexOf('debug=true') >= 0;
+ };
+ // Save the original $log.debug()
+ let logFn = $delegate.log;
+ let infoFn = $delegate.info;
+ let warnFn = $delegate.warn;
+ let errorFn = $delegate.error;
+ let debugFn = $delegate.debug;
+
+ // create the replacement function
+ const replacement = (fn) => {
+ return function(){
+ if (!isLogEnabled()) {
+ return;
+ }
+
+ let args = [].slice.call(arguments);
+ let now = new Date();
+
+ // Prepend timestamp
+ args[0] = `[${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}] ${args[0]}`;
+
+ // Call the original with the output prepended with formatted timestamp
+ fn.apply(null, args);
+ };
+ };
+
+ $delegate.info = replacement(infoFn);
+ $delegate.log = replacement(logFn);
+ $delegate.warn = replacement(warnFn);
+ $delegate.error = replacement(errorFn); // note this will prevent errors to be printed
+ $delegate.debug = replacement(debugFn);
+
+ return $delegate;
+ });
+}