UNPKG

@defikitdotnet/education-module-ai

Version:
104 lines (103 loc) 3.06 kB
"use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MIDDLEWARE_META_KEY = exports.ROUTES_META_KEY = exports.CONTROLLER_META_KEY = void 0; exports.Controller = Controller; exports.Route = Route; exports.Get = Get; exports.Post = Post; exports.Put = Put; exports.Delete = Delete; exports.Patch = Patch; exports.Use = Use; require("reflect-metadata"); // Decorator keys for metadata exports.CONTROLLER_META_KEY = "controller:base-path"; exports.ROUTES_META_KEY = "controller:routes"; exports.MIDDLEWARE_META_KEY = "controller:middleware"; /** * Controller decorator - marks a class as a controller * @param basePath Base path for all routes in this controller */ function Controller(basePath) { return function (target) { Reflect.defineMetadata(exports.CONTROLLER_META_KEY, basePath, target); return target; }; } /** * Route decorator - marks a method as a route handler * @param path Route path * @param method HTTP method */ function Route(path, method) { return function (target, propertyKey, descriptor) { var routes = Reflect.getMetadata(exports.ROUTES_META_KEY, target.constructor) || {}; routes[propertyKey] = { path: path, method: method, propertyKey: propertyKey, }; Reflect.defineMetadata(exports.ROUTES_META_KEY, routes, target.constructor); return descriptor; }; } /** * GET route decorator * @param path Route path */ function Get(path) { return Route(path, "GET"); } /** * POST route decorator * @param path Route path */ function Post(path) { return Route(path, "POST"); } /** * PUT route decorator * @param path Route path */ function Put(path) { return Route(path, "PUT"); } /** * DELETE route decorator * @param path Route path */ function Delete(path) { return Route(path, "DELETE"); } /** * PATCH route decorator * @param path Route path */ function Patch(path) { return Route(path, "PATCH"); } /** * Middleware decorator - adds middleware to a route handler * @param middleware Middleware function(s) */ function Use() { var middleware = []; for (var _i = 0; _i < arguments.length; _i++) { middleware[_i] = arguments[_i]; } return function (target, propertyKey, descriptor) { var middlewareList = Reflect.getMetadata(exports.MIDDLEWARE_META_KEY, target.constructor) || {}; middlewareList[propertyKey] = __spreadArray(__spreadArray([], (middlewareList[propertyKey] || []), true), middleware, true); Reflect.defineMetadata(exports.MIDDLEWARE_META_KEY, middlewareList, target.constructor); return descriptor; }; }