n8n-workflow 2.34.2 → 2.35.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/cjs/build.tsbuildinfo +1 -1
- package/dist/cjs/errors/index.d.ts +1 -0
- package/dist/cjs/errors/index.d.ts.map +1 -1
- package/dist/cjs/errors/index.js +3 -1
- package/dist/cjs/errors/index.js.map +1 -1
- package/dist/cjs/errors/node-version-not-found.error.d.ts +15 -0
- package/dist/cjs/errors/node-version-not-found.error.d.ts.map +1 -0
- package/dist/cjs/errors/node-version-not-found.error.js +27 -0
- package/dist/cjs/errors/node-version-not-found.error.js.map +1 -0
- package/dist/cjs/expression.d.ts +1 -1
- package/dist/cjs/expression.js +2 -2
- package/dist/cjs/expression.js.map +1 -1
- package/dist/cjs/from-ai-parse-utils.d.ts.map +1 -1
- package/dist/cjs/from-ai-parse-utils.js +5 -2
- package/dist/cjs/from-ai-parse-utils.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +9 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces.d.ts +24 -3
- package/dist/cjs/interfaces.d.ts.map +1 -1
- package/dist/cjs/interfaces.js +8 -1
- package/dist/cjs/interfaces.js.map +1 -1
- package/dist/cjs/redaction-channels.d.ts +16 -1
- package/dist/cjs/redaction-channels.d.ts.map +1 -1
- package/dist/cjs/redaction-channels.js +24 -0
- package/dist/cjs/redaction-channels.js.map +1 -1
- package/dist/cjs/trigger-credential-gate.d.ts +29 -0
- package/dist/cjs/trigger-credential-gate.d.ts.map +1 -0
- package/dist/cjs/trigger-credential-gate.js +25 -0
- package/dist/cjs/trigger-credential-gate.js.map +1 -0
- package/dist/cjs/versioned-node-type.d.ts.map +1 -1
- package/dist/cjs/versioned-node-type.js +6 -5
- package/dist/cjs/versioned-node-type.js.map +1 -1
- package/dist/cjs/webhook-description-fields.d.ts +77 -0
- package/dist/cjs/webhook-description-fields.d.ts.map +1 -0
- package/dist/cjs/webhook-description-fields.js +133 -0
- package/dist/cjs/webhook-description-fields.js.map +1 -0
- package/dist/esm/errors/index.d.ts +1 -0
- package/dist/esm/errors/index.d.ts.map +1 -1
- package/dist/esm/errors/index.js +1 -0
- package/dist/esm/errors/index.js.map +1 -1
- package/dist/esm/errors/node-version-not-found.error.d.ts +15 -0
- package/dist/esm/errors/node-version-not-found.error.d.ts.map +1 -0
- package/dist/esm/errors/node-version-not-found.error.js +23 -0
- package/dist/esm/errors/node-version-not-found.error.js.map +1 -0
- package/dist/esm/expression.d.ts +1 -1
- package/dist/esm/expression.js +2 -2
- package/dist/esm/expression.js.map +1 -1
- package/dist/esm/from-ai-parse-utils.d.ts.map +1 -1
- package/dist/esm/from-ai-parse-utils.js +5 -2
- package/dist/esm/from-ai-parse-utils.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces.d.ts +24 -3
- package/dist/esm/interfaces.d.ts.map +1 -1
- package/dist/esm/interfaces.js +7 -0
- package/dist/esm/interfaces.js.map +1 -1
- package/dist/esm/redaction-channels.d.ts +16 -1
- package/dist/esm/redaction-channels.d.ts.map +1 -1
- package/dist/esm/redaction-channels.js +22 -0
- package/dist/esm/redaction-channels.js.map +1 -1
- package/dist/esm/trigger-credential-gate.d.ts +29 -0
- package/dist/esm/trigger-credential-gate.d.ts.map +1 -0
- package/dist/esm/trigger-credential-gate.js +21 -0
- package/dist/esm/trigger-credential-gate.js.map +1 -0
- package/dist/esm/typecheck.tsbuildinfo +1 -1
- package/dist/esm/versioned-node-type.d.ts.map +1 -1
- package/dist/esm/versioned-node-type.js +6 -5
- package/dist/esm/versioned-node-type.js.map +1 -1
- package/dist/esm/webhook-description-fields.d.ts +77 -0
- package/dist/esm/webhook-description-fields.d.ts.map +1 -0
- package/dist/esm/webhook-description-fields.js +125 -0
- package/dist/esm/webhook-description-fields.js.map +1 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versioned-node-type.d.ts","sourceRoot":"","sources":["../../src/versioned-node-type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"versioned-node-type.d.ts","sourceRoot":"","sources":["../../src/versioned-node-type.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5F,qBAAa,iBAAkB,YAAW,kBAAkB;IAC3D,cAAc,EAAE,MAAM,CAAC;IAEvB,YAAY,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAEjD,WAAW,EAAE,wBAAwB,CAAC;IAEtC,YACC,YAAY,EAAE,kBAAkB,CAAC,cAAc,CAAC,EAChD,WAAW,EAAE,wBAAwB,EAKrC;IAED,gBAAgB,WAEf;IAED,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAWvC;CACD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NodeVersionNotFoundError } from './errors';
|
|
1
2
|
export class VersionedNodeType {
|
|
2
3
|
currentVersion;
|
|
3
4
|
nodeVersions;
|
|
@@ -11,12 +12,12 @@ export class VersionedNodeType {
|
|
|
11
12
|
return Math.max(...Object.keys(this.nodeVersions).map(Number));
|
|
12
13
|
}
|
|
13
14
|
getNodeType(version) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return this.nodeVersions[this.currentVersion];
|
|
15
|
+
const resolvedVersion = version ? version : this.currentVersion;
|
|
16
|
+
const nodeType = this.nodeVersions[resolvedVersion];
|
|
17
|
+
if (nodeType === undefined) {
|
|
18
|
+
throw new NodeVersionNotFoundError(this.description.name, resolvedVersion, Object.keys(this.nodeVersions).map(Number));
|
|
19
19
|
}
|
|
20
|
+
return nodeType;
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=versioned-node-type.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versioned-node-type.js","sourceRoot":"","sources":["../../src/versioned-node-type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"versioned-node-type.js","sourceRoot":"","sources":["../../src/versioned-node-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGpD,MAAM,OAAO,iBAAiB;IAC7B,cAAc,CAAS;IAEvB,YAAY,CAAqC;IAEjD,WAAW,CAA2B;IAEtC,YACC,YAAgD,EAChD,WAAqC;QAErC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,WAAW,CAAC,OAAgB;QAC3B,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,wBAAwB,CACjC,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,eAAe,EACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAC1C,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;CACD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single-source declaration of webhook-description fields.
|
|
3
|
+
*
|
|
4
|
+
* A webhook description needs values derived from the node instance's
|
|
5
|
+
* parameters, historically encoded as expression templates such as
|
|
6
|
+
* `={{$parameter["path"]}}`. The editor still needs those strings (they are
|
|
7
|
+
* what survives the JSON serialization of node descriptions), but on the
|
|
8
|
+
* backend they force the expression engine (under `N8N_EXPRESSION_ENGINE=vm`,
|
|
9
|
+
* a V8 isolate) into every webhook request even when the user authored no
|
|
10
|
+
* expression.
|
|
11
|
+
*
|
|
12
|
+
* The helpers here generate the template string and a native resolver from one
|
|
13
|
+
* declaration, so the two cannot drift. Backend resolution sites call
|
|
14
|
+
* {@link resolveWebhookDescriptionField} first and only fall back to the engine
|
|
15
|
+
* when the user's parameters actually contain expressions.
|
|
16
|
+
*/
|
|
17
|
+
import type { INode, INodeParameters, IWebhookDescription, NativeParameterResolvers, NodeParameterValueType } from './interfaces';
|
|
18
|
+
import { WEBHOOK_RESOLVERS } from './interfaces';
|
|
19
|
+
export type WebhookDescriptionField = NativeParameterResolvers[string];
|
|
20
|
+
/**
|
|
21
|
+
* A field that reads a node parameter, e.g. `fromParameter('httpMethod', 'GET')`
|
|
22
|
+
* → template `={{$parameter["httpMethod"] || "GET"}}` and a resolver applying
|
|
23
|
+
* the same truthiness fallback. Nested reads take a path array. Walking into a
|
|
24
|
+
* missing parent yields `undefined`, matching what the engine returns for the
|
|
25
|
+
* same reference.
|
|
26
|
+
*/
|
|
27
|
+
export declare function fromParameter(path: string | string[], fallback?: string): WebhookDescriptionField;
|
|
28
|
+
/**
|
|
29
|
+
* A field computed by a function of the parameters: the template inlines the
|
|
30
|
+
* function's source and the resolver is the function itself, so both
|
|
31
|
+
* representations run the same code.
|
|
32
|
+
*
|
|
33
|
+
* The function MUST be self-contained: closing over an outer identifier (an
|
|
34
|
+
* import, a module constant) produces a template the expression sandbox cannot
|
|
35
|
+
* evaluate. The parity test in the Webhook node's description.test.ts catches
|
|
36
|
+
* this; add one for any node that declares `fromFunction` fields.
|
|
37
|
+
*/
|
|
38
|
+
export declare function fromFunction<P extends INodeParameters>(fn: (parameters: P) => NodeParameterValueType | undefined): WebhookDescriptionField;
|
|
39
|
+
/**
|
|
40
|
+
* Spreads into an {@link IWebhookDescription}: the template string per field,
|
|
41
|
+
* plus the resolver map under the backend-only {@link WEBHOOK_RESOLVERS} key.
|
|
42
|
+
*/
|
|
43
|
+
export declare function webhookDescriptionFields<K extends string>(fields: Record<K, WebhookDescriptionField>): Record<K, string> & {
|
|
44
|
+
[WEBHOOK_RESOLVERS]: NativeParameterResolvers;
|
|
45
|
+
};
|
|
46
|
+
export type NativeResolution = {
|
|
47
|
+
resolved: true;
|
|
48
|
+
value: NodeParameterValueType | undefined;
|
|
49
|
+
} | {
|
|
50
|
+
resolved: false;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Resolves a description field without the expression engine when the field
|
|
54
|
+
* declares a resolver, still carries the exact template that resolver was
|
|
55
|
+
* generated from (a description built by spreading another inherits resolvers
|
|
56
|
+
* for fields it overrides), and the node's parameters are static.
|
|
57
|
+
*
|
|
58
|
+
* Pass the workflow's own node (`workflow.nodes[name]`): its parameters
|
|
59
|
+
* include the defaults the `Workflow` constructor applies.
|
|
60
|
+
*/
|
|
61
|
+
export declare function resolveWebhookDescriptionField(node: Pick<INode, 'parameters'>, description: IWebhookDescription, field: string): NativeResolution;
|
|
62
|
+
/**
|
|
63
|
+
* Whether every field of the description is engine-free for a static-parameter
|
|
64
|
+
* node: either a resolver is declared for it, or the value contains no
|
|
65
|
+
* expression template at any depth. A template added later without a resolver
|
|
66
|
+
* makes this false, so callers skipping isolate acquisition on the strength of
|
|
67
|
+
* this stay correct automatically.
|
|
68
|
+
*/
|
|
69
|
+
export declare function webhookDescriptionIsNativelyResolvable(description: IWebhookDescription): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Whether a node's parameters can stand in for the `$parameter` proxy: beyond a
|
|
72
|
+
* plain property read, the proxy only resolves `=` values, unwraps
|
|
73
|
+
* resource-locator values and handles `&sibling` lookups — all of which require
|
|
74
|
+
* a dynamic value somewhere in the parameters.
|
|
75
|
+
*/
|
|
76
|
+
export declare function nodeParametersAreStatic(node: Pick<INode, 'parameters'>): boolean;
|
|
77
|
+
//# sourceMappingURL=webhook-description-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-description-fields.d.ts","sourceRoot":"","sources":["../../src/webhook-description-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACX,KAAK,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAEvE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAkBjG;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,eAAe,EACrD,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,sBAAsB,GAAG,SAAS,GACvD,uBAAuB,CAKzB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,MAAM,EACxD,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,uBAAuB,CAAC,GACxC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,CAAC,iBAAiB,CAAC,EAAE,wBAAwB,CAAA;CAAE,CAQvE;AAED,MAAM,MAAM,gBAAgB,GACzB;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,sBAAsB,GAAG,SAAS,CAAA;CAAE,GAC7D;IAAE,QAAQ,EAAE,KAAK,CAAA;CAAE,CAAC;AAIvB;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,EAC/B,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,MAAM,GACX,gBAAgB,CAKlB;AAED;;;;;;GAMG;AACH,wBAAgB,sCAAsC,CAAC,WAAW,EAAE,mBAAmB,GAAG,OAAO,CAKhG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,OAAO,CAEhF"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single-source declaration of webhook-description fields.
|
|
3
|
+
*
|
|
4
|
+
* A webhook description needs values derived from the node instance's
|
|
5
|
+
* parameters, historically encoded as expression templates such as
|
|
6
|
+
* `={{$parameter["path"]}}`. The editor still needs those strings (they are
|
|
7
|
+
* what survives the JSON serialization of node descriptions), but on the
|
|
8
|
+
* backend they force the expression engine (under `N8N_EXPRESSION_ENGINE=vm`,
|
|
9
|
+
* a V8 isolate) into every webhook request even when the user authored no
|
|
10
|
+
* expression.
|
|
11
|
+
*
|
|
12
|
+
* The helpers here generate the template string and a native resolver from one
|
|
13
|
+
* declaration, so the two cannot drift. Backend resolution sites call
|
|
14
|
+
* {@link resolveWebhookDescriptionField} first and only fall back to the engine
|
|
15
|
+
* when the user's parameters actually contain expressions.
|
|
16
|
+
*/
|
|
17
|
+
import { WEBHOOK_RESOLVERS } from './interfaces';
|
|
18
|
+
import { isResourceLocatorValue } from './type-guards';
|
|
19
|
+
/**
|
|
20
|
+
* A field that reads a node parameter, e.g. `fromParameter('httpMethod', 'GET')`
|
|
21
|
+
* → template `={{$parameter["httpMethod"] || "GET"}}` and a resolver applying
|
|
22
|
+
* the same truthiness fallback. Nested reads take a path array. Walking into a
|
|
23
|
+
* missing parent yields `undefined`, matching what the engine returns for the
|
|
24
|
+
* same reference.
|
|
25
|
+
*/
|
|
26
|
+
export function fromParameter(path, fallback) {
|
|
27
|
+
const segments = Array.isArray(path) ? path : [path];
|
|
28
|
+
const accessor = segments.map((segment) => `["${segment}"]`).join('');
|
|
29
|
+
const tail = fallback === undefined ? '' : ` || ${JSON.stringify(fallback)}`;
|
|
30
|
+
return {
|
|
31
|
+
template: `={{$parameter${accessor}${tail}}}`,
|
|
32
|
+
resolve: (parameters) => {
|
|
33
|
+
let current = parameters;
|
|
34
|
+
for (const key of segments) {
|
|
35
|
+
if (current === null || current === undefined)
|
|
36
|
+
return fallback;
|
|
37
|
+
current = current[key];
|
|
38
|
+
}
|
|
39
|
+
// `||` in the template is plain JS truthiness, not a nullish check.
|
|
40
|
+
if (fallback !== undefined && !current)
|
|
41
|
+
return fallback;
|
|
42
|
+
return current;
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A field computed by a function of the parameters: the template inlines the
|
|
48
|
+
* function's source and the resolver is the function itself, so both
|
|
49
|
+
* representations run the same code.
|
|
50
|
+
*
|
|
51
|
+
* The function MUST be self-contained: closing over an outer identifier (an
|
|
52
|
+
* import, a module constant) produces a template the expression sandbox cannot
|
|
53
|
+
* evaluate. The parity test in the Webhook node's description.test.ts catches
|
|
54
|
+
* this; add one for any node that declares `fromFunction` fields.
|
|
55
|
+
*/
|
|
56
|
+
export function fromFunction(fn) {
|
|
57
|
+
return {
|
|
58
|
+
template: `={{(${String(fn)})($parameter)}}`,
|
|
59
|
+
resolve: fn,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Spreads into an {@link IWebhookDescription}: the template string per field,
|
|
64
|
+
* plus the resolver map under the backend-only {@link WEBHOOK_RESOLVERS} key.
|
|
65
|
+
*/
|
|
66
|
+
export function webhookDescriptionFields(fields) {
|
|
67
|
+
const templates = {};
|
|
68
|
+
const resolvers = {};
|
|
69
|
+
for (const [field, entry] of Object.entries(fields)) {
|
|
70
|
+
templates[field] = entry.template;
|
|
71
|
+
resolvers[field] = entry;
|
|
72
|
+
}
|
|
73
|
+
return { ...templates, [WEBHOOK_RESOLVERS]: resolvers };
|
|
74
|
+
}
|
|
75
|
+
const NOT_RESOLVED = { resolved: false };
|
|
76
|
+
/**
|
|
77
|
+
* Resolves a description field without the expression engine when the field
|
|
78
|
+
* declares a resolver, still carries the exact template that resolver was
|
|
79
|
+
* generated from (a description built by spreading another inherits resolvers
|
|
80
|
+
* for fields it overrides), and the node's parameters are static.
|
|
81
|
+
*
|
|
82
|
+
* Pass the workflow's own node (`workflow.nodes[name]`): its parameters
|
|
83
|
+
* include the defaults the `Workflow` constructor applies.
|
|
84
|
+
*/
|
|
85
|
+
export function resolveWebhookDescriptionField(node, description, field) {
|
|
86
|
+
const entry = description[WEBHOOK_RESOLVERS]?.[field];
|
|
87
|
+
if (entry === undefined || description[field] !== entry.template)
|
|
88
|
+
return NOT_RESOLVED;
|
|
89
|
+
if (!nodeParametersAreStatic(node))
|
|
90
|
+
return NOT_RESOLVED;
|
|
91
|
+
return { resolved: true, value: entry.resolve(node.parameters) };
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Whether every field of the description is engine-free for a static-parameter
|
|
95
|
+
* node: either a resolver is declared for it, or the value contains no
|
|
96
|
+
* expression template at any depth. A template added later without a resolver
|
|
97
|
+
* makes this false, so callers skipping isolate acquisition on the strength of
|
|
98
|
+
* this stay correct automatically.
|
|
99
|
+
*/
|
|
100
|
+
export function webhookDescriptionIsNativelyResolvable(description) {
|
|
101
|
+
const resolvers = description[WEBHOOK_RESOLVERS];
|
|
102
|
+
return Object.entries(description).every(([field, value]) => resolvers?.[field]?.template === value || !containsDynamicValue(value));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Whether a node's parameters can stand in for the `$parameter` proxy: beyond a
|
|
106
|
+
* plain property read, the proxy only resolves `=` values, unwraps
|
|
107
|
+
* resource-locator values and handles `&sibling` lookups — all of which require
|
|
108
|
+
* a dynamic value somewhere in the parameters.
|
|
109
|
+
*/
|
|
110
|
+
export function nodeParametersAreStatic(node) {
|
|
111
|
+
return !containsDynamicValue(node.parameters);
|
|
112
|
+
}
|
|
113
|
+
function containsDynamicValue(value) {
|
|
114
|
+
if (typeof value === 'string')
|
|
115
|
+
return value.startsWith('=');
|
|
116
|
+
if (Array.isArray(value))
|
|
117
|
+
return value.some(containsDynamicValue);
|
|
118
|
+
if (value !== null && typeof value === 'object') {
|
|
119
|
+
if (isResourceLocatorValue(value))
|
|
120
|
+
return true;
|
|
121
|
+
return Object.keys(value).some((key) => containsDynamicValue(Reflect.get(value, key)));
|
|
122
|
+
}
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=webhook-description-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-description-fields.js","sourceRoot":"","sources":["../../src/webhook-description-fields.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-workflow",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.35.0",
|
|
4
4
|
"description": "Workflow base code of n8n",
|
|
5
5
|
"types": "dist/esm/index.d.ts",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
"vitest": "^4.1.9",
|
|
48
48
|
"vitest-mock-extended": "^3.1.0",
|
|
49
49
|
"zod": "3.25.76",
|
|
50
|
-
"@n8n/config": "2.
|
|
50
|
+
"@n8n/config": "2.33.0",
|
|
51
|
+
"@n8n/vitest-config": "1.20.0",
|
|
51
52
|
"@n8n/playwright-janitor": "0.1.0",
|
|
52
|
-
"@n8n/vitest-config": "1.19.0",
|
|
53
53
|
"@n8n/typescript-config": "1.9.0"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
@@ -76,9 +76,9 @@
|
|
|
76
76
|
"xml2js": "0.6.2",
|
|
77
77
|
"jsonrepair": "3.13.2",
|
|
78
78
|
"@n8n/errors": "0.13.0",
|
|
79
|
-
"@n8n/utils": "1.
|
|
79
|
+
"@n8n/utils": "1.43.0",
|
|
80
80
|
"@n8n/tournament": "1.9.0",
|
|
81
|
-
"@n8n/expression-runtime": "0.
|
|
81
|
+
"@n8n/expression-runtime": "0.26.0"
|
|
82
82
|
},
|
|
83
83
|
"peerDependencies": {
|
|
84
84
|
"zod": "3.25.76"
|