"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = numberfy;
/**
 * # Get Number from any input
 * @example
 * numberfy("123") // 123
 * numberfy("123.456") // 123
 * numberfy("123.456", 2) // 123.46
 * numberfy("123.456", 0) // 123
 * numberfy("123.456", 3) // 123.456
 */
function numberfy(num, decimals) {
    var _a;
    try {
        const numberString = String(num)
            .replace(/[^0-9\.]/g, "")
            .replace(/\.$/, "");
        if (!numberString.match(/./))
            return 0;
        const existingDecimals = numberString.match(/\./)
            ? (_a = numberString.split(".").pop()) === null || _a === void 0 ? void 0 : _a.length
            : undefined;
        const numberfiedNum = Number(numberString);
        if (typeof numberfiedNum !== "number")
            return 0;
        if (isNaN(numberfiedNum))
            return 0;
        if (decimals)
            return Number(numberfiedNum.toFixed(decimals));
        if (existingDecimals)
            return Number(numberfiedNum.toFixed(existingDecimals));
        return Math.round(numberfiedNum);
    }
    catch (error) {
        console.log(`Numberfy ERROR: ${error.message}`);
        return 0;
    }
}
// OLD FUNCTION
// try {
//     const numberfiedNum = Number(num);
//     if (typeof numberfiedNum !== "number") return 0;
//     if (isNaN(numberfiedNum)) return 0;
//     if (decimals) return Number(numberfiedNum.toFixed(decimals));
//     return Math.round(numberfiedNum);
// } catch (/** @type {any} */ error: any) {
//     console.log(`Numberfy ERROR: ${error.message}`);
//     return 0;
// }