claire-framework
Version:
- được viết bằng TypeScript - hỗ trợ websocket và HTTP request - hỗ trợ CLI để generate base project (claire-cli)
96 lines • 8.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const errors_1 = require("../system/errors");
const __1 = require("..");
const GlobalInjection_1 = require("../system/GlobalInjection");
const __2 = require("..");
const HttpControllerMetadata_1 = require("../controller/http/HttpControllerMetadata");
exports.METADATA = "__METADATA__";
const initInjectable = (constructor) => {
let injectable = GlobalInjection_1.getGlobalInjection().injectables.find(i => i.name === constructor.name);
if (!injectable) {
injectable = { name: constructor.name, constructorFn: constructor };
GlobalInjection_1.getGlobalInjection().injectables.push(injectable);
}
return injectable;
};
exports.initMetadata = (prototype, metaPrototype) => {
let meta = prototype[exports.METADATA];
if (!meta) {
meta = new metaPrototype();
prototype[exports.METADATA] = meta;
}
return meta;
};
exports.Controller = (permissionGroupName) => {
return (constructor) => {
//-- check controllers
let injectable = initInjectable(constructor);
let controller = GlobalInjection_1.getGlobalInjection().httpControllers.find(s => s.name === injectable.name);
if (controller) {
throw new __1.ClaireError(errors_1.DUPLICATED_CONTROLLER_NAME, constructor.name);
}
const meta = exports.initMetadata(constructor.prototype, HttpControllerMetadata_1.HttpControllerMetadata);
meta.permissionGroup = permissionGroupName;
GlobalInjection_1.getGlobalInjection().httpControllers.push(injectable);
return constructor;
};
};
// export const Socket = () => {
// return <T extends AbstractSocketController>(constructor: { new(): T }) => {
// //-- check controllers
// let injectable = initInjectable(constructor);
// let controller = getGlobalInjection().socketControllers.find(s => s.name === injectable.name);
// if (controller) {
// throw new ClaireError(DUPLICATED_CONTROLLER_NAME, constructor.name);
// }
// initMetadata(constructor.prototype, SocketControllerMetadata);
// getGlobalInjection().socketControllers.push(injectable);
// return constructor;
// };
// };
exports.Service = () => {
return (constructor) => {
let injectable = initInjectable(constructor);
let service = GlobalInjection_1.getGlobalInjection().services.find(s => s.name === injectable.name);
if (service) {
throw new __1.ClaireError(errors_1.DUPLICATED_SERVICE_NAME, service.name);
}
GlobalInjection_1.getGlobalInjection().services.push(injectable);
return constructor;
};
};
exports.Model = (tableName) => {
return (constructor) => {
//-- check models
if (GlobalInjection_1.getGlobalInjection().models.find(c => c.name === constructor.name)) {
throw new __1.ClaireError(errors_1.DUPLICATED_MODEL_NAME, constructor.name);
}
const meta = exports.initMetadata(constructor.prototype, __2.ModelMetadata);
meta.modelName = constructor.name;
meta.tableName = tableName || constructor.name.toLowerCase();
GlobalInjection_1.getGlobalInjection().models.push({ name: constructor.name, constructorFn: constructor });
return constructor;
};
};
exports.Switch = (env) => {
return (constructor) => {
let injectable = initInjectable(constructor);
injectable.env = env;
return constructor;
};
};
// export const Injectable = () => {
// return (constructor: any) => {
// initInjectable(constructor);
// return constructor;
// };
// };
exports.Inject = () => {
return (prototype, propertyKey) => {
const t = Reflect.getMetadata("design:type", prototype, propertyKey);
//-- register to be injected
GlobalInjection_1.getGlobalInjection().injectRegistry.push({ prototype, propertyKey, keyPrototype: t });
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9kZWNvcmF0b3IvY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUkwQjtBQUcxQiwwQkFBK0I7QUFDL0IsK0RBQXFFO0FBQ3JFLDBCQUFpQztBQUNqQyxzRkFBaUY7QUFFcEUsUUFBQSxRQUFRLEdBQUcsY0FBYyxDQUFDO0FBRXZDLE1BQU0sY0FBYyxHQUFHLENBQUMsV0FBZ0IsRUFBZSxFQUFFO0lBQ3JELElBQUksVUFBVSxHQUFHLG9DQUFrQixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDYixVQUFVLEdBQUcsRUFBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFDLENBQUM7UUFDbEUsb0NBQWtCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRVcsUUFBQSxZQUFZLEdBQUcsQ0FBSSxTQUFjLEVBQUUsYUFBeUMsRUFBSyxFQUFFO0lBQzVGLElBQUksSUFBSSxHQUFNLFNBQVMsQ0FBQyxnQkFBUSxDQUFDLENBQUM7SUFDbEMsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNQLElBQUksR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzNCLFNBQVMsQ0FBQyxnQkFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQzlCO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRVcsUUFBQSxVQUFVLEdBQUcsQ0FBQyxtQkFBNEIsRUFBRSxFQUFFO0lBQ3ZELE9BQU8sQ0FBQyxXQUFnQixFQUFFLEVBQUU7UUFDeEIsc0JBQXNCO1FBQ3RCLElBQUksVUFBVSxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxJQUFJLFVBQVUsR0FBRyxvQ0FBa0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RixJQUFJLFVBQVUsRUFBRTtZQUNaLE1BQU0sSUFBSSxlQUFXLENBQUMsbUNBQTBCLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZFO1FBQ0QsTUFBTSxJQUFJLEdBQUcsb0JBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLCtDQUFzQixDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQztRQUMzQyxvQ0FBa0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsZ0NBQWdDO0FBQ2hDLGtGQUFrRjtBQUNsRixpQ0FBaUM7QUFDakMsd0RBQXdEO0FBQ3hELHlHQUF5RztBQUN6Ryw0QkFBNEI7QUFDNUIsbUZBQW1GO0FBQ25GLFlBQVk7QUFDWix5RUFBeUU7QUFDekUsbUVBQW1FO0FBQ25FLDhCQUE4QjtBQUM5QixTQUFTO0FBQ1QsS0FBSztBQUVRLFFBQUEsT0FBTyxHQUFHLEdBQUcsRUFBRTtJQUN4QixPQUFPLENBQTRCLFdBQXlCLEVBQUUsRUFBRTtRQUM1RCxJQUFJLFVBQVUsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsSUFBSSxPQUFPLEdBQUcsb0NBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEYsSUFBSSxPQUFPLEVBQUU7WUFDVCxNQUFNLElBQUksZUFBVyxDQUFDLGdDQUF1QixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoRTtRQUNELG9DQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDLENBQUM7QUFDTixDQUFDLENBQUM7QUFFVyxRQUFBLEtBQUssR0FBRyxDQUFDLFNBQWtCLEVBQUUsRUFBRTtJQUN4QyxPQUFPLENBQTBCLFdBQXVDLEVBQUUsRUFBRTtRQUN4RSxpQkFBaUI7UUFDakIsSUFBSSxvQ0FBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwRSxNQUFNLElBQUksZUFBVyxDQUFDLDhCQUFxQixFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsRTtRQUNELE1BQU0sSUFBSSxHQUFHLG9CQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxpQkFBYSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0Qsb0NBQWtCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7UUFDdkYsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRVcsUUFBQSxNQUFNLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUNwQyxPQUFPLENBQUMsV0FBZ0IsRUFBRSxFQUFFO1FBQ3hCLElBQUksVUFBVSxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxVQUFVLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNyQixPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixvQ0FBb0M7QUFDcEMscUNBQXFDO0FBQ3JDLHVDQUF1QztBQUN2Qyw4QkFBOEI7QUFDOUIsU0FBUztBQUNULEtBQUs7QUFFUSxRQUFBLE1BQU0sR0FBRyxHQUFHLEVBQUU7SUFDdkIsT0FBTyxDQUFDLFNBQWMsRUFBRSxXQUFtQixFQUFFLEVBQUU7UUFDM0MsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLDRCQUE0QjtRQUM1QixvQ0FBa0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyJ9