@abaplint/transpiler
Version:
34 lines • 1.66 kB
JavaScript
;
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