@n8n/eslint-plugin-community-nodes 0.32.0 → 0.33.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 (169) hide show
  1. package/README.md +1 -1
  2. package/dist/rules/ai-node-package-json.d.ts +3 -1
  3. package/dist/rules/ai-node-package-json.d.ts.map +1 -1
  4. package/dist/rules/cred-class-field-icon-missing.d.ts +3 -1
  5. package/dist/rules/cred-class-field-icon-missing.d.ts.map +1 -1
  6. package/dist/rules/cred-class-oauth2-naming.d.ts +3 -1
  7. package/dist/rules/cred-class-oauth2-naming.d.ts.map +1 -1
  8. package/dist/rules/credential-documentation-url.d.ts +3 -1
  9. package/dist/rules/credential-documentation-url.d.ts.map +1 -1
  10. package/dist/rules/credential-password-field.d.ts +3 -1
  11. package/dist/rules/credential-password-field.d.ts.map +1 -1
  12. package/dist/rules/credential-password-field.js +1 -2
  13. package/dist/rules/credential-test-required.d.ts +3 -1
  14. package/dist/rules/credential-test-required.d.ts.map +1 -1
  15. package/dist/rules/credential-unnecessary-password.d.ts +3 -1
  16. package/dist/rules/credential-unnecessary-password.d.ts.map +1 -1
  17. package/dist/rules/credential-unnecessary-password.js +1 -2
  18. package/dist/rules/icon-prefer-themed-variants.d.ts +3 -1
  19. package/dist/rules/icon-prefer-themed-variants.d.ts.map +1 -1
  20. package/dist/rules/icon-validation.d.ts +3 -1
  21. package/dist/rules/icon-validation.d.ts.map +1 -1
  22. package/dist/rules/icon-validation.js +5 -15
  23. package/dist/rules/index.d.ts +132 -44
  24. package/dist/rules/index.d.ts.map +1 -1
  25. package/dist/rules/missing-paired-item.d.ts +3 -1
  26. package/dist/rules/missing-paired-item.d.ts.map +1 -1
  27. package/dist/rules/n8n-object-validation.d.ts +3 -1
  28. package/dist/rules/n8n-object-validation.d.ts.map +1 -1
  29. package/dist/rules/no-builder-hint-leakage.d.ts +3 -1
  30. package/dist/rules/no-builder-hint-leakage.d.ts.map +1 -1
  31. package/dist/rules/no-credential-reuse.d.ts +3 -1
  32. package/dist/rules/no-credential-reuse.d.ts.map +1 -1
  33. package/dist/rules/no-dangerous-functions.d.ts +3 -1
  34. package/dist/rules/no-dangerous-functions.d.ts.map +1 -1
  35. package/dist/rules/no-dead-files.d.ts +3 -1
  36. package/dist/rules/no-dead-files.d.ts.map +1 -1
  37. package/dist/rules/no-deprecated-workflow-functions.d.ts +3 -1
  38. package/dist/rules/no-deprecated-workflow-functions.d.ts.map +1 -1
  39. package/dist/rules/no-emoji-in-options.d.ts +3 -1
  40. package/dist/rules/no-emoji-in-options.d.ts.map +1 -1
  41. package/dist/rules/no-forbidden-lifecycle-scripts.d.ts +3 -1
  42. package/dist/rules/no-forbidden-lifecycle-scripts.d.ts.map +1 -1
  43. package/dist/rules/no-forbidden-lifecycle-scripts.js +1 -1
  44. package/dist/rules/no-hardcoded-secrets.d.ts +3 -1
  45. package/dist/rules/no-hardcoded-secrets.d.ts.map +1 -1
  46. package/dist/rules/no-http-request-with-manual-auth.d.ts +3 -1
  47. package/dist/rules/no-http-request-with-manual-auth.d.ts.map +1 -1
  48. package/dist/rules/no-overrides-field.d.ts +3 -1
  49. package/dist/rules/no-overrides-field.d.ts.map +1 -1
  50. package/dist/rules/no-restricted-globals.d.ts +3 -1
  51. package/dist/rules/no-restricted-globals.d.ts.map +1 -1
  52. package/dist/rules/no-restricted-imports.d.ts +3 -1
  53. package/dist/rules/no-restricted-imports.d.ts.map +1 -1
  54. package/dist/rules/no-runtime-dependencies.d.ts +3 -1
  55. package/dist/rules/no-runtime-dependencies.d.ts.map +1 -1
  56. package/dist/rules/no-silent-error-swallowing.d.ts +3 -1
  57. package/dist/rules/no-silent-error-swallowing.d.ts.map +1 -1
  58. package/dist/rules/no-template-placeholders.d.ts +3 -1
  59. package/dist/rules/no-template-placeholders.d.ts.map +1 -1
  60. package/dist/rules/no-unsafe-connection-type-cast.d.ts +3 -1
  61. package/dist/rules/no-unsafe-connection-type-cast.d.ts.map +1 -1
  62. package/dist/rules/node-class-description-icon-missing.d.ts +3 -1
  63. package/dist/rules/node-class-description-icon-missing.d.ts.map +1 -1
  64. package/dist/rules/node-class-description-icon-missing.js +1 -2
  65. package/dist/rules/node-connection-type-literal.d.ts +3 -1
  66. package/dist/rules/node-connection-type-literal.d.ts.map +1 -1
  67. package/dist/rules/node-registration-complete.d.ts +3 -1
  68. package/dist/rules/node-registration-complete.d.ts.map +1 -1
  69. package/dist/rules/node-usable-as-tool.d.ts +3 -1
  70. package/dist/rules/node-usable-as-tool.d.ts.map +1 -1
  71. package/dist/rules/package-name-convention.d.ts +3 -1
  72. package/dist/rules/package-name-convention.d.ts.map +1 -1
  73. package/dist/rules/require-files-array.d.ts +3 -1
  74. package/dist/rules/require-files-array.d.ts.map +1 -1
  75. package/dist/rules/require-homepage.d.ts +3 -1
  76. package/dist/rules/require-homepage.d.ts.map +1 -1
  77. package/dist/rules/require-node-api-error.d.ts +3 -1
  78. package/dist/rules/require-node-api-error.d.ts.map +1 -1
  79. package/dist/rules/require-node-description-fields.d.ts +3 -1
  80. package/dist/rules/require-node-description-fields.d.ts.map +1 -1
  81. package/dist/rules/require-node-description-fields.js +1 -2
  82. package/dist/rules/require-version.d.ts +3 -1
  83. package/dist/rules/require-version.d.ts.map +1 -1
  84. package/dist/rules/resource-operation-pattern.d.ts +3 -1
  85. package/dist/rules/resource-operation-pattern.d.ts.map +1 -1
  86. package/dist/rules/resource-operation-pattern.js +3 -4
  87. package/dist/rules/trigger-node-conventions.d.ts +3 -1
  88. package/dist/rules/trigger-node-conventions.d.ts.map +1 -1
  89. package/dist/rules/valid-author.d.ts +3 -1
  90. package/dist/rules/valid-author.d.ts.map +1 -1
  91. package/dist/rules/valid-author.js +1 -1
  92. package/dist/rules/valid-credential-references.d.ts +3 -1
  93. package/dist/rules/valid-credential-references.d.ts.map +1 -1
  94. package/dist/rules/valid-description.d.ts +3 -1
  95. package/dist/rules/valid-description.d.ts.map +1 -1
  96. package/dist/rules/valid-peer-dependencies.d.ts +3 -1
  97. package/dist/rules/valid-peer-dependencies.d.ts.map +1 -1
  98. package/dist/rules/webhook-lifecycle-complete.d.ts +3 -1
  99. package/dist/rules/webhook-lifecycle-complete.d.ts.map +1 -1
  100. package/dist/utils/file-utils.d.ts.map +1 -1
  101. package/dist/utils/file-utils.js +1 -2
  102. package/dist/utils/rule-creator.d.ts +3 -1
  103. package/dist/utils/rule-creator.d.ts.map +1 -1
  104. package/docs/rules/icon-prefer-themed-variants.md +2 -2
  105. package/docs/rules/icon-validation.md +11 -11
  106. package/eslint.config.mjs +2 -3
  107. package/package.json +7 -7
  108. package/src/rules/credential-password-field.ts +1 -4
  109. package/src/rules/credential-unnecessary-password.ts +1 -4
  110. package/src/rules/icon-validation.test.ts +19 -21
  111. package/src/rules/icon-validation.ts +5 -20
  112. package/src/rules/no-forbidden-lifecycle-scripts.ts +1 -1
  113. package/src/rules/node-class-description-icon-missing.ts +1 -4
  114. package/src/rules/require-node-description-fields.ts +1 -4
  115. package/src/rules/resource-operation-pattern.ts +3 -6
  116. package/src/rules/valid-author.ts +1 -1
  117. package/src/utils/file-utils.ts +3 -6
  118. package/dist/plugin.js.map +0 -1
  119. package/dist/rules/ai-node-package-json.js.map +0 -1
  120. package/dist/rules/cred-class-field-icon-missing.js.map +0 -1
  121. package/dist/rules/cred-class-oauth2-naming.js.map +0 -1
  122. package/dist/rules/credential-documentation-url.js.map +0 -1
  123. package/dist/rules/credential-password-field.js.map +0 -1
  124. package/dist/rules/credential-test-required.js.map +0 -1
  125. package/dist/rules/credential-unnecessary-password.js.map +0 -1
  126. package/dist/rules/icon-prefer-themed-variants.js.map +0 -1
  127. package/dist/rules/icon-validation.js.map +0 -1
  128. package/dist/rules/index.js.map +0 -1
  129. package/dist/rules/missing-paired-item.js.map +0 -1
  130. package/dist/rules/n8n-object-validation.js.map +0 -1
  131. package/dist/rules/no-builder-hint-leakage.js.map +0 -1
  132. package/dist/rules/no-credential-reuse.js.map +0 -1
  133. package/dist/rules/no-dangerous-functions.js.map +0 -1
  134. package/dist/rules/no-dead-files.js.map +0 -1
  135. package/dist/rules/no-deprecated-workflow-functions.js.map +0 -1
  136. package/dist/rules/no-emoji-in-options.js.map +0 -1
  137. package/dist/rules/no-forbidden-lifecycle-scripts.js.map +0 -1
  138. package/dist/rules/no-hardcoded-secrets.js.map +0 -1
  139. package/dist/rules/no-http-request-with-manual-auth.js.map +0 -1
  140. package/dist/rules/no-overrides-field.js.map +0 -1
  141. package/dist/rules/no-restricted-globals.js.map +0 -1
  142. package/dist/rules/no-restricted-imports.js.map +0 -1
  143. package/dist/rules/no-runtime-dependencies.js.map +0 -1
  144. package/dist/rules/no-silent-error-swallowing.js.map +0 -1
  145. package/dist/rules/no-template-placeholders.js.map +0 -1
  146. package/dist/rules/no-unsafe-connection-type-cast.js.map +0 -1
  147. package/dist/rules/node-class-description-icon-missing.js.map +0 -1
  148. package/dist/rules/node-connection-type-literal.js.map +0 -1
  149. package/dist/rules/node-registration-complete.js.map +0 -1
  150. package/dist/rules/node-usable-as-tool.js.map +0 -1
  151. package/dist/rules/package-name-convention.js.map +0 -1
  152. package/dist/rules/require-files-array.js.map +0 -1
  153. package/dist/rules/require-homepage.js.map +0 -1
  154. package/dist/rules/require-node-api-error.js.map +0 -1
  155. package/dist/rules/require-node-description-fields.js.map +0 -1
  156. package/dist/rules/require-version.js.map +0 -1
  157. package/dist/rules/resource-operation-pattern.js.map +0 -1
  158. package/dist/rules/trigger-node-conventions.js.map +0 -1
  159. package/dist/rules/valid-author.js.map +0 -1
  160. package/dist/rules/valid-credential-references.js.map +0 -1
  161. package/dist/rules/valid-description.js.map +0 -1
  162. package/dist/rules/valid-peer-dependencies.js.map +0 -1
  163. package/dist/rules/webhook-lifecycle-complete.js.map +0 -1
  164. package/dist/utils/ast-utils.js.map +0 -1
  165. package/dist/utils/constants.js.map +0 -1
  166. package/dist/utils/credential-fields.js.map +0 -1
  167. package/dist/utils/file-utils.js.map +0 -1
  168. package/dist/utils/index.js.map +0 -1
  169. package/dist/utils/rule-creator.js.map +0 -1
@@ -15,5 +15,7 @@
15
15
  * Known false positive: a function that fetches credentials for a non-HTTP purpose
16
16
  * and also makes an unauthenticated request. Use eslint-disable to suppress.
17
17
  */
18
- export declare const NoHttpRequestWithManualAuthRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"useHttpRequestWithAuthentication", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
18
+ export declare const NoHttpRequestWithManualAuthRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"useHttpRequestWithAuthentication", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
19
+ name: string;
20
+ };
19
21
  //# sourceMappingURL=no-http-request-with-manual-auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-http-request-with-manual-auth.d.ts","sourceRoot":"","sources":["../../src/rules/no-http-request-with-manual-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAWH,eAAO,MAAM,+BAA+B,qKAkD1C,CAAC"}
1
+ {"version":3,"file":"no-http-request-with-manual-auth.d.ts","sourceRoot":"","sources":["../../src/rules/no-http-request-with-manual-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAWH,eAAO,MAAM,+BAA+B;;CAkD1C,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const NoOverridesFieldRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"overridesForbidden", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NoOverridesFieldRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"overridesForbidden", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=no-overrides-field.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-overrides-field.d.ts","sourceRoot":"","sources":["../../src/rules/no-overrides-field.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB,uJAwC/B,CAAC"}
1
+ {"version":3,"file":"no-overrides-field.d.ts","sourceRoot":"","sources":["../../src/rules/no-overrides-field.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB;;CAwC/B,CAAC"}
@@ -1,3 +1,5 @@
1
1
  import type { TSESLint } from '@typescript-eslint/utils';
2
- export declare const NoRestrictedGlobalsRule: TSESLint.RuleModule<"restrictedGlobal" | "restrictedGlobalWithHint", [], unknown, TSESLint.RuleListener>;
2
+ export declare const NoRestrictedGlobalsRule: TSESLint.RuleModule<"restrictedGlobal" | "restrictedGlobalWithHint", [], unknown, TSESLint.RuleListener> & {
3
+ name: string;
4
+ };
3
5
  //# 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;AAwBzD,eAAO,MAAM,uBAAuB,0GAiElC,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;;CAiElC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const NoRestrictedImportsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"restrictedDynamicImport" | "restrictedImport" | "restrictedRequire", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NoRestrictedImportsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"restrictedDynamicImport" | "restrictedImport" | "restrictedRequire", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=no-restricted-imports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-restricted-imports.d.ts","sourceRoot":"","sources":["../../src/rules/no-restricted-imports.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,uBAAuB,uMAkElC,CAAC"}
1
+ {"version":3,"file":"no-restricted-imports.d.ts","sourceRoot":"","sources":["../../src/rules/no-restricted-imports.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,uBAAuB;;CAkElC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const NoRuntimeDependenciesRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"runtimeDependenciesForbidden", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NoRuntimeDependenciesRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"runtimeDependenciesForbidden", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=no-runtime-dependencies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-runtime-dependencies.d.ts","sourceRoot":"","sources":["../../src/rules/no-runtime-dependencies.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,yBAAyB,iKA4CpC,CAAC"}
1
+ {"version":3,"file":"no-runtime-dependencies.d.ts","sourceRoot":"","sources":["../../src/rules/no-runtime-dependencies.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,yBAAyB;;CA4CpC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const NoSilentErrorSwallowingRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"emptyCatch" | "silentReturn", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NoSilentErrorSwallowingRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"emptyCatch" | "silentReturn", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=no-silent-error-swallowing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-silent-error-swallowing.d.ts","sourceRoot":"","sources":["../../src/rules/no-silent-error-swallowing.ts"],"names":[],"mappings":"AA6CA,eAAO,MAAM,2BAA2B,gKAiFtC,CAAC"}
1
+ {"version":3,"file":"no-silent-error-swallowing.d.ts","sourceRoot":"","sources":["../../src/rules/no-silent-error-swallowing.ts"],"names":[],"mappings":"AA6CA,eAAO,MAAM,2BAA2B;;CAiFtC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const NoTemplatePlaceholdersRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"unresolvedPlaceholder", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NoTemplatePlaceholdersRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"unresolvedPlaceholder", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=no-template-placeholders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-template-placeholders.d.ts","sourceRoot":"","sources":["../../src/rules/no-template-placeholders.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,0BAA0B,0JA+CrC,CAAC"}
1
+ {"version":3,"file":"no-template-placeholders.d.ts","sourceRoot":"","sources":["../../src/rules/no-template-placeholders.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,0BAA0B;;CA+CrC,CAAC"}
@@ -1,3 +1,5 @@
1
1
  import type { TSESLint } from '@typescript-eslint/utils';
2
- export declare const NoUnsafeConnectionTypeCastRule: TSESLint.RuleModule<"erasingCast" | "removeCast", [], unknown, TSESLint.RuleListener>;
2
+ export declare const NoUnsafeConnectionTypeCastRule: TSESLint.RuleModule<"erasingCast" | "removeCast", [], unknown, TSESLint.RuleListener> & {
3
+ name: string;
4
+ };
3
5
  //# sourceMappingURL=no-unsafe-connection-type-cast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-unsafe-connection-type-cast.d.ts","sourceRoot":"","sources":["../../src/rules/no-unsafe-connection-type-cast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AA0DnE,eAAO,MAAM,8BAA8B,uFAiEzC,CAAC"}
1
+ {"version":3,"file":"no-unsafe-connection-type-cast.d.ts","sourceRoot":"","sources":["../../src/rules/no-unsafe-connection-type-cast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AA0DnE,eAAO,MAAM,8BAA8B;;CAiEzC,CAAC"}
@@ -1,3 +1,5 @@
1
1
  /** @deprecated Use `require-node-description-fields` instead. */
2
- export declare const NodeClassDescriptionIconMissingRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"addPlaceholder" | "missingIcon", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
+ export declare const NodeClassDescriptionIconMissingRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"addPlaceholder" | "missingIcon", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
3
+ name: string;
4
+ };
3
5
  //# sourceMappingURL=node-class-description-icon-missing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-class-description-icon-missing.d.ts","sourceRoot":"","sources":["../../src/rules/node-class-description-icon-missing.ts"],"names":[],"mappings":"AAUA,iEAAiE;AACjE,eAAO,MAAM,mCAAmC,mKAiE9C,CAAC"}
1
+ {"version":3,"file":"node-class-description-icon-missing.d.ts","sourceRoot":"","sources":["../../src/rules/node-class-description-icon-missing.ts"],"names":[],"mappings":"AAUA,iEAAiE;AACjE,eAAO,MAAM,mCAAmC;;CA8D9C,CAAC"}
@@ -30,8 +30,7 @@ export const NodeClassDescriptionIconMissingRule = createRule({
30
30
  return;
31
31
  }
32
32
  const descriptionProperty = findClassProperty(node, 'description');
33
- if (!descriptionProperty?.value ||
34
- descriptionProperty.value.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) {
33
+ if (descriptionProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) {
35
34
  return;
36
35
  }
37
36
  const descriptionValue = descriptionProperty.value;
@@ -1,2 +1,4 @@
1
- export declare const NodeConnectionTypeLiteralRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"stringLiteralInInputs" | "stringLiteralInOutputs" | "unknownStringLiteralInInputs" | "unknownStringLiteralInOutputs", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NodeConnectionTypeLiteralRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"stringLiteralInInputs" | "stringLiteralInOutputs" | "unknownStringLiteralInInputs" | "unknownStringLiteralInOutputs", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=node-connection-type-literal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-connection-type-literal.d.ts","sourceRoot":"","sources":["../../src/rules/node-connection-type-literal.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,6BAA6B,wPA0ExC,CAAC"}
1
+ {"version":3,"file":"node-connection-type-literal.d.ts","sourceRoot":"","sources":["../../src/rules/node-connection-type-literal.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,6BAA6B;;CA0ExC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const NodeRegistrationCompleteRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"nodeNotRegistered", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NodeRegistrationCompleteRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"nodeNotRegistered", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=node-registration-complete.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-registration-complete.d.ts","sourceRoot":"","sources":["../../src/rules/node-registration-complete.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,4BAA4B,sJAkEvC,CAAC"}
1
+ {"version":3,"file":"node-registration-complete.d.ts","sourceRoot":"","sources":["../../src/rules/node-registration-complete.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,4BAA4B;;CAkEvC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const NodeUsableAsToolRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"aiOnlyUsableAsTool" | "missingUsableAsTool" | "triggerUsableAsTool", [], 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
+ name: string;
3
+ };
2
4
  //# 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":"AAcA,eAAO,MAAM,oBAAoB,uMA2G/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;;CA2G/B,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const PackageNameConventionRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"defaultPlaceholderName" | "invalidPackageName" | "missingName" | "renameTo", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const PackageNameConventionRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"defaultPlaceholderName" | "invalidPackageName" | "missingName" | "renameTo", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=package-name-convention.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-name-convention.d.ts","sourceRoot":"","sources":["../../src/rules/package-name-convention.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB,+MAwFpC,CAAC"}
1
+ {"version":3,"file":"package-name-convention.d.ts","sourceRoot":"","sources":["../../src/rules/package-name-convention.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB;;CAwFpC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const RequireFilesArrayRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"filesEmpty" | "filesMissing", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const RequireFilesArrayRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"filesEmpty" | "filesMissing", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=require-files-array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-files-array.d.ts","sourceRoot":"","sources":["../../src/rules/require-files-array.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,gKA4ChC,CAAC"}
1
+ {"version":3,"file":"require-files-array.d.ts","sourceRoot":"","sources":["../../src/rules/require-files-array.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB;;CA4ChC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const RequireHomepageRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"homepageInvalid" | "homepageMissing", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const RequireHomepageRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"homepageInvalid" | "homepageMissing", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=require-homepage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-homepage.d.ts","sourceRoot":"","sources":["../../src/rules/require-homepage.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,mBAAmB,wKA4C9B,CAAC"}
1
+ {"version":3,"file":"require-homepage.d.ts","sourceRoot":"","sources":["../../src/rules/require-homepage.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,mBAAmB;;CA4C9B,CAAC"}
@@ -1,3 +1,5 @@
1
1
  import { TSESLint } from '@typescript-eslint/utils';
2
- export declare const RequireNodeApiErrorRule: TSESLint.RuleModule<"useNodeApiError" | "useNodeApiErrorInsteadOfGeneric", [], unknown, TSESLint.RuleListener>;
2
+ export declare const RequireNodeApiErrorRule: TSESLint.RuleModule<"useNodeApiError" | "useNodeApiErrorInsteadOfGeneric", [], unknown, TSESLint.RuleListener> & {
3
+ name: string;
4
+ };
3
5
  //# sourceMappingURL=require-node-api-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-node-api-error.d.ts","sourceRoot":"","sources":["../../src/rules/require-node-api-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAiB,MAAM,0BAA0B,CAAC;AA2BnF,eAAO,MAAM,uBAAuB,gHA+DlC,CAAC"}
1
+ {"version":3,"file":"require-node-api-error.d.ts","sourceRoot":"","sources":["../../src/rules/require-node-api-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAiB,MAAM,0BAA0B,CAAC;AA2BnF,eAAO,MAAM,uBAAuB;;CA+DlC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const RequireNodeDescriptionFieldsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingField" | "missingFields", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const RequireNodeDescriptionFieldsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingField" | "missingFields", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=require-node-description-fields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-node-description-fields.d.ts","sourceRoot":"","sources":["../../src/rules/require-node-description-fields.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,gCAAgC,mKA2D3C,CAAC"}
1
+ {"version":3,"file":"require-node-description-fields.d.ts","sourceRoot":"","sources":["../../src/rules/require-node-description-fields.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,gCAAgC;;CAwD3C,CAAC"}
@@ -28,8 +28,7 @@ export const RequireNodeDescriptionFieldsRule = createRule({
28
28
  return;
29
29
  }
30
30
  const descriptionProperty = findClassProperty(node, 'description');
31
- if (!descriptionProperty?.value ||
32
- descriptionProperty.value.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) {
31
+ if (descriptionProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) {
33
32
  return;
34
33
  }
35
34
  const descriptionValue = descriptionProperty.value;
@@ -1,2 +1,4 @@
1
- export declare const RequireVersionRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"invalidVersion" | "missingVersion", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const RequireVersionRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"invalidVersion" | "missingVersion", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=require-version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-version.d.ts","sourceRoot":"","sources":["../../src/rules/require-version.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,kBAAkB,sKAoD7B,CAAC"}
1
+ {"version":3,"file":"require-version.d.ts","sourceRoot":"","sources":["../../src/rules/require-version.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,kBAAkB;;CAoD7B,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const ResourceOperationPatternRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"tooManyOperationsWithoutResources", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const ResourceOperationPatternRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"tooManyOperationsWithoutResources", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=resource-operation-pattern.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-operation-pattern.d.ts","sourceRoot":"","sources":["../../src/rules/resource-operation-pattern.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,4BAA4B,sKA2FvC,CAAC"}
1
+ {"version":3,"file":"resource-operation-pattern.d.ts","sourceRoot":"","sources":["../../src/rules/resource-operation-pattern.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,4BAA4B;;CAwFvC,CAAC"}
@@ -18,12 +18,11 @@ export const ResourceOperationPatternRule = createRule({
18
18
  return {};
19
19
  }
20
20
  const analyzeNodeDescription = (descriptionValue) => {
21
- if (!descriptionValue || descriptionValue.type !== AST_NODE_TYPES.ObjectExpression) {
21
+ if (descriptionValue?.type !== AST_NODE_TYPES.ObjectExpression) {
22
22
  return;
23
23
  }
24
24
  const propertiesProperty = findObjectProperty(descriptionValue, 'properties');
25
- if (!propertiesProperty?.value ||
26
- propertiesProperty.value.type !== AST_NODE_TYPES.ArrayExpression) {
25
+ if (propertiesProperty?.value?.type !== AST_NODE_TYPES.ArrayExpression) {
27
26
  return;
28
27
  }
29
28
  const propertiesArray = propertiesProperty.value;
@@ -31,7 +30,7 @@ export const ResourceOperationPatternRule = createRule({
31
30
  let operationCount = 0;
32
31
  let operationNode = null;
33
32
  for (const property of propertiesArray.elements) {
34
- if (!property || property.type !== AST_NODE_TYPES.ObjectExpression) {
33
+ if (property?.type !== AST_NODE_TYPES.ObjectExpression) {
35
34
  continue;
36
35
  }
37
36
  const nameProperty = findObjectProperty(property, 'name');
@@ -1,2 +1,4 @@
1
- export declare const TriggerNodeConventionsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"displayNameMissingTrigger" | "inputsNotEmpty" | "nameMissingSuffix", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const TriggerNodeConventionsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"displayNameMissingTrigger" | "inputsNotEmpty" | "nameMissingSuffix", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=trigger-node-conventions.d.ts.map
@@ -1 +1 @@
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
+ {"version":3,"file":"trigger-node-conventions.d.ts","sourceRoot":"","sources":["../../src/rules/trigger-node-conventions.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,0BAA0B;;CAgFrC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const ValidAuthorRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"authorEmailMissing" | "authorMissing" | "authorNameMissing", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const ValidAuthorRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"authorEmailMissing" | "authorMissing" | "authorNameMissing", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=valid-author.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"valid-author.d.ts","sourceRoot":"","sources":["../../src/rules/valid-author.ts"],"names":[],"mappings":"AA+BA,eAAO,MAAM,eAAe,+LAoE1B,CAAC"}
1
+ {"version":3,"file":"valid-author.d.ts","sourceRoot":"","sources":["../../src/rules/valid-author.ts"],"names":[],"mappings":"AA+BA,eAAO,MAAM,eAAe;;CAoE1B,CAAC"}
@@ -18,7 +18,7 @@ function parsePersonString(value) {
18
18
  return { name, email };
19
19
  }
20
20
  function isNonEmptyStringLiteral(node) {
21
- if (!node || node.value.type !== AST_NODE_TYPES.Literal) {
21
+ if (node?.value.type !== AST_NODE_TYPES.Literal) {
22
22
  return false;
23
23
  }
24
24
  const { value } = node.value;
@@ -1,2 +1,4 @@
1
- export declare const ValidCredentialReferencesRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"credentialNotFound" | "didYouMean", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const ValidCredentialReferencesRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"credentialNotFound" | "didYouMean", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=valid-credential-references.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"valid-credential-references.d.ts","sourceRoot":"","sources":["../../src/rules/valid-credential-references.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,6BAA6B,sKAsFxC,CAAC"}
1
+ {"version":3,"file":"valid-credential-references.d.ts","sourceRoot":"","sources":["../../src/rules/valid-credential-references.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,6BAA6B;;CAsFxC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const ValidDescriptionRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"emptyDescription" | "missingDescription", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const ValidDescriptionRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"emptyDescription" | "missingDescription", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=valid-description.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"valid-description.d.ts","sourceRoot":"","sources":["../../src/rules/valid-description.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB,4KAmD/B,CAAC"}
1
+ {"version":3,"file":"valid-description.d.ts","sourceRoot":"","sources":["../../src/rules/valid-description.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB;;CAmD/B,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const ValidPeerDependenciesRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"forbiddenPeerDependency" | "invalidPeerDependenciesType" | "missingN8nWorkflow" | "missingPeerDependencies" | "pinnedN8nWorkflow", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const ValidPeerDependenciesRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"forbiddenPeerDependency" | "invalidPeerDependenciesType" | "missingN8nWorkflow" | "missingPeerDependencies" | "pinnedN8nWorkflow", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=valid-peer-dependencies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"valid-peer-dependencies.d.ts","sourceRoot":"","sources":["../../src/rules/valid-peer-dependencies.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,yBAAyB,qQA0GpC,CAAC"}
1
+ {"version":3,"file":"valid-peer-dependencies.d.ts","sourceRoot":"","sources":["../../src/rules/valid-peer-dependencies.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,yBAAyB;;CA0GpC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const WebhookLifecycleCompleteRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"emptyWebhookMethods" | "missingLifecycleMethod" | "missingWebhookMethods", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const WebhookLifecycleCompleteRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"emptyWebhookMethods" | "missingLifecycleMethod" | "missingWebhookMethods", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  //# sourceMappingURL=webhook-lifecycle-complete.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-lifecycle-complete.d.ts","sourceRoot":"","sources":["../../src/rules/webhook-lifecycle-complete.ts"],"names":[],"mappings":"AA8CA,eAAO,MAAM,4BAA4B,6MAkFvC,CAAC"}
1
+ {"version":3,"file":"webhook-lifecycle-complete.d.ts","sourceRoot":"","sources":["../../src/rules/webhook-lifecycle-complete.ts"],"names":[],"mappings":"AA8CA,eAAO,MAAM,4BAA4B;;CAkFvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAShF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAU3E;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAahE;AA+BD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAO1F;AAkBD,wBAAgB,0BAA0B,CAAC,eAAe,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAkB/E;AAED,wBAAgB,6BAA6B,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4BvF;AAED,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACb;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CAChB,CAYA;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAItE;AAwBD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAS3E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACrC,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GACpC,MAAM,EAAE,CAYV;AAED,wBAAgB,mCAAmC,CAClD,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GAChB,OAAO,CAoBT;AAiED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAiClF"}
1
+ {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAShF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAU3E;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAahE;AA+BD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAO1F;AAkBD,wBAAgB,0BAA0B,CAAC,eAAe,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAkB/E;AAED,wBAAgB,6BAA6B,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4BvF;AAED,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACb;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CAChB,CAYA;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAItE;AAwBD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAS3E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACrC,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GACpC,MAAM,EAAE,CAYV;AAED,wBAAgB,mCAAmC,CAClD,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GAChB,OAAO,CAoBT;AA8DD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAiClF"}
@@ -229,8 +229,7 @@ function checkCredentialUsageInFile(nodeFile, credentialName) {
229
229
  enter(node) {
230
230
  if (node.type === AST_NODE_TYPES.ClassDeclaration && isNodeTypeClass(node)) {
231
231
  const descriptionProperty = findClassProperty(node, 'description');
232
- if (!descriptionProperty?.value ||
233
- descriptionProperty.value.type !== AST_NODE_TYPES.ObjectExpression) {
232
+ if (descriptionProperty?.value?.type !== AST_NODE_TYPES.ObjectExpression) {
234
233
  return;
235
234
  }
236
235
  const credentialsArray = findArrayLiteralProperty(descriptionProperty.value, 'credentials');
@@ -1,3 +1,5 @@
1
1
  import { ESLintUtils } from '@typescript-eslint/utils';
2
- export declare const createRule: <Options extends readonly unknown[], MessageIds extends string>({ meta, name, ...rule }: Readonly<ESLintUtils.RuleWithMetaAndName<Options, MessageIds, unknown>>) => ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener>;
2
+ export declare const createRule: <Options extends readonly unknown[], MessageIds extends string>({ meta, name, ...rule }: Readonly<ESLintUtils.RuleWithMetaAndName<Options, MessageIds, unknown>>) => ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener> & {
3
+ name: string;
4
+ };
3
5
  //# sourceMappingURL=rule-creator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rule-creator.d.ts","sourceRoot":"","sources":["../../src/utils/rule-creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKvD,eAAO,MAAM,UAAU,qPAA2E,CAAC"}
1
+ {"version":3,"file":"rule-creator.d.ts","sourceRoot":"","sources":["../../src/utils/rule-creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKvD,eAAO,MAAM,UAAU;;CAA2E,CAAC"}
@@ -17,8 +17,8 @@ an error: most existing nodes ship a single icon, so this nudges authors toward
17
17
  themed variants without failing verification.
18
18
 
19
19
  The companion `icon-validation` rule still validates that the referenced files
20
- exist, use the `file:` protocol, and that the light and dark variants point to
21
- different files.
20
+ exist and use the `file:` protocol. Both slots can point to the same file if one
21
+ icon design works on both themes.
22
22
 
23
23
  ## Examples
24
24
 
@@ -1,4 +1,4 @@
1
- # Validate node and credential icon files exist, use the file: protocol, and that light/dark icons are different (`@n8n/community-nodes/icon-validation`)
1
+ # Validate node and credential icon files exist and use the file: protocol (`@n8n/community-nodes/icon-validation`)
2
2
 
3
3
  💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`.
4
4
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## Rule Details
10
10
 
11
- Validates that your node and credential icon files exist and use the correct `file:` protocol. Icons must be different files when providing light/dark theme variants.
11
+ Validates that your node and credential icon files exist and use the correct `file:` protocol. The `light` and `dark` slots can point to the same file: one theme-agnostic icon is a valid choice, and you do not have to copy it under a second filename.
12
12
 
13
13
  Both SVG and PNG icons are accepted. SVG is recommended (it scales cleanly and supports theming), but PNG is allowed — see the `icon-prefer-themed-variants` rule for the related light/dark nudge.
14
14
 
@@ -27,28 +27,28 @@ export class MyNode implements INodeType {
27
27
  }
28
28
  ```
29
29
 
30
+ ### ✅ Correct
31
+
30
32
  ```typescript
31
33
  export class MyNode implements INodeType {
32
34
  description: INodeTypeDescription = {
33
35
  displayName: 'My Node',
34
36
  name: 'myNode',
35
- icon: {
36
- light: 'file:icons/my-icon.svg',
37
- dark: 'file:icons/my-icon.svg', // Same file for both themes
38
- },
37
+ icon: 'file:icons/my-service.svg', // Correct format
39
38
  // ...
40
39
  };
41
40
  }
42
41
  ```
43
42
 
44
- ### ✅ Correct
45
-
46
43
  ```typescript
47
44
  export class MyNode implements INodeType {
48
45
  description: INodeTypeDescription = {
49
46
  displayName: 'My Node',
50
47
  name: 'myNode',
51
- icon: 'file:icons/my-service.svg', // Correct format
48
+ icon: {
49
+ light: 'file:icons/my-service-light.svg',
50
+ dark: 'file:icons/my-service-dark.svg', // Different files
51
+ },
52
52
  // ...
53
53
  };
54
54
  }
@@ -60,8 +60,8 @@ export class MyNode implements INodeType {
60
60
  displayName: 'My Node',
61
61
  name: 'myNode',
62
62
  icon: {
63
- light: 'file:icons/my-service-light.svg',
64
- dark: 'file:icons/my-service-dark.svg', // Different files
63
+ light: 'file:icons/my-service.svg',
64
+ dark: 'file:icons/my-service.svg', // One file that works on both themes
65
65
  },
66
66
  // ...
67
67
  };
package/eslint.config.mjs CHANGED
@@ -1,15 +1,14 @@
1
1
  import { defineConfig } from 'eslint/config';
2
- import { nodeConfig } from '@n8n/eslint-config/node';
2
+ import { backendConfig } from '@n8n/eslint-config/backend';
3
3
  import eslintPlugin from 'eslint-plugin-eslint-plugin';
4
4
 
5
5
  export default defineConfig([
6
- nodeConfig,
6
+ backendConfig,
7
7
  eslintPlugin.configs.recommended,
8
8
  {
9
9
  files: ['src/**/*.ts'],
10
10
  languageOptions: {
11
11
  parserOptions: {
12
- project: './tsconfig.json',
13
12
  allowDefaultProject: true,
14
13
  },
15
14
  },
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@n8n/eslint-plugin-community-nodes",
3
3
  "type": "module",
4
- "version": "0.32.0",
4
+ "version": "0.33.0",
5
5
  "main": "./dist/plugin.js",
6
6
  "types": "./dist/plugin.d.ts",
7
7
  "exports": {
@@ -11,16 +11,16 @@
11
11
  }
12
12
  },
13
13
  "dependencies": {
14
- "@typescript-eslint/typescript-estree": "^8.35.0",
15
- "@typescript-eslint/utils": "^8.35.0",
14
+ "@typescript-eslint/typescript-estree": "8.70.0",
15
+ "@typescript-eslint/utils": "8.70.0",
16
16
  "fastest-levenshtein": "1.0.16"
17
17
  },
18
18
  "devDependencies": {
19
- "@n8n/typescript-config": "1.11.0",
20
- "@n8n/vitest-config": "1.21.0",
19
+ "@n8n/typescript-config": "1.12.0",
20
+ "@n8n/vitest-config": "1.22.0",
21
21
  "@types/node": "24.10.1",
22
- "n8n-workflow": "2.39.0",
23
- "@typescript-eslint/rule-tester": "^8.35.0",
22
+ "n8n-workflow": "2.40.0",
23
+ "@typescript-eslint/rule-tester": "8.70.0",
24
24
  "eslint-doc-generator": "^2.2.2",
25
25
  "eslint-plugin-eslint-plugin": "^7.0.0",
26
26
  "rimraf": "6.0.1",
@@ -69,10 +69,7 @@ export const CredentialPasswordFieldRule = createRule({
69
69
  }
70
70
 
71
71
  const propertiesProperty = findClassProperty(node, 'properties');
72
- if (
73
- !propertiesProperty?.value ||
74
- propertiesProperty.value.type !== TSESTree.AST_NODE_TYPES.ArrayExpression
75
- ) {
72
+ if (propertiesProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ArrayExpression) {
76
73
  return;
77
74
  }
78
75
 
@@ -33,10 +33,7 @@ export const CredentialUnnecessaryPasswordRule = createRule({
33
33
  }
34
34
 
35
35
  const propertiesProperty = findClassProperty(node, 'properties');
36
- if (
37
- !propertiesProperty?.value ||
38
- propertiesProperty.value.type !== TSESTree.AST_NODE_TYPES.ArrayExpression
39
- ) {
36
+ if (propertiesProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ArrayExpression) {
40
37
  return;
41
38
  }
42
39