jka-core
Version:
Library for working with Jedi Academy servers
51 lines (50 loc) • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseBooleanOtherwiseNull = exports.parseFloatOtherwiseNull = exports.parseIntOtherwiseNull = exports.parseIntOtherwiseZero = exports.kebabToCamel = exports.snakeToCamel = exports.executeOrTimeout = void 0;
/**
*
* @param promise Promise to execute
* @param timeout Time in secs after which execution is interrupted (default: 1)
* @param errorMessage Message for error in case of timeout
* @returns promise or throws error
*/
function executeOrTimeout(promise, timeout = 1, errorMessage) {
return Promise.race([
promise,
new Promise((_, reject) => setTimeout(() => {
reject(new Error(errorMessage || 'Timeout!'));
}, 1000 * timeout))
]);
}
exports.executeOrTimeout = executeOrTimeout;
function snakeToCamel(str) {
return str
.replace(/[_][a-z]/g, (group) => group.slice(-1).toUpperCase());
}
exports.snakeToCamel = snakeToCamel;
function kebabToCamel(str) {
return str
.replace(/[-][a-z]/g, (group) => group.slice(-1).toUpperCase());
}
exports.kebabToCamel = kebabToCamel;
const parseIntOtherwiseZero = (str) => {
return isNaN(parseInt(str)) ? 0 : parseInt(str);
};
exports.parseIntOtherwiseZero = parseIntOtherwiseZero;
const parseIntOtherwiseNull = (str) => {
return isNaN(parseInt(str)) ? null : parseInt(str);
};
exports.parseIntOtherwiseNull = parseIntOtherwiseNull;
const parseFloatOtherwiseNull = (str) => {
return isNaN(parseFloat(str)) ? null : parseFloat(str);
};
exports.parseFloatOtherwiseNull = parseFloatOtherwiseNull;
const parseBooleanOtherwiseNull = (str) => {
const num = (0, exports.parseIntOtherwiseNull)(str);
// TODO: Check if negative values can be the case and how they work
if (num !== null)
return num > 0 ? true : false;
else
return null;
};
exports.parseBooleanOtherwiseNull = parseBooleanOtherwiseNull;