n8n-workflow 2.42.1 → 2.43.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 (233) hide show
  1. package/dist/cjs/build.tsbuildinfo +1 -1
  2. package/dist/cjs/common/get-runnable-nodes.d.ts +31 -0
  3. package/dist/cjs/common/get-runnable-nodes.d.ts.map +1 -0
  4. package/dist/cjs/common/get-runnable-nodes.js +97 -0
  5. package/dist/cjs/common/get-runnable-nodes.js.map +1 -0
  6. package/dist/cjs/common/index.d.ts +1 -0
  7. package/dist/cjs/common/index.d.ts.map +1 -1
  8. package/dist/cjs/common/index.js +1 -0
  9. package/dist/cjs/common/index.js.map +1 -1
  10. package/dist/cjs/constants.d.ts +1 -0
  11. package/dist/cjs/constants.d.ts.map +1 -1
  12. package/dist/cjs/constants.js +4 -3
  13. package/dist/cjs/constants.js.map +1 -1
  14. package/dist/cjs/errors/abstract/execution-base.error.d.ts +1 -1
  15. package/dist/cjs/errors/abstract/execution-base.error.d.ts.map +1 -1
  16. package/dist/cjs/errors/abstract/execution-base.error.js +2 -2
  17. package/dist/cjs/errors/abstract/execution-base.error.js.map +1 -1
  18. package/dist/cjs/errors/db-connection-timeout-error.d.ts +1 -1
  19. package/dist/cjs/errors/db-connection-timeout-error.d.ts.map +1 -1
  20. package/dist/cjs/errors/db-connection-timeout-error.js +2 -2
  21. package/dist/cjs/errors/db-connection-timeout-error.js.map +1 -1
  22. package/dist/cjs/errors/index.d.ts +1 -5
  23. package/dist/cjs/errors/index.d.ts.map +1 -1
  24. package/dist/cjs/errors/index.js +7 -11
  25. package/dist/cjs/errors/index.js.map +1 -1
  26. package/dist/cjs/errors/node-operation.error.js +2 -2
  27. package/dist/cjs/errors/node-operation.error.js.map +1 -1
  28. package/dist/cjs/errors/node-version-not-found.error.d.ts +1 -1
  29. package/dist/cjs/errors/node-version-not-found.error.d.ts.map +1 -1
  30. package/dist/cjs/errors/node-version-not-found.error.js +2 -2
  31. package/dist/cjs/errors/node-version-not-found.error.js.map +1 -1
  32. package/dist/cjs/errors/trigger-close.error.d.ts +1 -1
  33. package/dist/cjs/errors/trigger-close.error.d.ts.map +1 -1
  34. package/dist/cjs/errors/trigger-close.error.js +2 -2
  35. package/dist/cjs/errors/trigger-close.error.js.map +1 -1
  36. package/dist/cjs/execution-context.d.ts +14 -0
  37. package/dist/cjs/execution-context.d.ts.map +1 -1
  38. package/dist/cjs/execution-context.js +21 -0
  39. package/dist/cjs/execution-context.js.map +1 -1
  40. package/dist/cjs/expression.d.ts +6 -0
  41. package/dist/cjs/expression.d.ts.map +1 -1
  42. package/dist/cjs/expression.js +22 -7
  43. package/dist/cjs/expression.js.map +1 -1
  44. package/dist/cjs/expressions/native-evaluation/evaluator.d.ts +21 -0
  45. package/dist/cjs/expressions/native-evaluation/evaluator.d.ts.map +1 -0
  46. package/dist/cjs/expressions/native-evaluation/evaluator.js +372 -0
  47. package/dist/cjs/expressions/native-evaluation/evaluator.js.map +1 -0
  48. package/dist/cjs/expressions/native-evaluation/grammar.d.ts +63 -0
  49. package/dist/cjs/expressions/native-evaluation/grammar.d.ts.map +1 -0
  50. package/dist/cjs/expressions/native-evaluation/grammar.js +113 -0
  51. package/dist/cjs/expressions/native-evaluation/grammar.js.map +1 -0
  52. package/dist/cjs/expressions/native-evaluation/index.d.ts +17 -0
  53. package/dist/cjs/expressions/native-evaluation/index.d.ts.map +1 -0
  54. package/dist/cjs/expressions/native-evaluation/index.js +144 -0
  55. package/dist/cjs/expressions/native-evaluation/index.js.map +1 -0
  56. package/dist/cjs/expressions/native-evaluation/parser.d.ts +6 -0
  57. package/dist/cjs/expressions/native-evaluation/parser.d.ts.map +1 -0
  58. package/dist/cjs/expressions/native-evaluation/parser.js +159 -0
  59. package/dist/cjs/expressions/native-evaluation/parser.js.map +1 -0
  60. package/dist/cjs/extensions/date-extensions.js +2 -2
  61. package/dist/cjs/extensions/number-extensions.js +2 -2
  62. package/dist/cjs/extensions/string-extensions.js +1 -1
  63. package/dist/cjs/index.d.ts +2 -1
  64. package/dist/cjs/index.d.ts.map +1 -1
  65. package/dist/cjs/index.js +5 -1
  66. package/dist/cjs/index.js.map +1 -1
  67. package/dist/cjs/interfaces.d.ts +27 -6
  68. package/dist/cjs/interfaces.d.ts.map +1 -1
  69. package/dist/cjs/interfaces.js +3 -0
  70. package/dist/cjs/interfaces.js.map +1 -1
  71. package/dist/cjs/native-methods/array.methods.js +4 -4
  72. package/dist/cjs/node-helpers.d.ts +13 -1
  73. package/dist/cjs/node-helpers.d.ts.map +1 -1
  74. package/dist/cjs/node-helpers.js +3 -1
  75. package/dist/cjs/node-helpers.js.map +1 -1
  76. package/dist/cjs/node-parameters/filter-parameter.d.ts +1 -1
  77. package/dist/cjs/node-parameters/filter-parameter.d.ts.map +1 -1
  78. package/dist/cjs/node-parameters/filter-parameter.js +2 -2
  79. package/dist/cjs/node-parameters/filter-parameter.js.map +1 -1
  80. package/dist/cjs/node-validation.d.ts +17 -5
  81. package/dist/cjs/node-validation.d.ts.map +1 -1
  82. package/dist/cjs/node-validation.js +39 -16
  83. package/dist/cjs/node-validation.js.map +1 -1
  84. package/dist/cjs/run-execution-data/run-execution-data.v1.d.ts +13 -0
  85. package/dist/cjs/run-execution-data/run-execution-data.v1.d.ts.map +1 -1
  86. package/dist/cjs/run-execution-data/run-execution-data.v1.js.map +1 -1
  87. package/dist/cjs/run-execution-data-factory.d.ts +1 -0
  88. package/dist/cjs/run-execution-data-factory.d.ts.map +1 -1
  89. package/dist/cjs/run-execution-data-factory.js +1 -0
  90. package/dist/cjs/run-execution-data-factory.js.map +1 -1
  91. package/dist/cjs/sub-workflow-output.d.ts +13 -1
  92. package/dist/cjs/sub-workflow-output.d.ts.map +1 -1
  93. package/dist/cjs/sub-workflow-output.js +64 -0
  94. package/dist/cjs/sub-workflow-output.js.map +1 -1
  95. package/dist/cjs/utils.js +2 -2
  96. package/dist/cjs/utils.js.map +1 -1
  97. package/dist/cjs/webhook-description-fields.d.ts +31 -0
  98. package/dist/cjs/webhook-description-fields.d.ts.map +1 -1
  99. package/dist/cjs/webhook-description-fields.js +34 -0
  100. package/dist/cjs/webhook-description-fields.js.map +1 -1
  101. package/dist/esm/common/get-runnable-nodes.d.ts +31 -0
  102. package/dist/esm/common/get-runnable-nodes.d.ts.map +1 -0
  103. package/dist/esm/common/get-runnable-nodes.js +93 -0
  104. package/dist/esm/common/get-runnable-nodes.js.map +1 -0
  105. package/dist/esm/common/index.d.ts +1 -0
  106. package/dist/esm/common/index.d.ts.map +1 -1
  107. package/dist/esm/common/index.js +1 -0
  108. package/dist/esm/common/index.js.map +1 -1
  109. package/dist/esm/constants.d.ts +1 -0
  110. package/dist/esm/constants.d.ts.map +1 -1
  111. package/dist/esm/constants.js +1 -0
  112. package/dist/esm/constants.js.map +1 -1
  113. package/dist/esm/errors/abstract/execution-base.error.d.ts +1 -1
  114. package/dist/esm/errors/abstract/execution-base.error.d.ts.map +1 -1
  115. package/dist/esm/errors/abstract/execution-base.error.js +1 -1
  116. package/dist/esm/errors/abstract/execution-base.error.js.map +1 -1
  117. package/dist/esm/errors/db-connection-timeout-error.d.ts +1 -1
  118. package/dist/esm/errors/db-connection-timeout-error.d.ts.map +1 -1
  119. package/dist/esm/errors/db-connection-timeout-error.js +1 -1
  120. package/dist/esm/errors/db-connection-timeout-error.js.map +1 -1
  121. package/dist/esm/errors/index.d.ts +1 -5
  122. package/dist/esm/errors/index.d.ts.map +1 -1
  123. package/dist/esm/errors/index.js +1 -5
  124. package/dist/esm/errors/index.js.map +1 -1
  125. package/dist/esm/errors/node-operation.error.js +1 -1
  126. package/dist/esm/errors/node-operation.error.js.map +1 -1
  127. package/dist/esm/errors/node-version-not-found.error.d.ts +1 -1
  128. package/dist/esm/errors/node-version-not-found.error.d.ts.map +1 -1
  129. package/dist/esm/errors/node-version-not-found.error.js +1 -1
  130. package/dist/esm/errors/node-version-not-found.error.js.map +1 -1
  131. package/dist/esm/errors/trigger-close.error.d.ts +1 -1
  132. package/dist/esm/errors/trigger-close.error.d.ts.map +1 -1
  133. package/dist/esm/errors/trigger-close.error.js +1 -1
  134. package/dist/esm/errors/trigger-close.error.js.map +1 -1
  135. package/dist/esm/execution-context.d.ts +14 -0
  136. package/dist/esm/execution-context.d.ts.map +1 -1
  137. package/dist/esm/execution-context.js +20 -0
  138. package/dist/esm/execution-context.js.map +1 -1
  139. package/dist/esm/expression.d.ts +6 -0
  140. package/dist/esm/expression.d.ts.map +1 -1
  141. package/dist/esm/expression.js +22 -7
  142. package/dist/esm/expression.js.map +1 -1
  143. package/dist/esm/expressions/native-evaluation/evaluator.d.ts +21 -0
  144. package/dist/esm/expressions/native-evaluation/evaluator.d.ts.map +1 -0
  145. package/dist/esm/expressions/native-evaluation/evaluator.js +366 -0
  146. package/dist/esm/expressions/native-evaluation/evaluator.js.map +1 -0
  147. package/dist/esm/expressions/native-evaluation/grammar.d.ts +63 -0
  148. package/dist/esm/expressions/native-evaluation/grammar.d.ts.map +1 -0
  149. package/dist/esm/expressions/native-evaluation/grammar.js +108 -0
  150. package/dist/esm/expressions/native-evaluation/grammar.js.map +1 -0
  151. package/dist/esm/expressions/native-evaluation/index.d.ts +17 -0
  152. package/dist/esm/expressions/native-evaluation/index.d.ts.map +1 -0
  153. package/dist/esm/expressions/native-evaluation/index.js +137 -0
  154. package/dist/esm/expressions/native-evaluation/index.js.map +1 -0
  155. package/dist/esm/expressions/native-evaluation/parser.d.ts +6 -0
  156. package/dist/esm/expressions/native-evaluation/parser.d.ts.map +1 -0
  157. package/dist/esm/expressions/native-evaluation/parser.js +156 -0
  158. package/dist/esm/expressions/native-evaluation/parser.js.map +1 -0
  159. package/dist/esm/extensions/date-extensions.js +2 -2
  160. package/dist/esm/extensions/number-extensions.js +2 -2
  161. package/dist/esm/extensions/string-extensions.js +1 -1
  162. package/dist/esm/index.d.ts +2 -1
  163. package/dist/esm/index.d.ts.map +1 -1
  164. package/dist/esm/index.js +2 -1
  165. package/dist/esm/index.js.map +1 -1
  166. package/dist/esm/interfaces.d.ts +27 -6
  167. package/dist/esm/interfaces.d.ts.map +1 -1
  168. package/dist/esm/interfaces.js +3 -0
  169. package/dist/esm/interfaces.js.map +1 -1
  170. package/dist/esm/native-methods/array.methods.js +4 -4
  171. package/dist/esm/node-helpers.d.ts +13 -1
  172. package/dist/esm/node-helpers.d.ts.map +1 -1
  173. package/dist/esm/node-helpers.js +3 -1
  174. package/dist/esm/node-helpers.js.map +1 -1
  175. package/dist/esm/node-parameters/filter-parameter.d.ts +1 -1
  176. package/dist/esm/node-parameters/filter-parameter.d.ts.map +1 -1
  177. package/dist/esm/node-parameters/filter-parameter.js +1 -1
  178. package/dist/esm/node-parameters/filter-parameter.js.map +1 -1
  179. package/dist/esm/node-validation.d.ts +17 -5
  180. package/dist/esm/node-validation.d.ts.map +1 -1
  181. package/dist/esm/node-validation.js +39 -16
  182. package/dist/esm/node-validation.js.map +1 -1
  183. package/dist/esm/run-execution-data/run-execution-data.v1.d.ts +13 -0
  184. package/dist/esm/run-execution-data/run-execution-data.v1.d.ts.map +1 -1
  185. package/dist/esm/run-execution-data/run-execution-data.v1.js.map +1 -1
  186. package/dist/esm/run-execution-data-factory.d.ts +1 -0
  187. package/dist/esm/run-execution-data-factory.d.ts.map +1 -1
  188. package/dist/esm/run-execution-data-factory.js +1 -0
  189. package/dist/esm/run-execution-data-factory.js.map +1 -1
  190. package/dist/esm/sub-workflow-output.d.ts +13 -1
  191. package/dist/esm/sub-workflow-output.d.ts.map +1 -1
  192. package/dist/esm/sub-workflow-output.js +60 -0
  193. package/dist/esm/sub-workflow-output.js.map +1 -1
  194. package/dist/esm/typecheck.tsbuildinfo +1 -1
  195. package/dist/esm/utils.js +1 -1
  196. package/dist/esm/utils.js.map +1 -1
  197. package/dist/esm/webhook-description-fields.d.ts +31 -0
  198. package/dist/esm/webhook-description-fields.d.ts.map +1 -1
  199. package/dist/esm/webhook-description-fields.js +33 -0
  200. package/dist/esm/webhook-description-fields.js.map +1 -1
  201. package/package.json +15 -14
  202. package/dist/cjs/errors/base/base.error.d.ts +0 -26
  203. package/dist/cjs/errors/base/base.error.d.ts.map +0 -1
  204. package/dist/cjs/errors/base/base.error.js +0 -43
  205. package/dist/cjs/errors/base/base.error.js.map +0 -1
  206. package/dist/cjs/errors/base/operational.error.d.ts +0 -16
  207. package/dist/cjs/errors/base/operational.error.d.ts.map +0 -1
  208. package/dist/cjs/errors/base/operational.error.js +0 -19
  209. package/dist/cjs/errors/base/operational.error.js.map +0 -1
  210. package/dist/cjs/errors/base/unexpected.error.d.ts +0 -16
  211. package/dist/cjs/errors/base/unexpected.error.d.ts.map +0 -1
  212. package/dist/cjs/errors/base/unexpected.error.js +0 -19
  213. package/dist/cjs/errors/base/unexpected.error.js.map +0 -1
  214. package/dist/cjs/errors/base/user.error.d.ts +0 -18
  215. package/dist/cjs/errors/base/user.error.d.ts.map +0 -1
  216. package/dist/cjs/errors/base/user.error.js +0 -19
  217. package/dist/cjs/errors/base/user.error.js.map +0 -1
  218. package/dist/esm/errors/base/base.error.d.ts +0 -26
  219. package/dist/esm/errors/base/base.error.d.ts.map +0 -1
  220. package/dist/esm/errors/base/base.error.js +0 -36
  221. package/dist/esm/errors/base/base.error.js.map +0 -1
  222. package/dist/esm/errors/base/operational.error.d.ts +0 -16
  223. package/dist/esm/errors/base/operational.error.d.ts.map +0 -1
  224. package/dist/esm/errors/base/operational.error.js +0 -15
  225. package/dist/esm/errors/base/operational.error.js.map +0 -1
  226. package/dist/esm/errors/base/unexpected.error.d.ts +0 -16
  227. package/dist/esm/errors/base/unexpected.error.d.ts.map +0 -1
  228. package/dist/esm/errors/base/unexpected.error.js +0 -15
  229. package/dist/esm/errors/base/unexpected.error.js.map +0 -1
  230. package/dist/esm/errors/base/user.error.d.ts +0 -18
  231. package/dist/esm/errors/base/user.error.d.ts.map +0 -1
  232. package/dist/esm/errors/base/user.error.js +0 -15
  233. package/dist/esm/errors/base/user.error.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ import type { namedTypes } from 'ast-types';
2
+ export declare const BINARY_OPS: readonly ['===', '!==', '==', '!=', '<', '<=', '>', '>=', '+', '-', '*', '/', '%'];
3
+ export declare const UNARY_OPS: readonly ['!', '-', '+'];
4
+ export type BinaryOp = (typeof BINARY_OPS)[number];
5
+ export type LogicalOp = namedTypes.LogicalExpression['operator'];
6
+ export type UnaryOp = (typeof UNARY_OPS)[number];
7
+ export type SimpleNode = {
8
+ kind: 'literal';
9
+ value: string | number | boolean | null;
10
+ } | {
11
+ kind: 'root';
12
+ name: '$json' | '$parameter';
13
+ } | {
14
+ kind: 'undefined';
15
+ } | {
16
+ kind: 'member';
17
+ object: SimpleNode;
18
+ key: string | number;
19
+ optional: boolean;
20
+ } | {
21
+ kind: 'chain';
22
+ expression: SimpleNode;
23
+ } | {
24
+ kind: 'unary';
25
+ op: UnaryOp;
26
+ argument: SimpleNode;
27
+ } | {
28
+ kind: 'binary';
29
+ op: BinaryOp;
30
+ left: SimpleNode;
31
+ right: SimpleNode;
32
+ } | {
33
+ kind: 'logical';
34
+ op: LogicalOp;
35
+ left: SimpleNode;
36
+ right: SimpleNode;
37
+ } | {
38
+ kind: 'conditional';
39
+ test: SimpleNode;
40
+ consequent: SimpleNode;
41
+ alternate: SimpleNode;
42
+ } | {
43
+ kind: 'call';
44
+ receiver: SimpleNode;
45
+ method: string;
46
+ args: SimpleNode[];
47
+ optional: boolean;
48
+ };
49
+ export declare const isArray: (arg: any) => arg is any[];
50
+ export declare const hasOwn: (o: object, v: PropertyKey) => boolean;
51
+ export declare const toStr: StringConstructor;
52
+ export declare const toNum: NumberConstructor;
53
+ export declare const clone: typeof structuredClone;
54
+ export type NativeMethod = (this: unknown, ...args: unknown[]) => unknown;
55
+ export declare const STRING_METHODS: ReadonlyMap<string, NativeMethod>;
56
+ export declare const NUMBER_METHODS: ReadonlyMap<string, NativeMethod>;
57
+ export declare const ARRAY_METHODS: ReadonlyMap<string, NativeMethod>;
58
+ export declare const CALLABLE_METHODS: Set<string>;
59
+ export declare const MAX_RESULT_LENGTH = 1000000;
60
+ export declare const MAX_DEPTH = 64;
61
+ export declare const isObj: (value: unknown) => value is Record<string, unknown>;
62
+ export declare const isOneOf: <T extends string>(ops: readonly T[], op: unknown) => op is T;
63
+ //# sourceMappingURL=grammar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/grammar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isOneOf = exports.isObj = exports.MAX_DEPTH = exports.MAX_RESULT_LENGTH = exports.CALLABLE_METHODS = exports.ARRAY_METHODS = exports.NUMBER_METHODS = exports.STRING_METHODS = exports.clone = exports.toNum = exports.toStr = exports.hasOwn = exports.isArray = exports.UNARY_OPS = exports.BINARY_OPS = void 0;
4
+ // The closed subset grammar, its operator and method allowlists, and the
5
+ // limits the parser and the evaluator share. See index.ts for the overview.
6
+ exports.BINARY_OPS = [
7
+ '===',
8
+ '!==',
9
+ '==',
10
+ '!=',
11
+ '<',
12
+ '<=',
13
+ '>',
14
+ '>=',
15
+ '+',
16
+ '-',
17
+ '*',
18
+ '/',
19
+ '%',
20
+ ];
21
+ exports.UNARY_OPS = ['!', '-', '+'];
22
+ // Roots are `$json` and `$parameter` only (the literal comparisons in
23
+ // parseIdentifier). More roots are CAT-4697. `$now`/`$today` are excluded on
24
+ // purpose: they are Luxon DateTimes whose methods would make every useful
25
+ // expression on them a CallExpression anyway.
26
+ //
27
+ // Note on $parameter: the proxy resolves nested `=` parameter values by
28
+ // re-entering resolveSimpleParameterValue - a nested non-simple value simply
29
+ // takes the engine path there (under lazy acquisition, creating the bridge on
30
+ // demand).
31
+ // Intrinsics are captured at import so a later patch to a prototype or a
32
+ // global (a polyfill, a community package) does not change what the native
33
+ // path runs; the isolates never see such a patch either.
34
+ ({ isArray: exports.isArray } = Array);
35
+ ({ hasOwn: exports.hasOwn } = Object);
36
+ exports.toStr = String;
37
+ exports.toNum = Number;
38
+ exports.clone = structuredClone;
39
+ const captureMethods = (proto, names) => {
40
+ const methods = new Map();
41
+ for (const name of names) {
42
+ const method = Reflect.get(proto, name);
43
+ if (typeof method === 'function')
44
+ methods.set(name, method);
45
+ }
46
+ return methods;
47
+ };
48
+ // Native prototype methods callable on a receiver of the matching type.
49
+ // Every name here must stay disjoint from the expression-extension method
50
+ // names (extendSyntax rewrites extension calls into `extend()` dispatch;
51
+ // natives pass through untouched) - pinned by a test in the parity corpus.
52
+ // The receiver's type is only known at runtime: a receiver whose type has no
53
+ // allowlist entry for the method makes the evaluation bail to the engine
54
+ // (EngineFallbackError below). Callback-taking forms (regex/function args,
55
+ // array callbacks) are unrepresentable: those argument nodes decline parsing.
56
+ // Accepting callbacks is CAT-4698.
57
+ exports.STRING_METHODS = captureMethods(String.prototype, [
58
+ 'toUpperCase',
59
+ 'toLowerCase',
60
+ 'trim',
61
+ 'trimStart',
62
+ 'trimEnd',
63
+ 'includes',
64
+ 'startsWith',
65
+ 'endsWith',
66
+ 'slice',
67
+ 'indexOf',
68
+ 'charAt',
69
+ 'replace',
70
+ 'replaceAll',
71
+ ]);
72
+ exports.NUMBER_METHODS = captureMethods(Number.prototype, [
73
+ 'toFixed',
74
+ 'toPrecision',
75
+ 'toString',
76
+ ]);
77
+ // Non-mutating methods only: the receiver is the live workflow data (the vm
78
+ // engine evaluates a copy inside the isolate), so an in-place mutator like
79
+ // sort()/reverse()/fill() would corrupt execution data as a side effect. Use
80
+ // the toSorted()/toReversed() immutable variants instead. Iterator-returning
81
+ // methods (entries/values/keys) are also excluded: a live iterator has no
82
+ // equivalent representation across the engine boundary.
83
+ exports.ARRAY_METHODS = captureMethods(Array.prototype, [
84
+ 'includes',
85
+ 'indexOf',
86
+ 'lastIndexOf',
87
+ 'join',
88
+ 'slice',
89
+ 'at',
90
+ 'concat',
91
+ 'flat',
92
+ 'toSorted',
93
+ 'toReversed',
94
+ ]);
95
+ exports.CALLABLE_METHODS = new Set([
96
+ ...exports.STRING_METHODS.keys(),
97
+ ...exports.NUMBER_METHODS.keys(),
98
+ ...exports.ARRAY_METHODS.keys(),
99
+ ]);
100
+ // The engine evaluates under a timeout and a memory limit; this interpreter
101
+ // has neither. A string or array result above this length is handed to the
102
+ // engine so those limits apply (nested replaceAll('', ...) or concat chains
103
+ // can otherwise expand without bound on the main thread).
104
+ exports.MAX_RESULT_LENGTH = 1_000_000;
105
+ // Nesting depth of the subset grammar. Parsing and evaluation both recurse
106
+ // once per level, so this keeps a pathological expression off the host stack;
107
+ // real expressions are a handful of levels deep.
108
+ exports.MAX_DEPTH = 64;
109
+ const isObj = (value) => typeof value === 'object' && value !== null;
110
+ exports.isObj = isObj;
111
+ const isOneOf = (ops, op) => typeof op === 'string' && ops.includes(op);
112
+ exports.isOneOf = isOneOf;
113
+ //# sourceMappingURL=grammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/grammar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { IWorkflowDataProxyData } from '../../interfaces';
2
+ export { CALLABLE_METHODS, MAX_RESULT_LENGTH } from './grammar';
3
+ /** Does the expression (leading `=` stripped) fit the native subset? */
4
+ export declare function isNativelyEvaluable(expression: string): boolean;
5
+ /**
6
+ * Evaluate an expression (with the leading `=` already stripped) in-process.
7
+ * Returns `{ handled: false }` when the expression is outside the subset or a
8
+ * runtime value fell outside what parsing proved; the caller must then run
9
+ * the regular pipeline.
10
+ */
11
+ export declare function evaluateNatively(expression: string, data: IWorkflowDataProxyData): {
12
+ handled: true;
13
+ value: unknown;
14
+ } | {
15
+ handled: false;
16
+ };
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAyGhE,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,sBAAsB,GAC1B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,CAYxD"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_RESULT_LENGTH = exports.CALLABLE_METHODS = void 0;
4
+ exports.isNativelyEvaluable = isNativelyEvaluable;
5
+ exports.evaluateNatively = evaluateNatively;
6
+ const tournament_1 = require("@n8n/tournament");
7
+ const lru_cache_1 = require("@n8n/utils/lru-cache");
8
+ const evaluator_1 = require("./evaluator");
9
+ const grammar_1 = require("./grammar");
10
+ const parser_1 = require("./parser");
11
+ var grammar_2 = require("./grammar");
12
+ Object.defineProperty(exports, "CALLABLE_METHODS", { enumerable: true, get: function () { return grammar_2.CALLABLE_METHODS; } });
13
+ Object.defineProperty(exports, "MAX_RESULT_LENGTH", { enumerable: true, get: function () { return grammar_2.MAX_RESULT_LENGTH; } });
14
+ // null = outside the subset. Declined expressions are cached too, so an
15
+ // expression the engine owns costs one parse here, not one per evaluation.
16
+ // Entries are keyed by expression text, so the key length is capped to keep
17
+ // the cache's memory bounded; longer expressions are compiled per evaluation.
18
+ const cache = new lru_cache_1.LruCache(1024);
19
+ const MAX_CACHED_EXPRESSION_LENGTH = 10_000;
20
+ // One code chunk of the split expression, or null when it is outside the
21
+ // subset. A throw during the re-parse must always mean "declined", never
22
+ // escape.
23
+ function compileChunk(chunk) {
24
+ const body = chunk.parsed.program.body;
25
+ if (body.length !== 1)
26
+ return null;
27
+ const statement = body[0];
28
+ if (statement.type !== 'ExpressionStatement')
29
+ return null;
30
+ try {
31
+ return (0, parser_1.parseSimple)(statement.expression);
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
37
+ function compile(expression) {
38
+ let parsed;
39
+ try {
40
+ parsed = (0, tournament_1.getParsedExpression)(expression);
41
+ }
42
+ catch {
43
+ // Syntax errors fall through to the engine for its error reporting.
44
+ return null;
45
+ }
46
+ const chunks = [];
47
+ for (const chunk of parsed) {
48
+ if (chunk.type === 'text') {
49
+ chunks.push(chunk);
50
+ continue;
51
+ }
52
+ const node = compileChunk(chunk);
53
+ if (node === null)
54
+ return null;
55
+ chunks.push({ type: 'code', node });
56
+ }
57
+ // Mirrors the branch condition in ExpressionBuilder.getExpressionCode.
58
+ const isWholeValue = chunks.length === 2 && chunks[0].type === 'text' && chunks[0].text === '';
59
+ return { chunks, isWholeValue };
60
+ }
61
+ function getCompiled(expression) {
62
+ if (expression.length > MAX_CACHED_EXPRESSION_LENGTH)
63
+ return compile(expression);
64
+ let compiled = cache.get(expression);
65
+ if (compiled === undefined) {
66
+ compiled = compile(expression);
67
+ cache.set(expression, compiled);
68
+ }
69
+ return compiled;
70
+ }
71
+ /** Does the expression (leading `=` stripped) fit the native subset? */
72
+ function isNativelyEvaluable(expression) {
73
+ return getCompiled(expression) !== null;
74
+ }
75
+ /**
76
+ * Evaluate an expression (with the leading `=` already stripped) in-process.
77
+ * Returns `{ handled: false }` when the expression is outside the subset or a
78
+ * runtime value fell outside what parsing proved; the caller must then run
79
+ * the regular pipeline.
80
+ */
81
+ function evaluateNatively(expression, data) {
82
+ const compiled = getCompiled(expression);
83
+ if (compiled === null)
84
+ return { handled: false };
85
+ try {
86
+ const value = copyResult(evalCompiled(compiled, data));
87
+ return { handled: true, value };
88
+ }
89
+ catch (error) {
90
+ if (error instanceof evaluator_1.EngineFallbackError)
91
+ return { handled: false };
92
+ throw error;
93
+ }
94
+ }
95
+ // The engines hand back a copy of any object they return; a whole-value read
96
+ // like `{{ $json.body }}` here would hand back the live execution data, which
97
+ // callers then mutate in place (cleanupParameterData). Match the engines.
98
+ // The `$parameter` root is a Proxy and cannot be cloned: the engine owns it.
99
+ function copyResult(value) {
100
+ if (!(0, grammar_1.isObj)(value))
101
+ return value;
102
+ try {
103
+ return (0, grammar_1.clone)(value);
104
+ }
105
+ catch {
106
+ throw new evaluator_1.EngineFallbackError();
107
+ }
108
+ }
109
+ function evalCompiled(compiled, data) {
110
+ if (compiled.isWholeValue) {
111
+ const code = compiled.chunks[1];
112
+ // isWholeValue guarantees chunks = [text '', code]
113
+ return code.type === 'code' ? (0, evaluator_1.evalChunk)(code.node, data) : '';
114
+ }
115
+ // String concatenation, mirroring tmpl semantics: falsy chunk values other
116
+ // than 0/false render as '', parts are joined with String() coercion.
117
+ const parts = [];
118
+ let length = 0;
119
+ for (const chunk of compiled.chunks) {
120
+ if (chunk.type === 'text') {
121
+ if (chunk.text !== '')
122
+ parts.push(chunk.text);
123
+ length += chunk.text.length;
124
+ continue;
125
+ }
126
+ const value = (0, evaluator_1.evalChunk)(chunk.node, data);
127
+ // An object here would coerce through its toString on the host.
128
+ if ((0, grammar_1.isObj)(value)) {
129
+ throw new evaluator_1.EngineFallbackError();
130
+ }
131
+ const part = value || value === 0 || value === false ? value : '';
132
+ parts.push(part);
133
+ length += typeof part === 'string' ? part.length : 1;
134
+ // Bound before the join allocates the combined string.
135
+ if (length > grammar_1.MAX_RESULT_LENGTH)
136
+ throw new evaluator_1.EngineFallbackError();
137
+ }
138
+ // Single-chunk expressions (plain text, or a lone blank `{{}}`) return the
139
+ // part as-is; everything else joins to a string.
140
+ if (compiled.chunks.length < 2)
141
+ return parts[0] ?? '';
142
+ return (0, evaluator_1.bounded)(parts.join(''));
143
+ }
144
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ExpressionKind, SpreadElementKind } from 'ast-types/lib/gen/kinds';
2
+ import { type SimpleNode } from './grammar';
3
+ type AstNode = ExpressionKind | SpreadElementKind;
4
+ export declare function parseSimple(node: AstNode, depth?: number): SimpleNode | null;
5
+ export {};
6
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,OAAO,EAMN,KAAK,UAAU,EACf,MAAM,WAAW,CAAC;AAcnB,KAAK,OAAO,GAAG,cAAc,GAAG,iBAAiB,CAAC;AA0JlD,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,UAAU,GAAG,IAAI,CA4BvE"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSimple = parseSimple;
4
+ const grammar_1 = require("./grammar");
5
+ const utils_1 = require("../../utils");
6
+ function parseLiteral(node) {
7
+ // Regex literals stay on the engine (backtracking blowup has no isolate
8
+ // timeout here).
9
+ if ('regex' in node && node.regex)
10
+ return null;
11
+ // BigInt literals carry `bigint` metadata; `value` is null where BigInt
12
+ // is unsupported, so decline on the metadata rather than the value.
13
+ if ('bigint' in node && node.bigint)
14
+ return null;
15
+ const value = node.value;
16
+ const isPrimitiveLiteral = value === null ||
17
+ typeof value === 'string' ||
18
+ typeof value === 'number' ||
19
+ typeof value === 'boolean';
20
+ if (!isPrimitiveLiteral)
21
+ return null;
22
+ return { kind: 'literal', value };
23
+ }
24
+ function parseIdentifier(node) {
25
+ if (node.name === '$json' || node.name === '$parameter') {
26
+ return { kind: 'root', name: node.name };
27
+ }
28
+ if (node.name === 'undefined') {
29
+ return { kind: 'undefined' };
30
+ }
31
+ return null;
32
+ }
33
+ // Only static keys are representable. Dynamic keys ($json[$json.key]) need
34
+ // the sandbox's PrototypeSanitizer, so they stay on the engine. String keys
35
+ // are vetted at parse time (isSafeObjectProperty), which keeps prototype
36
+ // names unrepresentable. An own-property-only lookup would make that vetting
37
+ // unnecessary, but $json/$parameter are get-trap proxies for which
38
+ // Object.hasOwn misreports every key, so the parse-time vet is the boundary.
39
+ function parseMember(node, parse) {
40
+ const object = parse(node.object);
41
+ if (object === null)
42
+ return null;
43
+ const key = node.computed === true ? parseComputedKey(node.property) : parseStaticKey(node.property);
44
+ if (key === null)
45
+ return null;
46
+ return { kind: 'member', object, key, optional: node.optional === true };
47
+ }
48
+ // `a[0]` or `a['b']`: the key is a literal.
49
+ function parseComputedKey(property) {
50
+ if (property.type !== 'Literal')
51
+ return null;
52
+ const value = property.value;
53
+ if (typeof value === 'number') {
54
+ return value;
55
+ }
56
+ if (typeof value === 'string' && (0, utils_1.isSafeObjectProperty)(value)) {
57
+ return value;
58
+ }
59
+ return null;
60
+ }
61
+ // `a.b`: the key is an identifier.
62
+ function parseStaticKey(property) {
63
+ if (property.type !== 'Identifier' || !(0, utils_1.isSafeObjectProperty)(property.name))
64
+ return null;
65
+ return property.name;
66
+ }
67
+ function parseCall(node, parse) {
68
+ const callee = node.callee;
69
+ if (callee.type !== 'MemberExpression' || callee.computed === true)
70
+ return null;
71
+ const property = callee.property;
72
+ if (property.type !== 'Identifier' || !grammar_1.CALLABLE_METHODS.has(property.name))
73
+ return null;
74
+ const receiver = parse(callee.object);
75
+ if (receiver === null)
76
+ return null;
77
+ const args = [];
78
+ for (const argument of node.arguments) {
79
+ const parsed = parse(argument);
80
+ if (parsed === null)
81
+ return null;
82
+ args.push(parsed);
83
+ }
84
+ // `a?.m()` marks the member optional, `a.m?.()` marks the call optional;
85
+ // both short-circuit on a missing receiver, so one flag carries both.
86
+ const optional = node.optional === true || callee.optional === true;
87
+ return { kind: 'call', receiver, method: property.name, args, optional };
88
+ }
89
+ // The wrapper esprima puts around every optional chain. It is the boundary an
90
+ // optional hop short-circuits to: `a?.b.c` yields undefined for a missing
91
+ // `a`, while `(a?.b).c` throws. Parentheses end the chain in the AST too.
92
+ function parseChain(node, parse) {
93
+ const expression = parse(node.expression);
94
+ if (expression === null)
95
+ return null;
96
+ return { kind: 'chain', expression };
97
+ }
98
+ function parseBranches(node, parse) {
99
+ const test = parse(node.test);
100
+ const consequent = parse(node.consequent);
101
+ const alternate = parse(node.alternate);
102
+ if (test === null || consequent === null || alternate === null)
103
+ return null;
104
+ return { kind: 'conditional', test, consequent, alternate };
105
+ }
106
+ function parseUnary(node, parse) {
107
+ if (node.prefix !== true || !(0, grammar_1.isOneOf)(grammar_1.UNARY_OPS, node.operator))
108
+ return null;
109
+ const argument = parse(node.argument);
110
+ if (argument === null)
111
+ return null;
112
+ return { kind: 'unary', op: node.operator, argument };
113
+ }
114
+ function parseBinary(node, parse) {
115
+ if (!(0, grammar_1.isOneOf)(grammar_1.BINARY_OPS, node.operator))
116
+ return null;
117
+ const left = parse(node.left);
118
+ const right = parse(node.right);
119
+ if (left === null || right === null)
120
+ return null;
121
+ return { kind: 'binary', op: node.operator, left, right };
122
+ }
123
+ function parseLogical(node, parse) {
124
+ const left = parse(node.left);
125
+ const right = parse(node.right);
126
+ if (left === null || right === null)
127
+ return null;
128
+ return { kind: 'logical', op: node.operator, left, right };
129
+ }
130
+ function parseSimple(node, depth = 0) {
131
+ if (depth > grammar_1.MAX_DEPTH)
132
+ return null;
133
+ const parse = (child) => parseSimple(child, depth + 1);
134
+ switch (node.type) {
135
+ case 'Literal':
136
+ return parseLiteral(node);
137
+ case 'Identifier':
138
+ return parseIdentifier(node);
139
+ case 'MemberExpression':
140
+ return parseMember(node, parse);
141
+ case 'ChainExpression':
142
+ return parseChain(node, parse);
143
+ case 'UnaryExpression':
144
+ return parseUnary(node, parse);
145
+ case 'BinaryExpression':
146
+ return parseBinary(node, parse);
147
+ case 'LogicalExpression':
148
+ return parseLogical(node, parse);
149
+ case 'ConditionalExpression':
150
+ return parseBranches(node, parse);
151
+ case 'CallExpression':
152
+ return parseCall(node, parse);
153
+ default:
154
+ // Everything else (functions, templates, object/array literals,
155
+ // regex, dynamic keys, spread, ...) is outside the subset.
156
+ return null;
157
+ }
158
+ }
159
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/parser.ts"],"names":[],"mappings":"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"}
@@ -379,7 +379,7 @@ minus.doc = {
379
379
  args: [
380
380
  {
381
381
  name: 'n',
382
- description: 'The number of units to subtract. Or use a Luxon <a target="_blank" href=”https://moment.github.io/luxon/api-docs/index.html#duration”>Duration</a> object to subtract multiple units at once.',
382
+ description: 'The number of units to subtract. Or use a Luxon <a target="_blank" href="https://moment.github.io/luxon/api-docs/index.html#duration">Duration</a> object to subtract multiple units at once.',
383
383
  type: 'number | object',
384
384
  },
385
385
  {
@@ -410,7 +410,7 @@ plus.doc = {
410
410
  args: [
411
411
  {
412
412
  name: 'n',
413
- description: 'The number of units to add. Or use a Luxon <a target="_blank" href=”https://moment.github.io/luxon/api-docs/index.html#duration”>Duration</a> object to add multiple units at once.',
413
+ description: 'The number of units to add. Or use a Luxon <a target="_blank" href="https://moment.github.io/luxon/api-docs/index.html#duration">Duration</a> object to add multiple units at once.',
414
414
  type: 'number | object',
415
415
  },
416
416
  {
@@ -112,7 +112,7 @@ isOdd.doc = {
112
112
  };
113
113
  format.doc = {
114
114
  name: 'format',
115
- 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>.',
115
+ 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>.',
116
116
  examples: [
117
117
  { example: "(123456.789).format('de-DE')", evaluated: '123.456,789' },
118
118
  {
@@ -125,7 +125,7 @@ format.doc = {
125
125
  {
126
126
  name: 'locale',
127
127
  optional: true,
128
- 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>',
128
+ 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>pt-BR</code>',
129
129
  default: '"en-US"',
130
130
  type: 'string',
131
131
  },
@@ -406,7 +406,7 @@ toDate.doc = {
406
406
  };
407
407
  toDateTime.doc = {
408
408
  name: 'toDateTime',
409
- description: 'Converts the string to a <a target="_blank" href="https://moment.github.io/luxon/api-docs/">Luxon</a> DateTime. Useful for further transformation. Supported formats for the string are ISO 8601, HTTP, RFC2822, SQL and Unix timestamp in milliseconds. To parse other formats, use <a target="_blank" href=”https://moment.github.io/luxon/api-docs/index.html#datetimefromformat”> <code>DateTime.fromFormat()</code></a>.',
409
+ description: 'Converts the string to a <a target="_blank" href="https://moment.github.io/luxon/api-docs/">Luxon</a> DateTime. Useful for further transformation. Supported formats for the string are ISO 8601, HTTP, RFC2822, SQL and Unix timestamp in milliseconds. To parse other formats, use <a target="_blank" href="https://moment.github.io/luxon/api-docs/index.html#datetimefromformat"> <code>DateTime.fromFormat()</code></a>.',
410
410
  section: 'cast',
411
411
  returnType: 'DateTime',
412
412
  docURL: 'https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/string#stringtodatetime',
@@ -15,7 +15,8 @@ export * from './dynamic-credentials-helpers';
15
15
  export * from './safe-regex';
16
16
  export * from './global-state';
17
17
  export * from './interfaces';
18
- export { fromFunction, fromParameter, nodeParametersAreStatic, resolveWebhookDescriptionField, webhookDescriptionFields, webhookDescriptionIsNativelyResolvable, type NativeResolution, type WebhookDescriptionField, } from './webhook-description-fields';
18
+ export { fromExpression, fromFunction, fromParameter, nodeParametersAreStatic, resolveWebhookDescriptionField, webhookDescriptionFields, webhookDescriptionIsNativelyResolvable, type NativeResolution, type WebhookDescriptionField, } from './webhook-description-fields';
19
+ export { isNativelyEvaluable } from './expressions/native-evaluation';
19
20
  export * from './sub-workflow-output';
20
21
  export * from './run-execution-data-factory';
21
22
  export * from './message-event-bus';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}