n8n-workflow 1.103.2 → 1.104.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 (39) hide show
  1. package/dist/cjs/index.d.ts +1 -0
  2. package/dist/cjs/index.d.ts.map +1 -1
  3. package/dist/cjs/index.js +2 -1
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/interfaces.d.ts +20 -3
  6. package/dist/cjs/interfaces.d.ts.map +1 -1
  7. package/dist/cjs/interfaces.js.map +1 -1
  8. package/dist/cjs/node-helpers.d.ts.map +1 -1
  9. package/dist/cjs/node-helpers.js +1 -6
  10. package/dist/cjs/node-helpers.js.map +1 -1
  11. package/dist/cjs/node-parameters/parameter-type-validation.d.ts +16 -0
  12. package/dist/cjs/node-parameters/parameter-type-validation.d.ts.map +1 -0
  13. package/dist/cjs/node-parameters/parameter-type-validation.js +133 -0
  14. package/dist/cjs/node-parameters/parameter-type-validation.js.map +1 -0
  15. package/dist/cjs/typecheck.tsbuildinfo +1 -1
  16. package/dist/cjs/workflow.d.ts +4 -0
  17. package/dist/cjs/workflow.d.ts.map +1 -1
  18. package/dist/cjs/workflow.js +29 -14
  19. package/dist/cjs/workflow.js.map +1 -1
  20. package/dist/esm/index.d.ts +1 -0
  21. package/dist/esm/index.d.ts.map +1 -1
  22. package/dist/esm/index.js +1 -0
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/interfaces.d.ts +20 -3
  25. package/dist/esm/interfaces.d.ts.map +1 -1
  26. package/dist/esm/interfaces.js.map +1 -1
  27. package/dist/esm/node-helpers.d.ts.map +1 -1
  28. package/dist/esm/node-helpers.js +1 -6
  29. package/dist/esm/node-helpers.js.map +1 -1
  30. package/dist/esm/node-parameters/parameter-type-validation.d.ts +16 -0
  31. package/dist/esm/node-parameters/parameter-type-validation.d.ts.map +1 -0
  32. package/dist/esm/node-parameters/parameter-type-validation.js +116 -0
  33. package/dist/esm/node-parameters/parameter-type-validation.js.map +1 -0
  34. package/dist/esm/typecheck.tsbuildinfo +1 -1
  35. package/dist/esm/workflow.d.ts +4 -0
  36. package/dist/esm/workflow.d.ts.map +1 -1
  37. package/dist/esm/workflow.js +29 -14
  38. package/dist/esm/workflow.js.map +1 -1
  39. package/package.json +4 -4
@@ -0,0 +1,116 @@
1
+ import { NodeOperationError } from '../errors';
2
+ import { assert } from '../utils';
3
+ function assertUserInput(condition, message, node) {
4
+ try {
5
+ assert(condition, message);
6
+ }
7
+ catch (e) {
8
+ if (e instanceof Error) {
9
+ // Use level 'info' to prevent reporting to Sentry (only 'error' and 'fatal' levels are reported)
10
+ const nodeError = new NodeOperationError(node, e.message, { level: 'info' });
11
+ nodeError.stack = e.stack;
12
+ throw nodeError;
13
+ }
14
+ throw e;
15
+ }
16
+ }
17
+ function assertParamIsType(parameterName, value, type, node) {
18
+ assertUserInput(typeof value === type, `Parameter "${parameterName}" is not ${type}`, node);
19
+ }
20
+ export function assertParamIsNumber(parameterName, value, node) {
21
+ assertParamIsType(parameterName, value, 'number', node);
22
+ }
23
+ export function assertParamIsString(parameterName, value, node) {
24
+ assertParamIsType(parameterName, value, 'string', node);
25
+ }
26
+ export function assertParamIsBoolean(parameterName, value, node) {
27
+ assertParamIsType(parameterName, value, 'boolean', node);
28
+ }
29
+ export function assertParamIsArray(parameterName, value, validator, node) {
30
+ assertUserInput(Array.isArray(value), `Parameter "${parameterName}" is not an array`, node);
31
+ // Use for loop instead of .every() to properly handle sparse arrays
32
+ // .every() skips empty/sparse indices, which could allow invalid arrays to pass
33
+ for (let i = 0; i < value.length; i++) {
34
+ if (!validator(value[i])) {
35
+ assertUserInput(false, `Parameter "${parameterName}" has elements that don't match expected types`, node);
36
+ }
37
+ }
38
+ }
39
+ function assertIsValidObject(value, node) {
40
+ assertUserInput(typeof value === 'object' && value !== null, 'Value is not a valid object', node);
41
+ }
42
+ function assertIsRequiredParameter(parameterName, value, isRequired, node) {
43
+ if (isRequired && value === undefined) {
44
+ assertUserInput(false, `Required parameter "${parameterName}" is missing`, node);
45
+ }
46
+ }
47
+ function assertIsResourceLocator(parameterName, value, node) {
48
+ assertUserInput(typeof value === 'object' &&
49
+ value !== null &&
50
+ '__rl' in value &&
51
+ 'mode' in value &&
52
+ 'value' in value, `Parameter "${parameterName}" is not a valid resource locator object`, node);
53
+ }
54
+ function assertParamIsObject(parameterName, value, node) {
55
+ assertUserInput(typeof value === 'object' && value !== null, `Parameter "${parameterName}" is not a valid object`, node);
56
+ }
57
+ function createElementValidator(elementType) {
58
+ return (val) => typeof val === elementType;
59
+ }
60
+ function assertParamIsArrayOfType(parameterName, value, arrayType, node) {
61
+ const baseType = arrayType.slice(0, -2);
62
+ const elementType = baseType === 'string' || baseType === 'number' || baseType === 'boolean' ? baseType : 'string';
63
+ const validator = createElementValidator(elementType);
64
+ assertParamIsArray(parameterName, value, validator, node);
65
+ }
66
+ function assertParamIsPrimitive(parameterName, value, type, node) {
67
+ assertUserInput(typeof value === type, `Parameter "${parameterName}" is not a valid ${type}`, node);
68
+ }
69
+ function validateParameterType(parameterName, value, type, node) {
70
+ try {
71
+ if (type === 'resource-locator') {
72
+ assertIsResourceLocator(parameterName, value, node);
73
+ }
74
+ else if (type === 'object') {
75
+ assertParamIsObject(parameterName, value, node);
76
+ }
77
+ else if (type.endsWith('[]')) {
78
+ assertParamIsArrayOfType(parameterName, value, type, node);
79
+ }
80
+ else {
81
+ assertParamIsPrimitive(parameterName, value, type, node);
82
+ }
83
+ return true;
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ }
89
+ function validateParameterAgainstTypes(parameterName, value, types, node) {
90
+ let isValid = false;
91
+ for (const type of types) {
92
+ if (validateParameterType(parameterName, value, type, node)) {
93
+ isValid = true;
94
+ break;
95
+ }
96
+ }
97
+ if (!isValid) {
98
+ const typeList = types.join(' or ');
99
+ assertUserInput(false, `Parameter "${parameterName}" does not match any of the expected types: ${typeList}`, node);
100
+ }
101
+ }
102
+ export function validateNodeParameters(value, parameters, node) {
103
+ assertIsValidObject(value, node);
104
+ Object.keys(parameters).forEach((key) => {
105
+ const param = parameters[key];
106
+ const paramValue = value[key];
107
+ assertIsRequiredParameter(key, paramValue, param.required ?? false, node);
108
+ // If required, value cannot be undefined and must be validated
109
+ // If not required, value can be undefined but should be validated when present
110
+ if (param.required || paramValue !== undefined) {
111
+ const types = Array.isArray(param.type) ? param.type : [param.type];
112
+ validateParameterAgainstTypes(key, paramValue, types, node);
113
+ }
114
+ });
115
+ }
116
+ //# sourceMappingURL=parameter-type-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-type-validation.js","sourceRoot":"","sources":["../../../src/node-parameters/parameter-type-validation.ts"],"names":[],"mappings":"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"}