@n8n/utils 1.43.0 → 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.
- package/dist/number/smart-decimal.cjs +2 -1
- package/dist/number/smart-decimal.cjs.map +1 -1
- package/dist/number/smart-decimal.mjs +2 -1
- package/dist/number/smart-decimal.mjs.map +1 -1
- package/dist/sleep.cjs +12 -6
- package/dist/sleep.cjs.map +1 -1
- package/dist/sleep.mjs +12 -6
- package/dist/sleep.mjs.map +1 -1
- package/dist/types.d.cts +4 -1
- package/dist/types.d.mts +4 -1
- package/package.json +5 -5
|
@@ -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
|
-
|
|
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\
|
|
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
|
-
|
|
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\
|
|
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/sleep.cjs
CHANGED
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_errors_ensure_error = require("./errors/ensure-error.cjs");
|
|
2
3
|
//#region src/sleep.ts
|
|
3
4
|
async function sleepWithAbort(ms, abortSignal) {
|
|
4
5
|
return await new Promise((resolve, reject) => {
|
|
5
6
|
if (abortSignal.aborted) {
|
|
6
|
-
reject(
|
|
7
|
+
reject(require_errors_ensure_error.ensureError(abortSignal.reason));
|
|
7
8
|
return;
|
|
8
9
|
}
|
|
9
|
-
const
|
|
10
|
-
abortSignal.addEventListener("abort", () => {
|
|
10
|
+
const onAbort = () => {
|
|
11
11
|
clearTimeout(timeout);
|
|
12
|
-
reject(
|
|
13
|
-
}
|
|
12
|
+
reject(require_errors_ensure_error.ensureError(abortSignal.reason));
|
|
13
|
+
};
|
|
14
|
+
const timeout = setTimeout(() => {
|
|
15
|
+
abortSignal.removeEventListener("abort", onAbort);
|
|
16
|
+
resolve();
|
|
17
|
+
}, ms);
|
|
18
|
+
abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
14
19
|
});
|
|
15
20
|
}
|
|
16
21
|
/**
|
|
17
|
-
* Resolves after `ms` milliseconds, or rejects
|
|
22
|
+
* Resolves after `ms` milliseconds, or rejects with the signal's abort reason
|
|
23
|
+
* if `abortSignal` fires first.
|
|
18
24
|
*/
|
|
19
25
|
async function sleep(ms, abortSignal) {
|
|
20
26
|
if (!abortSignal) return await new Promise((resolve) => setTimeout(resolve, ms));
|
package/dist/sleep.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sleep.cjs","names":[],"sources":["../src/sleep.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"sleep.cjs","names":["ensureError"],"sources":["../src/sleep.ts"],"sourcesContent":["import { ensureError } from './errors/ensure-error';\n\nasync function sleepWithAbort(ms: number, abortSignal: AbortSignal): Promise<void> {\n\treturn await new Promise((resolve, reject) => {\n\t\tif (abortSignal.aborted) {\n\t\t\treject(ensureError(abortSignal.reason));\n\t\t\treturn;\n\t\t}\n\n\t\tconst onAbort = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\treject(ensureError(abortSignal.reason));\n\t\t};\n\n\t\tconst timeout = setTimeout(() => {\n\t\t\tabortSignal.removeEventListener('abort', onAbort);\n\t\t\tresolve();\n\t\t}, ms);\n\n\t\tabortSignal.addEventListener('abort', onAbort, { once: true });\n\t});\n}\n\n/**\n * Resolves after `ms` milliseconds, or rejects with the signal's abort reason\n * if `abortSignal` fires first.\n */\nexport async function sleep(ms: number, abortSignal?: AbortSignal): Promise<void> {\n\tif (!abortSignal) {\n\t\treturn await new Promise((resolve) => setTimeout(resolve, ms));\n\t}\n\n\treturn await sleepWithAbort(ms, abortSignal);\n}\n"],"mappings":";;;AAEA,eAAe,eAAe,IAAY,aAAyC;CAClF,OAAO,MAAM,IAAI,SAAS,SAAS,WAAW;EAC7C,IAAI,YAAY,SAAS;GACxB,OAAOA,4BAAAA,YAAY,YAAY,MAAM,CAAC;GACtC;EACD;EAEA,MAAM,gBAAgB;GACrB,aAAa,OAAO;GACpB,OAAOA,4BAAAA,YAAY,YAAY,MAAM,CAAC;EACvC;EAEA,MAAM,UAAU,iBAAiB;GAChC,YAAY,oBAAoB,SAAS,OAAO;GAChD,QAAQ;EACT,GAAG,EAAE;EAEL,YAAY,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;CAC9D,CAAC;AACF;;;;;AAMA,eAAsB,MAAM,IAAY,aAA0C;CACjF,IAAI,CAAC,aACJ,OAAO,MAAM,IAAI,SAAS,YAAY,WAAW,SAAS,EAAE,CAAC;CAG9D,OAAO,MAAM,eAAe,IAAI,WAAW;AAC5C"}
|
package/dist/sleep.mjs
CHANGED
|
@@ -1,19 +1,25 @@
|
|
|
1
|
+
import { ensureError } from "./errors/ensure-error.mjs";
|
|
1
2
|
//#region src/sleep.ts
|
|
2
3
|
async function sleepWithAbort(ms, abortSignal) {
|
|
3
4
|
return await new Promise((resolve, reject) => {
|
|
4
5
|
if (abortSignal.aborted) {
|
|
5
|
-
reject(
|
|
6
|
+
reject(ensureError(abortSignal.reason));
|
|
6
7
|
return;
|
|
7
8
|
}
|
|
8
|
-
const
|
|
9
|
-
abortSignal.addEventListener("abort", () => {
|
|
9
|
+
const onAbort = () => {
|
|
10
10
|
clearTimeout(timeout);
|
|
11
|
-
reject(
|
|
12
|
-
}
|
|
11
|
+
reject(ensureError(abortSignal.reason));
|
|
12
|
+
};
|
|
13
|
+
const timeout = setTimeout(() => {
|
|
14
|
+
abortSignal.removeEventListener("abort", onAbort);
|
|
15
|
+
resolve();
|
|
16
|
+
}, ms);
|
|
17
|
+
abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
13
18
|
});
|
|
14
19
|
}
|
|
15
20
|
/**
|
|
16
|
-
* Resolves after `ms` milliseconds, or rejects
|
|
21
|
+
* Resolves after `ms` milliseconds, or rejects with the signal's abort reason
|
|
22
|
+
* if `abortSignal` fires first.
|
|
17
23
|
*/
|
|
18
24
|
async function sleep(ms, abortSignal) {
|
|
19
25
|
if (!abortSignal) return await new Promise((resolve) => setTimeout(resolve, ms));
|
package/dist/sleep.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sleep.mjs","names":[],"sources":["../src/sleep.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"sleep.mjs","names":[],"sources":["../src/sleep.ts"],"sourcesContent":["import { ensureError } from './errors/ensure-error';\n\nasync function sleepWithAbort(ms: number, abortSignal: AbortSignal): Promise<void> {\n\treturn await new Promise((resolve, reject) => {\n\t\tif (abortSignal.aborted) {\n\t\t\treject(ensureError(abortSignal.reason));\n\t\t\treturn;\n\t\t}\n\n\t\tconst onAbort = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\treject(ensureError(abortSignal.reason));\n\t\t};\n\n\t\tconst timeout = setTimeout(() => {\n\t\t\tabortSignal.removeEventListener('abort', onAbort);\n\t\t\tresolve();\n\t\t}, ms);\n\n\t\tabortSignal.addEventListener('abort', onAbort, { once: true });\n\t});\n}\n\n/**\n * Resolves after `ms` milliseconds, or rejects with the signal's abort reason\n * if `abortSignal` fires first.\n */\nexport async function sleep(ms: number, abortSignal?: AbortSignal): Promise<void> {\n\tif (!abortSignal) {\n\t\treturn await new Promise((resolve) => setTimeout(resolve, ms));\n\t}\n\n\treturn await sleepWithAbort(ms, abortSignal);\n}\n"],"mappings":";;AAEA,eAAe,eAAe,IAAY,aAAyC;CAClF,OAAO,MAAM,IAAI,SAAS,SAAS,WAAW;EAC7C,IAAI,YAAY,SAAS;GACxB,OAAO,YAAY,YAAY,MAAM,CAAC;GACtC;EACD;EAEA,MAAM,gBAAgB;GACrB,aAAa,OAAO;GACpB,OAAO,YAAY,YAAY,MAAM,CAAC;EACvC;EAEA,MAAM,UAAU,iBAAiB;GAChC,YAAY,oBAAoB,SAAS,OAAO;GAChD,QAAQ;EACT,GAAG,EAAE;EAEL,YAAY,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;CAC9D,CAAC;AACF;;;;;AAMA,eAAsB,MAAM,IAAY,aAA0C;CACjF,IAAI,CAAC,aACJ,OAAO,MAAM,IAAI,SAAS,YAAY,WAAW,SAAS,EAAE,CAAC;CAG9D,OAAO,MAAM,eAAe,IAAI,WAAW;AAC5C"}
|
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.
|
|
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.
|
|
31
|
-
"@n8n/constants": "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/
|
|
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",
|