OTPtoFrontend
logger.error("Begin ClientScriptExecutorNode");
var RESULT_KEY = "informationToFrontend"
var createClientExecutor = require('clientScriptLib');
var script = `console.log('Script Executed');
var result='Information to Frontend';
document.getElementById('informationToFrontend').value=result;
document.getElementById('loginButton_0').click();`
var executor = createClientExecutor(
callbacks,
callbacksBuilder,
nodeState,
action,
logger
);
executor.execute({
script: script,
RESULT_KEY: RESULT_KEY
});clientscriptLib
logger.error("Begin ClientScriptExecutor library");
function factory(callbacks, callbacksBuilder, nodeState, action, logger) {
function execute(config) {
logger.error("[ClientScriptExecutor] Config received");
var script = config.script;
var RESULT_KEY = config.RESULT_KEY;
if (!script || !RESULT_KEY) {
logger.error("[ClientScriptExecutor] Missing script or RESULT_KEY");
action.goTo("false");
return;
}
// FIRST PASS → Send script to client
if (callbacks.isEmpty()) {
logger.error("[ClientScriptExecutor] Sending script to client");
callbacksBuilder.hiddenValueCallback(RESULT_KEY, "");
callbacksBuilder.scriptTextOutputCallback(script);
action.goTo("true");
return;
}
// SECOND PASS → Read hidden value
var hiddenCallbacks = callbacks.getHiddenValueCallbacks();
if (hiddenCallbacks) {
var value = hiddenCallbacks[RESULT_KEY];
if (value) {
nodeState.putShared(RESULT_KEY, value);
logger.error("[ClientScriptExecutor] Stored value for " + RESULT_KEY);
action.goTo("true");
return;
}
}
logger.warn("[ClientScriptExecutor] Empty value returned from client");
action.goTo("false");
}
return {
execute: execute
};
}
module.exports = factory