UNPKG

@abaplint/transpiler

Version:
34 lines 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WaitTranspiler = void 0; const abaplint = require("@abaplint/core"); const chunk_1 = require("../chunk"); const expressions_1 = require("../expressions"); class WaitTranspiler { transpile(node, traversal) { const options = []; const seconds = node.findExpressionAfterToken("TO"); if (seconds) { options.push("seconds: " + traversal.traverse(seconds).getCode()); } const concat = node.concatTokens().toUpperCase(); if (concat.includes(" UNTIL ") === false && seconds) { const sec = new expressions_1.SourceTranspiler(true).transpile(seconds, traversal).getCode(); return new chunk_1.Chunk().appendString(`await new Promise(r => setTimeout(r, ${sec} * 1000));`); } const cond = node.findFirstExpression(abaplint.Expressions.Cond); if (cond) { options.push("cond: () => {return " + traversal.traverse(cond).getCode() + ";}"); } if (concat.startsWith("WAIT FOR ")) { const lookup = traversal.lookupClassOrInterface("KERNEL_PUSH_CHANNELS", node.getFirstToken()); const call = `await ${lookup}.wait({${options.join(",")}});`; return new chunk_1.Chunk().append(`if (${lookup} === undefined) throw new Error("Wait, kernel class missing");\n${call}`, node, traversal); } else { return new chunk_1.Chunk().append("await abap.statements.wait({" + options.join(",") + "});", node, traversal); } } } exports.WaitTranspiler = WaitTranspiler; //# sourceMappingURL=wait.js.map