@kyve/core-beta
Version:
🚀 The base KYVE node implementation.
41 lines (40 loc) • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.saveGetTransformDataItem = void 0;
const __1 = require("../..");
/**
* saveGetTransformDataItem gets the data item with a backoff strategy
*
* @method saveGetTransformDataItem
* @param {Node} this
* @param {string} source
* @param {string} key
* @return {Promise<DataItem | null>}
*/
async function saveGetTransformDataItem(source, key) {
// if item does not exist in cache yet collect it
return await (0, __1.callWithBackoffStrategy)(async () => {
// collect data item from runtime source
this.logger.debug(`this.runtime.getDataItem($THIS,${source},${key})`);
let item = await this.runtime.getDataItem(this, source, key);
this.m.runtime_get_data_item_successful.inc();
// transform data item
try {
this.logger.debug(`this.runtime.transformDataItem($ITEM)`);
item = await this.runtime.transformDataItem(this, item);
}
catch (err) {
this.logger.error(`Unexpected error transforming data item. Skipping transformation ...`);
this.logger.error((0, __1.standardizeJSON)(err));
}
return (0, __1.standardizeJSON)(item);
}, {
limitTimeoutMs: 5 * 60 * 1000,
increaseByMs: 10 * 1000,
}, (err, ctx) => {
this.logger.info(`Requesting getDataItem from source ${source} was unsuccessful. Retrying in ${(ctx.nextTimeoutInMs / 1000).toFixed(2)}s ...`);
this.logger.debug((0, __1.standardizeJSON)(err));
this.m.runtime_get_data_item_failed.inc();
});
}
exports.saveGetTransformDataItem = saveGetTransformDataItem;