@n8n/eslint-plugin-community-nodes 0.23.0 → 0.25.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/.turbo/turbo-build.log +4 -0
- package/README.md +39 -52
- package/dist/plugin.d.ts +0 -78
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +0 -26
- package/dist/plugin.js.map +1 -1
- package/dist/rules/index.d.ts +0 -13
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +0 -26
- package/dist/rules/index.js.map +1 -1
- package/dist/typecheck.tsbuildinfo +1 -1
- package/docs/rules/no-forbidden-lifecycle-scripts.md +1 -1
- package/package.json +4 -4
- package/src/plugin.ts +0 -26
- package/src/rules/index.ts +0 -26
- package/src/rules/no-forbidden-lifecycle-scripts.test.ts +2 -2
- package/.turbo/turbo-build$colon$unchecked.log +0 -4
- package/dist/rules/cred-class-name-field-conventions.d.ts +0 -2
- package/dist/rules/cred-class-name-field-conventions.d.ts.map +0 -1
- package/dist/rules/cred-class-name-field-conventions.js +0 -89
- package/dist/rules/cred-class-name-field-conventions.js.map +0 -1
- package/dist/rules/cred-class-name-suffix.d.ts +0 -2
- package/dist/rules/cred-class-name-suffix.d.ts.map +0 -1
- package/dist/rules/cred-class-name-suffix.js +0 -53
- package/dist/rules/cred-class-name-suffix.js.map +0 -1
- package/dist/rules/cred-filename-against-convention.d.ts +0 -2
- package/dist/rules/cred-filename-against-convention.d.ts.map +0 -1
- package/dist/rules/cred-filename-against-convention.js +0 -42
- package/dist/rules/cred-filename-against-convention.js.map +0 -1
- package/dist/rules/no-asterisk-in-option-names.d.ts +0 -2
- package/dist/rules/no-asterisk-in-option-names.d.ts.map +0 -1
- package/dist/rules/no-asterisk-in-option-names.js +0 -90
- package/dist/rules/no-asterisk-in-option-names.js.map +0 -1
- package/dist/rules/no-duplicate-param-options.d.ts +0 -2
- package/dist/rules/no-duplicate-param-options.d.ts.map +0 -1
- package/dist/rules/no-duplicate-param-options.js +0 -97
- package/dist/rules/no-duplicate-param-options.js.map +0 -1
- package/dist/rules/node-class-description-name-camelcase.d.ts +0 -2
- package/dist/rules/node-class-description-name-camelcase.d.ts.map +0 -1
- package/dist/rules/node-class-description-name-camelcase.js +0 -92
- package/dist/rules/node-class-description-name-camelcase.js.map +0 -1
- package/dist/rules/node-filename-against-convention.d.ts +0 -2
- package/dist/rules/node-filename-against-convention.d.ts.map +0 -1
- package/dist/rules/node-filename-against-convention.js +0 -61
- package/dist/rules/node-filename-against-convention.js.map +0 -1
- package/dist/rules/node-operation-error-itemindex.d.ts +0 -12
- package/dist/rules/node-operation-error-itemindex.d.ts.map +0 -1
- package/dist/rules/node-operation-error-itemindex.js +0 -184
- package/dist/rules/node-operation-error-itemindex.js.map +0 -1
- package/dist/rules/options-sorted-alphabetically.d.ts +0 -2
- package/dist/rules/options-sorted-alphabetically.d.ts.map +0 -1
- package/dist/rules/options-sorted-alphabetically.js +0 -95
- package/dist/rules/options-sorted-alphabetically.js.map +0 -1
- package/dist/rules/require-community-node-keyword.d.ts +0 -2
- package/dist/rules/require-community-node-keyword.d.ts.map +0 -1
- package/dist/rules/require-community-node-keyword.js +0 -65
- package/dist/rules/require-community-node-keyword.js.map +0 -1
- package/dist/rules/require-continue-on-fail.d.ts +0 -2
- package/dist/rules/require-continue-on-fail.d.ts.map +0 -1
- package/dist/rules/require-continue-on-fail.js +0 -76
- package/dist/rules/require-continue-on-fail.js.map +0 -1
- package/dist/rules/require-mit-license.d.ts +0 -2
- package/dist/rules/require-mit-license.d.ts.map +0 -1
- package/dist/rules/require-mit-license.js +0 -57
- package/dist/rules/require-mit-license.js.map +0 -1
- package/dist/rules/require-param-default.d.ts +0 -15
- package/dist/rules/require-param-default.d.ts.map +0 -1
- package/dist/rules/require-param-default.js +0 -75
- package/dist/rules/require-param-default.js.map +0 -1
- package/docs/rules/cred-class-name-field-conventions.md +0 -38
- package/docs/rules/cred-class-name-suffix.md +0 -46
- package/docs/rules/cred-filename-against-convention.md +0 -42
- package/docs/rules/no-asterisk-in-option-names.md +0 -61
- package/docs/rules/no-duplicate-param-options.md +0 -46
- package/docs/rules/node-class-description-name-camelcase.md +0 -41
- package/docs/rules/node-filename-against-convention.md +0 -50
- package/docs/rules/node-operation-error-itemindex.md +0 -81
- package/docs/rules/options-sorted-alphabetically.md +0 -63
- package/docs/rules/require-community-node-keyword.md +0 -45
- package/docs/rules/require-continue-on-fail.md +0 -56
- package/docs/rules/require-mit-license.md +0 -38
- package/docs/rules/require-param-default.md +0 -60
- package/src/rules/cred-class-name-field-conventions.test.ts +0 -121
- package/src/rules/cred-class-name-field-conventions.ts +0 -102
- package/src/rules/cred-class-name-suffix.test.ts +0 -74
- package/src/rules/cred-class-name-suffix.ts +0 -57
- package/src/rules/cred-filename-against-convention.test.ts +0 -72
- package/src/rules/cred-filename-against-convention.ts +0 -48
- package/src/rules/no-asterisk-in-option-names.test.ts +0 -185
- package/src/rules/no-asterisk-in-option-names.ts +0 -111
- package/src/rules/no-duplicate-param-options.test.ts +0 -125
- package/src/rules/no-duplicate-param-options.ts +0 -125
- package/src/rules/node-class-description-name-camelcase.test.ts +0 -121
- package/src/rules/node-class-description-name-camelcase.ts +0 -114
- package/src/rules/node-filename-against-convention.test.ts +0 -115
- package/src/rules/node-filename-against-convention.ts +0 -76
- package/src/rules/node-operation-error-itemindex.test.ts +0 -280
- package/src/rules/node-operation-error-itemindex.ts +0 -223
- package/src/rules/options-sorted-alphabetically.test.ts +0 -468
- package/src/rules/options-sorted-alphabetically.ts +0 -129
- package/src/rules/require-community-node-keyword.test.ts +0 -82
- package/src/rules/require-community-node-keyword.ts +0 -78
- package/src/rules/require-continue-on-fail.test.ts +0 -129
- package/src/rules/require-continue-on-fail.ts +0 -88
- package/src/rules/require-mit-license.test.ts +0 -67
- package/src/rules/require-mit-license.ts +0 -65
- package/src/rules/require-param-default.test.ts +0 -227
- package/src/rules/require-param-default.ts +0 -89
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { AST_NODE_TYPES } from '@typescript-eslint/utils';
|
|
2
|
-
import { isNodeTypeClass, findClassProperty, findObjectProperty, getStringLiteralValue, getLiteralValue, isFileType, createRule, } from '../utils/index.js';
|
|
3
|
-
export const NoDuplicateParamOptionsRule = createRule({
|
|
4
|
-
name: 'no-duplicate-param-options',
|
|
5
|
-
meta: {
|
|
6
|
-
type: 'problem',
|
|
7
|
-
docs: {
|
|
8
|
-
description: 'Disallow duplicate option names or values within a single node parameter',
|
|
9
|
-
},
|
|
10
|
-
messages: {
|
|
11
|
-
duplicateName: 'Duplicate option name "{{ value }}" in parameter "{{ displayName }}".',
|
|
12
|
-
duplicateValue: 'Duplicate option value "{{ value }}" in parameter "{{ displayName }}".',
|
|
13
|
-
},
|
|
14
|
-
schema: [],
|
|
15
|
-
},
|
|
16
|
-
defaultOptions: [],
|
|
17
|
-
create(context) {
|
|
18
|
-
if (!isFileType(context.filename, '.node.ts')) {
|
|
19
|
-
return {};
|
|
20
|
-
}
|
|
21
|
-
const checkProperty = (property) => {
|
|
22
|
-
const typeProperty = findObjectProperty(property, 'type');
|
|
23
|
-
const type = typeProperty ? getStringLiteralValue(typeProperty.value) : null;
|
|
24
|
-
if (type !== 'options' && type !== 'multiOptions') {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
const optionsProperty = findObjectProperty(property, 'options');
|
|
28
|
-
if (!optionsProperty?.value ||
|
|
29
|
-
optionsProperty.value.type !== AST_NODE_TYPES.ArrayExpression) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
const displayNameProperty = findObjectProperty(property, 'displayName');
|
|
33
|
-
const displayName = (displayNameProperty ? getStringLiteralValue(displayNameProperty.value) : null) ??
|
|
34
|
-
'unknown';
|
|
35
|
-
const seenNames = new Set();
|
|
36
|
-
const seenValues = new Set();
|
|
37
|
-
for (const option of optionsProperty.value.elements) {
|
|
38
|
-
if (!option || option.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
const nameProperty = findObjectProperty(option, 'name');
|
|
42
|
-
const name = nameProperty ? getStringLiteralValue(nameProperty.value) : null;
|
|
43
|
-
if (name !== null) {
|
|
44
|
-
if (seenNames.has(name)) {
|
|
45
|
-
context.report({
|
|
46
|
-
node: nameProperty.value,
|
|
47
|
-
messageId: 'duplicateName',
|
|
48
|
-
data: { value: name, displayName },
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
seenNames.add(name);
|
|
52
|
-
}
|
|
53
|
-
const valueProperty = findObjectProperty(option, 'value');
|
|
54
|
-
const value = valueProperty ? getLiteralValue(valueProperty.value) : null;
|
|
55
|
-
if (value !== null) {
|
|
56
|
-
if (seenValues.has(value)) {
|
|
57
|
-
context.report({
|
|
58
|
-
node: valueProperty.value,
|
|
59
|
-
messageId: 'duplicateValue',
|
|
60
|
-
data: { value: String(value), displayName },
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
seenValues.add(value);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
const analyzeNodeDescription = (descriptionValue) => {
|
|
68
|
-
if (!descriptionValue || descriptionValue.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
const propertiesProperty = findObjectProperty(descriptionValue, 'properties');
|
|
72
|
-
if (!propertiesProperty?.value ||
|
|
73
|
-
propertiesProperty.value.type !== AST_NODE_TYPES.ArrayExpression) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
for (const property of propertiesProperty.value.elements) {
|
|
77
|
-
if (!property || property.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
checkProperty(property);
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
return {
|
|
84
|
-
ClassDeclaration(node) {
|
|
85
|
-
if (!isNodeTypeClass(node)) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
const descriptionProperty = findClassProperty(node, 'description');
|
|
89
|
-
if (!descriptionProperty) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
analyzeNodeDescription(descriptionProperty.value);
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
},
|
|
96
|
-
});
|
|
97
|
-
//# sourceMappingURL=no-duplicate-param-options.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"no-duplicate-param-options.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-param-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-class-description-name-camelcase.d.ts","sourceRoot":"","sources":["../../src/rules/node-class-description-name-camelcase.ts"],"names":[],"mappings":"AAiDA,eAAO,MAAM,qCAAqC,iJAgEhD,CAAC"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { TSESTree } from '@typescript-eslint/utils';
|
|
2
|
-
import { isNodeTypeClass, findClassProperty, findObjectProperty, getStringLiteralValue, isFileType, createRule, } from '../utils/index.js';
|
|
3
|
-
// `description.name` must be camelCase: a lowercase letter followed by
|
|
4
|
-
// letters/digits, with no separators.
|
|
5
|
-
const CAMEL_CASE_PATTERN = /^[a-z][a-zA-Z0-9]*$/;
|
|
6
|
-
/**
|
|
7
|
-
* Converts an arbitrary node name to camelCase by splitting on any
|
|
8
|
-
* non-alphanumeric separators, upper-casing the first character of each
|
|
9
|
-
* subsequent segment, and lower-casing the very first character.
|
|
10
|
-
* Examples: `My Node` -> `myNode`, `my-node` -> `myNode`, `GitHub` -> `gitHub`.
|
|
11
|
-
*/
|
|
12
|
-
function toCamelCase(value) {
|
|
13
|
-
const segments = value.split(/[^a-zA-Z0-9]+/).filter(Boolean);
|
|
14
|
-
if (segments.length === 0) {
|
|
15
|
-
return value;
|
|
16
|
-
}
|
|
17
|
-
const joined = segments
|
|
18
|
-
.map((segment, index) => index === 0 ? segment : segment.charAt(0).toUpperCase() + segment.slice(1))
|
|
19
|
-
.join('');
|
|
20
|
-
return joined.charAt(0).toLowerCase() + joined.slice(1);
|
|
21
|
-
}
|
|
22
|
-
// Serialize a value as a string literal using the original quote character,
|
|
23
|
-
// escaping any characters that would otherwise break the literal so the
|
|
24
|
-
// autofix never emits invalid code.
|
|
25
|
-
function toStringLiteral(value, quote) {
|
|
26
|
-
const escaped = value
|
|
27
|
-
.replace(/\\/g, '\\\\')
|
|
28
|
-
.replace(/\n/g, '\\n')
|
|
29
|
-
.replace(/\r/g, '\\r')
|
|
30
|
-
.split(quote)
|
|
31
|
-
.join(`\\${quote}`);
|
|
32
|
-
return `${quote}${escaped}${quote}`;
|
|
33
|
-
}
|
|
34
|
-
export const NodeClassDescriptionNameCamelCaseRule = createRule({
|
|
35
|
-
name: 'node-class-description-name-camelcase',
|
|
36
|
-
meta: {
|
|
37
|
-
type: 'problem',
|
|
38
|
-
docs: {
|
|
39
|
-
description: 'Node class `description.name` must be camelCase',
|
|
40
|
-
},
|
|
41
|
-
messages: {
|
|
42
|
-
notCamelCase: "Node `description.name` '{{value}}' must be camelCase",
|
|
43
|
-
},
|
|
44
|
-
fixable: 'code',
|
|
45
|
-
schema: [],
|
|
46
|
-
},
|
|
47
|
-
defaultOptions: [],
|
|
48
|
-
create(context) {
|
|
49
|
-
if (!isFileType(context.filename, '.node.ts')) {
|
|
50
|
-
return {};
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
ClassDeclaration(node) {
|
|
54
|
-
if (!isNodeTypeClass(node)) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const descriptionProperty = findClassProperty(node, 'description');
|
|
58
|
-
if (descriptionProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
const nameProperty = findObjectProperty(descriptionProperty.value, 'name');
|
|
62
|
-
if (!nameProperty) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
const nameValue = getStringLiteralValue(nameProperty.value);
|
|
66
|
-
if (nameValue === null) {
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
if (CAMEL_CASE_PATTERN.test(nameValue)) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const valueNode = nameProperty.value;
|
|
73
|
-
const fixedValue = toCamelCase(nameValue);
|
|
74
|
-
// Only offer an autofix when it actually yields a valid camelCase
|
|
75
|
-
// value (e.g. names starting with a digit cannot be repaired).
|
|
76
|
-
const canFix = fixedValue !== nameValue && CAMEL_CASE_PATTERN.test(fixedValue);
|
|
77
|
-
context.report({
|
|
78
|
-
node: valueNode,
|
|
79
|
-
messageId: 'notCamelCase',
|
|
80
|
-
data: { value: nameValue },
|
|
81
|
-
fix: canFix
|
|
82
|
-
? (fixer) => {
|
|
83
|
-
const quote = context.sourceCode.getText(valueNode).charAt(0);
|
|
84
|
-
return fixer.replaceText(valueNode, toStringLiteral(fixedValue, quote));
|
|
85
|
-
}
|
|
86
|
-
: undefined,
|
|
87
|
-
});
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
//# sourceMappingURL=node-class-description-name-camelcase.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-class-description-name-camelcase.js","sourceRoot":"","sources":["../../src/rules/node-class-description-name-camelcase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-filename-against-convention.d.ts","sourceRoot":"","sources":["../../src/rules/node-filename-against-convention.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,iCAAiC,+IAsD5C,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { TSESTree } from '@typescript-eslint/utils';
|
|
2
|
-
import * as path from 'node:path';
|
|
3
|
-
import { isNodeTypeClass, findClassProperty, findObjectProperty, getStringLiteralValue, isFileType, createRule, } from '../utils/index.js';
|
|
4
|
-
/**
|
|
5
|
-
* Converts a `description.name` to the expected node file basename by
|
|
6
|
-
* upper-casing the first character. The source of truth is `description.name`,
|
|
7
|
-
* not the class name. Example: `github` -> `Github`.
|
|
8
|
-
*/
|
|
9
|
-
function toExpectedBaseName(name) {
|
|
10
|
-
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
11
|
-
}
|
|
12
|
-
export const NodeFilenameAgainstConventionRule = createRule({
|
|
13
|
-
name: 'node-filename-against-convention',
|
|
14
|
-
meta: {
|
|
15
|
-
type: 'problem',
|
|
16
|
-
docs: {
|
|
17
|
-
description: 'Node filename must match the node `description.name`',
|
|
18
|
-
},
|
|
19
|
-
messages: {
|
|
20
|
-
renameFile: 'Node filename must match `description.name`. Rename file to "{{expected}}".',
|
|
21
|
-
},
|
|
22
|
-
schema: [],
|
|
23
|
-
},
|
|
24
|
-
defaultOptions: [],
|
|
25
|
-
create(context) {
|
|
26
|
-
if (!isFileType(context.filename, '.node.ts')) {
|
|
27
|
-
return {};
|
|
28
|
-
}
|
|
29
|
-
return {
|
|
30
|
-
ClassDeclaration(node) {
|
|
31
|
-
if (!isNodeTypeClass(node)) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const descriptionProperty = findClassProperty(node, 'description');
|
|
35
|
-
if (descriptionProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const nameProperty = findObjectProperty(descriptionProperty.value, 'name');
|
|
39
|
-
if (!nameProperty) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
const name = getStringLiteralValue(nameProperty.value);
|
|
43
|
-
if (!name) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
const expectedBaseName = toExpectedBaseName(name);
|
|
47
|
-
// Strip the `.node.ts` extension and any trailing `V<digits>` version
|
|
48
|
-
// suffix so versioned files (e.g. `GithubV2.node.ts`) are accepted.
|
|
49
|
-
const actualBaseName = path.basename(context.filename, '.node.ts').replace(/V\d+$/, '');
|
|
50
|
-
if (actualBaseName !== expectedBaseName) {
|
|
51
|
-
context.report({
|
|
52
|
-
node: nameProperty.value,
|
|
53
|
-
messageId: 'renameFile',
|
|
54
|
-
data: { expected: `${expectedBaseName}.node.ts` },
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
},
|
|
60
|
-
});
|
|
61
|
-
//# sourceMappingURL=node-filename-against-convention.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-filename-against-convention.js","sourceRoot":"","sources":["../../src/rules/node-filename-against-convention.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EACV,UAAU,GACV,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,UAAU,CAAC;IAC3D,IAAI,EAAE,kCAAkC;IACxC,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EAAE,sDAAsD;SACnE;QACD,QAAQ,EAAE;YACT,UAAU,EAAE,6EAA6E;SACzF;QACD,MAAM,EAAE,EAAE;KACV;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACb,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,CAAC;QACX,CAAC;QAED,OAAO;YACN,gBAAgB,CAAC,IAAI;gBACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,OAAO;gBACR,CAAC;gBAED,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBACnE,IAAI,mBAAmB,EAAE,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;oBACnF,OAAO;gBACR,CAAC;gBAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC3E,IAAI,CAAC,YAAY,EAAE,CAAC;oBACnB,OAAO;gBACR,CAAC;gBAED,MAAM,IAAI,GAAG,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACvD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACX,OAAO;gBACR,CAAC;gBAED,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAClD,sEAAsE;gBACtE,oEAAoE;gBACpE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAExF,IAAI,cAAc,KAAK,gBAAgB,EAAE,CAAC;oBACzC,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI,EAAE,YAAY,CAAC,KAAK;wBACxB,SAAS,EAAE,YAAY;wBACvB,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,gBAAgB,UAAU,EAAE;qBACjD,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Flags `new NodeOperationError(...)` or `new NodeApiError(...)` inside item
|
|
3
|
-
* loops in `execute()` methods that omit `{ itemIndex }` from the options
|
|
4
|
-
* argument. Without it, n8n cannot associate the error with the specific item
|
|
5
|
-
* that caused it, breaking per-item error reporting and `continueOnFail`.
|
|
6
|
-
*
|
|
7
|
-
* "Item loop" means a `for` or `for...of` that iterates over the result of
|
|
8
|
-
* `this.getInputData()` (or a variable initialised from it). Errors outside
|
|
9
|
-
* such loops — e.g. in webhook handlers or trigger setup — are not flagged.
|
|
10
|
-
*/
|
|
11
|
-
export declare const NodeOperationErrorItemIndexRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingItemIndex", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
12
|
-
//# sourceMappingURL=node-operation-error-itemindex.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-operation-error-itemindex.d.ts","sourceRoot":"","sources":["../../src/rules/node-operation-error-itemindex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiFH,eAAO,MAAM,+BAA+B,qJAoI1C,CAAC"}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Flags `new NodeOperationError(...)` or `new NodeApiError(...)` inside item
|
|
3
|
-
* loops in `execute()` methods that omit `{ itemIndex }` from the options
|
|
4
|
-
* argument. Without it, n8n cannot associate the error with the specific item
|
|
5
|
-
* that caused it, breaking per-item error reporting and `continueOnFail`.
|
|
6
|
-
*
|
|
7
|
-
* "Item loop" means a `for` or `for...of` that iterates over the result of
|
|
8
|
-
* `this.getInputData()` (or a variable initialised from it). Errors outside
|
|
9
|
-
* such loops — e.g. in webhook handlers or trigger setup — are not flagged.
|
|
10
|
-
*/
|
|
11
|
-
import { AST_NODE_TYPES } from '@typescript-eslint/utils';
|
|
12
|
-
import { createRule, findObjectProperty, isFileType, isNodeTypeClass } from '../utils/index.js';
|
|
13
|
-
const ITEM_ERROR_CLASSES = new Set(['NodeOperationError', 'NodeApiError']);
|
|
14
|
-
/** Returns true when `node` is a bare `this.getInputData(...)` call. */
|
|
15
|
-
function isGetInputDataCall(node) {
|
|
16
|
-
return (node.callee.type === AST_NODE_TYPES.MemberExpression &&
|
|
17
|
-
node.callee.object.type === AST_NODE_TYPES.ThisExpression &&
|
|
18
|
-
node.callee.property.type === AST_NODE_TYPES.Identifier &&
|
|
19
|
-
node.callee.property.name === 'getInputData');
|
|
20
|
-
}
|
|
21
|
-
/** Returns true when `node` is `<varName>.length` for any name in `varNames`. */
|
|
22
|
-
function isLengthAccessOnVariable(node, varNames) {
|
|
23
|
-
return (node.type === AST_NODE_TYPES.MemberExpression &&
|
|
24
|
-
!node.computed &&
|
|
25
|
-
node.property.type === AST_NODE_TYPES.Identifier &&
|
|
26
|
-
node.property.name === 'length' &&
|
|
27
|
-
node.object.type === AST_NODE_TYPES.Identifier &&
|
|
28
|
-
varNames.has(node.object.name));
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Returns true when the `for` test condition references `<itemVar>.length`,
|
|
32
|
-
* indicating that the loop iterates over an items array.
|
|
33
|
-
*/
|
|
34
|
-
function isItemForLoop(node, itemVarNames) {
|
|
35
|
-
if (!node.test || node.test.type !== AST_NODE_TYPES.BinaryExpression)
|
|
36
|
-
return false;
|
|
37
|
-
const { left, right } = node.test;
|
|
38
|
-
return (isLengthAccessOnVariable(left, itemVarNames) || isLengthAccessOnVariable(right, itemVarNames));
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Returns true when the `for...of` iterable is an items variable or a direct
|
|
42
|
-
* `this.getInputData()` call.
|
|
43
|
-
*/
|
|
44
|
-
function isItemForOfLoop(node, itemVarNames) {
|
|
45
|
-
const { right } = node;
|
|
46
|
-
if (right.type === AST_NODE_TYPES.Identifier && itemVarNames.has(right.name)) {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
return right.type === AST_NODE_TYPES.CallExpression && isGetInputDataCall(right);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Returns true when the `NodeOperationError` / `NodeApiError` constructor call
|
|
53
|
-
* already has an `{ itemIndex }` property in its options argument, or when the
|
|
54
|
-
* options argument cannot be statically inspected (variable / spread) — in
|
|
55
|
-
* which case we give the benefit of the doubt.
|
|
56
|
-
*/
|
|
57
|
-
function hasItemIndexOption(node) {
|
|
58
|
-
const { arguments: args } = node;
|
|
59
|
-
if (args.length < 3)
|
|
60
|
-
return false;
|
|
61
|
-
const optionsArg = args[2];
|
|
62
|
-
// Non-object-literal (bare variable reference) — can't statically check, assume OK.
|
|
63
|
-
if (!optionsArg || optionsArg.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
// itemIndex must be an explicit own property of the options object.
|
|
67
|
-
// Spread elements (e.g. { ...opts }) are not sufficient — they may not
|
|
68
|
-
// include itemIndex and would silently bypass this requirement.
|
|
69
|
-
return findObjectProperty(optionsArg, 'itemIndex') !== null;
|
|
70
|
-
}
|
|
71
|
-
export const NodeOperationErrorItemIndexRule = createRule({
|
|
72
|
-
name: 'node-operation-error-itemindex',
|
|
73
|
-
meta: {
|
|
74
|
-
type: 'problem',
|
|
75
|
-
docs: {
|
|
76
|
-
description: 'Require { itemIndex } in NodeOperationError / NodeApiError options inside item loops',
|
|
77
|
-
},
|
|
78
|
-
messages: {
|
|
79
|
-
missingItemIndex: '`new {{ errorClass }}(...)` inside an item loop must include `{ itemIndex }` as the ' +
|
|
80
|
-
'third argument so n8n can associate the error with the failing item.',
|
|
81
|
-
},
|
|
82
|
-
schema: [],
|
|
83
|
-
},
|
|
84
|
-
defaultOptions: [],
|
|
85
|
-
create(context) {
|
|
86
|
-
if (!isFileType(context.filename, '.node.ts')) {
|
|
87
|
-
return {};
|
|
88
|
-
}
|
|
89
|
-
let inNodeTypeClass = false;
|
|
90
|
-
let inExecuteMethod = false;
|
|
91
|
-
/** Names of variables initialised from `this.getInputData()` in the current execute() scope. */
|
|
92
|
-
const itemVariableNames = new Set();
|
|
93
|
-
/** AST nodes for loops that are confirmed item loops. */
|
|
94
|
-
const itemLoopNodes = new Set();
|
|
95
|
-
/** Number of currently open item loops (supports nested loops). */
|
|
96
|
-
let itemLoopDepth = 0;
|
|
97
|
-
function resetExecuteState() {
|
|
98
|
-
inExecuteMethod = false;
|
|
99
|
-
itemVariableNames.clear();
|
|
100
|
-
itemLoopNodes.clear();
|
|
101
|
-
itemLoopDepth = 0;
|
|
102
|
-
}
|
|
103
|
-
return {
|
|
104
|
-
ClassDeclaration(node) {
|
|
105
|
-
if (isNodeTypeClass(node)) {
|
|
106
|
-
inNodeTypeClass = true;
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
'ClassDeclaration:exit'() {
|
|
110
|
-
inNodeTypeClass = false;
|
|
111
|
-
resetExecuteState();
|
|
112
|
-
},
|
|
113
|
-
MethodDefinition(node) {
|
|
114
|
-
if (inNodeTypeClass &&
|
|
115
|
-
node.key.type === AST_NODE_TYPES.Identifier &&
|
|
116
|
-
node.key.name === 'execute') {
|
|
117
|
-
inExecuteMethod = true;
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
'MethodDefinition:exit'(node) {
|
|
121
|
-
if (inExecuteMethod &&
|
|
122
|
-
node.key.type === AST_NODE_TYPES.Identifier &&
|
|
123
|
-
node.key.name === 'execute') {
|
|
124
|
-
resetExecuteState();
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
VariableDeclarator(node) {
|
|
128
|
-
if (!inExecuteMethod)
|
|
129
|
-
return;
|
|
130
|
-
if (!node.init)
|
|
131
|
-
return;
|
|
132
|
-
if (node.id.type !== AST_NODE_TYPES.Identifier)
|
|
133
|
-
return;
|
|
134
|
-
if (node.init.type === AST_NODE_TYPES.CallExpression && isGetInputDataCall(node.init)) {
|
|
135
|
-
itemVariableNames.add(node.id.name);
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
|
-
ForStatement(node) {
|
|
139
|
-
if (!inExecuteMethod)
|
|
140
|
-
return;
|
|
141
|
-
if (isItemForLoop(node, itemVariableNames)) {
|
|
142
|
-
itemLoopNodes.add(node);
|
|
143
|
-
itemLoopDepth++;
|
|
144
|
-
}
|
|
145
|
-
},
|
|
146
|
-
'ForStatement:exit'(node) {
|
|
147
|
-
if (itemLoopNodes.has(node)) {
|
|
148
|
-
itemLoopNodes.delete(node);
|
|
149
|
-
itemLoopDepth--;
|
|
150
|
-
}
|
|
151
|
-
},
|
|
152
|
-
ForOfStatement(node) {
|
|
153
|
-
if (!inExecuteMethod)
|
|
154
|
-
return;
|
|
155
|
-
if (isItemForOfLoop(node, itemVariableNames)) {
|
|
156
|
-
itemLoopNodes.add(node);
|
|
157
|
-
itemLoopDepth++;
|
|
158
|
-
}
|
|
159
|
-
},
|
|
160
|
-
'ForOfStatement:exit'(node) {
|
|
161
|
-
if (itemLoopNodes.has(node)) {
|
|
162
|
-
itemLoopNodes.delete(node);
|
|
163
|
-
itemLoopDepth--;
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
NewExpression(node) {
|
|
167
|
-
if (itemLoopDepth === 0)
|
|
168
|
-
return;
|
|
169
|
-
if (node.callee.type !== AST_NODE_TYPES.Identifier ||
|
|
170
|
-
!ITEM_ERROR_CLASSES.has(node.callee.name)) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
if (!hasItemIndexOption(node)) {
|
|
174
|
-
context.report({
|
|
175
|
-
node,
|
|
176
|
-
messageId: 'missingItemIndex',
|
|
177
|
-
data: { errorClass: node.callee.name },
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
},
|
|
181
|
-
};
|
|
182
|
-
},
|
|
183
|
-
});
|
|
184
|
-
//# sourceMappingURL=node-operation-error-itemindex.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-operation-error-itemindex.js","sourceRoot":"","sources":["../../src/rules/node-operation-error-itemindex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"options-sorted-alphabetically.d.ts","sourceRoot":"","sources":["../../src/rules/options-sorted-alphabetically.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,+BAA+B,qJAoH1C,CAAC"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { AST_NODE_TYPES } from '@typescript-eslint/utils';
|
|
2
|
-
import { isNodeTypeClass, findClassProperty, findObjectProperty, getStringLiteralValue, isFileType, createRule, } from '../utils/index.js';
|
|
3
|
-
export const OptionsSortedAlphabeticallyRule = createRule({
|
|
4
|
-
name: 'options-sorted-alphabetically',
|
|
5
|
-
meta: {
|
|
6
|
-
type: 'suggestion',
|
|
7
|
-
docs: {
|
|
8
|
-
description: 'Enforce alphabetical ordering of options arrays in n8n node properties',
|
|
9
|
-
},
|
|
10
|
-
messages: {
|
|
11
|
-
optionsNotSorted: 'Options in "{{ displayName }}" are not sorted alphabetically. Expected order: {{ expectedOrder }}.',
|
|
12
|
-
},
|
|
13
|
-
schema: [],
|
|
14
|
-
},
|
|
15
|
-
defaultOptions: [],
|
|
16
|
-
create(context) {
|
|
17
|
-
if (!isFileType(context.filename, '.node.ts')) {
|
|
18
|
-
return {};
|
|
19
|
-
}
|
|
20
|
-
const analyzeNodeDescription = (descriptionValue) => {
|
|
21
|
-
if (!descriptionValue || descriptionValue.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const propertiesProperty = findObjectProperty(descriptionValue, 'properties');
|
|
25
|
-
if (!propertiesProperty?.value ||
|
|
26
|
-
propertiesProperty.value.type !== AST_NODE_TYPES.ArrayExpression) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
for (const property of propertiesProperty.value.elements) {
|
|
30
|
-
if (!property || property.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
const typeProperty = findObjectProperty(property, 'type');
|
|
34
|
-
const type = typeProperty ? getStringLiteralValue(typeProperty.value) : null;
|
|
35
|
-
if (type !== 'options') {
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
const optionsProperty = findObjectProperty(property, 'options');
|
|
39
|
-
if (!optionsProperty?.value ||
|
|
40
|
-
optionsProperty.value.type !== AST_NODE_TYPES.ArrayExpression) {
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
const optionsArray = optionsProperty.value;
|
|
44
|
-
// Extract all option names; skip if any name is non-literal (dynamic options)
|
|
45
|
-
const names = [];
|
|
46
|
-
let hasDynamicName = false;
|
|
47
|
-
for (const option of optionsArray.elements) {
|
|
48
|
-
if (!option || option.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
49
|
-
hasDynamicName = true;
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
const nameProperty = findObjectProperty(option, 'name');
|
|
53
|
-
const name = nameProperty ? getStringLiteralValue(nameProperty.value) : null;
|
|
54
|
-
if (name === null) {
|
|
55
|
-
hasDynamicName = true;
|
|
56
|
-
break;
|
|
57
|
-
}
|
|
58
|
-
names.push(name);
|
|
59
|
-
}
|
|
60
|
-
if (hasDynamicName || names.length <= 1) {
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
const sorted = [...names].sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
|
|
64
|
-
const isSorted = names.every((name, i) => name === sorted[i]);
|
|
65
|
-
if (isSorted) {
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
const displayNameProperty = findObjectProperty(property, 'displayName');
|
|
69
|
-
const displayName = (displayNameProperty ? getStringLiteralValue(displayNameProperty.value) : null) ??
|
|
70
|
-
'unknown';
|
|
71
|
-
context.report({
|
|
72
|
-
node: optionsArray,
|
|
73
|
-
messageId: 'optionsNotSorted',
|
|
74
|
-
data: {
|
|
75
|
-
displayName,
|
|
76
|
-
expectedOrder: sorted.join(', '),
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
return {
|
|
82
|
-
ClassDeclaration(node) {
|
|
83
|
-
if (!isNodeTypeClass(node)) {
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
const descriptionProperty = findClassProperty(node, 'description');
|
|
87
|
-
if (!descriptionProperty) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
analyzeNodeDescription(descriptionProperty.value);
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
//# sourceMappingURL=options-sorted-alphabetically.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"options-sorted-alphabetically.js","sourceRoot":"","sources":["../../src/rules/options-sorted-alphabetically.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export declare const RequireCommunityNodeKeywordRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingKeyword" | "missingKeywordsArray", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
2
|
-
//# sourceMappingURL=require-community-node-keyword.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"require-community-node-keyword.d.ts","sourceRoot":"","sources":["../../src/rules/require-community-node-keyword.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,+BAA+B,4KAsE1C,CAAC"}
|