@n8n/expression-runtime 0.22.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 (109) 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.map +1 -1
  11. package/dist/cjs/evaluator/expression-evaluator.js +152 -162
  12. package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
  13. package/dist/cjs/evaluator/lru-cache.d.ts.map +1 -1
  14. package/dist/cjs/evaluator/lru-cache.js +35 -45
  15. package/dist/cjs/evaluator/lru-cache.js.map +1 -1
  16. package/dist/cjs/extensions/array-extensions.js +589 -599
  17. package/dist/cjs/extensions/array-extensions.js.map +1 -1
  18. package/dist/cjs/extensions/boolean-extensions.js +38 -48
  19. package/dist/cjs/extensions/boolean-extensions.js.map +1 -1
  20. package/dist/cjs/extensions/date-extensions.js +500 -510
  21. package/dist/cjs/extensions/date-extensions.js.map +1 -1
  22. package/dist/cjs/extensions/expression-extension-error.d.ts.map +1 -1
  23. package/dist/cjs/extensions/expression-extension-error.js +12 -22
  24. package/dist/cjs/extensions/expression-extension-error.js.map +1 -1
  25. package/dist/cjs/extensions/extend.js +162 -172
  26. package/dist/cjs/extensions/extend.js.map +1 -1
  27. package/dist/cjs/extensions/extensions.js +2 -12
  28. package/dist/cjs/extensions/function-extensions.d.ts +10 -18
  29. package/dist/cjs/extensions/function-extensions.d.ts.map +1 -1
  30. package/dist/cjs/extensions/function-extensions.js +78 -88
  31. package/dist/cjs/extensions/function-extensions.js.map +1 -1
  32. package/dist/cjs/extensions/number-extensions.js +225 -235
  33. package/dist/cjs/extensions/number-extensions.js.map +1 -1
  34. package/dist/cjs/extensions/object-extensions.js +286 -296
  35. package/dist/cjs/extensions/object-extensions.js.map +1 -1
  36. package/dist/cjs/extensions/string-extensions.d.ts +1 -1
  37. package/dist/cjs/extensions/string-extensions.d.ts.map +1 -1
  38. package/dist/cjs/extensions/string-extensions.js +758 -768
  39. package/dist/cjs/extensions/string-extensions.js.map +1 -1
  40. package/dist/cjs/extensions/utils.d.ts.map +1 -1
  41. package/dist/cjs/extensions/utils.js +28 -38
  42. package/dist/cjs/extensions/utils.js.map +1 -1
  43. package/dist/cjs/index.js +32 -42
  44. package/dist/cjs/index.js.map +1 -1
  45. package/dist/cjs/observability/metrics.d.ts +27 -27
  46. package/dist/cjs/observability/metrics.d.ts.map +1 -1
  47. package/dist/cjs/observability/metrics.js +59 -69
  48. package/dist/cjs/observability/metrics.js.map +1 -1
  49. package/dist/cjs/observability/noop-provider.js +28 -38
  50. package/dist/cjs/observability/noop-provider.js.map +1 -1
  51. package/dist/cjs/pool/idle-scaling-pool.d.ts.map +1 -1
  52. package/dist/cjs/pool/idle-scaling-pool.js +134 -144
  53. package/dist/cjs/pool/idle-scaling-pool.js.map +1 -1
  54. package/dist/cjs/pool/isolate-pool.d.ts.map +1 -1
  55. package/dist/cjs/pool/isolate-pool.js +101 -111
  56. package/dist/cjs/pool/isolate-pool.js.map +1 -1
  57. package/dist/cjs/runtime/context.js +418 -428
  58. package/dist/cjs/runtime/context.js.map +1 -1
  59. package/dist/cjs/runtime/index.js +26 -36
  60. package/dist/cjs/runtime/index.js.map +1 -1
  61. package/dist/cjs/runtime/jmespath.js +72 -82
  62. package/dist/cjs/runtime/jmespath.js.map +1 -1
  63. package/dist/cjs/runtime/lazy-proxy.js +238 -248
  64. package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
  65. package/dist/cjs/runtime/safe-globals.d.ts.map +1 -1
  66. package/dist/cjs/runtime/safe-globals.js +134 -144
  67. package/dist/cjs/runtime/safe-globals.js.map +1 -1
  68. package/dist/cjs/runtime/serialize.js +54 -64
  69. package/dist/cjs/runtime/serialize.js.map +1 -1
  70. package/dist/cjs/runtime/utils.js +20 -30
  71. package/dist/cjs/runtime/utils.js.map +1 -1
  72. package/dist/cjs/types/bridge.js +15 -25
  73. package/dist/cjs/types/bridge.js.map +1 -1
  74. package/dist/cjs/types/evaluator.d.ts.map +1 -1
  75. package/dist/cjs/types/evaluator.js +35 -45
  76. package/dist/cjs/types/evaluator.js.map +1 -1
  77. package/dist/cjs/types/index.js +14 -24
  78. package/dist/cjs/types/index.js.map +1 -1
  79. package/dist/cjs/types/runtime.d.ts.map +1 -1
  80. package/dist/cjs/types/runtime.js +27 -37
  81. package/dist/cjs/types/runtime.js.map +1 -1
  82. package/dist/esm/bridge/bridge-messages.d.ts +8 -8
  83. package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
  84. package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -1
  85. package/dist/esm/build.tsbuildinfo +1 -1
  86. package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
  87. package/dist/esm/evaluator/lru-cache.d.ts.map +1 -1
  88. package/dist/esm/evaluator/lru-cache.js.map +1 -1
  89. package/dist/esm/extensions/expression-extension-error.d.ts.map +1 -1
  90. package/dist/esm/extensions/function-extensions.d.ts +10 -18
  91. package/dist/esm/extensions/function-extensions.d.ts.map +1 -1
  92. package/dist/esm/extensions/number-extensions.js.map +1 -1
  93. package/dist/esm/extensions/string-extensions.d.ts +1 -1
  94. package/dist/esm/extensions/string-extensions.d.ts.map +1 -1
  95. package/dist/esm/extensions/string-extensions.js.map +1 -1
  96. package/dist/esm/extensions/utils.d.ts.map +1 -1
  97. package/dist/esm/observability/metrics.d.ts +27 -27
  98. package/dist/esm/observability/metrics.d.ts.map +1 -1
  99. package/dist/esm/pool/idle-scaling-pool.d.ts.map +1 -1
  100. package/dist/esm/pool/idle-scaling-pool.js.map +1 -1
  101. package/dist/esm/pool/isolate-pool.d.ts.map +1 -1
  102. package/dist/esm/pool/isolate-pool.js.map +1 -1
  103. package/dist/esm/runtime/lazy-proxy.js.map +1 -1
  104. package/dist/esm/runtime/safe-globals.d.ts.map +1 -1
  105. package/dist/esm/types/evaluator.d.ts.map +1 -1
  106. package/dist/esm/types/evaluator.js.map +1 -1
  107. package/dist/esm/types/runtime.d.ts.map +1 -1
  108. package/dist/esm/types/runtime.js.map +1 -1
  109. package/package.json +6 -5
@@ -1,95 +1,85 @@
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;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./array-extensions", "./expression-extension-error"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.extendedFunctions = void 0;
13
- const array_extensions_1 = require("./array-extensions");
14
- const expression_extension_error_1 = require("./expression-extension-error");
15
- const min = Math.min;
16
- const max = Math.max;
17
- const numberList = (start, end) => {
18
- const size = Math.abs(start - end) + 1;
19
- const arr = new Array(size);
20
- let curr = start;
21
- for (let i = 0; i < size; i++) {
22
- if (start < end) {
23
- arr[i] = curr++;
24
- }
25
- else {
26
- arr[i] = curr--;
27
- }
28
- }
29
- return arr;
30
- };
31
- const zip = (keys, values) => {
32
- if (!Array.isArray(keys) || !Array.isArray(values)) {
33
- throw new expression_extension_error_1.ExpressionExtensionError('keys and values must be arrays');
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extendedFunctions = void 0;
4
+ const array_extensions_1 = require("./array-extensions");
5
+ const expression_extension_error_1 = require("./expression-extension-error");
6
+ const min = Math.min;
7
+ const max = Math.max;
8
+ const numberList = (start, end) => {
9
+ const size = Math.abs(start - end) + 1;
10
+ const arr = new Array(size);
11
+ let curr = start;
12
+ for (let i = 0; i < size; i++) {
13
+ if (start < end) {
14
+ arr[i] = curr++;
34
15
  }
35
- if (keys.length !== values.length) {
36
- throw new expression_extension_error_1.ExpressionExtensionError('keys and values not of equal length');
16
+ else {
17
+ arr[i] = curr--;
37
18
  }
38
- const result = {};
39
- for (let i = 0; i < keys.length; i++) {
40
- result[keys[i]] = values[i];
41
- }
42
- return result;
43
- };
44
- const average = (...args) => {
45
- return (0, array_extensions_1.average)(args);
46
- };
47
- const not = (value) => {
48
- return !value;
49
- };
50
- function ifEmpty(value, defaultValue) {
51
- if (arguments.length !== 2) {
52
- // DIVERGENCE from packages/workflow/src/extensions/extended-functions.ts:
53
- // The original throws ExpressionError (from ExecutionBaseError). The runtime
54
- // uses ExpressionExtensionError because the full ExpressionError class is not
55
- // available in the extensions layer — only a minimal shim exists in safe-globals.
56
- throw new expression_extension_error_1.ExpressionExtensionError('expected two arguments (value, defaultValue) for this function');
57
- }
58
- if (value === undefined || value === null || value === '') {
19
+ }
20
+ return arr;
21
+ };
22
+ const zip = (keys, values) => {
23
+ if (!Array.isArray(keys) || !Array.isArray(values)) {
24
+ throw new expression_extension_error_1.ExpressionExtensionError('keys and values must be arrays');
25
+ }
26
+ if (keys.length !== values.length) {
27
+ throw new expression_extension_error_1.ExpressionExtensionError('keys and values not of equal length');
28
+ }
29
+ const result = {};
30
+ for (let i = 0; i < keys.length; i++) {
31
+ result[keys[i]] = values[i];
32
+ }
33
+ return result;
34
+ };
35
+ const average = (...args) => {
36
+ return (0, array_extensions_1.average)(args);
37
+ };
38
+ const not = (value) => {
39
+ return !value;
40
+ };
41
+ function ifEmpty(value, defaultValue) {
42
+ if (arguments.length !== 2) {
43
+ // DIVERGENCE from packages/workflow/src/extensions/extended-functions.ts:
44
+ // The original throws ExpressionError (from ExecutionBaseError). The runtime
45
+ // uses ExpressionExtensionError because the full ExpressionError class is not
46
+ // available in the extensions layer — only a minimal shim exists in safe-globals.
47
+ throw new expression_extension_error_1.ExpressionExtensionError('expected two arguments (value, defaultValue) for this function');
48
+ }
49
+ if (value === undefined || value === null || value === '') {
50
+ return defaultValue;
51
+ }
52
+ if (typeof value === 'object') {
53
+ if (Array.isArray(value) && !value.length) {
59
54
  return defaultValue;
60
55
  }
61
- if (typeof value === 'object') {
62
- if (Array.isArray(value) && !value.length) {
63
- return defaultValue;
64
- }
65
- if (!Object.keys(value).length) {
66
- return defaultValue;
67
- }
56
+ if (!Object.keys(value).length) {
57
+ return defaultValue;
68
58
  }
69
- return value;
70
59
  }
71
- ifEmpty.doc = {
72
- name: 'ifEmpty',
73
- description: 'Returns the default value if the value is empty. Empty values are undefined, null, empty strings, arrays without elements and objects without keys.',
74
- returnType: 'any',
75
- args: [
76
- { name: 'value', type: 'any' },
77
- { name: 'defaultValue', type: 'any' },
78
- ],
79
- docURL: 'https://docs.n8n.io/code/builtin/convenience',
80
- };
81
- exports.extendedFunctions = {
82
- min,
83
- max,
84
- not,
85
- average,
86
- numberList,
87
- zip,
88
- $min: min,
89
- $max: max,
90
- $average: average,
91
- $not: not,
92
- $ifEmpty: ifEmpty,
93
- };
94
- });
60
+ return value;
61
+ }
62
+ ifEmpty.doc = {
63
+ name: 'ifEmpty',
64
+ description: 'Returns the default value if the value is empty. Empty values are undefined, null, empty strings, arrays without elements and objects without keys.',
65
+ returnType: 'any',
66
+ args: [
67
+ { name: 'value', type: 'any' },
68
+ { name: 'defaultValue', type: 'any' },
69
+ ],
70
+ docURL: 'https://docs.n8n.io/code/builtin/convenience',
71
+ };
72
+ exports.extendedFunctions = {
73
+ min,
74
+ max,
75
+ not,
76
+ average,
77
+ numberList,
78
+ zip,
79
+ $min: min,
80
+ $max: max,
81
+ $average: average,
82
+ $not: not,
83
+ $ifEmpty: ifEmpty,
84
+ };
95
85
  //# sourceMappingURL=function-extensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"function-extensions.js","sourceRoot":"","sources":["../../../src/extensions/function-extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"function-extensions.js","sourceRoot":"","sources":["../../../src/extensions/function-extensions.ts"],"names":[],"mappings":"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"}