@decorators/express
Version:
node decorators - decorators for express library
92 lines • 7.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Status = exports.Head = exports.Options = exports.Patch = exports.Delete = exports.Put = exports.Post = exports.Get = exports.All = void 0;
const meta_1 = require("../meta");
/**
* Route decorator factory, creates decorator
*/
function decoratorFactory(method, url, middleware = []) {
return (target, key, descriptor) => {
const methodMetadata = getRouteMeta(target, key);
methodMetadata.routes.push({ method, url, middleware });
return descriptor;
};
}
/**
* All routes
*
* Special-cased "all" method, applying the given route `path`,
* middleware, and callback to _every_ HTTP method.
*/
function All(url, middleware) {
return decoratorFactory('all', url, middleware);
}
exports.All = All;
/**
* Get route
*/
function Get(url, middleware) {
return decoratorFactory('get', url, middleware);
}
exports.Get = Get;
/**
* Post route
*/
function Post(url, middleware) {
return decoratorFactory('post', url, middleware);
}
exports.Post = Post;
/**
* Put route
*/
function Put(url, middleware) {
return decoratorFactory('put', url, middleware);
}
exports.Put = Put;
/**
* Delete route
*/
function Delete(url, middleware) {
return decoratorFactory('delete', url, middleware);
}
exports.Delete = Delete;
/**
* Patch route
*/
function Patch(url, middleware) {
return decoratorFactory('patch', url, middleware);
}
exports.Patch = Patch;
/**
* Options route
*/
function Options(url, middleware) {
return decoratorFactory('options', url, middleware);
}
exports.Options = Options;
/**
* Head route
*
*/
function Head(url, middleware) {
return decoratorFactory('head', url, middleware);
}
exports.Head = Head;
/**
* Method status
*/
function Status(status) {
return (target, key, descriptor) => {
const methodMetadata = getRouteMeta(target, key);
methodMetadata.status = status;
return descriptor;
};
}
exports.Status = Status;
function getRouteMeta(target, key) {
const meta = (0, meta_1.getMeta)(target);
return meta.routes[key] = meta.routes[key] || {
routes: [],
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdG9ycy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrQ0FBMkQ7QUFHM0Q7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxHQUFXLEVBQUUsYUFBMkIsRUFBRTtJQUNsRixPQUFPLENBQUMsTUFBYyxFQUFFLEdBQVcsRUFBRSxVQUFlLEVBQUUsRUFBRTtRQUN0RCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRWpELGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXhELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsVUFBeUI7SUFDeEQsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFGRCxrQkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxVQUF5QjtJQUN4RCxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUZELGtCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixJQUFJLENBQUMsR0FBVyxFQUFFLFVBQXlCO0lBQ3pELE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRkQsb0JBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsVUFBeUI7SUFDeEQsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFGRCxrQkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLEdBQVcsRUFBRSxVQUF5QjtJQUMzRCxPQUFPLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUZELHdCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixLQUFLLENBQUMsR0FBVyxFQUFFLFVBQXlCO0lBQzFELE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRkQsc0JBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxHQUFXLEVBQUUsVUFBeUI7SUFDNUQsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFGRCwwQkFFQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLElBQUksQ0FBQyxHQUFXLEVBQUUsVUFBeUI7SUFDekQsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFGRCxvQkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLE1BQWM7SUFDbkMsT0FBTyxDQUFDLE1BQWMsRUFBRSxHQUFXLEVBQUUsVUFBZSxFQUFFLEVBQUU7UUFDdEQsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVqRCxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUUvQixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUM7QUFDSixDQUFDO0FBUkQsd0JBUUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxNQUFjLEVBQUUsR0FBVztJQUMvQyxNQUFNLElBQUksR0FBZ0IsSUFBQSxjQUFPLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFFMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUk7UUFDNUMsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4cHJlc3NNZXRhLCBnZXRNZXRhLCBNZXRob2RNZXRhIH0gZnJvbSAnLi4vbWV0YSc7XG5pbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSAnLi4vbWlkZGxld2FyZSc7XG5cbi8qKlxuICogUm91dGUgZGVjb3JhdG9yIGZhY3RvcnksIGNyZWF0ZXMgZGVjb3JhdG9yXG4gKi9cbmZ1bmN0aW9uIGRlY29yYXRvckZhY3RvcnkobWV0aG9kOiBzdHJpbmcsIHVybDogc3RyaW5nLCBtaWRkbGV3YXJlOiBNaWRkbGV3YXJlW10gPSBbXSkge1xuICByZXR1cm4gKHRhcmdldDogb2JqZWN0LCBrZXk6IHN0cmluZywgZGVzY3JpcHRvcjogYW55KSA9PiB7XG4gICAgY29uc3QgbWV0aG9kTWV0YWRhdGEgPSBnZXRSb3V0ZU1ldGEodGFyZ2V0LCBrZXkpO1xuXG4gICAgbWV0aG9kTWV0YWRhdGEucm91dGVzLnB1c2goeyBtZXRob2QsIHVybCwgbWlkZGxld2FyZSB9KTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuXG4vKipcbiAqIEFsbCByb3V0ZXNcbiAqXG4gKiBTcGVjaWFsLWNhc2VkIFwiYWxsXCIgbWV0aG9kLCBhcHBseWluZyB0aGUgZ2l2ZW4gcm91dGUgYHBhdGhgLFxuICogbWlkZGxld2FyZSwgYW5kIGNhbGxiYWNrIHRvIF9ldmVyeV8gSFRUUCBtZXRob2QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBBbGwodXJsOiBzdHJpbmcsIG1pZGRsZXdhcmU/OiBNaWRkbGV3YXJlW10pIHtcbiAgcmV0dXJuIGRlY29yYXRvckZhY3RvcnkoJ2FsbCcsIHVybCwgbWlkZGxld2FyZSk7XG59XG5cbi8qKlxuICogR2V0IHJvdXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXQodXJsOiBzdHJpbmcsIG1pZGRsZXdhcmU/OiBNaWRkbGV3YXJlW10pIHtcbiAgcmV0dXJuIGRlY29yYXRvckZhY3RvcnkoJ2dldCcsIHVybCwgbWlkZGxld2FyZSk7XG59XG5cbi8qKlxuICogUG9zdCByb3V0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gUG9zdCh1cmw6IHN0cmluZywgbWlkZGxld2FyZT86IE1pZGRsZXdhcmVbXSkge1xuICByZXR1cm4gZGVjb3JhdG9yRmFjdG9yeSgncG9zdCcsIHVybCwgbWlkZGxld2FyZSk7XG59XG5cbi8qKlxuICogUHV0IHJvdXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBQdXQodXJsOiBzdHJpbmcsIG1pZGRsZXdhcmU/OiBNaWRkbGV3YXJlW10pIHtcbiAgcmV0dXJuIGRlY29yYXRvckZhY3RvcnkoJ3B1dCcsIHVybCwgbWlkZGxld2FyZSk7XG59XG5cbi8qKlxuICogRGVsZXRlIHJvdXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEZWxldGUodXJsOiBzdHJpbmcsIG1pZGRsZXdhcmU/OiBNaWRkbGV3YXJlW10pIHtcbiAgcmV0dXJuIGRlY29yYXRvckZhY3RvcnkoJ2RlbGV0ZScsIHVybCwgbWlkZGxld2FyZSk7XG59XG5cbi8qKlxuICogUGF0Y2ggcm91dGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBhdGNoKHVybDogc3RyaW5nLCBtaWRkbGV3YXJlPzogTWlkZGxld2FyZVtdKSB7XG4gIHJldHVybiBkZWNvcmF0b3JGYWN0b3J5KCdwYXRjaCcsIHVybCwgbWlkZGxld2FyZSk7XG59XG5cbi8qKlxuICogT3B0aW9ucyByb3V0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gT3B0aW9ucyh1cmw6IHN0cmluZywgbWlkZGxld2FyZT86IE1pZGRsZXdhcmVbXSkge1xuICByZXR1cm4gZGVjb3JhdG9yRmFjdG9yeSgnb3B0aW9ucycsIHVybCwgbWlkZGxld2FyZSk7XG59XG5cbi8qKlxuICogSGVhZCByb3V0ZVxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEhlYWQodXJsOiBzdHJpbmcsIG1pZGRsZXdhcmU/OiBNaWRkbGV3YXJlW10pIHtcbiAgcmV0dXJuIGRlY29yYXRvckZhY3RvcnkoJ2hlYWQnLCB1cmwsIG1pZGRsZXdhcmUpO1xufVxuXG4vKipcbiAqIE1ldGhvZCBzdGF0dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFN0YXR1cyhzdGF0dXM6IG51bWJlcikge1xuICByZXR1cm4gKHRhcmdldDogb2JqZWN0LCBrZXk6IHN0cmluZywgZGVzY3JpcHRvcjogYW55KSA9PiB7XG4gICAgY29uc3QgbWV0aG9kTWV0YWRhdGEgPSBnZXRSb3V0ZU1ldGEodGFyZ2V0LCBrZXkpO1xuXG4gICAgbWV0aG9kTWV0YWRhdGEuc3RhdHVzID0gc3RhdHVzO1xuXG4gICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFJvdXRlTWV0YSh0YXJnZXQ6IG9iamVjdCwga2V5OiBzdHJpbmcpOiBNZXRob2RNZXRhIHtcbiAgY29uc3QgbWV0YTogRXhwcmVzc01ldGEgPSBnZXRNZXRhKHRhcmdldCk7XG5cbiAgcmV0dXJuIG1ldGEucm91dGVzW2tleV0gPSBtZXRhLnJvdXRlc1trZXldIHx8IHtcbiAgICByb3V0ZXM6IFtdLFxuICB9O1xufVxuIl19