@n8n/expression-runtime 0.21.0 → 0.23.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.
Files changed (115) hide show
  1. package/dist/cjs/bridge/bridge-messages.d.ts +8 -8
  2. package/dist/cjs/bridge/bridge-messages.js +234 -244
  3. package/dist/cjs/bridge/bridge-messages.js.map +1 -1
  4. package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -1
  5. package/dist/cjs/bridge/isolated-vm-bridge.js +633 -643
  6. package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -1
  7. package/dist/cjs/build.tsbuildinfo +1 -1
  8. package/dist/cjs/evaluator/error-classification.js +15 -25
  9. package/dist/cjs/evaluator/error-classification.js.map +1 -1
  10. package/dist/cjs/evaluator/expression-evaluator.d.ts +7 -1
  11. package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -1
  12. package/dist/cjs/evaluator/expression-evaluator.js +152 -155
  13. package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
  14. package/dist/cjs/evaluator/lru-cache.d.ts.map +1 -1
  15. package/dist/cjs/evaluator/lru-cache.js +35 -45
  16. package/dist/cjs/evaluator/lru-cache.js.map +1 -1
  17. package/dist/cjs/extensions/array-extensions.js +589 -599
  18. package/dist/cjs/extensions/array-extensions.js.map +1 -1
  19. package/dist/cjs/extensions/boolean-extensions.js +38 -48
  20. package/dist/cjs/extensions/boolean-extensions.js.map +1 -1
  21. package/dist/cjs/extensions/date-extensions.js +500 -510
  22. package/dist/cjs/extensions/date-extensions.js.map +1 -1
  23. package/dist/cjs/extensions/expression-extension-error.d.ts.map +1 -1
  24. package/dist/cjs/extensions/expression-extension-error.js +12 -22
  25. package/dist/cjs/extensions/expression-extension-error.js.map +1 -1
  26. package/dist/cjs/extensions/extend.js +162 -172
  27. package/dist/cjs/extensions/extend.js.map +1 -1
  28. package/dist/cjs/extensions/extensions.js +2 -12
  29. package/dist/cjs/extensions/function-extensions.d.ts +10 -18
  30. package/dist/cjs/extensions/function-extensions.d.ts.map +1 -1
  31. package/dist/cjs/extensions/function-extensions.js +78 -88
  32. package/dist/cjs/extensions/function-extensions.js.map +1 -1
  33. package/dist/cjs/extensions/number-extensions.js +225 -235
  34. package/dist/cjs/extensions/number-extensions.js.map +1 -1
  35. package/dist/cjs/extensions/object-extensions.js +286 -296
  36. package/dist/cjs/extensions/object-extensions.js.map +1 -1
  37. package/dist/cjs/extensions/string-extensions.d.ts +1 -1
  38. package/dist/cjs/extensions/string-extensions.d.ts.map +1 -1
  39. package/dist/cjs/extensions/string-extensions.js +758 -768
  40. package/dist/cjs/extensions/string-extensions.js.map +1 -1
  41. package/dist/cjs/extensions/utils.d.ts.map +1 -1
  42. package/dist/cjs/extensions/utils.js +28 -38
  43. package/dist/cjs/extensions/utils.js.map +1 -1
  44. package/dist/cjs/index.js +32 -42
  45. package/dist/cjs/index.js.map +1 -1
  46. package/dist/cjs/observability/metrics.d.ts +27 -27
  47. package/dist/cjs/observability/metrics.d.ts.map +1 -1
  48. package/dist/cjs/observability/metrics.js +59 -69
  49. package/dist/cjs/observability/metrics.js.map +1 -1
  50. package/dist/cjs/observability/noop-provider.js +28 -38
  51. package/dist/cjs/observability/noop-provider.js.map +1 -1
  52. package/dist/cjs/pool/idle-scaling-pool.d.ts.map +1 -1
  53. package/dist/cjs/pool/idle-scaling-pool.js +134 -144
  54. package/dist/cjs/pool/idle-scaling-pool.js.map +1 -1
  55. package/dist/cjs/pool/isolate-pool.d.ts.map +1 -1
  56. package/dist/cjs/pool/isolate-pool.js +101 -111
  57. package/dist/cjs/pool/isolate-pool.js.map +1 -1
  58. package/dist/cjs/runtime/context.js +418 -428
  59. package/dist/cjs/runtime/context.js.map +1 -1
  60. package/dist/cjs/runtime/index.js +26 -36
  61. package/dist/cjs/runtime/index.js.map +1 -1
  62. package/dist/cjs/runtime/jmespath.js +72 -82
  63. package/dist/cjs/runtime/jmespath.js.map +1 -1
  64. package/dist/cjs/runtime/lazy-proxy.js +238 -248
  65. package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
  66. package/dist/cjs/runtime/safe-globals.d.ts.map +1 -1
  67. package/dist/cjs/runtime/safe-globals.js +134 -144
  68. package/dist/cjs/runtime/safe-globals.js.map +1 -1
  69. package/dist/cjs/runtime/serialize.js +54 -64
  70. package/dist/cjs/runtime/serialize.js.map +1 -1
  71. package/dist/cjs/runtime/utils.js +20 -30
  72. package/dist/cjs/runtime/utils.js.map +1 -1
  73. package/dist/cjs/types/bridge.js +15 -25
  74. package/dist/cjs/types/bridge.js.map +1 -1
  75. package/dist/cjs/types/evaluator.d.ts +5 -1
  76. package/dist/cjs/types/evaluator.d.ts.map +1 -1
  77. package/dist/cjs/types/evaluator.js +35 -45
  78. package/dist/cjs/types/evaluator.js.map +1 -1
  79. package/dist/cjs/types/index.js +14 -24
  80. package/dist/cjs/types/index.js.map +1 -1
  81. package/dist/cjs/types/runtime.d.ts.map +1 -1
  82. package/dist/cjs/types/runtime.js +27 -37
  83. package/dist/cjs/types/runtime.js.map +1 -1
  84. package/dist/esm/bridge/bridge-messages.d.ts +8 -8
  85. package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
  86. package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -1
  87. package/dist/esm/build.tsbuildinfo +1 -1
  88. package/dist/esm/evaluator/expression-evaluator.d.ts +7 -1
  89. package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
  90. package/dist/esm/evaluator/expression-evaluator.js +8 -1
  91. package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
  92. package/dist/esm/evaluator/lru-cache.d.ts.map +1 -1
  93. package/dist/esm/evaluator/lru-cache.js.map +1 -1
  94. package/dist/esm/extensions/expression-extension-error.d.ts.map +1 -1
  95. package/dist/esm/extensions/function-extensions.d.ts +10 -18
  96. package/dist/esm/extensions/function-extensions.d.ts.map +1 -1
  97. package/dist/esm/extensions/number-extensions.js.map +1 -1
  98. package/dist/esm/extensions/string-extensions.d.ts +1 -1
  99. package/dist/esm/extensions/string-extensions.d.ts.map +1 -1
  100. package/dist/esm/extensions/string-extensions.js.map +1 -1
  101. package/dist/esm/extensions/utils.d.ts.map +1 -1
  102. package/dist/esm/observability/metrics.d.ts +27 -27
  103. package/dist/esm/observability/metrics.d.ts.map +1 -1
  104. package/dist/esm/pool/idle-scaling-pool.d.ts.map +1 -1
  105. package/dist/esm/pool/idle-scaling-pool.js.map +1 -1
  106. package/dist/esm/pool/isolate-pool.d.ts.map +1 -1
  107. package/dist/esm/pool/isolate-pool.js.map +1 -1
  108. package/dist/esm/runtime/lazy-proxy.js.map +1 -1
  109. package/dist/esm/runtime/safe-globals.d.ts.map +1 -1
  110. package/dist/esm/types/evaluator.d.ts +5 -1
  111. package/dist/esm/types/evaluator.d.ts.map +1 -1
  112. package/dist/esm/types/evaluator.js.map +1 -1
  113. package/dist/esm/types/runtime.d.ts.map +1 -1
  114. package/dist/esm/types/runtime.js.map +1 -1
  115. package/package.json +7 -6
@@ -1,244 +1,234 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.numberExtensions = void 0;
4
+ exports.toDateTime = toDateTime;
5
+ const luxon_1 = require("luxon");
6
+ const expression_extension_error_1 = require("./expression-extension-error");
7
+ // DIVERGENCE from packages/workflow/src/extensions/number-extensions.ts:
8
+ // The original uses Intl.NumberFormat which is a Web API unavailable inside the
9
+ // V8 isolate. toLocaleString is an ECMAScript built-in available in all V8
10
+ // contexts and produces the same output.
11
+ function format(value, extraArgs) {
12
+ const [locales = 'en-US', config = {}] = extraArgs;
13
+ try {
14
+ return value.toLocaleString(locales, config);
5
15
  }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "luxon", "./expression-extension-error"], factory);
16
+ catch {
17
+ return String(value);
8
18
  }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.numberExtensions = void 0;
13
- exports.toDateTime = toDateTime;
14
- const luxon_1 = require("luxon");
15
- const expression_extension_error_1 = require("./expression-extension-error");
16
- // DIVERGENCE from packages/workflow/src/extensions/number-extensions.ts:
17
- // The original uses Intl.NumberFormat which is a Web API unavailable inside the
18
- // V8 isolate. toLocaleString is an ECMAScript built-in available in all V8
19
- // contexts and produces the same output.
20
- function format(value, extraArgs) {
21
- const [locales = 'en-US', config = {}] = extraArgs;
22
- try {
23
- return value.toLocaleString(locales, config);
24
- }
25
- catch {
26
- return String(value);
27
- }
28
- }
29
- function isEven(value) {
30
- if (!Number.isInteger(value)) {
31
- throw new expression_extension_error_1.ExpressionExtensionError('isEven() is only callable on integers');
32
- }
33
- return value % 2 === 0;
34
- }
35
- function isOdd(value) {
36
- if (!Number.isInteger(value)) {
37
- throw new expression_extension_error_1.ExpressionExtensionError('isOdd() is only callable on integers');
38
- }
39
- return Math.abs(value) % 2 === 1;
40
- }
41
- function floor(value) {
42
- return Math.floor(value);
43
- }
44
- function ceil(value) {
45
- return Math.ceil(value);
46
- }
47
- function abs(value) {
48
- return Math.abs(value);
19
+ }
20
+ function isEven(value) {
21
+ if (!Number.isInteger(value)) {
22
+ throw new expression_extension_error_1.ExpressionExtensionError('isEven() is only callable on integers');
49
23
  }
50
- function isInteger(value) {
51
- return Number.isInteger(value);
24
+ return value % 2 === 0;
25
+ }
26
+ function isOdd(value) {
27
+ if (!Number.isInteger(value)) {
28
+ throw new expression_extension_error_1.ExpressionExtensionError('isOdd() is only callable on integers');
52
29
  }
53
- function round(value, extraArgs) {
54
- const [decimalPlaces = 0] = extraArgs;
55
- return +value.toFixed(decimalPlaces);
30
+ return Math.abs(value) % 2 === 1;
31
+ }
32
+ function floor(value) {
33
+ return Math.floor(value);
34
+ }
35
+ function ceil(value) {
36
+ return Math.ceil(value);
37
+ }
38
+ function abs(value) {
39
+ return Math.abs(value);
40
+ }
41
+ function isInteger(value) {
42
+ return Number.isInteger(value);
43
+ }
44
+ function round(value, extraArgs) {
45
+ const [decimalPlaces = 0] = extraArgs;
46
+ return +value.toFixed(decimalPlaces);
47
+ }
48
+ function toBoolean(value) {
49
+ return value !== 0;
50
+ }
51
+ function toInt(value) {
52
+ return round(value, []);
53
+ }
54
+ function toFloat(value) {
55
+ return value;
56
+ }
57
+ function toDateTime(value, extraArgs) {
58
+ const [valueFormat = 'ms'] = extraArgs;
59
+ if (!['ms', 's', 'us', 'excel'].includes(valueFormat)) {
60
+ throw new expression_extension_error_1.ExpressionExtensionError(`Unsupported format '${String(valueFormat)}'. toDateTime() supports 'ms', 's', 'us' and 'excel'.`);
56
61
  }
57
- function toBoolean(value) {
58
- return value !== 0;
59
- }
60
- function toInt(value) {
61
- return round(value, []);
62
- }
63
- function toFloat(value) {
64
- return value;
65
- }
66
- function toDateTime(value, extraArgs) {
67
- const [valueFormat = 'ms'] = extraArgs;
68
- if (!['ms', 's', 'us', 'excel'].includes(valueFormat)) {
69
- throw new expression_extension_error_1.ExpressionExtensionError(`Unsupported format '${String(valueFormat)}'. toDateTime() supports 'ms', 's', 'us' and 'excel'.`);
70
- }
71
- switch (valueFormat) {
72
- // Excel format is days since 1900
73
- // There is a bug where 1900 is incorrectly treated as a leap year
74
- case 'excel': {
75
- const DAYS_BETWEEN_1900_1970 = 25567;
76
- const DAYS_LEAP_YEAR_BUG_ADJUST = 2;
77
- const SECONDS_IN_DAY = 86_400;
78
- return luxon_1.DateTime.fromSeconds((value - (DAYS_BETWEEN_1900_1970 + DAYS_LEAP_YEAR_BUG_ADJUST)) * SECONDS_IN_DAY);
79
- }
80
- case 's':
81
- return luxon_1.DateTime.fromSeconds(value);
82
- case 'us':
83
- return luxon_1.DateTime.fromMillis(value / 1000);
84
- case 'ms':
85
- default:
86
- return luxon_1.DateTime.fromMillis(value);
62
+ switch (valueFormat) {
63
+ // Excel format is days since 1900
64
+ // There is a bug where 1900 is incorrectly treated as a leap year
65
+ case 'excel': {
66
+ const DAYS_BETWEEN_1900_1970 = 25567;
67
+ const DAYS_LEAP_YEAR_BUG_ADJUST = 2;
68
+ const SECONDS_IN_DAY = 86_400;
69
+ return luxon_1.DateTime.fromSeconds((value - (DAYS_BETWEEN_1900_1970 + DAYS_LEAP_YEAR_BUG_ADJUST)) * SECONDS_IN_DAY);
87
70
  }
71
+ case 's':
72
+ return luxon_1.DateTime.fromSeconds(value);
73
+ case 'us':
74
+ return luxon_1.DateTime.fromMillis(value / 1000);
75
+ case 'ms':
76
+ default:
77
+ return luxon_1.DateTime.fromMillis(value);
88
78
  }
89
- ceil.doc = {
90
- name: 'ceil',
91
- description: 'Rounds the number up to the next whole number',
92
- examples: [{ example: '(1.234).ceil()', evaluated: '2' }],
93
- returnType: 'number',
94
- docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-ceil',
95
- };
96
- floor.doc = {
97
- name: 'floor',
98
- description: 'Rounds the number down to the nearest whole number',
99
- examples: [{ example: '(1.234).floor()', evaluated: '1' }],
100
- returnType: 'number',
101
- docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-floor',
102
- };
103
- isEven.doc = {
104
- name: 'isEven',
105
- description: "Returns <code>true</code> if the number is even or <code>false</code> if not. Throws an error if the number isn't a whole number.",
106
- examples: [
107
- { example: '(33).isEven()', evaluated: 'false' },
108
- { example: '(42).isEven()', evaluated: 'true' },
109
- ],
110
- returnType: 'boolean',
111
- docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-isEven',
112
- };
113
- isOdd.doc = {
114
- name: 'isOdd',
115
- description: "Returns <code>true</code> if the number is odd or <code>false</code> if not. Throws an error if the number isn't a whole number.",
116
- examples: [
117
- { example: '(33).isOdd()', evaluated: 'true' },
118
- { example: '(42).isOdd()', evaluated: 'false' },
119
- ],
120
- returnType: 'boolean',
121
- docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-isOdd',
122
- };
123
- format.doc = {
124
- name: 'format',
125
- description: 'Returns a formatted string representing the number. Useful for formatting for a specific language or currency. The same as <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat"><code>Intl.NumberFormat()</code></a>.',
126
- examples: [
127
- { example: "(123456.789).format('de-DE')", evaluated: '123.456,789' },
128
- {
129
- example: "(123456.789).format('de-DE', {'style': 'currency', 'currency': 'EUR'})",
130
- evaluated: '123.456,79 ',
131
- },
132
- ],
133
- returnType: 'string',
134
- args: [
135
- {
136
- name: 'locale',
137
- optional: true,
138
- description: 'A <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument">locale tag</a> for formatting the number, e.g. <code>fr-FR</code>, <code>en-GB</code>, <code>pr-BR</code>',
139
- default: '"en-US"',
140
- type: 'string',
141
- },
142
- {
143
- name: 'options',
144
- optional: true,
145
- description: 'Configuration options for number formatting. <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat" target="_blank">More info</a>',
146
- type: 'object',
147
- },
148
- ],
149
- docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-format',
150
- };
151
- round.doc = {
152
- name: 'round',
153
- description: 'Rounds the number to the nearest integer (or decimal place)',
154
- examples: [
155
- { example: '(1.256).round()', evaluated: '1' },
156
- { example: '(1.256).round(1)', evaluated: '1.3' },
157
- { example: '(1.256).round(2)', evaluated: '1.26' },
158
- ],
159
- returnType: 'number',
160
- args: [
161
- {
162
- name: 'decimalPlaces',
163
- optional: true,
164
- description: 'The number of decimal places to round to',
165
- default: '0',
166
- type: 'number',
167
- },
168
- ],
169
- docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-round',
170
- };
171
- toBoolean.doc = {
172
- name: 'toBoolean',
173
- description: 'Returns <code>false</code> for <code>0</code> and <code>true</code> for any other number (including negative numbers).',
174
- examples: [
175
- { example: '(12).toBoolean()', evaluated: 'true' },
176
- { example: '(0).toBoolean()', evaluated: 'false' },
177
- { example: '(-1.3).toBoolean()', evaluated: 'true' },
178
- ],
179
- section: 'cast',
180
- returnType: 'boolean',
181
- docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-toBoolean',
182
- };
183
- toDateTime.doc = {
184
- name: 'toDateTime',
185
- description: 'Converts a numerical timestamp into a <a target="_blank" href="https://moment.github.io/luxon/api-docs/">Luxon</a> DateTime. The format of the timestamp must be specified if it\'s not in milliseconds. Uses the timezone specified in workflow settings if available; otherwise, it defaults to the timezone set for the instance.',
186
- examples: [
187
- { example: "(1708695471).toDateTime('s')", evaluated: '2024-02-23T14:37:51.000+01:00' },
188
- { example: "(1708695471000).toDateTime('ms')", evaluated: '2024-02-23T14:37:51.000+01:00' },
189
- { example: "(1708695471000000).toDateTime('us')", evaluated: '2024-02-23T14:37:51.000+01:00' },
190
- { example: "(45345).toDateTime('excel')", evaluated: '2024-02-23T01:00:00.000+01:00' },
191
- ],
192
- section: 'cast',
193
- returnType: 'DateTime',
194
- args: [
195
- {
196
- name: 'format',
197
- optional: true,
198
- description: 'The type of timestamp to convert. Options are <code>ms</code> (for Unix timestamp in milliseconds), <code>s</code> (for Unix timestamp in seconds), <code>us</code> (for Unix timestamp in microseconds) or <code>excel</code> (for days since 1900).',
199
- default: '"ms"',
200
- type: 'string',
201
- },
202
- ],
203
- docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-toDateTime',
204
- };
205
- abs.doc = {
206
- name: 'abs',
207
- description: "Returns the number's absolute value, i.e. removes any minus sign",
208
- examples: [
209
- { example: '(-1.7).abs()', evaluated: '1.7' },
210
- { example: '(1.7).abs()', evaluated: '1.7' },
211
- ],
212
- returnType: 'number',
213
- docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-abs',
214
- };
215
- isInteger.doc = {
216
- name: 'isInteger',
217
- description: 'Returns <code>true</code> if the number is a whole number',
218
- examples: [
219
- { example: '(4).isInteger()', evaluated: 'true' },
220
- { example: '(4.12).isInteger()', evaluated: 'false' },
221
- { example: '(-4).isInteger()', evaluated: 'true' },
222
- ],
223
- returnType: 'boolean',
224
- docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-isInteger',
225
- };
226
- exports.numberExtensions = {
227
- typeName: 'Number',
228
- functions: {
229
- ceil,
230
- floor,
231
- format,
232
- round,
233
- abs,
234
- isInteger,
235
- isEven,
236
- isOdd,
237
- toBoolean,
238
- toInt,
239
- toFloat,
240
- toDateTime,
79
+ }
80
+ ceil.doc = {
81
+ name: 'ceil',
82
+ description: 'Rounds the number up to the next whole number',
83
+ examples: [{ example: '(1.234).ceil()', evaluated: '2' }],
84
+ returnType: 'number',
85
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-ceil',
86
+ };
87
+ floor.doc = {
88
+ name: 'floor',
89
+ description: 'Rounds the number down to the nearest whole number',
90
+ examples: [{ example: '(1.234).floor()', evaluated: '1' }],
91
+ returnType: 'number',
92
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-floor',
93
+ };
94
+ isEven.doc = {
95
+ name: 'isEven',
96
+ description: "Returns <code>true</code> if the number is even or <code>false</code> if not. Throws an error if the number isn't a whole number.",
97
+ examples: [
98
+ { example: '(33).isEven()', evaluated: 'false' },
99
+ { example: '(42).isEven()', evaluated: 'true' },
100
+ ],
101
+ returnType: 'boolean',
102
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-isEven',
103
+ };
104
+ isOdd.doc = {
105
+ name: 'isOdd',
106
+ description: "Returns <code>true</code> if the number is odd or <code>false</code> if not. Throws an error if the number isn't a whole number.",
107
+ examples: [
108
+ { example: '(33).isOdd()', evaluated: 'true' },
109
+ { example: '(42).isOdd()', evaluated: 'false' },
110
+ ],
111
+ returnType: 'boolean',
112
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-isOdd',
113
+ };
114
+ format.doc = {
115
+ name: 'format',
116
+ description: 'Returns a formatted string representing the number. Useful for formatting for a specific language or currency. The same as <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat"><code>Intl.NumberFormat()</code></a>.',
117
+ examples: [
118
+ { example: "(123456.789).format('de-DE')", evaluated: '123.456,789' },
119
+ {
120
+ example: "(123456.789).format('de-DE', {'style': 'currency', 'currency': 'EUR'})",
121
+ evaluated: '123.456,79 €',
122
+ },
123
+ ],
124
+ returnType: 'string',
125
+ args: [
126
+ {
127
+ name: 'locale',
128
+ optional: true,
129
+ description: 'A <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument">locale tag</a> for formatting the number, e.g. <code>fr-FR</code>, <code>en-GB</code>, <code>pr-BR</code>',
130
+ default: '"en-US"',
131
+ type: 'string',
132
+ },
133
+ {
134
+ name: 'options',
135
+ optional: true,
136
+ description: 'Configuration options for number formatting. <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat" target="_blank">More info</a>',
137
+ type: 'object',
138
+ },
139
+ ],
140
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-format',
141
+ };
142
+ round.doc = {
143
+ name: 'round',
144
+ description: 'Rounds the number to the nearest integer (or decimal place)',
145
+ examples: [
146
+ { example: '(1.256).round()', evaluated: '1' },
147
+ { example: '(1.256).round(1)', evaluated: '1.3' },
148
+ { example: '(1.256).round(2)', evaluated: '1.26' },
149
+ ],
150
+ returnType: 'number',
151
+ args: [
152
+ {
153
+ name: 'decimalPlaces',
154
+ optional: true,
155
+ description: 'The number of decimal places to round to',
156
+ default: '0',
157
+ type: 'number',
158
+ },
159
+ ],
160
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-round',
161
+ };
162
+ toBoolean.doc = {
163
+ name: 'toBoolean',
164
+ description: 'Returns <code>false</code> for <code>0</code> and <code>true</code> for any other number (including negative numbers).',
165
+ examples: [
166
+ { example: '(12).toBoolean()', evaluated: 'true' },
167
+ { example: '(0).toBoolean()', evaluated: 'false' },
168
+ { example: '(-1.3).toBoolean()', evaluated: 'true' },
169
+ ],
170
+ section: 'cast',
171
+ returnType: 'boolean',
172
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-toBoolean',
173
+ };
174
+ toDateTime.doc = {
175
+ name: 'toDateTime',
176
+ description: 'Converts a numerical timestamp into a <a target="_blank" href="https://moment.github.io/luxon/api-docs/">Luxon</a> DateTime. The format of the timestamp must be specified if it\'s not in milliseconds. Uses the timezone specified in workflow settings if available; otherwise, it defaults to the timezone set for the instance.',
177
+ examples: [
178
+ { example: "(1708695471).toDateTime('s')", evaluated: '2024-02-23T14:37:51.000+01:00' },
179
+ { example: "(1708695471000).toDateTime('ms')", evaluated: '2024-02-23T14:37:51.000+01:00' },
180
+ { example: "(1708695471000000).toDateTime('us')", evaluated: '2024-02-23T14:37:51.000+01:00' },
181
+ { example: "(45345).toDateTime('excel')", evaluated: '2024-02-23T01:00:00.000+01:00' },
182
+ ],
183
+ section: 'cast',
184
+ returnType: 'DateTime',
185
+ args: [
186
+ {
187
+ name: 'format',
188
+ optional: true,
189
+ description: 'The type of timestamp to convert. Options are <code>ms</code> (for Unix timestamp in milliseconds), <code>s</code> (for Unix timestamp in seconds), <code>us</code> (for Unix timestamp in microseconds) or <code>excel</code> (for days since 1900).',
190
+ default: '"ms"',
191
+ type: 'string',
241
192
  },
242
- };
243
- });
193
+ ],
194
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-toDateTime',
195
+ };
196
+ abs.doc = {
197
+ name: 'abs',
198
+ description: "Returns the number's absolute value, i.e. removes any minus sign",
199
+ examples: [
200
+ { example: '(-1.7).abs()', evaluated: '1.7' },
201
+ { example: '(1.7).abs()', evaluated: '1.7' },
202
+ ],
203
+ returnType: 'number',
204
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-abs',
205
+ };
206
+ isInteger.doc = {
207
+ name: 'isInteger',
208
+ description: 'Returns <code>true</code> if the number is a whole number',
209
+ examples: [
210
+ { example: '(4).isInteger()', evaluated: 'true' },
211
+ { example: '(4.12).isInteger()', evaluated: 'false' },
212
+ { example: '(-4).isInteger()', evaluated: 'true' },
213
+ ],
214
+ returnType: 'boolean',
215
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/numbers/#number-isInteger',
216
+ };
217
+ exports.numberExtensions = {
218
+ typeName: 'Number',
219
+ functions: {
220
+ ceil,
221
+ floor,
222
+ format,
223
+ round,
224
+ abs,
225
+ isInteger,
226
+ isEven,
227
+ isOdd,
228
+ toBoolean,
229
+ toInt,
230
+ toFloat,
231
+ toDateTime,
232
+ },
233
+ };
244
234
  //# sourceMappingURL=number-extensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-extensions.js","sourceRoot":"","sources":["../../../src/extensions/number-extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number-extensions.js","sourceRoot":"","sources":["../../../src/extensions/number-extensions.ts"],"names":[],"mappings":"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"}