koa-quick-service
Version:
start koa service quickly
287 lines (209 loc) • 8.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.App = exports.LOG = exports.PATCH = exports.DELETE = exports.PUT = exports.POST = exports.GET = exports.Dictionary = exports.Secret = exports.Convert = exports.EngineProcess = exports.CACHE = exports.MAP = exports.URI = exports.MySQL = exports.ReDIS = undefined;
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var setNativeMiddleWares = function () {
var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(startRouter) {
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
app.use(MiddleWares.middlewareCommonMethods).use(MiddleWares.catchErrors);
_context2.next = 3;
return app.emit('beforeStartInjectRouters');
case 3:
app.use(startRouter.routes(), startRouter.allowedMethods());
case 4:
case 'end':
return _context2.stop();
}
}
}, _callee2, this);
}));
return function setNativeMiddleWares(_x3) {
return _ref2.apply(this, arguments);
};
}();
var _cls = require('./service_engines/cls.ajax');
Object.defineProperty(exports, 'GET', {
enumerable: true,
get: function get() {
return _cls.GET;
}
});
Object.defineProperty(exports, 'POST', {
enumerable: true,
get: function get() {
return _cls.POST;
}
});
Object.defineProperty(exports, 'PUT', {
enumerable: true,
get: function get() {
return _cls.PUT;
}
});
Object.defineProperty(exports, 'DELETE', {
enumerable: true,
get: function get() {
return _cls.DELETE;
}
});
Object.defineProperty(exports, 'PATCH', {
enumerable: true,
get: function get() {
return _cls.PATCH;
}
});
exports.PostBody = PostBody;
var _koa = require('koa');
var _koa2 = _interopRequireDefault(_koa);
var _cls2 = require('./service_engines/cls.redis');
var _cls3 = _interopRequireDefault(_cls2);
var _cls4 = require('./service_engines/cls.mysql');
var _cls5 = _interopRequireDefault(_cls4);
var _mid = require('./service_engines/mid.wares');
var MiddleWares = _interopRequireWildcard(_mid);
var _koaStaticCache = require('koa-static-cache');
var _koaStaticCache2 = _interopRequireDefault(_koaStaticCache);
var _koaCors = require('koa-cors');
var _koaCors2 = _interopRequireDefault(_koaCors);
var _koaConvert = require('koa-convert');
var _koaConvert2 = _interopRequireDefault(_koaConvert);
var _koaLogger = require('koa-logger');
var _koaLogger2 = _interopRequireDefault(_koaLogger);
var _keygrip = require('keygrip');
var _keygrip2 = _interopRequireDefault(_keygrip);
var _lgc = require('./service_supports/lgc.uri');
var _lgc2 = _interopRequireDefault(_lgc);
var _lgc3 = require('./service_supports/lgc.map');
var _lgc4 = _interopRequireDefault(_lgc3);
var _lgc5 = require('./service_supports/lgc.cache');
var _lgc6 = _interopRequireDefault(_lgc5);
var _cls6 = require('./service_engines/cls.process');
var _cls7 = _interopRequireDefault(_cls6);
var _koaBetterBody = require('koa-better-body');
var _koaBetterBody2 = _interopRequireDefault(_koaBetterBody);
var _cls8 = require('./service_engines/cls.secret');
var _cls9 = _interopRequireDefault(_cls8);
var _cls10 = require('./service_engines/cls.dictionary');
var _cls11 = _interopRequireDefault(_cls10);
var _asyncEventsListener = require('async-events-listener');
var _asyncEventsListener2 = _interopRequireDefault(_asyncEventsListener);
var _fns = require('./service_engines/fns.console');
var _LOG = _interopRequireWildcard(_fns);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Created by evio on 2017/1/26.
*/
exports.ReDIS = _cls3.default;
exports.MySQL = _cls5.default;
exports.URI = _lgc2.default;
exports.MAP = _lgc4.default;
exports.CACHE = _lgc6.default;
exports.EngineProcess = _cls7.default;
exports.Convert = _koaConvert2.default;
exports.Secret = _cls9.default;
exports.Dictionary = _cls11.default;
exports.LOG = _LOG;
var app = new _koa2.default();
app.emit = _asyncEventsListener2.default.prototype.emit.bind(app);
var App = exports.App = app;
function PostBody() {
var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (!args.fields) {
args.fields = 'form';
}
return (0, _koaConvert2.default)((0, _koaBetterBody2.default)(args));
}
app.nativeConfigs = {};
app.setNativeConfigs = function (env, value) {
app.nativeConfigs[env] = value;
};
app.createNativeService = function () {
var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(NativeRouter) {
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!app.nativeConfigs[app.env]) {
_context.next = 24;
break;
}
app.nativeConfig = app.nativeConfigs[app.env];
_context.next = 4;
return app.emit('beforeSetNativeDatabase');
case 4:
setNativeDatabase(app.nativeConfig.db);
_context.next = 7;
return app.emit('beforeSetStaticResource');
case 7:
setStaticResource(app.nativeConfig.static);
_context.next = 10;
return app.emit('beforeSetLoggerAndCors');
case 10:
setLoggerAndCors(app.nativeConfig.logger, app.nativeConfig.cors);
_context.next = 13;
return app.emit('beforeSetCookie');
case 13:
setCookie(app.nativeConfig.cookie);
_context.next = 16;
return app.emit('beforeSetNativeMiddleWares');
case 16:
_context.next = 18;
return setNativeMiddleWares(NativeRouter);
case 18:
_context.next = 20;
return app.emit('beforeCreateService');
case 20:
app.listen(app.nativeConfig.port, app.nativeConfig.ip);
console.log('start at http://' + app.nativeConfig.ip + ':' + app.nativeConfig.port);
_context.next = 24;
return app.emit('afterCreateService');
case 24:
case 'end':
return _context.stop();
}
}
}, _callee, undefined);
}));
return function (_x2) {
return _ref.apply(this, arguments);
};
}();
function setNativeDatabase(options) {
if (options) {
for (var i in options) {
var which = MiddleWares.set(i, options[i].constructor);
if (options[i].namespace) {
for (var j in options[i].namespace) {
which.set(j, options[i].namespace[j]);
}
}
}
}
}
function setStaticResource(options) {
for (var i in options) {
app.use((0, _koaConvert2.default)((0, _koaStaticCache2.default)(options[i], {
"prefix": i,
"maxAge": 31536000,
"gzip": true,
"dynamic": true
})));
}
}
function setLoggerAndCors(logger, cors) {
logger && app.use((0, _koaConvert2.default)((0, _koaLogger2.default)()));
cors && app.use((0, _koaConvert2.default)((0, _koaCors2.default)()));
}
function setCookie(options) {
app.keys = new _keygrip2.default([options.key, options.value], 'sha256');
app.proxy = true;
}