@just-in/core
Version:
A TypeScript-first framework for building adaptive digital health interventions.
78 lines • 2.53 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setDecisionRuleResultRecorder = setDecisionRuleResultRecorder;
exports.setTaskResultRecorder = setTaskResultRecorder;
exports.handleDecisionRuleResult = handleDecisionRuleResult;
exports.handleTaskResult = handleTaskResult;
exports.hasResultRecord = hasResultRecord;
const data_manager_1 = __importDefault(require("../data-manager/data-manager"));
const data_manager_constants_1 = require("../data-manager/data-manager.constants");
const dataManager = data_manager_1.default.getInstance();
let recordDecisionRuleResultFn = null;
let recordTaskResultFn = null;
/**
* Registers the function to handle results from decision rules.
*
* @param fn - Callback function
*/
function setDecisionRuleResultRecorder(fn) {
recordDecisionRuleResultFn = fn;
}
/**
* Registers the function to handle results from tasks.
*
* @param fn - Callback function
*/
function setTaskResultRecorder(fn) {
recordTaskResultFn = fn;
}
/**
* Handles a decision rule result (or task fallback).
*
* @param record - The result of executing the handler
*/
async function handleDecisionRuleResult(record) {
if (!hasResultRecord(record)) {
return;
}
if (recordDecisionRuleResultFn) {
await recordDecisionRuleResultFn(record);
}
else {
// Default fallback: persist via DataManager
await dataManager.addItemToCollection(data_manager_constants_1.DECISION_RULE_RESULTS, record);
}
}
/**
* Handles a task result (delegates to decision rule handler if none set).
*
* @param record - The result of executing the handler
*/
async function handleTaskResult(record) {
if (!hasResultRecord(record)) {
return;
}
if (recordTaskResultFn) {
await recordTaskResultFn(record);
}
else if (recordDecisionRuleResultFn) {
await recordDecisionRuleResultFn(record);
}
else {
// Default fallback: persist via DataManager
await dataManager.addItemToCollection(data_manager_constants_1.TASK_RESULTS, record);
}
}
/*
* Will determine if there are steps in the result object
*
* @param record - The result of executing the handler
* @returns boolean - false if no steps are found true if there are
*/
function hasResultRecord(record) {
return record.steps.length > 0;
}
//# sourceMappingURL=result-recorder.js.map