@n8n/eslint-plugin-community-nodes 0.27.0 → 0.29.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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @n8n/eslint-plugin-community-nodes@0.27.0 build /home/runner/work/n8n/n8n/packages/@n8n/eslint-plugin-community-nodes
2
+ > @n8n/eslint-plugin-community-nodes@0.29.0 build /home/runner/work/n8n/n8n/packages/@n8n/eslint-plugin-community-nodes
3
3
  > tsc --project tsconfig.build.json
4
4
 
@@ -1,11 +1,11 @@
1
1
  export declare const rules: {
2
2
  'ai-node-package-json': import("@typescript-eslint/utils/ts-eslint").RuleModule<"invalidSdkVersion" | "missingPeerDep" | "missingSdkVersion" | "wrongLocation", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
3
- 'no-restricted-globals': import("@typescript-eslint/utils/ts-eslint").RuleModule<"restrictedGlobal", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
3
+ 'no-restricted-globals': import("@typescript-eslint/utils/ts-eslint").RuleModule<"restrictedGlobal" | "restrictedGlobalWithHint", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
4
4
  'no-restricted-imports': import("@typescript-eslint/utils/ts-eslint").RuleModule<"restrictedDynamicImport" | "restrictedImport" | "restrictedRequire", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
5
5
  'credential-password-field': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingPasswordOption", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
6
6
  'no-deprecated-workflow-functions': import("@typescript-eslint/utils/ts-eslint").RuleModule<"deprecatedFunction" | "deprecatedRequestFunction" | "deprecatedType" | "deprecatedWithoutReplacement" | "suggestReplaceFunction" | "suggestReplaceType", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
7
7
  'no-emoji-in-options': import("@typescript-eslint/utils/ts-eslint").RuleModule<"emojiInOption", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
8
- 'node-usable-as-tool': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingUsableAsTool", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
8
+ 'node-usable-as-tool': import("@typescript-eslint/utils/ts-eslint").RuleModule<"aiOnlyUsableAsTool" | "missingUsableAsTool" | "triggerUsableAsTool", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
9
9
  'package-name-convention': import("@typescript-eslint/utils/ts-eslint").RuleModule<"defaultPlaceholderName" | "invalidPackageName" | "missingName" | "renameTo", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
10
10
  'credential-test-required': import("@typescript-eslint/utils/ts-eslint").RuleModule<"addTemplate" | "missingCredentialTest", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
11
11
  'credential-unnecessary-password': import("@typescript-eslint/utils/ts-eslint").RuleModule<"unnecessaryPasswordOption", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
@@ -1,3 +1,3 @@
1
1
  import type { TSESLint } from '@typescript-eslint/utils';
2
- export declare const NoRestrictedGlobalsRule: TSESLint.RuleModule<"restrictedGlobal", [], unknown, TSESLint.RuleListener>;
2
+ export declare const NoRestrictedGlobalsRule: TSESLint.RuleModule<"restrictedGlobal" | "restrictedGlobalWithHint", [], unknown, TSESLint.RuleListener>;
3
3
  //# sourceMappingURL=no-restricted-globals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-restricted-globals.d.ts","sourceRoot":"","sources":["../../src/rules/no-restricted-globals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAkBzD,eAAO,MAAM,uBAAuB,6EAsDlC,CAAC"}
1
+ {"version":3,"file":"no-restricted-globals.d.ts","sourceRoot":"","sources":["../../src/rules/no-restricted-globals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAwBzD,eAAO,MAAM,uBAAuB,0GAiElC,CAAC"}
@@ -13,6 +13,11 @@ const restrictedGlobals = [
13
13
  '__dirname',
14
14
  '__filename',
15
15
  ];
16
+ // Nudge toward the n8n-workflow alternatives that work under n8n Cloud's restrictions
17
+ const restrictedGlobalHints = {
18
+ setTimeout: "Use the 'sleep' helper from 'n8n-workflow' instead.",
19
+ clearTimeout: "Use 'sleepWithAbort' from 'n8n-workflow' with an AbortSignal instead.",
20
+ };
16
21
  export const NoRestrictedGlobalsRule = createRule({
17
22
  name: 'no-restricted-globals',
18
23
  meta: {
@@ -22,6 +27,7 @@ export const NoRestrictedGlobalsRule = createRule({
22
27
  },
23
28
  messages: {
24
29
  restrictedGlobal: "Use of restricted global '{{ name }}' is not allowed",
30
+ restrictedGlobalWithHint: "Use of restricted global '{{ name }}' is not allowed. {{ hint }}",
25
31
  },
26
32
  schema: [],
27
33
  },
@@ -35,11 +41,18 @@ export const NoRestrictedGlobalsRule = createRule({
35
41
  !parent.computed) {
36
42
  return;
37
43
  }
38
- context.report({
39
- node: ref.identifier,
40
- messageId: 'restrictedGlobal',
41
- data: { name },
42
- });
44
+ const hint = restrictedGlobalHints[name];
45
+ context.report(hint
46
+ ? {
47
+ node: ref.identifier,
48
+ messageId: 'restrictedGlobalWithHint',
49
+ data: { name, hint },
50
+ }
51
+ : {
52
+ node: ref.identifier,
53
+ messageId: 'restrictedGlobal',
54
+ data: { name },
55
+ });
43
56
  }
44
57
  return {
45
58
  Program() {
@@ -1 +1 @@
1
- {"version":3,"file":"no-restricted-globals.js","sourceRoot":"","sources":["../../src/rules/no-restricted-globals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,iBAAiB,GAAG;IACzB,eAAe;IACf,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,aAAa;IACb,YAAY;IACZ,cAAc;IACd,gBAAgB;IAChB,WAAW;IACX,YAAY;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;IACjD,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EAAE,mEAAmE;SAChF;QACD,QAAQ,EAAE;YACT,gBAAgB,EAAE,sDAAsD;SACxE;QACD,MAAM,EAAE,EAAE;KACV;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACb,SAAS,cAAc,CAAC,GAA6B,EAAE,IAAY;YAClE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC;YAElC,yFAAyF;YACzF,IACC,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC,cAAc,CAAC,gBAAgB;gBACzD,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC,UAAU;gBAClC,CAAC,MAAM,CAAC,QAAQ,EACf,CAAC;gBACF,OAAO;YACR,CAAC;YAED,OAAO,CAAC,MAAM,CAAC;gBACd,IAAI,EAAE,GAAG,CAAC,UAAU;gBACpB,SAAS,EAAE,kBAAkB;gBAC7B,IAAI,EAAE,EAAE,IAAI,EAAE;aACd,CAAC,CAAC;QACJ,CAAC;QAED,OAAO;YACN,OAAO;gBACN,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAExE,MAAM,aAAa,GAAG;oBACrB,GAAG,WAAW,CAAC,SAAS;yBACtB,MAAM,CACN,CAAC,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CACrF;yBACA,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACrB,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;oBACF,GAAG,WAAW,CAAC,OAAO;yBACpB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;yBAChE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;iBACpD,CAAC;gBAEF,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACrE,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"no-restricted-globals.js","sourceRoot":"","sources":["../../src/rules/no-restricted-globals.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const NodeUsableAsToolRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingUsableAsTool", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NodeUsableAsToolRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"aiOnlyUsableAsTool" | "missingUsableAsTool" | "triggerUsableAsTool", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
2
  //# sourceMappingURL=node-usable-as-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-usable-as-tool.d.ts","sourceRoot":"","sources":["../../src/rules/node-usable-as-tool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oBAAoB,wJAoF/B,CAAC"}
1
+ {"version":3,"file":"node-usable-as-tool.d.ts","sourceRoot":"","sources":["../../src/rules/node-usable-as-tool.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,oBAAoB,uMA2G/B,CAAC"}
@@ -1,5 +1,8 @@
1
1
  import { TSESTree } from '@typescript-eslint/utils';
2
- import { isNodeTypeClass, findClassProperty, findObjectProperty, createRule, } from '../utils/index.js';
2
+ import { isNodeTypeClass, isTriggerNode, findClassProperty, findObjectProperty, createRule, } from '../utils/index.js';
3
+ function isSetToTrue(property) {
4
+ return property?.value.type === TSESTree.AST_NODE_TYPES.Literal && property.value.value === true;
5
+ }
3
6
  export const NodeUsableAsToolRule = createRule({
4
7
  name: 'node-usable-as-tool',
5
8
  meta: {
@@ -9,6 +12,8 @@ export const NodeUsableAsToolRule = createRule({
9
12
  },
10
13
  messages: {
11
14
  missingUsableAsTool: 'Node class should have usableAsTool property. When in doubt, set it to true.',
15
+ triggerUsableAsTool: 'Trigger nodes must not set usableAsTool: true. Trigger nodes cannot be invoked as AI tools and doing so pollutes the tool picker. Remove this property.',
16
+ aiOnlyUsableAsTool: 'AI-only nodes (non-main output, no inputs) must not set usableAsTool: true. These nodes are only usable through their AI connection type, not as a generic tool, and doing so pollutes the tool picker. Remove this property.',
12
17
  },
13
18
  fixable: 'code',
14
19
  schema: [],
@@ -29,6 +34,15 @@ export const NodeUsableAsToolRule = createRule({
29
34
  return;
30
35
  }
31
36
  const usableAsToolProperty = findObjectProperty(descriptionValue, 'usableAsTool');
37
+ if (isTriggerNode(node, descriptionValue)) {
38
+ if (isSetToTrue(usableAsToolProperty)) {
39
+ context.report({
40
+ node: usableAsToolProperty,
41
+ messageId: 'triggerUsableAsTool',
42
+ });
43
+ }
44
+ return;
45
+ }
32
46
  const outputsProperty = findObjectProperty(descriptionValue, 'outputs');
33
47
  const inputsProperty = findObjectProperty(descriptionValue, 'inputs');
34
48
  if (outputsProperty?.value?.type === TSESTree.AST_NODE_TYPES.ArrayExpression &&
@@ -44,6 +58,14 @@ export const NodeUsableAsToolRule = createRule({
44
58
  });
45
59
  const isEmptyInputs = inputsProperty?.value?.elements?.length === 0;
46
60
  if (isAiOutput && isEmptyInputs) {
61
+ // These nodes are only ever consumed via their AI connection type (e.g. as an
62
+ // Agent's memory/language model), never invoked directly like a regular tool.
63
+ if (isSetToTrue(usableAsToolProperty)) {
64
+ context.report({
65
+ node: usableAsToolProperty,
66
+ messageId: 'aiOnlyUsableAsTool',
67
+ });
68
+ }
47
69
  return;
48
70
  }
49
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"node-usable-as-tool.js","sourceRoot":"","sources":["../../src/rules/node-usable-as-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-usable-as-tool.js","sourceRoot":"","sources":["../../src/rules/node-usable-as-tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-node-conventions.d.ts","sourceRoot":"","sources":["../../src/rules/trigger-node-conventions.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,0BAA0B,uMAgFrC,CAAC"}
1
+ {"version":3,"file":"trigger-node-conventions.d.ts","sourceRoot":"","sources":["../../src/rules/trigger-node-conventions.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,0BAA0B,uMAgFrC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { TSESTree } from '@typescript-eslint/utils';
2
- import { isNodeTypeClass, findClassProperty, findObjectProperty, getStringLiteralValue, isFileType, createRule, } from '../utils/index.js';
2
+ import { isNodeTypeClass, isTriggerNodeClass, findClassProperty, findObjectProperty, getStringLiteralValue, isFileType, createRule, } from '../utils/index.js';
3
3
  export const TriggerNodeConventionsRule = createRule({
4
4
  name: 'trigger-node-conventions',
5
5
  meta: {
@@ -24,7 +24,7 @@ export const TriggerNodeConventionsRule = createRule({
24
24
  if (!isNodeTypeClass(node)) {
25
25
  return;
26
26
  }
27
- if (!node.id?.name.endsWith('Trigger')) {
27
+ if (!isTriggerNodeClass(node)) {
28
28
  return;
29
29
  }
30
30
  const descriptionProperty = findClassProperty(node, 'description');
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-node-conventions.js","sourceRoot":"","sources":["../../src/rules/trigger-node-conventions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trigger-node-conventions.js","sourceRoot":"","sources":["../../src/rules/trigger-node-conventions.ts"],"names":[],"mappings":"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"}