use safe stringify to prevent circular reference exceptions (#75)
diff --git a/package.json b/package.json
index c02f125..187de1f 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,7 @@
"moment": "^2.11.1",
"lodash": "^3.10.1",
"request": "2.69.0",
- "nano": "^6.2.0"
+ "nano": "^6.2.0",
+ "json-stringify-safe": "^5.0.1"
}
}
\ No newline at end of file
diff --git a/provider/Logger.js b/provider/Logger.js
index bef4241..0026bcb 100644
--- a/provider/Logger.js
+++ b/provider/Logger.js
@@ -1,6 +1,7 @@
var _ = require('lodash');
var moment = require('moment');
var winston = require('winston');
+var safeStringify = require('json-stringify-safe');
var emailRegex = /(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/g;
@@ -28,7 +29,7 @@
args.shift();
args.forEach(function(arg, i) {
if (_.isObject(args[i])) {
- args[i] = JSON.stringify(args[i]);
+ args[i] = safeStringify(args[i]);
}
});
return args.join(' ');
diff --git a/provider/lib/utils.js b/provider/lib/utils.js
index f3f49e7..8dda685 100644
--- a/provider/lib/utils.js
+++ b/provider/lib/utils.js
@@ -77,7 +77,7 @@
that.triggers[dataTrigger.id] = dataTrigger;
feed.on('change', function (change) {
- logger.info(method, 'Trigger', dataTrigger.id, 'got change from', dataTrigger.dbname, change);
+ logger.info(method, 'Trigger', dataTrigger.id, 'got change from', dataTrigger.dbname);
var triggerHandle = that.triggers[dataTrigger.id];
if (triggerHandle) {
@@ -139,7 +139,7 @@
var method = 'initTrigger';
// validate parameters here
- logger.info(method, 'create has received the following request args', JSON.stringify(obj));
+ logger.info(method, 'create has received the following request args', obj);
// if the trigger creation request has not set the max trigger fire limit
// we will set it here (default value can be updated in ./constants.js)
@@ -322,7 +322,7 @@
}
form.dbname = dataTrigger.dbname;
- logger.info(method, 'firing trigger', triggerName, 'with db update', JSON.stringify(form));
+ logger.info(method, 'firing trigger', triggerName, 'with db update');
var host = 'https://' + routerHost + ':' + 443;
var uri = host + '/api/v1/namespaces/' + triggerObj.namespace + '/triggers/' + triggerObj.name;