@n8n/eslint-plugin-community-nodes 0.32.1 → 0.34.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 (179) 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-silent-error-swallowing.js +2 -12
  59. package/dist/rules/no-template-placeholders.d.ts +3 -1
  60. package/dist/rules/no-template-placeholders.d.ts.map +1 -1
  61. package/dist/rules/no-unsafe-connection-type-cast.d.ts +3 -1
  62. package/dist/rules/no-unsafe-connection-type-cast.d.ts.map +1 -1
  63. package/dist/rules/node-class-description-icon-missing.d.ts +3 -1
  64. package/dist/rules/node-class-description-icon-missing.d.ts.map +1 -1
  65. package/dist/rules/node-class-description-icon-missing.js +1 -2
  66. package/dist/rules/node-connection-type-literal.d.ts +3 -1
  67. package/dist/rules/node-connection-type-literal.d.ts.map +1 -1
  68. package/dist/rules/node-registration-complete.d.ts +3 -1
  69. package/dist/rules/node-registration-complete.d.ts.map +1 -1
  70. package/dist/rules/node-usable-as-tool.d.ts +3 -1
  71. package/dist/rules/node-usable-as-tool.d.ts.map +1 -1
  72. package/dist/rules/package-name-convention.d.ts +3 -1
  73. package/dist/rules/package-name-convention.d.ts.map +1 -1
  74. package/dist/rules/require-files-array.d.ts +3 -1
  75. package/dist/rules/require-files-array.d.ts.map +1 -1
  76. package/dist/rules/require-homepage.d.ts +3 -1
  77. package/dist/rules/require-homepage.d.ts.map +1 -1
  78. package/dist/rules/require-node-api-error.d.ts +3 -1
  79. package/dist/rules/require-node-api-error.d.ts.map +1 -1
  80. package/dist/rules/require-node-description-fields.d.ts +3 -1
  81. package/dist/rules/require-node-description-fields.d.ts.map +1 -1
  82. package/dist/rules/require-node-description-fields.js +1 -2
  83. package/dist/rules/require-version.d.ts +3 -1
  84. package/dist/rules/require-version.d.ts.map +1 -1
  85. package/dist/rules/resource-operation-pattern.d.ts +3 -1
  86. package/dist/rules/resource-operation-pattern.d.ts.map +1 -1
  87. package/dist/rules/resource-operation-pattern.js +3 -4
  88. package/dist/rules/trigger-node-conventions.d.ts +3 -1
  89. package/dist/rules/trigger-node-conventions.d.ts.map +1 -1
  90. package/dist/rules/valid-author.d.ts +3 -1
  91. package/dist/rules/valid-author.d.ts.map +1 -1
  92. package/dist/rules/valid-author.js +1 -1
  93. package/dist/rules/valid-credential-references.d.ts +3 -1
  94. package/dist/rules/valid-credential-references.d.ts.map +1 -1
  95. package/dist/rules/valid-description.d.ts +3 -1
  96. package/dist/rules/valid-description.d.ts.map +1 -1
  97. package/dist/rules/valid-peer-dependencies.d.ts +3 -1
  98. package/dist/rules/valid-peer-dependencies.d.ts.map +1 -1
  99. package/dist/rules/webhook-lifecycle-complete.d.ts +3 -1
  100. package/dist/rules/webhook-lifecycle-complete.d.ts.map +1 -1
  101. package/dist/rules/webhook-lifecycle-complete.js +3 -11
  102. package/dist/utils/ast-utils.d.ts +6 -0
  103. package/dist/utils/ast-utils.d.ts.map +1 -1
  104. package/dist/utils/ast-utils.js +22 -5
  105. package/dist/utils/file-utils.d.ts.map +1 -1
  106. package/dist/utils/file-utils.js +1 -2
  107. package/dist/utils/rule-creator.d.ts +3 -1
  108. package/dist/utils/rule-creator.d.ts.map +1 -1
  109. package/docs/rules/icon-prefer-themed-variants.md +2 -2
  110. package/docs/rules/icon-validation.md +11 -11
  111. package/eslint.config.mjs +2 -3
  112. package/package.json +7 -7
  113. package/src/rules/credential-password-field.ts +1 -4
  114. package/src/rules/credential-unnecessary-password.ts +1 -4
  115. package/src/rules/icon-validation.test.ts +19 -21
  116. package/src/rules/icon-validation.ts +5 -20
  117. package/src/rules/no-forbidden-lifecycle-scripts.ts +1 -1
  118. package/src/rules/no-silent-error-swallowing.test.ts +26 -0
  119. package/src/rules/no-silent-error-swallowing.ts +2 -9
  120. package/src/rules/node-class-description-icon-missing.ts +1 -4
  121. package/src/rules/require-node-description-fields.ts +1 -4
  122. package/src/rules/resource-operation-pattern.ts +3 -6
  123. package/src/rules/valid-author.ts +1 -1
  124. package/src/rules/webhook-lifecycle-complete.test.ts +42 -0
  125. package/src/rules/webhook-lifecycle-complete.ts +3 -12
  126. package/src/utils/ast-utils.ts +29 -6
  127. package/src/utils/file-utils.ts +3 -6
  128. package/dist/plugin.js.map +0 -1
  129. package/dist/rules/ai-node-package-json.js.map +0 -1
  130. package/dist/rules/cred-class-field-icon-missing.js.map +0 -1
  131. package/dist/rules/cred-class-oauth2-naming.js.map +0 -1
  132. package/dist/rules/credential-documentation-url.js.map +0 -1
  133. package/dist/rules/credential-password-field.js.map +0 -1
  134. package/dist/rules/credential-test-required.js.map +0 -1
  135. package/dist/rules/credential-unnecessary-password.js.map +0 -1
  136. package/dist/rules/icon-prefer-themed-variants.js.map +0 -1
  137. package/dist/rules/icon-validation.js.map +0 -1
  138. package/dist/rules/index.js.map +0 -1
  139. package/dist/rules/missing-paired-item.js.map +0 -1
  140. package/dist/rules/n8n-object-validation.js.map +0 -1
  141. package/dist/rules/no-builder-hint-leakage.js.map +0 -1
  142. package/dist/rules/no-credential-reuse.js.map +0 -1
  143. package/dist/rules/no-dangerous-functions.js.map +0 -1
  144. package/dist/rules/no-dead-files.js.map +0 -1
  145. package/dist/rules/no-deprecated-workflow-functions.js.map +0 -1
  146. package/dist/rules/no-emoji-in-options.js.map +0 -1
  147. package/dist/rules/no-forbidden-lifecycle-scripts.js.map +0 -1
  148. package/dist/rules/no-hardcoded-secrets.js.map +0 -1
  149. package/dist/rules/no-http-request-with-manual-auth.js.map +0 -1
  150. package/dist/rules/no-overrides-field.js.map +0 -1
  151. package/dist/rules/no-restricted-globals.js.map +0 -1
  152. package/dist/rules/no-restricted-imports.js.map +0 -1
  153. package/dist/rules/no-runtime-dependencies.js.map +0 -1
  154. package/dist/rules/no-silent-error-swallowing.js.map +0 -1
  155. package/dist/rules/no-template-placeholders.js.map +0 -1
  156. package/dist/rules/no-unsafe-connection-type-cast.js.map +0 -1
  157. package/dist/rules/node-class-description-icon-missing.js.map +0 -1
  158. package/dist/rules/node-connection-type-literal.js.map +0 -1
  159. package/dist/rules/node-registration-complete.js.map +0 -1
  160. package/dist/rules/node-usable-as-tool.js.map +0 -1
  161. package/dist/rules/package-name-convention.js.map +0 -1
  162. package/dist/rules/require-files-array.js.map +0 -1
  163. package/dist/rules/require-homepage.js.map +0 -1
  164. package/dist/rules/require-node-api-error.js.map +0 -1
  165. package/dist/rules/require-node-description-fields.js.map +0 -1
  166. package/dist/rules/require-version.js.map +0 -1
  167. package/dist/rules/resource-operation-pattern.js.map +0 -1
  168. package/dist/rules/trigger-node-conventions.js.map +0 -1
  169. package/dist/rules/valid-author.js.map +0 -1
  170. package/dist/rules/valid-credential-references.js.map +0 -1
  171. package/dist/rules/valid-description.js.map +0 -1
  172. package/dist/rules/valid-peer-dependencies.js.map +0 -1
  173. package/dist/rules/webhook-lifecycle-complete.js.map +0 -1
  174. package/dist/utils/ast-utils.js.map +0 -1
  175. package/dist/utils/constants.js.map +0 -1
  176. package/dist/utils/credential-fields.js.map +0 -1
  177. package/dist/utils/file-utils.js.map +0 -1
  178. package/dist/utils/index.js.map +0 -1
  179. 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":"AAsCA,eAAO,MAAM,2BAA2B;;CAiFtC,CAAC"}
@@ -1,16 +1,6 @@
1
1
  import { AST_NODE_TYPES } from '@typescript-eslint/utils';
2
- import { createRule, findClassProperty, isNodeTypeClass, WEBHOOK_LIFECYCLE_METHODS, } from '../utils/index.js';
2
+ import { createRule, findClassProperty, getPropertyKeyName, isNodeTypeClass, WEBHOOK_LIFECYCLE_METHODS, } from '../utils/index.js';
3
3
  const LIFECYCLE_METHODS = WEBHOOK_LIFECYCLE_METHODS;
4
- /** Returns the static name of a non-computed object property key, or null. */
5
- function getPropertyName(property) {
6
- if (property.computed)
7
- return null;
8
- if (property.key.type === AST_NODE_TYPES.Identifier)
9
- return property.key.name;
10
- if (property.key.type === AST_NODE_TYPES.Literal)
11
- return String(property.key.value);
12
- return null;
13
- }
14
4
  function isFunctionNode(node) {
15
5
  return (node.type === AST_NODE_TYPES.FunctionDeclaration ||
16
6
  node.type === AST_NODE_TYPES.FunctionExpression ||
@@ -70,7 +60,7 @@ export const NoSilentErrorSwallowingRule = createRule({
70
60
  for (const methodProperty of groupProperty.value.properties) {
71
61
  if (methodProperty.type !== AST_NODE_TYPES.Property)
72
62
  continue;
73
- const methodName = getPropertyName(methodProperty);
63
+ const methodName = getPropertyKeyName(methodProperty);
74
64
  if (methodName === null || !LIFECYCLE_METHODS.includes(methodName))
75
65
  continue;
76
66
  const fn = methodProperty.value;
@@ -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":"AA0CA,eAAO,MAAM,4BAA4B;;CA6EvC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { AST_NODE_TYPES } from '@typescript-eslint/utils';
2
- import { createRule, findClassProperty, findObjectProperty, isNodeTypeClass, WEBHOOK_LIFECYCLE_METHODS, } from '../utils/index.js';
2
+ import { createRule, findClassProperty, findObjectProperty, getPropertyKeyName, isNodeTypeClass, WEBHOOK_LIFECYCLE_METHODS, } from '../utils/index.js';
3
3
  /**
4
4
  * Returns true if the description declares webhook endpoints, indicating the
5
5
  * node is a webhook-based trigger that needs a complete lifecycle.
@@ -17,11 +17,7 @@ function hasWebhooksDeclared(descriptionValue) {
17
17
  function isMethodProperty(property, name) {
18
18
  if (property.type !== AST_NODE_TYPES.Property)
19
19
  return false;
20
- if (property.computed)
21
- return false;
22
- const keyMatches = (property.key.type === AST_NODE_TYPES.Identifier && property.key.name === name) ||
23
- (property.key.type === AST_NODE_TYPES.Literal && property.key.value === name);
24
- if (!keyMatches)
20
+ if (getPropertyKeyName(property) !== name)
25
21
  return false;
26
22
  return (property.value.type === AST_NODE_TYPES.FunctionExpression ||
27
23
  property.value.type === AST_NODE_TYPES.ArrowFunctionExpression);
@@ -81,11 +77,7 @@ export const WebhookLifecycleCompleteRule = createRule({
81
77
  continue;
82
78
  if (groupProperty.value.type !== AST_NODE_TYPES.ObjectExpression)
83
79
  continue;
84
- const groupName = groupProperty.key.type === AST_NODE_TYPES.Identifier
85
- ? groupProperty.key.name
86
- : groupProperty.key.type === AST_NODE_TYPES.Literal
87
- ? String(groupProperty.key.value)
88
- : 'default';
80
+ const groupName = getPropertyKeyName(groupProperty) ?? 'default';
89
81
  const missing = findMissingMethods(groupProperty.value);
90
82
  if (missing.length === 0)
91
83
  continue;
@@ -9,6 +9,12 @@ export declare function isTriggerNodeClass(node: TSESTree.ClassDeclaration): boo
9
9
  * `group` values.
10
10
  */
11
11
  export declare function isTriggerNode(node: TSESTree.ClassDeclaration, descriptionValue: TSESTree.ObjectExpression): boolean;
12
+ /**
13
+ * Returns the name a property key stands for, or null when it is only known at
14
+ * runtime. `delete`, `'delete'` and `['delete']` all name the same property, so
15
+ * how the key is written must not decide whether a rule sees it.
16
+ */
17
+ export declare function getPropertyKeyName(property: TSESTree.Property | TSESTree.PropertyDefinition | TSESTree.MethodDefinition): string | null;
12
18
  export declare function findClassProperty(node: TSESTree.ClassDeclaration, propertyName: string): TSESTree.PropertyDefinition | null;
13
19
  /**
14
20
  * Returns the `description` object literal of a node class. Versioned nodes
@@ -1 +1 @@
1
- {"version":3,"file":"ast-utils.d.ts","sourceRoot":"","sources":["../../src/utils/ast-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast-utils.d.ts","sourceRoot":"","sources":["../../src/utils/ast-utils.ts"],"names":[],"mappings":"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"}
@@ -33,10 +33,29 @@ function hasTriggerGroup(descriptionValue) {
33
33
  export function isTriggerNode(node, descriptionValue) {
34
34
  return hasTriggerGroup(descriptionValue) || isTriggerNodeClass(node);
35
35
  }
36
+ /**
37
+ * Returns the name a property key stands for, or null when it is only known at
38
+ * runtime. `delete`, `'delete'` and `['delete']` all name the same property, so
39
+ * how the key is written must not decide whether a rule sees it.
40
+ */
41
+ export function getPropertyKeyName(property) {
42
+ const { key } = property;
43
+ if (key.type === AST_NODE_TYPES.Literal) {
44
+ return key.value === null ? null : String(key.value);
45
+ }
46
+ // A computed key still names one property when it is a template without
47
+ // substitutions; written plainly, an identifier is the name itself.
48
+ if (key.type === AST_NODE_TYPES.TemplateLiteral) {
49
+ return key.expressions.length === 0 ? (key.quasis[0]?.value.cooked ?? null) : null;
50
+ }
51
+ if (key.type === AST_NODE_TYPES.Identifier) {
52
+ return property.computed ? null : key.name;
53
+ }
54
+ return null;
55
+ }
36
56
  export function findClassProperty(node, propertyName) {
37
57
  const property = node.body.body.find((member) => member.type === AST_NODE_TYPES.PropertyDefinition &&
38
- member.key?.type === AST_NODE_TYPES.Identifier &&
39
- member.key.name === propertyName);
58
+ getPropertyKeyName(member) === propertyName);
40
59
  return property?.type === AST_NODE_TYPES.PropertyDefinition ? property : null;
41
60
  }
42
61
  /**
@@ -90,9 +109,7 @@ export function findNodeDescriptionObject(node) {
90
109
  return findConstructorAssignedDescription(node);
91
110
  }
92
111
  export function findObjectProperty(obj, propertyName) {
93
- const property = obj.properties.find((prop) => prop.type === AST_NODE_TYPES.Property &&
94
- prop.key.type === AST_NODE_TYPES.Identifier &&
95
- prop.key.name === propertyName);
112
+ const property = obj.properties.find((prop) => prop.type === AST_NODE_TYPES.Property && getPropertyKeyName(prop) === propertyName);
96
113
  return property?.type === AST_NODE_TYPES.Property ? property : null;
97
114
  }
98
115
  export function getLiteralValue(node) {
@@ -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