"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Unlock = exports.Lock = exports.Purge = exports.Trace = exports.Options = exports.Head = exports.Copy = exports.Delete = exports.Patch = exports.Put = exports.Post = exports.Get = void 0;
var Router_1 = require("../@types/Router");
var defineMethod_1 = __importDefault(require("../app/defineMethod"));
/**
* This decorator is used to define a GET Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Get]{@link Get}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* [\@Get]{@link Get}('/sub-path', ['SubPathMiddleware']) // The url will be /api/path/sub-path
* public findAll(
* [\@Request]{@link @Request} req: Request,
* [\@Query]{@link @Query} query: any,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Get]{@link Get}('/sub-path/:id', ['SubPathMiddleware'])
* public findById(
* [\@Params]{@link @Params} params: any,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Get = function (child, middlewares) {
return (0, defineMethod_1.default)(Router_1.ActionMethods.GET, child, middlewares);
};
exports.Get = Get;
/**
* This decorator is used to define a POST Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Post]{@link Post}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* [\@Retrieve]{@link Retrieve}('Domain.Name')
* private [domain]{@link Domain}?: [DomainName]{@link Domain};
*
* [\@Post]{@link Post}('/sub-path', ['SubPathMiddleware']) // The url will be /api/path/sub-path
* public saveItem(
* [\@Body]{@link @Body} body: any,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* const { userId } = (
* await this.[domain]{@link Domain}!.[saveUser]{@link Domain}('Some Name')
* );
* return this.[responder]{@link Responder}!.[created]{@link Responder}(res, userId);
* }
* }
*/
var Post = function (child, middlewares) { return (0, defineMethod_1.default)(Router_1.ActionMethods.POST, child, middlewares); };
exports.Post = Post;
/**
* This decorator is used to define a PUT Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Put]{@link Put}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Put]{@link Put}('/sub-path/:id', ['SubPathMiddleware'])
* public replaceItem(
* [\@Request]{@link @Request} req: Request,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Put = function (child, middlewares) {
return (0, defineMethod_1.default)(Router_1.ActionMethods.PUT, child, middlewares);
};
exports.Put = Put;
/**
* This decorator is used to define a PATCH Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Patch]{@link Patch}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Patch]{@link Patch}('/sub-path/:id', ['SubPathMiddleware'])
* public updateItem(
* [\@Request]{@link @Request} req: Request,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Patch = function (child, middlewares) { return (0, defineMethod_1.default)(Router_1.ActionMethods.PATCH, child, middlewares); };
exports.Patch = Patch;
/**
* This decorator is used to define a DELETE Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Delete]{@link Delete}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Delete]{@link Delete}('/sub-path/:id', ['SubPathMiddleware'])
* public deleteItem(
* [\@Request]{@link @Request} req: Request,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Delete = function (child, middlewares) { return (0, defineMethod_1.default)(Router_1.ActionMethods.DELETE, child, middlewares); };
exports.Delete = Delete;
/**
* This decorator is used to define a COPY Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Copy]{@link Copy}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Copy]{@link Copy}('/sub-path/:id', ['SubPathMiddleware'])
* public item(
* [\@Request]{@link @Request} req: Request,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Copy = function (child, middlewares) { return (0, defineMethod_1.default)(Router_1.ActionMethods.COPY, child, middlewares); };
exports.Copy = Copy;
/**
* This decorator is used to define a HEAD Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Head]{@link Head}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Head]{@link Head}('/sub-path/:id', ['SubPathMiddleware'])
* public item(
* [\@Request]{@link @Request} req: Request,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Head = function (child, middlewares) { return (0, defineMethod_1.default)(Router_1.ActionMethods.HEAD, child, middlewares); };
exports.Head = Head;
/**
* This decorator is used to define a OPTIONS Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Options]{@link Options}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Options]{@link Options}('/sub-path/:id', ['SubPathMiddleware'])
* public item(
* [\@Request]{@link @Request} req: Request,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Options = function (child, middlewares) { return (0, defineMethod_1.default)(Router_1.ActionMethods.OPTIONS, child, middlewares); };
exports.Options = Options;
/**
* This decorator is used to define a TRACE Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Trace]{@link Trace}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Trace]{@link Trace}('/sub-path/:id', ['SubPathMiddleware'])
* public item(
* [\@Request]{@link @Request} req: Request,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Trace = function (child, middlewares) { return (0, defineMethod_1.default)(Router_1.ActionMethods.TRACE, child, middlewares); };
exports.Trace = Trace;
/**
* This decorator is used to define a PURGE Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Purge]{@link Purge}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Purge]{@link Purge}('/sub-path/:id', ['SubPathMiddleware'])
* public item(
* [\@Request]{@link @Request} req: Request,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Purge = function (child, middlewares) { return (0, defineMethod_1.default)(Router_1.ActionMethods.PURGE, child, middlewares); };
exports.Purge = Purge;
/**
* This decorator is used to define a LOCK Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Lock]{@link Lock}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Lock]{@link Lock}('/sub-path/:id', ['SubPathMiddleware'])
* public item(
* [\@Request]{@link @Request} req: Request,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Lock = function (child, middlewares) { return (0, defineMethod_1.default)(Router_1.ActionMethods.LOCK, child, middlewares); };
exports.Lock = Lock;
/**
* This decorator is used to define a UNLOCK Route.
*
* The middlewares can be [Class Middlewares (Injected)]{@link module:Injector~Middleware}
* as strings or function middlewares.
* @static
* @return {any}
* @memberof module:Router
* @param {string} [child=/] The path of the route (This will have as prefix the Action's path)
* @param {?Array.<string | Function>} middlewares Middlewares
* @example <caption>Example usage of [\@Unlock]{@link Unlock}.</caption>
* [\@Action]{@link Action}('/path', ['ClassMiddleware', functionMiddleware])
* export default class ActionName {
* [\@Retrieve]{@link Retrieve}('Responder.Name')
* private [responder]{@link Responder}?: [ResponderName]{@link Responder};
*
* // The url will be /api/path/sub-path/:id (where :id is a path parameter)
* [\@Unlock]{@link Unlock}('/sub-path/:id', ['SubPathMiddleware'])
* public item(
* [\@Request]{@link @Request} req: Request,
* [\@Response]{@link @Response} res: Response
* ): Promise<any> {
* return this.[responder]{@link Responder}!.[success]{@link Responder}(res);
* }
* }
*/
var Unlock = function (child, middlewares) { return (0, defineMethod_1.default)(Router_1.ActionMethods.UNLOCK, child, middlewares); };
exports.Unlock = Unlock;
//# sourceMappingURL=Methods.js.map