UNPKG

gauge-ts

Version:
50 lines (49 loc) 2.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ValidationProcessor = void 0; const node_crypto_1 = require("node:crypto"); const node_os_1 = require("node:os"); const messages_pb_1 = require("../gen/messages_pb"); const StepRegistry_1 = require("../models/StepRegistry"); class ValidationProcessor { process(req) { const step = req.getStepvalue(); const stepValue = step.getParameterizedstepvalue(); const res = new messages_pb_1.StepValidateResponse(); res.setIsvalid(true); res.setErrormessage(""); if (!StepRegistry_1.default.isImplemented(req.getSteptext())) { res.setIsvalid(false); res.setErrormessage(`No step implementation found for ${stepValue}`); res.setErrortype(messages_pb_1.StepValidateResponse.ErrorType.STEP_IMPLEMENTATION_NOT_FOUND); res.setSuggestion(this.getSuggestion(step)); } else if (StepRegistry_1.default.hasMultipleImplementations(req.getSteptext())) { res.setIsvalid(false); res.setErrormessage(`Multiple step implementation found for ${stepValue}`); res.setErrortype(messages_pb_1.StepValidateResponse.ErrorType.DUPLICATE_STEP_IMPLEMENTATION); } return res; } getSuggestion(step) { let argCount = 0; const stepText = step .getParameterizedstepvalue() .replace(/{}/g, () => `<arg${argCount++}>`); return `@Step("${stepText}")${node_os_1.EOL}public async ${this.getMethodName()}(${this.getParamsList(step.getParametersList())}) {${node_os_1.EOL}\tthrow new Error("Method not implemented.");${node_os_1.EOL}}`; } getMethodName() { return `implementation${(0, node_crypto_1.randomBytes)(10).toString("hex")}`; } getParamsList(params) { if (!params || !params.length) { return ""; } return params .map((_, i) => { return `arg${i.toString()}: any`; }) .join(", "); } } exports.ValidationProcessor = ValidationProcessor;