appolo
Version:
nodejs server framework
93 lines • 3.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Util = void 0;
const appolo = require("appolo-engine");
const appolo_utils_1 = require("appolo-utils");
const appolo_agent_1 = require("appolo-agent");
const IMiddleware_1 = require("../interfaces/IMiddleware");
const invokeActionMiddleware_1 = require("../routes/invokeActionMiddleware");
const route_1 = require("../routes/route");
const decorators_1 = require("../decorators/decorators");
const index_1 = require("appolo-utils/index");
class Util extends appolo.Util {
static convertSnakeCaseToCamelCase(str) {
return str.replace(/(\_\w)/g, function (m) {
return m[1].toUpperCase();
});
}
static convertModelToCamelCase(model) {
let keys = Object.keys(model);
let output = {};
for (let i = 0, len = keys.length; i < len; i++) {
let key = keys[i];
output[Util.convertSnakeCaseToCamelCase(key)] = model[key];
}
return output;
}
static isClass(v) {
return typeof v === 'function' && v.name && /^\s*class\s+/.test(v.toString());
}
static reverseMiddleware(route) {
Object.keys(route || {}).forEach(key => {
let value = route[key];
//we need to insert middlewares in reverse order
if (key == "middleware") {
route[key] = {
middleware: Array.isArray(value) ? value.reverse() : value,
order: "head"
};
}
});
}
static getControllerName(controller) {
return appolo_utils_1.Functions.isFunction(controller) && controller.name ? Util.getClassName(controller) : controller;
}
static decorateRequest(name, fn) {
appolo_agent_1.Request.prototype[name] = function () {
return fn.apply(this, arguments);
};
}
static decorateResponse(name, fn) {
appolo_agent_1.Response.prototype[name] = function () {
return fn.apply(this, arguments);
};
}
static getRouteDefinition(fn, action) {
action = appolo_utils_1.Strings.isString(action) ? action : action(fn.prototype).name;
let route = Reflect.getMetadata(decorators_1.RouterDefinitionsCompiledSymbol, fn, action);
return route;
}
static createRouteDefinition(fn, action) {
let data = index_1.Reflector.getFnMetadata(decorators_1.RouterDefinitionsSymbol, fn, {});
let propertyKey = appolo_utils_1.Strings.isString(action) ? action : action(fn.prototype).name;
let route = data[propertyKey];
if (!route) {
data[propertyKey] = route = new route_1.Route(fn);
route.action(propertyKey);
}
else {
route = data[propertyKey] = route.clone();
}
return route;
}
static isController(fn) {
return Reflect.hasMetadata(decorators_1.RouterDefinitionsCompiledSymbol, fn);
}
static convertMiddleware(middleware, type) {
let output = [];
for (let i = 0, len = middleware.length; i < len; i++) {
let dto = middleware[i];
let id = Util.getClassId(middleware[i]);
if (id) {
dto = type == IMiddleware_1.MiddlewareType.MiddleWare ? invokeActionMiddleware_1.invokeMiddleWare(id) : type == IMiddleware_1.MiddlewareType.Error ? invokeActionMiddleware_1.invokeMiddleWareError(id) : invokeActionMiddleware_1.invokeMiddleWareData(id);
}
output.push(dto);
}
return output;
}
static convertMiddlewareHooks(name, hooks) {
return Util.convertMiddleware(hooks, name == appolo_agent_1.Hooks.OnSend ? IMiddleware_1.MiddlewareType.Data : name == appolo_agent_1.Hooks.OnError ? IMiddleware_1.MiddlewareType.Error : IMiddleware_1.MiddlewareType.MiddleWare);
}
}
exports.Util = Util;
//# sourceMappingURL=util.js.map