@lskjs/server
Version:
LSK server.
136 lines (106 loc) • 11.8 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _omit = _interopRequireDefault(require("lodash/omit"));
var _get = _interopRequireDefault(require("lodash/get"));
var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
var _isFunction = _interopRequireDefault(require("lodash/isFunction"));
var _default = function _default(ctx) {
return function pack() {
var _this = this;
var raw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var info = arguments.length > 1 ? arguments[1] : undefined;
var res = this;
var config = (0, _get["default"])(ctx, 'config.server.response', __DEV__ ? {
log: false,
debug: true
} : {});
var status = info.status || (0, _get["default"])(raw, '__status', null);
var isJson;
var wrap;
var data;
if (typeof (0, _get["default"])(raw, '__raw') !== 'undefined') {
wrap = false;
isJson = false;
data = raw.__raw;
} else {
wrap = !(0, _get["default"])(raw, '__pack', false);
isJson = true;
if ((0, _isPlainObject["default"])(raw)) {
data = (0, _omit["default"])(raw, ['__pack', '__raw', '__log', '__status']);
} else if (raw instanceof Error) {
throw raw;
} else if ((0, _isFunction["default"])(raw)) {
data = {};
} else {
data = raw;
}
}
var result;
if (wrap) {
result = {
code: info.code,
message: info.message,
data: data
};
} else {
result = data;
}
if (status) {
res.status(status);
}
if (wrap && config.debug) {
if (info.err) {
result.err = info.err;
}
if (info.debug) {
result.debug = info.debug;
}
if (info.stack) {
result.stack = info.stack;
}
}
var isLog = Boolean((0, _get["default"])(data, '__log') == null ? config.log : (0, _get["default"])(data, '__log'));
var log = function log(str, type) {
if (!isLog) return;
var dest = isLog;
if (isLog === true) dest = str && str.length > 100 ? 'file' : 'console';
if (dest === 'file') {
if (__DEV__) {
var dir = "/tmp/lsk";
try {
require('fs').mkdirSync(dir, {
recursive: true
});
} catch (e) {// ignore
}
try {
var filename = "".concat(dir, "/res_").concat(new Date().toISOString().replace(/[^a-zA-Z0-9]+/gi, '_'), ".").concat(type);
ctx.log.trace(">>>>> #".concat(_this.req.reqId, " ").concat(filename, " [").concat(str.length, " bytes] ").concat(__DEV__ ? '[IGNORE]' : ''));
require('fs').writeFileSync(filename, str);
} catch (e) {// ignore
}
}
return;
} // else
ctx.log.trace('>>>>>');
console.log(str); // eslint-disable-line no-console
ctx.log.trace('<<<<<');
};
if (!isJson) {
log(result, 'txt');
return res.send(result);
}
try {
log(JSON.stringify(result, null, 2), 'json');
} catch (e) {// ignore
}
return res.json(result);
};
};
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXNwb25zZXMvcGFjay5qcyJdLCJuYW1lcyI6WyJjdHgiLCJwYWNrIiwicmF3IiwiaW5mbyIsInJlcyIsImNvbmZpZyIsIl9fREVWX18iLCJsb2ciLCJkZWJ1ZyIsInN0YXR1cyIsImlzSnNvbiIsIndyYXAiLCJkYXRhIiwiX19yYXciLCJFcnJvciIsInJlc3VsdCIsImNvZGUiLCJtZXNzYWdlIiwiZXJyIiwic3RhY2siLCJpc0xvZyIsIkJvb2xlYW4iLCJzdHIiLCJ0eXBlIiwiZGVzdCIsImxlbmd0aCIsImRpciIsInJlcXVpcmUiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJlIiwiZmlsZW5hbWUiLCJEYXRlIiwidG9JU09TdHJpbmciLCJyZXBsYWNlIiwidHJhY2UiLCJyZXEiLCJyZXFJZCIsIndyaXRlRmlsZVN5bmMiLCJjb25zb2xlIiwic2VuZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJqc29uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7ZUFFZSxrQkFBQUEsR0FBRztBQUFBLFNBQ2hCLFNBQVNDLElBQVQsR0FBOEI7QUFBQTs7QUFBQSxRQUFoQkMsR0FBZ0IsdUVBQVYsRUFBVTtBQUFBLFFBQU5DLElBQU07QUFDNUIsUUFBTUMsR0FBRyxHQUFHLElBQVo7QUFDQSxRQUFNQyxNQUFNLEdBQUcscUJBQUlMLEdBQUosRUFBUyx3QkFBVCxFQUFtQ00sT0FBTyxHQUFHO0FBQUVDLE1BQUFBLEdBQUcsRUFBRSxLQUFQO0FBQWNDLE1BQUFBLEtBQUssRUFBRTtBQUFyQixLQUFILEdBQWlDLEVBQTNFLENBQWY7QUFDQSxRQUFNQyxNQUFNLEdBQUdOLElBQUksQ0FBQ00sTUFBTCxJQUFlLHFCQUFJUCxHQUFKLEVBQVMsVUFBVCxFQUFxQixJQUFyQixDQUE5QjtBQUNBLFFBQUlRLE1BQUo7QUFDQSxRQUFJQyxJQUFKO0FBQ0EsUUFBSUMsSUFBSjs7QUFDQSxRQUFJLE9BQU8scUJBQUlWLEdBQUosRUFB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YXNoL29taXQnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJ2xvZGFzaC9pc1BsYWluT2JqZWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY3R4ID0+XG4gIGZ1bmN0aW9uIHBhY2socmF3ID0ge30sIGluZm8pIHtcbiAgICBjb25zdCByZXMgPSB0aGlzO1xuICAgIGNvbnN0IGNvbmZpZyA9IGdldChjdHgsICdjb25maWcuc2VydmVyLnJlc3BvbnNlJywgX19ERVZfXyA/IHsgbG9nOiBmYWxzZSwgZGVidWc6IHRydWUgfSA6IHt9KTtcbiAgICBjb25zdCBzdGF0dXMgPSBpbmZvLnN0YXR1cyB8fCBnZXQocmF3LCAnX19zdGF0dXMnLCBudWxsKTtcbiAgICBsZXQgaXNKc29uO1xuICAgIGxldCB3cmFwO1xuICAgIGxldCBkYXRhO1xuICAgIGlmICh0eXBlb2YgZ2V0KHJhdywgJ19fcmF3JykgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB3cmFwID0gZmFsc2U7XG4gICAgICBpc0pzb24gPSBmYWxzZTtcbiAgICAgIGRhdGEgPSByYXcuX19yYXc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdyYXAgPSAhZ2V0KHJhdywgJ19fcGFjaycsIGZhbHNlKTtcbiAgICAgIGlzSnNvbiA9IHRydWU7XG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChyYXcpKSB7XG4gICAgICAgIGRhdGEgPSBvbWl0KHJhdywgWydfX3BhY2snLCAnX19yYXcnLCAnX19sb2cnLCAnX19zdGF0dXMnXSk7XG4gICAgICB9IGVsc2UgaWYgKHJhdyBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IHJhdztcbiAgICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihyYXcpKSB7XG4gICAgICAgIGRhdGEgPSB7fTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEgPSByYXc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAod3JhcCkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBjb2RlOiBpbmZvLmNvZGUsXG4gICAgICAgIG1lc3NhZ2U6IGluZm8ubWVzc2FnZSxcbiAgICAgICAgZGF0YSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGRhdGE7XG4gICAgfVxuICAgIGlmIChzdGF0dXMpIHtcbiAgICAgIHJlcy5zdGF0dXMoc3RhdHVzKTtcbiAgICB9XG5cbiAgICBpZiAod3JhcCAmJiBjb25maWcuZGVidWcpIHtcbiAgICAgIGlmIChpbmZvLmVycikge1xuICAgICAgICByZXN1bHQuZXJyID0gaW5mby5lcnI7XG4gICAgICB9XG4gICAgICBpZiAoaW5mby5kZWJ1Zykge1xuICAgICAgICByZXN1bHQuZGVidWcgPSBpbmZvLmRlYnVnO1xuICAgICAgfVxuICAgICAgaWYgKGluZm8uc3RhY2spIHtcbiAgICAgICAgcmVzdWx0LnN0YWNrID0gaW5mby5zdGFjaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpc0xvZyA9IEJvb2xlYW4oZ2V0KGRhdGEsICdfX2xvZycpID09IG51bGwgPyBjb25maWcubG9nIDogZ2V0KGRhdGEsICdfX2xvZycpKTtcbiAgICBjb25zdCBsb2cgPSAoc3RyLCB0eXBlKSA9PiB7XG4gICAgICBpZiAoIWlzTG9nKSByZXR1cm47XG4gICAgICBsZXQgZGVzdCA9IGlzTG9nO1xuICAgICAgaWYgKGlzTG9nID09PSB0cnVlKSBkZXN0ID0gc3RyICYmIHN0ci5sZW5ndGggPiAxMDAgPyAnZmlsZScgOiAnY29uc29sZSc7XG5cbiAgICAgIGlmIChkZXN0ID09PSAnZmlsZScpIHtcbiAgICAgICAgaWYgKF9fREVWX18pIHtcbiAgICAgICAgICBjb25zdCBkaXIgPSBgL3RtcC9sc2tgO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXF1aXJlKCdmcycpLm1rZGlyU3luYyhkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAgIH1cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBgJHtkaXJ9L3Jlc18ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2dpLCAnXycpfS4ke3R5cGV9YDtcbiAgICAgICAgICAgIGN0eC5sb2cudHJhY2UoYD4+Pj4+ICMke3RoaXMucmVxLnJlcUlkfSAke2ZpbGVuYW1lfSBbJHtzdHIubGVuZ3RofSBieXRlc10gJHtfX0RFVl9fID8gJ1tJR05PUkVdJyA6ICcnfWApO1xuICAgICAgICAgICAgcmVxdWlyZSgnZnMnKS53cml0ZUZpbGVTeW5jKGZpbGVuYW1lLCBzdHIpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBlbHNlXG4gICAgICBjdHgubG9nLnRyYWNlKCc+Pj4+PicpO1xuICAgICAgY29uc29sZS5sb2coc3RyKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgICBjdHgubG9nLnRyYWNlKCc8PDw8PCcpO1xuICAgIH07XG5cbiAgICBpZiAoIWlzSnNvbikge1xuICAgICAgbG9nKHJlc3VsdCwgJ3R4dCcpO1xuICAgICAgcmV0dXJuIHJlcy5zZW5kKHJlc3VsdCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsb2coSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKSwgJ2pzb24nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5qc29uKHJlc3VsdCk7XG4gIH07XG4iXX0=
//# sourceMappingURL=pack.js.map