sipp
Version:
An Opinionated, High-Productivity MVC Web Framework in TypeScript
43 lines • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Put = exports.Post = exports.Patch = exports.Options = exports.Head = exports.Get = exports.Delete = exports.RequestMapping = void 0;
const constants_1 = require("../constants");
const Provide_1 = require("./Provide");
const defaultMetadata = {
[constants_1.PATH_METADATA]: '/',
[constants_1.METHOD_METADATA]: "get",
};
const RequestMapping = (metadata = defaultMetadata) => {
const pathMetadata = metadata[constants_1.PATH_METADATA];
const path = pathMetadata && pathMetadata.length ? pathMetadata : '/';
const pathOptionMetadata = metadata[constants_1.PATH_OPTION_METADATA];
const requestMethod = metadata[constants_1.METHOD_METADATA] || "get";
return (target, key, descriptor) => {
const ROUTES = Reflect.getMetadata(constants_1.ROUTES_METADATA, target) || {};
ROUTES[key] = 1;
descriptor.value = Provide_1.withParamProviding(descriptor.value, target, key);
Reflect.defineMetadata(constants_1.ROUTES_METADATA, ROUTES, target);
Reflect.defineMetadata(constants_1.PATH_METADATA, path, target, key);
Reflect.defineMetadata(constants_1.METHOD_METADATA, requestMethod, target, key);
if (pathOptionMetadata) {
Reflect.defineMetadata(constants_1.PATH_OPTION_METADATA, pathOptionMetadata, target, key);
}
return descriptor;
};
};
exports.RequestMapping = RequestMapping;
const createMappingDecorator = (method) => (path, options) => {
return exports.RequestMapping({
[constants_1.PATH_METADATA]: path,
[constants_1.PATH_OPTION_METADATA]: options,
[constants_1.METHOD_METADATA]: method,
});
};
exports.Delete = createMappingDecorator("delete");
exports.Get = createMappingDecorator("get");
exports.Head = createMappingDecorator("head");
exports.Options = createMappingDecorator("options");
exports.Patch = createMappingDecorator("patch");
exports.Post = createMappingDecorator("post");
exports.Put = createMappingDecorator("put");
//# sourceMappingURL=Route.js.map