UNPKG

@eggjs/controller-decorator

Version:

tegg controller decorator

65 lines 6.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebSocketControllerMetaBuilder = void 0; const node_assert_1 = __importDefault(require("node:assert")); const core_decorator_1 = require("@eggjs/core-decorator"); const tegg_common_util_1 = require("@eggjs/tegg-common-util"); const tegg_metadata_1 = require("@eggjs/tegg-metadata"); const tegg_types_1 = require("@eggjs/tegg-types"); const ControllerMetaBuilderFactory_1 = require("../../builder/ControllerMetaBuilderFactory"); const model_1 = require("../../model"); const ControllerInfoUtil_1 = __importDefault(require("../../util/ControllerInfoUtil")); const ControllerMetadataUtil_1 = require("../../util/ControllerMetadataUtil"); const ControllerValidator_1 = require("../../util/validator/ControllerValidator"); const WebSocketInfoUtil_1 = __importDefault(require("../../util/WebSocketInfoUtil")); const WebSocketControllerMethodMetaBuilder_1 = require("./WebSocketControllerMethodMetaBuilder"); class WebSocketControllerMetaBuilder { constructor(clazz) { this.clazz = clazz; } buildMethod() { const methodNames = tegg_common_util_1.ObjectUtils.getProperties(this.clazz.prototype); const methods = []; for (const methodName of methodNames) { const builder = new WebSocketControllerMethodMetaBuilder_1.WebSocketControllerMethodMetaBuilder(this.clazz, methodName); const methodMeta = builder.build(); if (methodMeta) { methods.push(methodMeta); } } return methods; } build() { ControllerValidator_1.ControllerValidator.validate(this.clazz); const controllerType = ControllerInfoUtil_1.default.getControllerType(this.clazz); (0, node_assert_1.default)(controllerType === tegg_types_1.ControllerType.WEBSOCKET, 'invalid controller type'); const webSocketPath = WebSocketInfoUtil_1.default.getWebSocketPath(this.clazz); const middlewares = ControllerInfoUtil_1.default.getControllerMiddlewares(this.clazz); const methods = this.buildMethod(); const clazzName = this.clazz.name; const controllerName = ControllerInfoUtil_1.default.getControllerName(this.clazz) || clazzName; const property = core_decorator_1.PrototypeUtil.getProperty(this.clazz); const protoName = property.name; const hosts = ControllerInfoUtil_1.default.getControllerHosts(this.clazz); const timeout = ControllerInfoUtil_1.default.getControllerTimeout(this.clazz); const metadata = new model_1.WebSocketControllerMeta(clazzName, protoName, controllerName, webSocketPath, middlewares, methods, hosts, timeout); ControllerMetadataUtil_1.ControllerMetadataUtil.setControllerMetadata(this.clazz, metadata); for (const method of metadata.methods) { const realPath = metadata.getMethodRealPath(method); if (!realPath.startsWith('/')) { const desc = tegg_metadata_1.ClassUtil.classDescription(this.clazz); throw new Error(`class ${desc} method ${method.name} path ${realPath} not start with /`); } } return metadata; } static create(clazz) { return new WebSocketControllerMetaBuilder(clazz); } } exports.WebSocketControllerMetaBuilder = WebSocketControllerMetaBuilder; ControllerMetaBuilderFactory_1.ControllerMetaBuilderFactory.registerControllerMetaBuilder(tegg_types_1.ControllerType.WEBSOCKET, WebSocketControllerMetaBuilder.create); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViU29ja2V0Q29udHJvbGxlck1ldGFCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGwvd2Vic29ja2V0L1dlYlNvY2tldENvbnRyb2xsZXJNZXRhQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4REFBaUM7QUFDakMsMERBQXNEO0FBQ3RELDhEQUFzRDtBQUN0RCx3REFBaUQ7QUFFakQsa0RBQW1EO0FBQ25ELDZGQUEwRjtBQUMxRix1Q0FBMkU7QUFDM0UsdUZBQStEO0FBQy9ELDhFQUEyRTtBQUMzRSxrRkFBK0U7QUFDL0UscUZBQTZEO0FBQzdELGlHQUE4RjtBQUU5RixNQUFhLDhCQUE4QjtJQUd6QyxZQUFZLEtBQXdCO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLDhCQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxPQUFPLEdBQTBCLEVBQUUsQ0FBQztRQUMxQyxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksMkVBQW9DLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqRixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUs7UUFDSCx5Q0FBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sY0FBYyxHQUFHLDRCQUFrQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RSxJQUFBLHFCQUFNLEVBQUMsY0FBYyxLQUFLLDJCQUFjLENBQUMsU0FBUyxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDL0UsTUFBTSxhQUFhLEdBQUcsMkJBQWlCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sV0FBVyxHQUFHLDRCQUFrQixDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDbEMsTUFBTSxjQUFjLEdBQUcsNEJBQWtCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUNyRixNQUFNLFFBQVEsR0FBRyw4QkFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsUUFBUyxDQUFDLElBQWMsQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyw0QkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsTUFBTSxPQUFPLEdBQUcsNEJBQWtCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sUUFBUSxHQUFHLElBQUksK0JBQXVCLENBQzFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3RiwrQ0FBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLEtBQUssTUFBTSxNQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QixNQUFNLElBQUksR0FBRyx5QkFBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksV0FBVyxNQUFNLENBQUMsSUFBSSxTQUFTLFFBQVEsbUJBQW1CLENBQUMsQ0FBQztZQUMzRixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQXdCO1FBQ3BDLE9BQU8sSUFBSSw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0Y7QUFqREQsd0VBaURDO0FBRUQsMkRBQTRCLENBQUMsNkJBQTZCLENBQUMsMkJBQWMsQ0FBQyxTQUFTLEVBQUUsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQUMifQ==