claire-framework
Version:
- được viết bằng TypeScript - hỗ trợ websocket và HTTP request - hỗ trợ CLI để generate base project (claire-cli)
84 lines • 6.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const HttpControllerMetadata_1 = require("../controller/http/HttpControllerMetadata");
const core_1 = require("./core");
const initHttpHandler = (prototype, propertyKey) => {
let controllerMetadata = core_1.initMetadata(prototype, HttpControllerMetadata_1.HttpControllerMetadata);
if (!controllerMetadata.handlers) {
controllerMetadata.handlers = [];
}
let handlerMetadata = controllerMetadata.handlers.find((h) => h.handlerFn === propertyKey);
if (!handlerMetadata) {
handlerMetadata = {
handlerFn: propertyKey
};
controllerMetadata.handlers.push(handlerMetadata);
}
return handlerMetadata;
};
exports.Override = () => {
return (prototype, propertyKey) => {
let handler = initHttpHandler(prototype, propertyKey);
handler.override = true;
};
};
exports.Permission = (permissionConditions) => {
return (prototype, propertyKey) => {
let handler = initHttpHandler(prototype, propertyKey);
if (permissionConditions !== undefined) {
handler.permissionConditions = permissionConditions;
}
};
};
exports.AllowOAuth = () => {
return (prototype, propertyKey) => {
let handler = initHttpHandler(prototype, propertyKey);
handler.allowOAuth = true;
};
};
exports.OpenAccess = () => {
return (prototype, propertyKey) => {
let handler = initHttpHandler(prototype, propertyKey);
handler.openAccess = true;
};
};
exports.NoAccess = () => {
return (prototype, propertyKey) => {
let handler = initHttpHandler(prototype, propertyKey);
handler.noAccess = true;
};
};
exports.Mapping = (method, route = "/", responder, middleware) => {
return (prototype, propertyKey) => {
let handler = initHttpHandler(prototype, propertyKey);
Object.assign(handler, {
method,
url: route,
responder,
middleware,
});
};
};
exports.Validator = (bodyValidator, paramsValidator, queryValidator) => {
return (prototype, propertyKey) => {
let handler = initHttpHandler(prototype, propertyKey);
//-- allow merging for multiple same decorators
if (bodyValidator !== undefined) {
handler.bodyValidator = bodyValidator.prototype && bodyValidator.prototype[core_1.METADATA];
// handler.bodyValidator!.normalizeMetadata();
}
// if (responseValidator !== undefined) {
// handler.responseValidator = responseValidator.prototype && responseValidator.prototype[METADATA];
// // handler.responseValidator!.normalizeMetadata();
// }
if (paramsValidator !== undefined) {
handler.paramsValidator = paramsValidator.prototype && paramsValidator.prototype[core_1.METADATA];
// handler.paramsValidator!.normalizeMetadata();
}
if (queryValidator !== undefined) {
handler.queryValidator = queryValidator.prototype && queryValidator.prototype[core_1.METADATA];
// handler.queryValidator!.normalizeMetadata();
}
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9kZWNvcmF0b3IvY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLHNGQUFpRjtBQUNqRixpQ0FBOEM7QUFHOUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUFjLEVBQUUsV0FBbUIsRUFBdUIsRUFBRTtJQUNqRixJQUFJLGtCQUFrQixHQUFHLG1CQUFZLENBQUMsU0FBUyxFQUFFLCtDQUFzQixDQUFDLENBQUM7SUFDekUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRTtRQUM5QixrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0tBQ3BDO0lBQ0QsSUFBSSxlQUFlLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQztJQUMzRixJQUFJLENBQUMsZUFBZSxFQUFFO1FBQ2xCLGVBQWUsR0FBRztZQUNkLFNBQVMsRUFBRSxXQUFXO1NBQ3pCLENBQUM7UUFDRixrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QsT0FBTyxlQUFnQixDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVXLFFBQUEsUUFBUSxHQUFHLEdBQUcsRUFBRTtJQUN6QixPQUFPLENBQUMsU0FBYyxFQUFFLFdBQW1CLEVBQUUsRUFBRTtRQUMzQyxJQUFJLE9BQU8sR0FBRyxlQUFlLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVXLFFBQUEsVUFBVSxHQUFHLENBQUMsb0JBQXFELEVBQUUsRUFBRTtJQUNoRixPQUFPLENBQUMsU0FBYyxFQUFFLFdBQW1CLEVBQUUs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