globalstorage
Version:
Global Storage is a Global Distributed Data Warehouse
114 lines (90 loc) • 3.55 kB
JavaScript
;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var removeSensitiveData = function removeSensitiveData(definition, instance) {
var filtered = {};
var _arr = Object.keys(instance);
for (var _i = 0; _i < _arr.length; _i++) {
var name = _arr[_i];
var prop = definition[name];
if (!prop || !prop.sensitive && !(prop.definition && prop.definition.sensitive)) {
filtered[name] = instance[name];
}
}
return filtered;
};
var prepareForLogging = function prepareForLogging(provider, record) {
var ms = provider.schema;
var operation = record.Operation,
category = record.Category;
if (operation === null) {
var action = record.Action,
response = record.Response;
var schema = category ? ms.categories.get(category).actions.get(action) : ms.actions.get(action);
if (!schema) return;
if (record.Query) {
record.Query = removeSensitiveData(schema.definition.Args, record.Query);
}
if (Object.prototype.toString.call(response) === '[object Object]' && response !== null) {
record.Response = removeSensitiveData(schema.definition.Returns, response);
}
} else if (!category) {
return;
} else if (operation === 'Read') {
var _schema = ms.categories.get(category);
if (_schema && record.getDetails) _schema = _schema.definition[record.getDetails];
if (!_schema) return;
if (Array.isArray(record.Response)) {
record.Response = record.Response.map(function (record) {
return removeSensitiveData(_schema.definition, record);
});
} else if (typeof record.Response === 'number') {
return;
} else if (record.Response) {
record.Response = removeSensitiveData(_schema.definition, record.Response);
}
} else {
var _schema2 = ms.categories.get(category);
if (!_schema2) return;
var query = record.Query,
patch = record.Patch;
if (query && !query.linkDetails && !query.unlinkDetails) {
record.Query = removeSensitiveData(_schema2.definition, query);
}
if (patch) {
record.Patch = removeSensitiveData(_schema2.definition, patch);
}
}
};
var logStatusValues = ['info', 'warning', 'critical'];
var LogStatus =
/*#__PURE__*/
function () {
function LogStatus(status, value) {
_classCallCheck(this, LogStatus);
this.status = status;
this.value = value;
}
_createClass(LogStatus, null, [{
key: "strip",
value: function strip(status) {
if (status instanceof LogStatus) {
return status.value;
}
return status;
}
}]);
return LogStatus;
}();
var LogStatusDecorator = {};
logStatusValues.forEach(function (status) {
LogStatusDecorator[status] = function (value) {
return new LogStatus(status, value);
};
});
module.exports = {
prepareForLogging: prepareForLogging,
LogStatus: LogStatus,
LogStatusDecorator: LogStatusDecorator
};