in indigo.js [2764:2803]
Indigo.prototype.setOption = function(option, value1, value2, value3) {
this._setSessionId();
let ret = -1;
value2 = value2 || 0;
value3 = value3 || 0;
if (!value2) {
switch (typeof value1) {
case 'string':
ret = this._checkResult(this._lib.indigoSetOption(option, value1));
break;
case 'number': {
if (/^[0-9]+$/.test(String(value1)))
ret = this._checkResult(this._lib.indigoSetOptionInt(option, value1));
else
ret = this._checkResult(this._lib.indigoSetOptionFloat(option, value1));
}
break;
case 'boolean':
const value1_b = (value1) ? 1 : 0;
ret = this._checkResult(this._lib.indigoSetOptionBool(option, value1_b));
break;
default:
throw IndigoException("bad option");
}
} else {
if (typeof value1 === 'number' && typeof value2 === 'number') {
if ((/^[0-9]+$/.test(String(value1))) && (/^[0-9]+$/.test(String(value2))))
ret = this._checkResult(this._lib.indigoSetOptionXY(option, value1, value2));
else
throw IndigoException("bad option");
}
if (typeof value1 === 'number' && typeof value2 === 'number' && typeof value3 === 'number') {
if (!(/^[0-9]+$/.test(String(value1))) && !(/^[0-9]+$/.test(String(value2))) && !(/^[0-9]+$/.test(String(value3))))
ret = this._checkResult(this._lib.indigoSetOptionColor(option, value1, value2, value3));
else
throw IndigoException("bad option");
}
}
return (ret === 1);
};