n8n-workflow 1.75.1 → 1.76.1

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.
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ export type FromAIArgumentType = 'string' | 'number' | 'boolean' | 'json';
3
+ export type FromAIArgument = {
4
+ key: string;
5
+ description?: string;
6
+ type?: FromAIArgumentType;
7
+ defaultValue?: string | number | boolean | Record<string, unknown>;
8
+ };
9
+ export declare function generateZodSchema(placeholder: FromAIArgument): z.ZodTypeAny;
10
+ export declare function extractFromAICalls(str: string): FromAIArgument[];
11
+ export declare function traverseNodeParameters(payload: unknown, collectedArgs: FromAIArgument[]): void;
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateZodSchema = generateZodSchema;
4
+ exports.extractFromAICalls = extractFromAICalls;
5
+ exports.traverseNodeParameters = traverseNodeParameters;
6
+ const zod_1 = require("zod");
7
+ const utils_1 = require("./utils");
8
+ class ParseError extends Error {
9
+ }
10
+ function generateZodSchema(placeholder) {
11
+ let schema;
12
+ switch (placeholder.type?.toLowerCase()) {
13
+ case 'string':
14
+ schema = zod_1.z.string();
15
+ break;
16
+ case 'number':
17
+ schema = zod_1.z.number();
18
+ break;
19
+ case 'boolean':
20
+ schema = zod_1.z.boolean();
21
+ break;
22
+ case 'json':
23
+ schema = zod_1.z.record(zod_1.z.any());
24
+ break;
25
+ default:
26
+ schema = zod_1.z.string();
27
+ }
28
+ if (placeholder.description) {
29
+ schema = schema.describe(`${schema.description ?? ''} ${placeholder.description}`.trim());
30
+ }
31
+ if (placeholder.defaultValue !== undefined) {
32
+ schema = schema.default(placeholder.defaultValue);
33
+ }
34
+ return schema;
35
+ }
36
+ function parseDefaultValue(value) {
37
+ if (value === undefined || value === '')
38
+ return undefined;
39
+ const lowerValue = value.toLowerCase();
40
+ if (lowerValue === 'true')
41
+ return true;
42
+ if (lowerValue === 'false')
43
+ return false;
44
+ if (!isNaN(Number(value)))
45
+ return Number(value);
46
+ try {
47
+ return (0, utils_1.jsonParse)(value);
48
+ }
49
+ catch {
50
+ return value;
51
+ }
52
+ }
53
+ function parseArguments(argsString) {
54
+ const args = [];
55
+ let currentArg = '';
56
+ let inQuotes = false;
57
+ let quoteChar = '';
58
+ let escapeNext = false;
59
+ for (let i = 0; i < argsString.length; i++) {
60
+ const char = argsString[i];
61
+ if (escapeNext) {
62
+ currentArg += char;
63
+ escapeNext = false;
64
+ continue;
65
+ }
66
+ if (char === '\\') {
67
+ escapeNext = true;
68
+ continue;
69
+ }
70
+ if (['"', "'", '`'].includes(char)) {
71
+ if (!inQuotes) {
72
+ inQuotes = true;
73
+ quoteChar = char;
74
+ currentArg += char;
75
+ }
76
+ else if (char === quoteChar) {
77
+ inQuotes = false;
78
+ quoteChar = '';
79
+ currentArg += char;
80
+ }
81
+ else {
82
+ currentArg += char;
83
+ }
84
+ continue;
85
+ }
86
+ if (char === ',' && !inQuotes) {
87
+ args.push(currentArg.trim());
88
+ currentArg = '';
89
+ continue;
90
+ }
91
+ currentArg += char;
92
+ }
93
+ if (currentArg) {
94
+ args.push(currentArg.trim());
95
+ }
96
+ const cleanArgs = args.map((arg) => {
97
+ const trimmed = arg.trim();
98
+ if ((trimmed.startsWith("'") && trimmed.endsWith("'")) ||
99
+ (trimmed.startsWith('`') && trimmed.endsWith('`')) ||
100
+ (trimmed.startsWith('"') && trimmed.endsWith('"'))) {
101
+ return trimmed
102
+ .slice(1, -1)
103
+ .replace(/\\'/g, "'")
104
+ .replace(/\\`/g, '`')
105
+ .replace(/\\"/g, '"')
106
+ .replace(/\\\\/g, '\\');
107
+ }
108
+ return trimmed;
109
+ });
110
+ const type = cleanArgs?.[2] || 'string';
111
+ if (!['string', 'number', 'boolean', 'json'].includes(type.toLowerCase())) {
112
+ throw new ParseError(`Invalid type: ${type}`);
113
+ }
114
+ return {
115
+ key: cleanArgs[0] || '',
116
+ description: cleanArgs[1],
117
+ type: (cleanArgs?.[2] ?? 'string'),
118
+ defaultValue: parseDefaultValue(cleanArgs[3]),
119
+ };
120
+ }
121
+ function extractFromAICalls(str) {
122
+ const args = [];
123
+ const pattern = /\$fromAI\s*\(\s*/gi;
124
+ let match;
125
+ while ((match = pattern.exec(str)) !== null) {
126
+ const startIndex = match.index + match[0].length;
127
+ let current = startIndex;
128
+ let inQuotes = false;
129
+ let quoteChar = '';
130
+ let parenthesesCount = 1;
131
+ let argsString = '';
132
+ while (current < str.length && parenthesesCount > 0) {
133
+ const char = str[current];
134
+ if (inQuotes) {
135
+ if (char === '\\' && current + 1 < str.length) {
136
+ argsString += char + str[current + 1];
137
+ current += 2;
138
+ continue;
139
+ }
140
+ if (char === quoteChar) {
141
+ inQuotes = false;
142
+ quoteChar = '';
143
+ }
144
+ argsString += char;
145
+ }
146
+ else {
147
+ if (['"', "'", '`'].includes(char)) {
148
+ inQuotes = true;
149
+ quoteChar = char;
150
+ }
151
+ else if (char === '(') {
152
+ parenthesesCount++;
153
+ }
154
+ else if (char === ')') {
155
+ parenthesesCount--;
156
+ }
157
+ if (parenthesesCount > 0 || char !== ')') {
158
+ argsString += char;
159
+ }
160
+ }
161
+ current++;
162
+ }
163
+ if (parenthesesCount === 0) {
164
+ try {
165
+ const parsedArgs = parseArguments(argsString);
166
+ args.push(parsedArgs);
167
+ }
168
+ catch (error) {
169
+ throw new ParseError(`Failed to parse $fromAI arguments: ${argsString}: ${String(error)}`);
170
+ }
171
+ }
172
+ else {
173
+ throw new ParseError(`Unbalanced parentheses while parsing $fromAI call: ${str.slice(startIndex)}`);
174
+ }
175
+ }
176
+ return args;
177
+ }
178
+ function traverseNodeParameters(payload, collectedArgs) {
179
+ if (typeof payload === 'string') {
180
+ const fromAICalls = extractFromAICalls(payload);
181
+ fromAICalls.forEach((call) => collectedArgs.push(call));
182
+ }
183
+ else if (Array.isArray(payload)) {
184
+ payload.forEach((item) => traverseNodeParameters(item, collectedArgs));
185
+ }
186
+ else if (typeof payload === 'object' && payload !== null) {
187
+ Object.values(payload).forEach((value) => traverseNodeParameters(value, collectedArgs));
188
+ }
189
+ }
190
+ //# sourceMappingURL=FromAIParseUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FromAIParseUtils.js","sourceRoot":"","sources":["../src/FromAIParseUtils.ts"],"names":[],"mappings":"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"}
@@ -624,7 +624,7 @@ export type FieldValueOption = {
624
624
  name: string;
625
625
  type: FieldType | 'any';
626
626
  };
627
- export type IWorkflowNodeContext = ExecuteFunctions.GetNodeParameterFn & Pick<FunctionsBase, 'getNode'>;
627
+ export type IWorkflowNodeContext = ExecuteFunctions.GetNodeParameterFn & Pick<FunctionsBase, 'getNode' | 'getWorkflow'>;
628
628
  export interface ILocalLoadOptionsFunctions {
629
629
  getWorkflowNodeContext(nodeType: string): Promise<IWorkflowNodeContext | null>;
630
630
  }
@@ -1841,6 +1841,14 @@ export interface IExecutionSummaryNodeExecutionResult {
1841
1841
  }
1842
1842
  export interface ResourceMapperFields {
1843
1843
  fields: ResourceMapperField[];
1844
+ emptyFieldsNotice?: string;
1845
+ }
1846
+ export interface WorkflowInputsData {
1847
+ fields: ResourceMapperField[];
1848
+ dataMode: string;
1849
+ subworkflowInfo?: {
1850
+ id?: string;
1851
+ };
1844
1852
  }
1845
1853
  export interface ResourceMapperField {
1846
1854
  id: string;
@@ -1867,6 +1875,7 @@ export type FormFieldsParameter = Array<{
1867
1875
  multipleFiles?: boolean;
1868
1876
  acceptFileTypes?: string;
1869
1877
  formatDate?: string;
1878
+ html?: string;
1870
1879
  placeholder?: string;
1871
1880
  }>;
1872
1881
  export type FieldTypeMap = {