@n8n/utils 1.43.1 → 1.44.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.
@@ -2,7 +2,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region src/number/smart-decimal.ts
3
3
  const smartDecimal = (value, decimals = 2) => {
4
4
  if (Number.isInteger(value)) return value;
5
- if (value.toString().split(".")[1].length <= decimals) return value;
5
+ const decimalPart = value.toString().split(".")[1];
6
+ if (decimalPart !== void 0 && decimalPart.length <= decimals) return value;
6
7
  return Number(value.toFixed(decimals));
7
8
  };
8
9
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"smart-decimal.cjs","names":[],"sources":["../../src/number/smart-decimal.ts"],"sourcesContent":["export const smartDecimal = (value: number, decimals = 2): number => {\n\t// Check if integer\n\tif (Number.isInteger(value)) {\n\t\treturn value;\n\t}\n\n\t// Check if it has only one decimal place\n\tif (value.toString().split('.')[1].length <= decimals) {\n\t\treturn value;\n\t}\n\n\treturn Number(value.toFixed(decimals));\n};\n"],"mappings":";;AAAA,MAAa,gBAAgB,OAAe,WAAW,MAAc;CAEpE,IAAI,OAAO,UAAU,KAAK,GACzB,OAAO;CAIR,IAAI,MAAM,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,UAC5C,OAAO;CAGR,OAAO,OAAO,MAAM,QAAQ,QAAQ,CAAC;AACtC"}
1
+ {"version":3,"file":"smart-decimal.cjs","names":[],"sources":["../../src/number/smart-decimal.ts"],"sourcesContent":["export const smartDecimal = (value: number, decimals = 2): number => {\n\t// Check if integer\n\tif (Number.isInteger(value)) {\n\t\treturn value;\n\t}\n\n\t// Check if it has only one decimal place. Exponential-notation numbers\n\t// (e.g. `0.0000001` → `\"1e-7\"`) have no `.`, so fall through to rounding.\n\tconst decimalPart = value.toString().split('.')[1];\n\tif (decimalPart !== undefined && decimalPart.length <= decimals) {\n\t\treturn value;\n\t}\n\n\treturn Number(value.toFixed(decimals));\n};\n"],"mappings":";;AAAA,MAAa,gBAAgB,OAAe,WAAW,MAAc;CAEpE,IAAI,OAAO,UAAU,KAAK,GACzB,OAAO;CAKR,MAAM,cAAc,MAAM,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;CAChD,IAAI,gBAAgB,KAAA,KAAa,YAAY,UAAU,UACtD,OAAO;CAGR,OAAO,OAAO,MAAM,QAAQ,QAAQ,CAAC;AACtC"}
@@ -1,7 +1,8 @@
1
1
  //#region src/number/smart-decimal.ts
2
2
  const smartDecimal = (value, decimals = 2) => {
3
3
  if (Number.isInteger(value)) return value;
4
- if (value.toString().split(".")[1].length <= decimals) return value;
4
+ const decimalPart = value.toString().split(".")[1];
5
+ if (decimalPart !== void 0 && decimalPart.length <= decimals) return value;
5
6
  return Number(value.toFixed(decimals));
6
7
  };
7
8
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"smart-decimal.mjs","names":[],"sources":["../../src/number/smart-decimal.ts"],"sourcesContent":["export const smartDecimal = (value: number, decimals = 2): number => {\n\t// Check if integer\n\tif (Number.isInteger(value)) {\n\t\treturn value;\n\t}\n\n\t// Check if it has only one decimal place\n\tif (value.toString().split('.')[1].length <= decimals) {\n\t\treturn value;\n\t}\n\n\treturn Number(value.toFixed(decimals));\n};\n"],"mappings":";AAAA,MAAa,gBAAgB,OAAe,WAAW,MAAc;CAEpE,IAAI,OAAO,UAAU,KAAK,GACzB,OAAO;CAIR,IAAI,MAAM,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,UAC5C,OAAO;CAGR,OAAO,OAAO,MAAM,QAAQ,QAAQ,CAAC;AACtC"}
1
+ {"version":3,"file":"smart-decimal.mjs","names":[],"sources":["../../src/number/smart-decimal.ts"],"sourcesContent":["export const smartDecimal = (value: number, decimals = 2): number => {\n\t// Check if integer\n\tif (Number.isInteger(value)) {\n\t\treturn value;\n\t}\n\n\t// Check if it has only one decimal place. Exponential-notation numbers\n\t// (e.g. `0.0000001` → `\"1e-7\"`) have no `.`, so fall through to rounding.\n\tconst decimalPart = value.toString().split('.')[1];\n\tif (decimalPart !== undefined && decimalPart.length <= decimals) {\n\t\treturn value;\n\t}\n\n\treturn Number(value.toFixed(decimals));\n};\n"],"mappings":";AAAA,MAAa,gBAAgB,OAAe,WAAW,MAAc;CAEpE,IAAI,OAAO,UAAU,KAAK,GACzB,OAAO;CAKR,MAAM,cAAc,MAAM,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;CAChD,IAAI,gBAAgB,KAAA,KAAa,YAAY,UAAU,UACtD,OAAO;CAGR,OAAO,OAAO,MAAM,QAAQ,QAAQ,CAAC;AACtC"}
package/dist/types.d.cts CHANGED
@@ -1,5 +1,8 @@
1
1
  //#region src/types.d.ts
2
2
  type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
3
+ type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends ((x: infer I) => void) ? I : never;
4
+ type LastOf<U> = UnionToIntersection<U extends unknown ? () => U : never> extends (() => infer R) ? R : never;
5
+ type JoinKeys<U extends string> = [U] extends [never] ? '' : JoinKeys<Exclude<U, LastOf<U>>> extends (infer TRest extends string) ? TRest extends '' ? `'${LastOf<U> & string}'` : `${TRest}, '${LastOf<U> & string}'` : never;
3
6
  //#endregion
4
- export { DistributiveOmit };
7
+ export { DistributiveOmit, JoinKeys, LastOf, UnionToIntersection };
5
8
  //# sourceMappingURL=types.d.cts.map
package/dist/types.d.mts CHANGED
@@ -1,5 +1,8 @@
1
1
  //#region src/types.d.ts
2
2
  type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
3
+ type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends ((x: infer I) => void) ? I : never;
4
+ type LastOf<U> = UnionToIntersection<U extends unknown ? () => U : never> extends (() => infer R) ? R : never;
5
+ type JoinKeys<U extends string> = [U] extends [never] ? '' : JoinKeys<Exclude<U, LastOf<U>>> extends (infer TRest extends string) ? TRest extends '' ? `'${LastOf<U> & string}'` : `${TRest}, '${LastOf<U> & string}'` : never;
3
6
  //#endregion
4
- export { DistributiveOmit };
7
+ export { DistributiveOmit, JoinKeys, LastOf, UnionToIntersection };
5
8
  //# sourceMappingURL=types.d.mts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@n8n/utils",
3
3
  "type": "module",
4
- "version": "1.43.1",
4
+ "version": "1.44.0",
5
5
  "files": [
6
6
  "dist",
7
7
  "LICENSE.md",
@@ -27,8 +27,8 @@
27
27
  }
28
28
  },
29
29
  "dependencies": {
30
- "nanoid": "3.3.8",
31
- "@n8n/constants": "0.34.0"
30
+ "nanoid": "3.3.18",
31
+ "@n8n/constants": "0.35.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@testing-library/jest-dom": "^6.6.3",
@@ -37,9 +37,9 @@
37
37
  "typescript": "7.0.2",
38
38
  "vite": "^8.0.2",
39
39
  "vitest": "^4.1.9",
40
+ "@n8n/typescript-config": "1.10.0",
40
41
  "@n8n/eslint-config": "0.0.1",
41
- "@n8n/typescript-config": "1.9.0",
42
- "@n8n/vitest-config": "1.20.0"
42
+ "@n8n/vitest-config": "1.21.0"
43
43
  },
44
44
  "license": "SEE LICENSE IN LICENSE.md",
45
45
  "homepage": "https://n8n.io",