@salespark/toolkit 2.1.2 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -311,39 +311,35 @@ sanitize("<script>alert('hack')</script>Hello World!", 20);
311
311
 
312
312
  ### 🔢 Number Utilities
313
313
 
314
- **`clamp(n: number, min: number, max: number): number`** — Restricts a number within min and max bounds.
314
+ **`clamp(n: number, min: number, max: number): number`** — Restricts a number to be within the min and max bounds.
315
315
 
316
316
  ```javascript
317
- clamp(15, 0, 10);
318
- // Result: 10
317
+ clamp(10, 0, 5); // 5
318
+ clamp(-5, 0, 10); // 0
319
319
  ```
320
320
 
321
- **`round(n: number, decimals?: number): number`** — Rounds a number to fixed decimal places.
321
+ **`round(n: number, decimals?: number): number`** — Rounds a number to a fixed number of decimals without floating point surprises.
322
322
 
323
323
  ```javascript
324
- round(3.14159, 2);
325
- // Result: 3.14
324
+ round(1.2345, 2); // 1.23
325
+ round(1.235, 2); // 1.24
326
326
  ```
327
327
 
328
- **`toInteger(value: unknown, defaultValue?: number): number`** — Safely converts a value to an integer.
328
+ **`safeParseInt(value: unknown, defaultValue?: number): number`** — Safely converts a value to an integer with fallback.
329
329
 
330
330
  ```javascript
331
- toInteger("42.7");
332
- // Result: 42
331
+ safeParseInt("42"); // 42
332
+ safeParseInt("abc", 10); // 10
333
+ safeParseInt(3.9); // 3
333
334
  ```
334
335
 
335
- **`safeParseInt(value: unknown, defaultValue?: number): number`** — Alias for safe integer conversion.
336
+ **`safeParseFloat(value: unknown, decimals?: number): number`** — Safely parses a value into a number with decimal precision and comma/dot normalization.
336
337
 
337
338
  ```javascript
338
- safeParseInt("abc", 0);
339
- // Result: 0
340
- ```
341
-
342
- **`toNumber(value: unknown, decimals?: number): number`** — Safely parses a value into a number with optional decimal precision.
343
-
344
- ```javascript
345
- toNumber("123,45", 2);
346
- // Result: 123.45
339
+ safeParseFloat("123.45"); // 123.45
340
+ safeParseFloat("123,45"); // 123.45
341
+ safeParseFloat("1,234.56"); // 1234.56
342
+ safeParseFloat("abc"); // 0
347
343
  ```
348
344
 
349
345
  **`randomDigits(length?: number, options?: { charset?: string; noLeadingZero?: boolean }): string`** — Generates a random string of digits with secure randomness when available.
@@ -356,12 +352,15 @@ randomDigits(6);
356
352
  **`randomDigits(length?: number, options?: { charset?: string; noLeadingZero?: boolean }): string`** — Generates a random string of digits with secure randomness when available.
357
353
 
358
354
  ```javascript
359
- randomDigits(6);
360
- // Result: "482751" (random)
355
+ randomDigits(6); // "847293"
356
+ randomDigits(4, { noLeadingZero: true }); // "3847" (no leading zero)
357
+ randomDigits(6, { charset: "ABCDEF0123456789" }); // "3F2A9D" (hex)
361
358
  ```
362
359
 
363
360
  **`formatDecimalNumber(value: number | string | null | undefined, decimals?: number): string`** — Formats a number with specified decimal places, intelligently handling European (`1.234,56`) and US (`1,234.56`) number formats.
364
361
 
362
+ **`formatDecimalNumber(value: number | string | null | undefined, decimals?: number): string`** — Formats a number with specified decimal places, intelligently handling European (`1.234,56`) and US (`1,234.56`) number formats.
363
+
365
364
  ```javascript
366
365
  formatDecimalNumber(1234.5678); // "1234.57"
367
366
  formatDecimalNumber("1.234,56", 2); // "1234.56" (European format)
@@ -371,6 +370,13 @@ formatDecimalNumber(null, 2); // "0.00"
371
370
  formatDecimalNumber("invalid", 2); // "0.00"
372
371
  ```
373
372
 
373
+ #### 🗑️ Deprecated (Number Utilities)
374
+
375
+ - **`toInteger`** → Use `safeParseInt` instead
376
+ - **`toNumber`** → Use `safeParseFloat` instead
377
+ - **`parseToNumber`** → Use `safeParseFloat` instead
378
+ - **`otp`** → Use `randomDigits` instead
379
+
374
380
  ### ✅ Boolean Utilities
375
381
 
376
382
  **`toBool(value: unknown, def?: boolean): boolean`** — Converts a value to boolean, supporting common string/number representations.
@@ -443,14 +449,20 @@ isNilText("undefined");
443
449
  // Result: true
444
450
  ```
445
451
 
446
- **`isNilOrEmpty(value: unknown): boolean`** — Checks if value is null/undefined or an empty string.
452
+ **`isNilOrEmpty(value: unknown): boolean`** — Checks if value is null/undefined or an empty string (trimmed).
447
453
 
448
454
  ```javascript
449
455
  isNilOrEmpty("");
450
456
  // Result: true
451
457
 
458
+ isNilOrEmpty(" ");
459
+ // Result: true
460
+
452
461
  isNilOrEmpty(null);
453
462
  // Result: true
463
+
464
+ isNilOrEmpty(undefined);
465
+ // Result: true
454
466
  ```
455
467
 
456
468
  **`hasNilOrEmpty(array: unknown): boolean`** — Checks if any element in array is nil or empty.
@@ -473,13 +485,13 @@ isNilEmptyOrZeroLen("");
473
485
  // Result: true
474
486
  ```
475
487
 
476
- **`isNilOrZeroLen(value: unknown): boolean`** — Checks if value is nil or has zero length.
488
+ **`isNilEmptyOrZeroLength(value: unknown): boolean`**
477
489
 
478
490
  ```javascript
479
- isNilOrZeroLen([]);
491
+ isNilEmptyOrZeroLength([]);
480
492
  // Result: true
481
493
 
482
- isNilOrZeroLen(null);
494
+ isNilEmptyOrZeroLength("");
483
495
  // Result: true
484
496
  ```
485
497
 
@@ -737,8 +749,10 @@ The following functions are deprecated but maintained for backward compatibility
737
749
  - `isNullOrUndefinedTextInc` — Use `isNilText` instead.
738
750
  - `isNullUndefinedOrEmpty` — Use `isNilOrEmpty` instead.
739
751
  - `isNullOrUndefinedInArray` — Use `hasNilOrEmpty` instead.
740
- - `isNullOrUndefinedEmptyOrZero` — Use `isNilEmptyOrZeroLen` instead.
741
- - `isNullUndefinedOrZero` — Use `isNilOrZeroLen` instead.
752
+ - `isNullOrUndefinedEmptyOrZero` — Use `isNilEmptyOrZeroLength` instead.
753
+ - `isNilEmptyOrZeroLen` — Use `isNilEmptyOrZeroLength` instead.
754
+ - `isNullUndefinedOrZero` — Use `isNilEmptyOrZeroLength` instead.
755
+ - `isNilOrZeroLen` — Use `isNilEmptyOrZeroLength` instead.
742
756
  - `isNullOrUndefinedOrNaN` — Use `isNilOrNaN` instead.
743
757
  - `humanFileSize` — Use `formatBytes` instead.
744
758
  - `getStringSimilarity` — Use `stringSimilarity` instead.
@@ -803,5 +817,5 @@ MIT © [SalesPark](https://salespark.io)
803
817
 
804
818
  ---
805
819
 
806
- _Document version: 5_
807
- _Last update: 25-09-2025_
820
+ _Document version: 7_
821
+ _Last update: 08-11-2025_
package/dist/index.cjs CHANGED
@@ -253,7 +253,7 @@ function round(n, decimals = 0) {
253
253
  const f = Math.pow(10, decimals);
254
254
  return Math.round((n + Number.EPSILON) * f) / f;
255
255
  }
256
- function toInteger(value, defaultValue = 0) {
256
+ function safeParseInt(value, defaultValue = 0) {
257
257
  try {
258
258
  const safeValue = parseInt(String(value), 10);
259
259
  return isNaN(safeValue) ? defaultValue : safeValue;
@@ -261,8 +261,8 @@ function toInteger(value, defaultValue = 0) {
261
261
  return defaultValue;
262
262
  }
263
263
  }
264
- var safeParseInt = toInteger;
265
- function toNumber(value, decimals = 6) {
264
+ var toInteger = safeParseInt;
265
+ function safeParseFloat(value, decimals = 6) {
266
266
  try {
267
267
  if (value === void 0 || value === null || value === "") return 0;
268
268
  let str = String(value);
@@ -278,7 +278,8 @@ function toNumber(value, decimals = 6) {
278
278
  return 0;
279
279
  }
280
280
  }
281
- var parseToNumber = toNumber;
281
+ var toNumber = safeParseFloat;
282
+ var parseToNumber = safeParseFloat;
282
283
  function secureRandomIndex(max) {
283
284
  if (max <= 0) return 0;
284
285
  const g = globalThis;
@@ -372,7 +373,7 @@ var isNilText = (value) => {
372
373
  };
373
374
  var isNilOrEmpty = (value) => {
374
375
  try {
375
- return isNil(value) || value === "";
376
+ return isNil(value) || typeof value === "string" && value?.trim() === "";
376
377
  } catch {
377
378
  return true;
378
379
  }
@@ -388,24 +389,32 @@ var hasNilOrEmpty = (array) => {
388
389
  return true;
389
390
  }
390
391
  };
391
- var isNilEmptyOrZeroLen = (value) => {
392
+ var isNilEmptyOrZeroLength = (value) => {
392
393
  try {
393
394
  if (isNil(value) || value === "") return true;
394
- const maybeLen = value?.length;
395
- return typeof maybeLen === "number" && maybeLen === 0;
395
+ if (typeof value === "object" && value !== null && "length" in value) {
396
+ const length = value.length;
397
+ return typeof length === "number" && length === 0;
398
+ }
399
+ return false;
396
400
  } catch {
397
401
  return true;
398
402
  }
399
403
  };
400
- var isNilOrZeroLen = (value) => {
404
+ var isNilEmptyOrZeroLen = isNilEmptyOrZeroLength;
405
+ var isNilOrZeroLength = (value) => {
401
406
  try {
402
407
  if (isNil(value)) return true;
403
- const maybeLen = value?.length;
404
- return typeof maybeLen === "number" && maybeLen === 0;
408
+ if (typeof value === "object" && value !== null && "length" in value) {
409
+ const length = value.length;
410
+ return typeof length === "number" && length === 0;
411
+ }
412
+ return false;
405
413
  } catch {
406
414
  return true;
407
415
  }
408
416
  };
417
+ var isNilOrZeroLen = isNilOrZeroLength;
409
418
  var isNilOrNaN = (value) => {
410
419
  try {
411
420
  return isNil(value) || isNaN(value);
@@ -1649,9 +1658,11 @@ exports.isBrowser = isBrowser;
1649
1658
  exports.isFlattenable = isFlattenable;
1650
1659
  exports.isNil = isNil;
1651
1660
  exports.isNilEmptyOrZeroLen = isNilEmptyOrZeroLen;
1661
+ exports.isNilEmptyOrZeroLength = isNilEmptyOrZeroLength;
1652
1662
  exports.isNilOrEmpty = isNilOrEmpty;
1653
1663
  exports.isNilOrNaN = isNilOrNaN;
1654
1664
  exports.isNilOrZeroLen = isNilOrZeroLen;
1665
+ exports.isNilOrZeroLength = isNilOrZeroLength;
1655
1666
  exports.isNilText = isNilText;
1656
1667
  exports.isNilTextOrEmpty = isNilTextOrEmpty;
1657
1668
  exports.isNode = isNode;
@@ -1678,6 +1689,7 @@ exports.pushAll = pushAll;
1678
1689
  exports.randomDigits = randomDigits;
1679
1690
  exports.removeDiacritics = removeDiacritics;
1680
1691
  exports.round = round;
1692
+ exports.safeParseFloat = safeParseFloat;
1681
1693
  exports.safeParseInt = safeParseInt;
1682
1694
  exports.sanitize = sanitize;
1683
1695
  exports.sanitizeMarkdown = sanitizeMarkdown;