UNPKG

cds-routing-handlers

Version:

Package to route and implement CDS handlers via a class based approach in Typescript.

180 lines 7.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MetadataBuilder = void 0; var index_1 = require("../index"); var ActionMetadata_1 = require("../metadata/ActionMetadata"); var RejectMetadata_1 = require("../metadata/RejectMetadata"); var ParamMetadata_1 = require("../metadata/ParamMetadata"); var HandlerMetadata_1 = require("../metadata/HandlerMetadata"); var MiddlewareMetadata_1 = require("../metadata/MiddlewareMetadata"); var UserCheckerMetadata_1 = require("../metadata/UserCheckerMetadata"); /** * Metadata builder. * * @export * @class MetadataBuilder */ var MetadataBuilder = /** @class */ (function () { function MetadataBuilder() { } /** * Builds handler metadata for a given set of handler classes. * * @param {Function[]} [classes] Handler classes * @returns {MiddlewareMetadata[]} Build handler metadata * @memberof MetadataBuilder */ MetadataBuilder.prototype.buildHandlerMetadata = function (classes, userChecker) { var userCheckerMetadata = (0, index_1.getMetadataArgsStorage)().findUserCheckerWithTarget(userChecker); return this.createHandler(classes, userCheckerMetadata); }; /** * Builds middleware metadata for a given set of middleware classes. * * @param {Function[]} [classes] Middleware classes * @returns {MiddlewareMetadata[]} Buiild middleware metadata * @memberof MetadataBuilder */ MetadataBuilder.prototype.buildMiddlewareMetadata = function (classes, userChecker) { var userCheckerMetadata = (0, index_1.getMetadataArgsStorage)().findUserCheckerWithTarget(userChecker); return this.createMiddlewares(classes, userCheckerMetadata); }; /** * Create handler metadata. * * @param {Function[]} [classes] Handler classes to build for * @returns {MiddlewareMetadata[]} Created handler metadata * @memberof MetadataBuilder */ MetadataBuilder.prototype.createHandler = function (classes, userCheckerMetadataArg) { var _this = this; var handlers = !classes ? (0, index_1.getMetadataArgsStorage)().handlerMetadata : (0, index_1.getMetadataArgsStorage)().filterHandlerMetadataForClasses(classes); return handlers.map(function (handlerArgs) { var handler = new HandlerMetadata_1.HandlerMetadata(handlerArgs); handler.actions = _this.createActions(handler, userCheckerMetadataArg); return handler; }); }; /** * Creates middleware metadata. * * @private * @param {Function[]} [classes] Middleware classes to build for * @returns {MiddlewareMetadata[]} Created middleware metadata * @memberof MetadataBuilder */ MetadataBuilder.prototype.createMiddlewares = function (classes, userCheckerMetadataArg) { var _this = this; var middlewares = !classes ? (0, index_1.getMetadataArgsStorage)().middlewareMetadata : (0, index_1.getMetadataArgsStorage)().filterMiddlewareMetadataForClasses(classes); return middlewares.map(function (middlewareArgs) { var middleware = new MiddlewareMetadata_1.MiddlewareMetadata(middlewareArgs); middleware.params = _this.createMiddlewareParams(middleware); middleware.userChecker = _this.createUserChecker(userCheckerMetadataArg); if (!middleware.global) { var uses = (0, index_1.getMetadataArgsStorage)().filterUsesWithMiddleware(middleware.target); var handler = (0, index_1.getMetadataArgsStorage)().filterHandlerMetadataForClasses(uses.map(function (u) { return u.target; })); middleware.entities = handler .filter(function (h) { return h.entity; }) .map(function (h) { return h.entity || ""; }) .filter(function (s) { return s !== ""; }); } return middleware; }); }; /** * Creates action metadata. * * @param {MiddlewareMetadata} handler Handler metadata * @returns {ActionMetadata[]} Created action metadata * @memberof MetadataBuilder */ MetadataBuilder.prototype.createActions = function (handler, userCheckerArg) { var _this = this; return (0, index_1.getMetadataArgsStorage)() .filterActionsWithTarget(handler.target) .map(function (actionArgs) { var action = new ActionMetadata_1.ActionMetadata(handler, actionArgs); action.reject = _this.createReject(action); action.params = _this.createParams(action); action.userChecker = _this.createUserChecker(userCheckerArg); return action; }); }; /** * Creates a reject. * * @private * @param {ActionMetadata} action Action to create metadata for * @returns {(RejectMetadata | undefined)} Created rejection metadata * @memberof MetadataBuilder */ MetadataBuilder.prototype.createReject = function (action) { var result; var args = (0, index_1.getMetadataArgsStorage)().filterRejectWithTargetAndMethod(action.target, action.method); if (args) { result = new RejectMetadata_1.RejectMetadata(args); } return result; }; /** * Creates action parameters. * * @private * @param {ActionMetadata} action Action to create the parameters for * @returns {ParamMetadata[]} Created parameters * @memberof MetadataBuilder */ MetadataBuilder.prototype.createParams = function (action) { return (0, index_1.getMetadataArgsStorage)() .filterParamsWithTargetAndMethod(action.target, action.method) .map(function (paramArgs) { return new ParamMetadata_1.ParamMetadata(paramArgs); }); }; /** * Creates middleware paramters. * * @private * @param {MiddlewareMetadata} middleware Middleware to create parameters for * @returns {ParamMetadata[]} Created parameters * @memberof MetadataBuilder */ MetadataBuilder.prototype.createMiddlewareParams = function (middleware) { return (0, index_1.getMetadataArgsStorage)() .filterParamsWithTargetAndMethod(middleware.target, "use") .map(function (paramArgs) { return new ParamMetadata_1.ParamMetadata(paramArgs); }); }; /** * Creates user checker parameters. * * @private * @param {UserCheckerMetadata} userchecker Middleware to create parameters for * @returns {ParamMetadata[]} Created parameters * @memberof MetadataBuilder */ MetadataBuilder.prototype.createUserCheckerParams = function (userChecker) { return (0, index_1.getMetadataArgsStorage)() .filterParamsWithTargetAndMethod(userChecker.target, "check") .map(function (paramArgs) { return new ParamMetadata_1.ParamMetadata(paramArgs); }); }; /** * Creates a user checker. * * @private * @param {(IUserCheckerMetadataArgs | undefined)} userCheckerArg User checker metadata arguments * @returns {(UserCheckerMetadata | undefined)} Creates user checker * @memberof MetadataBuilder */ MetadataBuilder.prototype.createUserChecker = function (userCheckerArg) { if (userCheckerArg) { var userChecker = new UserCheckerMetadata_1.UserCheckerMetadata(userCheckerArg); userChecker.params = this.createUserCheckerParams(userChecker); return userChecker; } }; return MetadataBuilder; }()); exports.MetadataBuilder = MetadataBuilder; //# sourceMappingURL=MetadataBuilder.js.map