@n8n/workflow-sdk 0.13.0 → 0.14.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/build.tsbuildinfo +1 -1
- package/dist/expression/index.js +0 -11
- package/dist/expression/index.js.map +1 -1
- package/dist/generate-types/generate-types.d.ts +1 -1
- package/dist/generate-types/generate-types.js +50 -21
- package/dist/generate-types/generate-types.js.map +1 -1
- package/dist/generate-types/generate-zod-schemas.d.ts +1 -5
- package/dist/generate-types/generate-zod-schemas.js +154 -207
- package/dist/generate-types/generate-zod-schemas.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/prompts/best-practices/guides/chatbot.js +2 -2
- package/dist/prompts/node-guidance/index.d.ts +0 -1
- package/dist/prompts/node-guidance/index.js +0 -1
- package/dist/prompts/node-guidance/index.js.map +1 -1
- package/dist/prompts/node-guidance/parameter-guides/set-node.js +14 -15
- package/dist/prompts/node-guidance/parameter-guides/set-node.js.map +1 -1
- package/dist/prompts/node-selection/ai-nodes.d.ts +2 -2
- package/dist/prompts/node-selection/ai-nodes.js +10 -10
- package/dist/prompts/node-selection/ai-nodes.js.map +1 -1
- package/dist/prompts/node-selection/connection-parameters.d.ts +1 -1
- package/dist/prompts/node-selection/connection-parameters.js +2 -2
- package/dist/prompts/sdk-reference/additional-functions.d.ts +1 -1
- package/dist/prompts/sdk-reference/additional-functions.js +2 -2
- package/dist/prompts/sdk-reference/expressions.d.ts +1 -1
- package/dist/prompts/sdk-reference/expressions.js +1 -1
- package/dist/prompts/sdk-reference/workflow-patterns-detailed.d.ts +1 -1
- package/dist/prompts/sdk-reference/workflow-patterns-detailed.js +9 -7
- package/dist/prompts/sdk-reference/workflow-patterns-detailed.js.map +1 -1
- package/dist/prompts/sdk-reference/workflow-patterns.d.ts +1 -1
- package/dist/prompts/sdk-reference/workflow-patterns.js +13 -11
- package/dist/prompts/sdk-reference/workflow-patterns.js.map +1 -1
- package/dist/prompts/sdk-reference/workflow-rules.d.ts +1 -1
- package/dist/prompts/sdk-reference/workflow-rules.js +11 -1
- package/dist/prompts/sdk-reference/workflow-rules.js.map +1 -1
- package/dist/types/base.d.ts +6 -8
- package/dist/types/base.js.map +1 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.js +24 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/schema-helpers.d.ts +87 -9
- package/dist/validation/schema-helpers.js +18 -4
- package/dist/validation/schema-helpers.js.map +1 -1
- package/dist/validation.d.ts +1 -0
- package/dist/validation.js +3 -1
- package/dist/validation.js.map +1 -1
- package/dist/workflow-builder/layout-utils.d.ts +1 -2
- package/dist/workflow-builder/layout-utils.js +21 -58
- package/dist/workflow-builder/layout-utils.js.map +1 -1
- package/dist/workflow-builder/node-builders/node-builder.d.ts +2 -2
- package/dist/workflow-builder/node-builders/node-builder.js +34 -16
- package/dist/workflow-builder/node-builders/node-builder.js.map +1 -1
- package/dist/workflow-builder/pin-data-utils.js +2 -3
- package/dist/workflow-builder/pin-data-utils.js.map +1 -1
- package/dist/workflow-builder/plugins/composite-handlers/branch-handler-utils.js +23 -2
- package/dist/workflow-builder/plugins/composite-handlers/branch-handler-utils.js.map +1 -1
- package/dist/workflow-builder/plugins/serializers/json-serializer.js +7 -1
- package/dist/workflow-builder/plugins/serializers/json-serializer.js.map +1 -1
- package/dist/workflow-builder/plugins/validators/merge-node-validator.js +1 -1
- package/dist/workflow-builder/plugins/validators/merge-node-validator.js.map +1 -1
- package/dist/workflow-builder/string-utils.d.ts +2 -0
- package/dist/workflow-builder/string-utils.js +12 -0
- package/dist/workflow-builder/string-utils.js.map +1 -1
- package/dist/workflow-builder/validation-helpers.js +5 -6
- package/dist/workflow-builder/validation-helpers.js.map +1 -1
- package/dist/workflow-builder.js +14 -0
- package/dist/workflow-builder.js.map +1 -1
- package/package.json +6 -12
- package/dist/prompts/node-guidance/node-tips/index.d.ts +0 -3
- package/dist/prompts/node-guidance/node-tips/index.js +0 -8
- package/dist/prompts/node-guidance/node-tips/index.js.map +0 -1
- package/dist/prompts/node-guidance/node-tips/structured-output-parser.d.ts +0 -2
- package/dist/prompts/node-guidance/node-tips/structured-output-parser.js +0 -35
- package/dist/prompts/node-guidance/node-tips/structured-output-parser.js.map +0 -1
- package/dist/prompts/node-guidance/node-tips/types.d.ts +0 -7
- package/dist/prompts/node-guidance/node-tips/types.js +0 -3
- package/dist/prompts/node-guidance/node-tips/types.js.map +0 -1
- package/dist/prompts/node-guidance/node-tips/webhook.d.ts +0 -2
- package/dist/prompts/node-guidance/node-tips/webhook.js +0 -38
- package/dist/prompts/node-guidance/node-tips/webhook.js.map +0 -1
package/dist/expression/index.js
CHANGED
|
@@ -13,14 +13,6 @@ function parseExpression(expr) {
|
|
|
13
13
|
function isExpression(value) {
|
|
14
14
|
return typeof value === 'string' && value.startsWith('={{') && value.endsWith('}}');
|
|
15
15
|
}
|
|
16
|
-
function isPlaceholderLike(value) {
|
|
17
|
-
return (typeof value === 'object' &&
|
|
18
|
-
value !== null &&
|
|
19
|
-
'__placeholder' in value &&
|
|
20
|
-
value.__placeholder === true &&
|
|
21
|
-
'hint' in value &&
|
|
22
|
-
typeof value.hint === 'string');
|
|
23
|
-
}
|
|
24
16
|
function isNewCredentialLike(value) {
|
|
25
17
|
return (typeof value === 'object' &&
|
|
26
18
|
value !== null &&
|
|
@@ -32,9 +24,6 @@ function isNewCredentialLike(value) {
|
|
|
32
24
|
function expr(expression) {
|
|
33
25
|
if (typeof expression !== 'string') {
|
|
34
26
|
const value = expression;
|
|
35
|
-
if (isPlaceholderLike(value)) {
|
|
36
|
-
throw new Error(`expr(placeholder('${value.hint}')) is invalid. Use placeholder() directly as the value, not inside expr().`);
|
|
37
|
-
}
|
|
38
27
|
if (isNewCredentialLike(value)) {
|
|
39
28
|
throw new Error(`expr(newCredential('${value.name}')) is invalid. Use newCredential() directly in the credentials config, not inside expr().`);
|
|
40
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expression/index.ts"],"names":[],"mappings":";;AASA,0CAGC;AAKD,oCAEC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expression/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,6 +115,12 @@ function generateAssignmentTypeDeclarations(exported) {
|
|
|
115
115
|
${prefix} AssignmentType = 'string' | 'number' | 'boolean' | 'array' | 'object' | 'binary';
|
|
116
116
|
${prefix} AssignmentCollectionValue = { assignments: Array<{ id: string; name: string; value: unknown; type: AssignmentType }> };`;
|
|
117
117
|
}
|
|
118
|
+
function generateResourceMapperTypeDeclaration(exported) {
|
|
119
|
+
const prefix = exported ? 'export type' : 'type';
|
|
120
|
+
return `${prefix} ResourceMapperField = { id?: string; displayName?: string; required?: boolean; defaultMatch?: boolean; display?: boolean; type?: string; canBeUsedToMatch?: boolean; [key: string]: unknown };
|
|
121
|
+
${prefix} ResourceMapperCommon = { matchingColumns?: string[]; cachedResultName?: string; [key: string]: unknown };
|
|
122
|
+
${prefix} ResourceMapperValue = ResourceMapperCommon & { mappingMode: string; value?: null | Record<string, unknown>; schema?: ResourceMapperField[] };`;
|
|
123
|
+
}
|
|
118
124
|
function isCustomApiCall(operation) {
|
|
119
125
|
return operation === CUSTOM_API_CALL_KEY;
|
|
120
126
|
}
|
|
@@ -463,6 +469,8 @@ function mapNestedPropertyTypeInner(prop, discriminatorContext) {
|
|
|
463
469
|
return 'string[]';
|
|
464
470
|
case 'resourceLocator':
|
|
465
471
|
return generateResourceLocatorType(prop);
|
|
472
|
+
case 'resourceMapper':
|
|
473
|
+
return 'ResourceMapperValue | Expression<string>';
|
|
466
474
|
case 'filter':
|
|
467
475
|
return 'FilterValue';
|
|
468
476
|
case 'assignmentCollection':
|
|
@@ -472,11 +480,9 @@ function mapNestedPropertyTypeInner(prop, discriminatorContext) {
|
|
|
472
480
|
}
|
|
473
481
|
}
|
|
474
482
|
switch (prop.type) {
|
|
475
|
-
case 'string':
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
}
|
|
479
|
-
return 'string | Expression<string> | PlaceholderValue';
|
|
483
|
+
case 'string': {
|
|
484
|
+
return 'string | Expression<string>';
|
|
485
|
+
}
|
|
480
486
|
case 'number':
|
|
481
487
|
return 'number | Expression<number>';
|
|
482
488
|
case 'boolean':
|
|
@@ -519,6 +525,8 @@ function mapNestedPropertyTypeInner(prop, discriminatorContext) {
|
|
|
519
525
|
return 'IDataObject | string | Expression<string>';
|
|
520
526
|
case 'resourceLocator':
|
|
521
527
|
return generateResourceLocatorType(prop);
|
|
528
|
+
case 'resourceMapper':
|
|
529
|
+
return 'ResourceMapperValue | Expression<string>';
|
|
522
530
|
case 'filter':
|
|
523
531
|
return 'FilterValue';
|
|
524
532
|
case 'assignmentCollection':
|
|
@@ -577,12 +585,15 @@ function generateNestedPropertyJSDoc(prop, indent, discriminatorContext) {
|
|
|
577
585
|
lines.push(`${indent} * @hint ${safeHint}`);
|
|
578
586
|
}
|
|
579
587
|
if (prop.builderHint) {
|
|
580
|
-
const safeBuilderHint = prop.builderHint.
|
|
588
|
+
const safeBuilderHint = prop.builderHint.propertyHint
|
|
581
589
|
.replace(/\*\//g, '*\\/')
|
|
582
590
|
.replace(/</g, '<')
|
|
583
591
|
.replace(/>/g, '>');
|
|
584
592
|
lines.push(`${indent} * @builderHint ${safeBuilderHint}`);
|
|
585
593
|
}
|
|
594
|
+
if (prop.builderHint?.placeholderSupported === false) {
|
|
595
|
+
lines.push(`${indent} * @placeholderSupported false`);
|
|
596
|
+
}
|
|
586
597
|
if (prop.modes) {
|
|
587
598
|
for (const mode of prop.modes) {
|
|
588
599
|
if (typeof mode.typeOptions?.searchListMethod === 'string') {
|
|
@@ -700,7 +711,7 @@ function generateFixedCollectionType(prop, discriminatorContext) {
|
|
|
700
711
|
groupJsDocLines.push(`${INDENT.repeat(2)}/** ${desc}`);
|
|
701
712
|
}
|
|
702
713
|
if (group.builderHint) {
|
|
703
|
-
const safeBuilderHint = group.builderHint.
|
|
714
|
+
const safeBuilderHint = group.builderHint.propertyHint
|
|
704
715
|
.replace(/\*\//g, '*\\/')
|
|
705
716
|
.replace(/</g, '<')
|
|
706
717
|
.replace(/>/g, '>');
|
|
@@ -911,10 +922,7 @@ function generateCollectionType(prop, discriminatorContext) {
|
|
|
911
922
|
return `{\n${nestedProps.join(';\n')};\n${INDENT}}`;
|
|
912
923
|
}
|
|
913
924
|
function stripExpressionFromType(typeStr) {
|
|
914
|
-
return typeStr
|
|
915
|
-
.replace(/\s*\|\s*Expression<[^>]+>/g, '')
|
|
916
|
-
.replace(/\s*\|\s*PlaceholderValue/g, '')
|
|
917
|
-
.trim();
|
|
925
|
+
return typeStr.replace(/\s*\|\s*Expression<[^>]+>/g, '').trim();
|
|
918
926
|
}
|
|
919
927
|
function mapPropertyType(prop, discriminatorContext) {
|
|
920
928
|
const result = mapPropertyTypeInner(prop, discriminatorContext);
|
|
@@ -940,6 +948,8 @@ function mapPropertyTypeInner(prop, discriminatorContext) {
|
|
|
940
948
|
return 'string[]';
|
|
941
949
|
case 'resourceLocator':
|
|
942
950
|
return generateResourceLocatorType(prop);
|
|
951
|
+
case 'resourceMapper':
|
|
952
|
+
return 'ResourceMapperValue | Expression<string>';
|
|
943
953
|
case 'filter':
|
|
944
954
|
return 'FilterValue';
|
|
945
955
|
case 'assignmentCollection':
|
|
@@ -949,11 +959,9 @@ function mapPropertyTypeInner(prop, discriminatorContext) {
|
|
|
949
959
|
}
|
|
950
960
|
}
|
|
951
961
|
switch (prop.type) {
|
|
952
|
-
case 'string':
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
}
|
|
956
|
-
return 'string | Expression<string> | PlaceholderValue';
|
|
962
|
+
case 'string': {
|
|
963
|
+
return 'string | Expression<string>';
|
|
964
|
+
}
|
|
957
965
|
case 'number':
|
|
958
966
|
return 'number | Expression<number>';
|
|
959
967
|
case 'boolean':
|
|
@@ -996,6 +1004,8 @@ function mapPropertyTypeInner(prop, discriminatorContext) {
|
|
|
996
1004
|
return 'IDataObject | string | Expression<string>';
|
|
997
1005
|
case 'resourceLocator':
|
|
998
1006
|
return generateResourceLocatorType(prop);
|
|
1007
|
+
case 'resourceMapper':
|
|
1008
|
+
return 'ResourceMapperValue | Expression<string>';
|
|
999
1009
|
case 'filter':
|
|
1000
1010
|
return 'FilterValue';
|
|
1001
1011
|
case 'assignmentCollection':
|
|
@@ -1233,12 +1243,15 @@ function generatePropertyJSDoc(prop, discriminatorContext) {
|
|
|
1233
1243
|
lines.push(` * @hint ${safeHint}`);
|
|
1234
1244
|
}
|
|
1235
1245
|
if (prop.builderHint) {
|
|
1236
|
-
const safeBuilderHint = prop.builderHint.
|
|
1246
|
+
const safeBuilderHint = prop.builderHint.propertyHint
|
|
1237
1247
|
.replace(/\*\//g, '*\\/')
|
|
1238
1248
|
.replace(/</g, '<')
|
|
1239
1249
|
.replace(/>/g, '>');
|
|
1240
1250
|
lines.push(` * @builderHint ${safeBuilderHint}`);
|
|
1241
1251
|
}
|
|
1252
|
+
if (prop.builderHint?.placeholderSupported === false) {
|
|
1253
|
+
lines.push(' * @placeholderSupported false');
|
|
1254
|
+
}
|
|
1242
1255
|
if (prop.modes) {
|
|
1243
1256
|
for (const mode of prop.modes) {
|
|
1244
1257
|
if (typeof mode.typeOptions?.searchListMethod === 'string') {
|
|
@@ -1484,7 +1497,8 @@ function generateSharedFile(node, version, _importDepth = 5) {
|
|
|
1484
1497
|
const outputProps = filteredProperties.filter((p) => !DISPLAY_ONLY_PROPERTY_TYPES.has(p.type));
|
|
1485
1498
|
const needsFilter = outputProps.some((p) => p.type === 'filter');
|
|
1486
1499
|
const needsAssignment = outputProps.some((p) => p.type === 'assignmentCollection');
|
|
1487
|
-
|
|
1500
|
+
const needsResourceMapper = outputProps.some((p) => p.type === 'resourceMapper');
|
|
1501
|
+
if (needsFilter || needsAssignment || needsResourceMapper) {
|
|
1488
1502
|
lines.push('// Helper types for special n8n fields');
|
|
1489
1503
|
if (needsFilter) {
|
|
1490
1504
|
lines.push(generateFilterTypeDeclaration(true));
|
|
@@ -1492,6 +1506,9 @@ function generateSharedFile(node, version, _importDepth = 5) {
|
|
|
1492
1506
|
if (needsAssignment) {
|
|
1493
1507
|
lines.push(generateAssignmentTypeDeclarations(true));
|
|
1494
1508
|
}
|
|
1509
|
+
if (needsResourceMapper) {
|
|
1510
|
+
lines.push(generateResourceMapperTypeDeclaration(true));
|
|
1511
|
+
}
|
|
1495
1512
|
lines.push('');
|
|
1496
1513
|
}
|
|
1497
1514
|
const credTypeName = node.credentials && node.credentials.length > 0
|
|
@@ -1560,7 +1577,8 @@ function generateDiscriminatorFile(node, version, combo, props, schema, _importD
|
|
|
1560
1577
|
lines.push('');
|
|
1561
1578
|
const needsFilter = props.some((p) => p.type === 'filter');
|
|
1562
1579
|
const needsAssignment = props.some((p) => p.type === 'assignmentCollection');
|
|
1563
|
-
|
|
1580
|
+
const needsResourceMapper = props.some((p) => p.type === 'resourceMapper');
|
|
1581
|
+
if (needsFilter || needsAssignment || needsResourceMapper) {
|
|
1564
1582
|
lines.push('// Helper types for special n8n fields');
|
|
1565
1583
|
if (needsFilter) {
|
|
1566
1584
|
lines.push(generateFilterTypeDeclaration(false));
|
|
@@ -1568,6 +1586,9 @@ function generateDiscriminatorFile(node, version, combo, props, schema, _importD
|
|
|
1568
1586
|
if (needsAssignment) {
|
|
1569
1587
|
lines.push(generateAssignmentTypeDeclarations(false));
|
|
1570
1588
|
}
|
|
1589
|
+
if (needsResourceMapper) {
|
|
1590
|
+
lines.push(generateResourceMapperTypeDeclaration(false));
|
|
1591
|
+
}
|
|
1571
1592
|
lines.push('');
|
|
1572
1593
|
}
|
|
1573
1594
|
if (node.credentials && node.credentials.length > 0) {
|
|
@@ -1829,7 +1850,8 @@ function generateSingleVersionTypeFile(node, specificVersion) {
|
|
|
1829
1850
|
const outputProps = filteredProperties.filter((p) => !DISPLAY_ONLY_PROPERTY_TYPES.has(p.type));
|
|
1830
1851
|
const needsFilter = outputProps.some((p) => p.type === 'filter');
|
|
1831
1852
|
const needsAssignment = outputProps.some((p) => p.type === 'assignmentCollection');
|
|
1832
|
-
|
|
1853
|
+
const needsResourceMapper = outputProps.some((p) => p.type === 'resourceMapper');
|
|
1854
|
+
if (needsFilter || needsAssignment || needsResourceMapper) {
|
|
1833
1855
|
lines.push('// Helper types for special n8n fields');
|
|
1834
1856
|
if (needsFilter) {
|
|
1835
1857
|
lines.push(generateFilterTypeDeclaration(false));
|
|
@@ -1837,6 +1859,9 @@ function generateSingleVersionTypeFile(node, specificVersion) {
|
|
|
1837
1859
|
if (needsAssignment) {
|
|
1838
1860
|
lines.push(generateAssignmentTypeDeclarations(false));
|
|
1839
1861
|
}
|
|
1862
|
+
if (needsResourceMapper) {
|
|
1863
|
+
lines.push(generateResourceMapperTypeDeclaration(false));
|
|
1864
|
+
}
|
|
1840
1865
|
lines.push('');
|
|
1841
1866
|
}
|
|
1842
1867
|
const unionResult = generateDiscriminatedUnionForEntry(filteredNode, nodeName, versionSuffix);
|
|
@@ -2000,7 +2025,8 @@ function generateNodeTypeFile(nodes) {
|
|
|
2000
2025
|
const outputProps = nodeArray.flatMap((n) => n.properties.filter((p) => !DISPLAY_ONLY_PROPERTY_TYPES.has(p.type)));
|
|
2001
2026
|
const needsFilter = outputProps.some((p) => p.type === 'filter');
|
|
2002
2027
|
const needsAssignment = outputProps.some((p) => p.type === 'assignmentCollection');
|
|
2003
|
-
|
|
2028
|
+
const needsResourceMapper = outputProps.some((p) => p.type === 'resourceMapper');
|
|
2029
|
+
if (needsFilter || needsAssignment || needsResourceMapper) {
|
|
2004
2030
|
lines.push('// Helper types for special n8n fields');
|
|
2005
2031
|
if (needsFilter) {
|
|
2006
2032
|
lines.push(generateFilterTypeDeclaration(false));
|
|
@@ -2008,6 +2034,9 @@ function generateNodeTypeFile(nodes) {
|
|
|
2008
2034
|
if (needsAssignment) {
|
|
2009
2035
|
lines.push(generateAssignmentTypeDeclarations(false));
|
|
2010
2036
|
}
|
|
2037
|
+
if (needsResourceMapper) {
|
|
2038
|
+
lines.push(generateResourceMapperTypeDeclaration(false));
|
|
2039
|
+
}
|
|
2011
2040
|
lines.push('');
|
|
2012
2041
|
}
|
|
2013
2042
|
const sortedNodes = [...nodeArray].sort((a, b) => {
|