@showbridge/lib
Version:
Main library for showbridge protocol router
28 lines (27 loc) • 1.15 kB
JavaScript
import { get, set } from 'lodash-es';
import { logger } from '../utils/index.js';
import Transform from './transform.js';
class PowerTransform extends Transform {
_transform(msg, vars) {
logger.trace(`transform: before ${this.type} = ${msg}`);
try {
const resolvedParams = this.resolveTemplatedParams({ msg, vars });
const propertyValue = get(msg, resolvedParams.property);
if (propertyValue === undefined) {
logger.error(`transform: power transform could not find msg property = ${resolvedParams.property}`);
return;
}
if (typeof propertyValue !== 'number') {
logger.error('transform: power can only operate on numbers');
return;
}
const newValue = propertyValue ** resolvedParams.exponent;
set(msg, resolvedParams.property, newValue);
logger.trace(`transform: after ${this.type} = ${msg}`);
}
catch (error) {
logger.error(`transform: problem executing power transform - ${error}`);
}
}
}
export default PowerTransform;