inceptum
Version:
hipages take on the foundational library for enterprise-grade apps written in NodeJS
55 lines • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebDecorator = exports.getWebDecoratorMetadata = exports.hasWebDecoratorMetadata = exports.InceptumWebMetadata = exports.INCEPTUM_WEB_METADATA_KEY = void 0;
require("reflect-metadata");
exports.INCEPTUM_WEB_METADATA_KEY = 'inceptum-web';
class InceptumWebMetadata {
constructor() {
this.routes = [];
}
}
exports.InceptumWebMetadata = InceptumWebMetadata;
function hasWebDecoratorMetadata(target) {
return Reflect.hasMetadata(exports.INCEPTUM_WEB_METADATA_KEY, target);
}
exports.hasWebDecoratorMetadata = hasWebDecoratorMetadata;
function getWebDecoratorMetadata(target) {
return Reflect.getMetadata(exports.INCEPTUM_WEB_METADATA_KEY, target);
}
exports.getWebDecoratorMetadata = getWebDecoratorMetadata;
function getOrCreateMetadata(target) {
if (hasWebDecoratorMetadata(target)) {
return getWebDecoratorMetadata(target);
}
const metadata = new InceptumWebMetadata();
Reflect.defineMetadata(exports.INCEPTUM_WEB_METADATA_KEY, metadata, target);
return metadata;
}
var WebDecorator;
(function (WebDecorator) {
function Get(path) {
return Route('get', path);
}
WebDecorator.Get = Get;
function Post(path) {
return Route('post', path);
}
WebDecorator.Post = Post;
function Put(path) {
return Route('put', path);
}
WebDecorator.Put = Put;
function Delete(path) {
return Route('delete', path);
}
WebDecorator.Delete = Delete;
function Route(verb, path) {
return (target, key) => {
// console.log('Called Autowire');
const metadata = getOrCreateMetadata(target);
metadata.routes.push({ verb, path, methodName: key });
};
}
WebDecorator.Route = Route;
})(WebDecorator = exports.WebDecorator || (exports.WebDecorator = {}));
//# sourceMappingURL=WebDecorators.js.map