From 4adb5af4307f97beadf5ff1ce3021deaa9829534 Mon Sep 17 00:00:00 2001
From: Benjamin Toby <benoti.san@gmail.com>
Date: Thu, 15 May 2025 08:41:24 +0100
Subject: [PATCH] Updates

---
 dist/package-shared/utils/numberfy.js | 26 ++++++++++++++++++++--
 package-shared/utils/numberfy.ts      | 31 +++++++++++++++++++++++++--
 package.json                          |  2 +-
 3 files changed, 54 insertions(+), 5 deletions(-)

diff --git a/dist/package-shared/utils/numberfy.js b/dist/package-shared/utils/numberfy.js
index 14d3395..6141e80 100644
--- a/dist/package-shared/utils/numberfy.js
+++ b/dist/package-shared/utils/numberfy.js
@@ -11,18 +11,40 @@ exports.default = numberfy;
  * numberfy("123.456", 3) // 123.456
  */
 function numberfy(num, decimals) {
+    var _a;
     try {
-        const numberfiedNum = Number(num);
+        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 ( /** @type {any} */error) {
+    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;
+// }
diff --git a/package-shared/utils/numberfy.ts b/package-shared/utils/numberfy.ts
index 2f25327..514143f 100644
--- a/package-shared/utils/numberfy.ts
+++ b/package-shared/utils/numberfy.ts
@@ -9,13 +9,40 @@
  */
 export default function numberfy(num: any, decimals?: number): number {
     try {
-        const numberfiedNum = Number(num);
+        const numberString = String(num)
+            .replace(/[^0-9\.]/g, "")
+            .replace(/\.$/, "");
+
+        if (!numberString.match(/./)) return 0;
+
+        const existingDecimals = numberString.match(/\./)
+            ? numberString.split(".").pop()?.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 (/** @type {any} */ error: any) {
+    } catch (error: any) {
         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;
+// }
diff --git a/package.json b/package.json
index a61e0d3..fa9b16d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
     "name": "@moduletrace/datasquirel",
-    "version": "4.6.0",
+    "version": "4.6.1",
     "description": "Cloud-based SQL data management tool",
     "main": "dist/index.js",
     "bin": {