@excofy/utils 2.3.3 → 2.4.0

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/dist/index.cjs CHANGED
@@ -71,13 +71,13 @@ function isValidCNPJ(cnpj) {
71
71
  function validCalc(x, numbers2) {
72
72
  const slice = numbers2.slice(0, x);
73
73
  let factor = x - 7;
74
- let sum = 0;
74
+ let sum2 = 0;
75
75
  for (let i = x; i >= 1; i--) {
76
76
  const n = slice[x - i];
77
- sum += n * factor--;
77
+ sum2 += n * factor--;
78
78
  if (factor < 2) factor = 9;
79
79
  }
80
- const result = 11 - sum % 11;
80
+ const result = 11 - sum2 % 11;
81
81
  return result > 9 ? 0 : result;
82
82
  }
83
83
  function matchNumbers(value = "") {
@@ -911,8 +911,11 @@ var removeTrailingNumber = (slug) => {
911
911
  // src/helpers/number.ts
912
912
  var number_exports = {};
913
913
  __export(number_exports, {
914
+ divide: () => divide,
915
+ sum: () => sum,
914
916
  toCents: () => toCents,
915
- toDecimal: () => toDecimal
917
+ toDecimal: () => toDecimal,
918
+ truncateDecimal: () => truncateDecimal
916
919
  });
917
920
  var import_big = __toESM(require("big.js"), 1);
918
921
  var toCents = (value) => {
@@ -927,6 +930,28 @@ var toDecimal = (value) => {
927
930
  }
928
931
  return new import_big.default(value).div(100).round(2).toNumber();
929
932
  };
933
+ var truncateDecimal = (value, decimalPlaces) => {
934
+ if (!value) {
935
+ return 0;
936
+ }
937
+ const bigValue = new import_big.default(value);
938
+ const factor = new import_big.default(10).pow(decimalPlaces);
939
+ return bigValue.times(factor).round(0, import_big.default.roundDown).div(factor).toNumber();
940
+ };
941
+ var sum = (values) => {
942
+ return values.reduce((acc, value) => {
943
+ if (value) {
944
+ return acc.plus(value);
945
+ }
946
+ return acc;
947
+ }, new import_big.default(0)).toNumber();
948
+ };
949
+ var divide = (numerator, denominator) => {
950
+ if (denominator === 0) {
951
+ return 0;
952
+ }
953
+ return new import_big.default(numerator).div(denominator).toNumber();
954
+ };
930
955
  // Annotate the CommonJS export names for ESM import in node:
931
956
  0 && (module.exports = {
932
957
  ExpiredTokenError,
package/dist/index.d.cts CHANGED
@@ -195,11 +195,30 @@ declare const toCents: (value?: number) => number;
195
195
  * @returns {number} The decimal value (e.g., 10.90).
196
196
  */
197
197
  declare const toDecimal: (value?: number) => number;
198
+ /**
199
+ * Truncates a decimal number to a specified number of decimal places.
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * const truncated = truncateDecimal(10.98765, 2);
204
+ * console.log(truncated); // 10.98
205
+ * ```
206
+ *
207
+ * @param {number} value - The decimal number to truncate.
208
+ * @param {number} decimalPlaces - The number of decimal places to keep.
209
+ * @returns {number} The truncated decimal number.
210
+ */
211
+ declare const truncateDecimal: (value: number, decimalPlaces: number) => number;
212
+ declare const sum: (values: (number | undefined)[]) => number;
213
+ declare const divide: (numerator: number, denominator: number) => number;
198
214
 
215
+ declare const number_divide: typeof divide;
216
+ declare const number_sum: typeof sum;
199
217
  declare const number_toCents: typeof toCents;
200
218
  declare const number_toDecimal: typeof toDecimal;
219
+ declare const number_truncateDecimal: typeof truncateDecimal;
201
220
  declare namespace number {
202
- export { number_toCents as toCents, number_toDecimal as toDecimal };
221
+ export { number_divide as divide, number_sum as sum, number_toCents as toCents, number_toDecimal as toDecimal, number_truncateDecimal as truncateDecimal };
203
222
  }
204
223
 
205
224
  /**
package/dist/index.d.ts CHANGED
@@ -195,11 +195,30 @@ declare const toCents: (value?: number) => number;
195
195
  * @returns {number} The decimal value (e.g., 10.90).
196
196
  */
197
197
  declare const toDecimal: (value?: number) => number;
198
+ /**
199
+ * Truncates a decimal number to a specified number of decimal places.
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * const truncated = truncateDecimal(10.98765, 2);
204
+ * console.log(truncated); // 10.98
205
+ * ```
206
+ *
207
+ * @param {number} value - The decimal number to truncate.
208
+ * @param {number} decimalPlaces - The number of decimal places to keep.
209
+ * @returns {number} The truncated decimal number.
210
+ */
211
+ declare const truncateDecimal: (value: number, decimalPlaces: number) => number;
212
+ declare const sum: (values: (number | undefined)[]) => number;
213
+ declare const divide: (numerator: number, denominator: number) => number;
198
214
 
215
+ declare const number_divide: typeof divide;
216
+ declare const number_sum: typeof sum;
199
217
  declare const number_toCents: typeof toCents;
200
218
  declare const number_toDecimal: typeof toDecimal;
219
+ declare const number_truncateDecimal: typeof truncateDecimal;
201
220
  declare namespace number {
202
- export { number_toCents as toCents, number_toDecimal as toDecimal };
221
+ export { number_divide as divide, number_sum as sum, number_toCents as toCents, number_toDecimal as toDecimal, number_truncateDecimal as truncateDecimal };
203
222
  }
204
223
 
205
224
  /**
package/dist/index.js CHANGED
@@ -33,13 +33,13 @@ function isValidCNPJ(cnpj) {
33
33
  function validCalc(x, numbers2) {
34
34
  const slice = numbers2.slice(0, x);
35
35
  let factor = x - 7;
36
- let sum = 0;
36
+ let sum2 = 0;
37
37
  for (let i = x; i >= 1; i--) {
38
38
  const n = slice[x - i];
39
- sum += n * factor--;
39
+ sum2 += n * factor--;
40
40
  if (factor < 2) factor = 9;
41
41
  }
42
- const result = 11 - sum % 11;
42
+ const result = 11 - sum2 % 11;
43
43
  return result > 9 ? 0 : result;
44
44
  }
45
45
  function matchNumbers(value = "") {
@@ -873,8 +873,11 @@ var removeTrailingNumber = (slug) => {
873
873
  // src/helpers/number.ts
874
874
  var number_exports = {};
875
875
  __export(number_exports, {
876
+ divide: () => divide,
877
+ sum: () => sum,
876
878
  toCents: () => toCents,
877
- toDecimal: () => toDecimal
879
+ toDecimal: () => toDecimal,
880
+ truncateDecimal: () => truncateDecimal
878
881
  });
879
882
  import Big from "big.js";
880
883
  var toCents = (value) => {
@@ -889,6 +892,28 @@ var toDecimal = (value) => {
889
892
  }
890
893
  return new Big(value).div(100).round(2).toNumber();
891
894
  };
895
+ var truncateDecimal = (value, decimalPlaces) => {
896
+ if (!value) {
897
+ return 0;
898
+ }
899
+ const bigValue = new Big(value);
900
+ const factor = new Big(10).pow(decimalPlaces);
901
+ return bigValue.times(factor).round(0, Big.roundDown).div(factor).toNumber();
902
+ };
903
+ var sum = (values) => {
904
+ return values.reduce((acc, value) => {
905
+ if (value) {
906
+ return acc.plus(value);
907
+ }
908
+ return acc;
909
+ }, new Big(0)).toNumber();
910
+ };
911
+ var divide = (numerator, denominator) => {
912
+ if (denominator === 0) {
913
+ return 0;
914
+ }
915
+ return new Big(numerator).div(denominator).toNumber();
916
+ };
892
917
  export {
893
918
  ExpiredTokenError,
894
919
  InvalidTokenError,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@excofy/utils",
3
- "version": "2.3.3",
3
+ "version": "2.4.0",
4
4
  "description": "Biblioteca de utilitários para o Excofy",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -29,3 +29,48 @@ export const toDecimal = (value?: number): number => {
29
29
 
30
30
  return new Big(value).div(100).round(2).toNumber();
31
31
  };
32
+
33
+ /**
34
+ * Truncates a decimal number to a specified number of decimal places.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const truncated = truncateDecimal(10.98765, 2);
39
+ * console.log(truncated); // 10.98
40
+ * ```
41
+ *
42
+ * @param {number} value - The decimal number to truncate.
43
+ * @param {number} decimalPlaces - The number of decimal places to keep.
44
+ * @returns {number} The truncated decimal number.
45
+ */
46
+ export const truncateDecimal = (
47
+ value: number,
48
+ decimalPlaces: number,
49
+ ): number => {
50
+ if (!value) {
51
+ return 0;
52
+ }
53
+
54
+ const bigValue = new Big(value);
55
+ const factor = new Big(10).pow(decimalPlaces);
56
+ return bigValue.times(factor).round(0, Big.roundDown).div(factor).toNumber();
57
+ };
58
+
59
+ export const sum = (values: (number | undefined)[]): number => {
60
+ return values
61
+ .reduce((acc: Big.Big, value) => {
62
+ if (value) {
63
+ return acc.plus(value);
64
+ }
65
+ return acc;
66
+ }, new Big(0))
67
+ .toNumber();
68
+ };
69
+
70
+ export const divide = (numerator: number, denominator: number) => {
71
+ if (denominator === 0) {
72
+ return 0;
73
+ }
74
+
75
+ return new Big(numerator).div(denominator).toNumber();
76
+ };
package/tsconfig.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "declaration": true,
6
6
  "declarationMap": true,
7
7
  "outDir": "dist",
8
- "moduleResolution": "Node",
8
+ "moduleResolution": "bundler",
9
9
  "esModuleInterop": true,
10
10
  "forceConsistentCasingInFileNames": true,
11
11
  "strict": true,