@n8n/eslint-plugin-community-nodes 0.25.0 → 0.27.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 (111) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/README.md +7 -1
  3. package/dist/plugin.d.ts +51 -15
  4. package/dist/plugin.d.ts.map +1 -1
  5. package/dist/plugin.js +12 -0
  6. package/dist/plugin.js.map +1 -1
  7. package/dist/rules/ai-node-package-json.d.ts +1 -1
  8. package/dist/rules/cred-class-field-icon-missing.d.ts +1 -1
  9. package/dist/rules/cred-class-oauth2-naming.d.ts +1 -1
  10. package/dist/rules/credential-password-field.d.ts.map +1 -1
  11. package/dist/rules/credential-password-field.js +3 -31
  12. package/dist/rules/credential-password-field.js.map +1 -1
  13. package/dist/rules/credential-unnecessary-password.d.ts +2 -0
  14. package/dist/rules/credential-unnecessary-password.d.ts.map +1 -0
  15. package/dist/rules/credential-unnecessary-password.js +54 -0
  16. package/dist/rules/credential-unnecessary-password.js.map +1 -0
  17. package/dist/rules/icon-validation.d.ts +1 -1
  18. package/dist/rules/index.d.ts +26 -20
  19. package/dist/rules/index.d.ts.map +1 -1
  20. package/dist/rules/index.js +12 -0
  21. package/dist/rules/index.js.map +1 -1
  22. package/dist/rules/no-credential-reuse.d.ts +1 -1
  23. package/dist/rules/no-dangerous-functions.d.ts +1 -1
  24. package/dist/rules/no-dead-files.d.ts +7 -0
  25. package/dist/rules/no-dead-files.d.ts.map +1 -0
  26. package/dist/rules/no-dead-files.js +57 -0
  27. package/dist/rules/no-dead-files.js.map +1 -0
  28. package/dist/rules/no-deprecated-workflow-functions.d.ts +1 -1
  29. package/dist/rules/no-hardcoded-secrets.d.ts +2 -0
  30. package/dist/rules/no-hardcoded-secrets.d.ts.map +1 -0
  31. package/dist/rules/no-hardcoded-secrets.js +147 -0
  32. package/dist/rules/no-hardcoded-secrets.js.map +1 -0
  33. package/dist/rules/no-restricted-imports.d.ts +1 -1
  34. package/dist/rules/no-restricted-imports.d.ts.map +1 -1
  35. package/dist/rules/no-restricted-imports.js +14 -5
  36. package/dist/rules/no-restricted-imports.js.map +1 -1
  37. package/dist/rules/no-silent-error-swallowing.d.ts +2 -0
  38. package/dist/rules/no-silent-error-swallowing.d.ts.map +1 -0
  39. package/dist/rules/no-silent-error-swallowing.js +112 -0
  40. package/dist/rules/no-silent-error-swallowing.js.map +1 -0
  41. package/dist/rules/node-class-description-icon-missing.d.ts +1 -1
  42. package/dist/rules/node-connection-type-literal.js.map +1 -1
  43. package/dist/rules/package-name-convention.d.ts +1 -1
  44. package/dist/rules/require-files-array.d.ts +2 -0
  45. package/dist/rules/require-files-array.d.ts.map +1 -0
  46. package/dist/rules/require-files-array.js +41 -0
  47. package/dist/rules/require-files-array.js.map +1 -0
  48. package/dist/rules/require-homepage.d.ts +2 -0
  49. package/dist/rules/require-homepage.d.ts.map +1 -0
  50. package/dist/rules/require-homepage.js +52 -0
  51. package/dist/rules/require-homepage.js.map +1 -0
  52. package/dist/rules/require-version.d.ts +1 -1
  53. package/dist/rules/trigger-node-conventions.d.ts +1 -1
  54. package/dist/rules/valid-author.d.ts +1 -1
  55. package/dist/rules/valid-credential-references.d.ts +1 -1
  56. package/dist/rules/valid-description.d.ts +1 -1
  57. package/dist/rules/valid-peer-dependencies.d.ts +1 -1
  58. package/dist/rules/webhook-lifecycle-complete.d.ts +1 -1
  59. package/dist/rules/webhook-lifecycle-complete.d.ts.map +1 -1
  60. package/dist/rules/webhook-lifecycle-complete.js +2 -3
  61. package/dist/rules/webhook-lifecycle-complete.js.map +1 -1
  62. package/dist/typecheck.tsbuildinfo +1 -1
  63. package/dist/utils/ast-utils.js.map +1 -1
  64. package/dist/utils/constants.d.ts +5 -0
  65. package/dist/utils/constants.d.ts.map +1 -0
  66. package/dist/utils/constants.js +15 -0
  67. package/dist/utils/constants.js.map +1 -0
  68. package/dist/utils/credential-fields.d.ts +20 -0
  69. package/dist/utils/credential-fields.d.ts.map +1 -0
  70. package/dist/utils/credential-fields.js +45 -0
  71. package/dist/utils/credential-fields.js.map +1 -0
  72. package/dist/utils/file-utils.d.ts +13 -0
  73. package/dist/utils/file-utils.d.ts.map +1 -1
  74. package/dist/utils/file-utils.js +44 -6
  75. package/dist/utils/file-utils.js.map +1 -1
  76. package/dist/utils/index.d.ts +2 -0
  77. package/dist/utils/index.d.ts.map +1 -1
  78. package/dist/utils/index.js +2 -0
  79. package/dist/utils/index.js.map +1 -1
  80. package/docs/rules/credential-password-field.md +3 -1
  81. package/docs/rules/credential-unnecessary-password.md +46 -0
  82. package/docs/rules/no-dead-files.md +56 -0
  83. package/docs/rules/no-hardcoded-secrets.md +59 -0
  84. package/docs/rules/no-restricted-imports.md +9 -0
  85. package/docs/rules/no-silent-error-swallowing.md +72 -0
  86. package/docs/rules/require-files-array.md +43 -0
  87. package/docs/rules/require-homepage.md +49 -0
  88. package/package.json +5 -4
  89. package/src/plugin.ts +12 -0
  90. package/src/rules/credential-password-field.ts +4 -40
  91. package/src/rules/credential-unnecessary-password.test.ts +105 -0
  92. package/src/rules/credential-unnecessary-password.ts +72 -0
  93. package/src/rules/index.ts +12 -0
  94. package/src/rules/no-dead-files.test.ts +128 -0
  95. package/src/rules/no-dead-files.ts +71 -0
  96. package/src/rules/no-hardcoded-secrets.test.ts +124 -0
  97. package/src/rules/no-hardcoded-secrets.ts +161 -0
  98. package/src/rules/no-restricted-imports.test.ts +63 -0
  99. package/src/rules/no-restricted-imports.ts +17 -4
  100. package/src/rules/no-silent-error-swallowing.test.ts +245 -0
  101. package/src/rules/no-silent-error-swallowing.ts +127 -0
  102. package/src/rules/require-files-array.test.ts +57 -0
  103. package/src/rules/require-files-array.ts +50 -0
  104. package/src/rules/require-homepage.test.ts +80 -0
  105. package/src/rules/require-homepage.ts +59 -0
  106. package/src/rules/webhook-lifecycle-complete.ts +4 -5
  107. package/src/utils/constants.ts +21 -0
  108. package/src/utils/credential-fields.ts +57 -0
  109. package/src/utils/file-utils.ts +50 -6
  110. package/src/utils/index.ts +2 -0
  111. package/tsconfig.json +1 -1
@@ -1,45 +1,51 @@
1
1
  export declare const rules: {
2
- 'ai-node-package-json': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingPeerDep" | "missingSdkVersion" | "invalidSdkVersion" | "wrongLocation", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
+ 'ai-node-package-json': import("@typescript-eslint/utils/ts-eslint").RuleModule<"invalidSdkVersion" | "missingPeerDep" | "missingSdkVersion" | "wrongLocation", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
3
3
  'no-restricted-globals': import("@typescript-eslint/utils/ts-eslint").RuleModule<"restrictedGlobal", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
4
- 'no-restricted-imports': import("@typescript-eslint/utils/ts-eslint").RuleModule<"restrictedImport" | "restrictedRequire" | "restrictedDynamicImport", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
4
+ 'no-restricted-imports': import("@typescript-eslint/utils/ts-eslint").RuleModule<"restrictedDynamicImport" | "restrictedImport" | "restrictedRequire", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
5
5
  'credential-password-field': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingPasswordOption", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
6
- 'no-deprecated-workflow-functions': import("@typescript-eslint/utils/ts-eslint").RuleModule<"deprecatedRequestFunction" | "deprecatedFunction" | "deprecatedType" | "deprecatedWithoutReplacement" | "suggestReplaceFunction" | "suggestReplaceType", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
6
+ 'no-deprecated-workflow-functions': import("@typescript-eslint/utils/ts-eslint").RuleModule<"deprecatedFunction" | "deprecatedRequestFunction" | "deprecatedType" | "deprecatedWithoutReplacement" | "suggestReplaceFunction" | "suggestReplaceType", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
7
7
  'no-emoji-in-options': import("@typescript-eslint/utils/ts-eslint").RuleModule<"emojiInOption", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
8
8
  'node-usable-as-tool': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingUsableAsTool", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
9
- 'package-name-convention': import("@typescript-eslint/utils/ts-eslint").RuleModule<"renameTo" | "invalidPackageName" | "missingName" | "defaultPlaceholderName", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
9
+ 'package-name-convention': import("@typescript-eslint/utils/ts-eslint").RuleModule<"defaultPlaceholderName" | "invalidPackageName" | "missingName" | "renameTo", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
10
10
  'credential-test-required': import("@typescript-eslint/utils/ts-eslint").RuleModule<"addTemplate" | "missingCredentialTest", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
11
- 'no-credential-reuse': import("@typescript-eslint/utils/ts-eslint").RuleModule<"didYouMean" | "useAvailable" | "credentialNotInPackage", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
12
- 'no-dangerous-functions': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noEval" | "noFunctionConstructor" | "noChildProcess", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
11
+ 'credential-unnecessary-password': import("@typescript-eslint/utils/ts-eslint").RuleModule<"unnecessaryPasswordOption", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
12
+ 'no-credential-reuse': import("@typescript-eslint/utils/ts-eslint").RuleModule<"credentialNotInPackage" | "didYouMean" | "useAvailable", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
13
+ 'no-dangerous-functions': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noChildProcess" | "noEval" | "noFunctionConstructor", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
14
+ 'no-dead-files': import("@typescript-eslint/utils/ts-eslint").RuleModule<"deadFileFound", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
13
15
  'no-forbidden-lifecycle-scripts': import("@typescript-eslint/utils/ts-eslint").RuleModule<"forbiddenScript", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
16
+ 'no-hardcoded-secrets': import("@typescript-eslint/utils/ts-eslint").RuleModule<"hardcodedSecret", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
14
17
  'no-http-request-with-manual-auth': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useHttpRequestWithAuthentication", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
15
18
  'no-overrides-field': import("@typescript-eslint/utils/ts-eslint").RuleModule<"overridesForbidden", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
16
19
  'no-runtime-dependencies': import("@typescript-eslint/utils/ts-eslint").RuleModule<"runtimeDependenciesForbidden", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
20
+ 'no-silent-error-swallowing': import("@typescript-eslint/utils/ts-eslint").RuleModule<"emptyCatch" | "silentReturn", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
17
21
  'no-template-placeholders': import("@typescript-eslint/utils/ts-eslint").RuleModule<"unresolvedPlaceholder", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
18
- 'icon-validation': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingIcon" | "addPlaceholder" | "iconFileNotFound" | "lightDarkSame" | "invalidIconPath" | "addFileProtocol" | "similarIcon", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
22
+ 'icon-validation': import("@typescript-eslint/utils/ts-eslint").RuleModule<"addFileProtocol" | "addPlaceholder" | "iconFileNotFound" | "invalidIconPath" | "lightDarkSame" | "missingIcon" | "similarIcon", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
19
23
  'icon-prefer-themed-variants': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingThemedVariants", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
20
24
  'resource-operation-pattern': import("@typescript-eslint/utils/ts-eslint").RuleModule<"tooManyOperationsWithoutResources", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
21
- 'trigger-node-conventions': import("@typescript-eslint/utils/ts-eslint").RuleModule<"nameMissingSuffix" | "displayNameMissingTrigger" | "inputsNotEmpty", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
25
+ 'trigger-node-conventions': import("@typescript-eslint/utils/ts-eslint").RuleModule<"displayNameMissingTrigger" | "inputsNotEmpty" | "nameMissingSuffix", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
22
26
  'credential-documentation-url': import("@typescript-eslint/utils/ts-eslint").RuleModule<"invalidDocumentationUrl", [{
23
27
  allowUrls?: boolean;
24
28
  allowSlugs?: boolean;
25
29
  }], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
26
- 'node-class-description-icon-missing': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingIcon" | "addPlaceholder", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
27
- 'cred-class-field-icon-missing': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingIcon" | "addPlaceholder", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
28
- 'cred-class-oauth2-naming': import("@typescript-eslint/utils/ts-eslint").RuleModule<"classNameMissingOAuth2" | "nameMissingOAuth2" | "displayNameMissingOAuth2", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
30
+ 'node-class-description-icon-missing': import("@typescript-eslint/utils/ts-eslint").RuleModule<"addPlaceholder" | "missingIcon", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
31
+ 'cred-class-field-icon-missing': import("@typescript-eslint/utils/ts-eslint").RuleModule<"addPlaceholder" | "missingIcon", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
32
+ 'cred-class-oauth2-naming': import("@typescript-eslint/utils/ts-eslint").RuleModule<"classNameMissingOAuth2" | "displayNameMissingOAuth2" | "nameMissingOAuth2", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
29
33
  'node-connection-type-literal': import("@typescript-eslint/utils/ts-eslint").RuleModule<"stringLiteralInInputs" | "stringLiteralInOutputs" | "unknownStringLiteralInInputs" | "unknownStringLiteralInOutputs", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
30
34
  'node-registration-complete': import("@typescript-eslint/utils/ts-eslint").RuleModule<"nodeNotRegistered", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
31
35
  'missing-paired-item': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingPairedItem", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
32
- 'no-builder-hint-leakage': import("@typescript-eslint/utils/ts-eslint").RuleModule<"wireExpression" | "connectionTypeLiteral", [{
33
- scope?: "builderHint" | "all";
36
+ 'no-builder-hint-leakage': import("@typescript-eslint/utils/ts-eslint").RuleModule<"connectionTypeLiteral" | "wireExpression", [{
37
+ scope?: 'builderHint' | 'all';
34
38
  }], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
35
- 'n8n-object-validation': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingN8nObject" | "wrongLocationApiVersion" | "missingNodesApiVersion" | "invalidNodesApiVersion" | "missingN8nNodes" | "n8nNodesNotArray" | "emptyN8nNodes" | "n8nCredentialsNotArray" | "nodePathNotString" | "nodePathNotInDist" | "credentialPathNotString" | "credentialPathNotInDist" | "invalidStrict", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
39
+ 'n8n-object-validation': import("@typescript-eslint/utils/ts-eslint").RuleModule<"credentialPathNotInDist" | "credentialPathNotString" | "emptyN8nNodes" | "invalidNodesApiVersion" | "invalidStrict" | "missingN8nNodes" | "missingN8nObject" | "missingNodesApiVersion" | "n8nCredentialsNotArray" | "n8nNodesNotArray" | "nodePathNotInDist" | "nodePathNotString" | "wrongLocationApiVersion", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
40
+ 'require-files-array': import("@typescript-eslint/utils/ts-eslint").RuleModule<"filesEmpty" | "filesMissing", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
41
+ 'require-homepage': import("@typescript-eslint/utils/ts-eslint").RuleModule<"homepageInvalid" | "homepageMissing", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
36
42
  'require-node-api-error': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useNodeApiError" | "useNodeApiErrorInsteadOfGeneric", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
37
43
  'require-node-description-fields': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingField" | "missingFields", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
38
- 'require-version': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingVersion" | "invalidVersion", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
39
- 'valid-author': import("@typescript-eslint/utils/ts-eslint").RuleModule<"authorMissing" | "authorNameMissing" | "authorEmailMissing", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
40
- 'valid-credential-references': import("@typescript-eslint/utils/ts-eslint").RuleModule<"didYouMean" | "credentialNotFound", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
41
- 'valid-description': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingDescription" | "emptyDescription", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
42
- 'valid-peer-dependencies': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingPeerDependencies" | "invalidPeerDependenciesType" | "missingN8nWorkflow" | "pinnedN8nWorkflow" | "forbiddenPeerDependency", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
43
- 'webhook-lifecycle-complete': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingWebhookMethods" | "emptyWebhookMethods" | "missingLifecycleMethod", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
44
+ 'require-version': import("@typescript-eslint/utils/ts-eslint").RuleModule<"invalidVersion" | "missingVersion", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
45
+ 'valid-author': import("@typescript-eslint/utils/ts-eslint").RuleModule<"authorEmailMissing" | "authorMissing" | "authorNameMissing", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
46
+ 'valid-credential-references': import("@typescript-eslint/utils/ts-eslint").RuleModule<"credentialNotFound" | "didYouMean", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
47
+ 'valid-description': import("@typescript-eslint/utils/ts-eslint").RuleModule<"emptyDescription" | "missingDescription", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
48
+ 'valid-peer-dependencies': import("@typescript-eslint/utils/ts-eslint").RuleModule<"forbiddenPeerDependency" | "invalidPeerDependenciesType" | "missingN8nWorkflow" | "missingPeerDependencies" | "pinnedN8nWorkflow", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
49
+ 'webhook-lifecycle-complete': import("@typescript-eslint/utils/ts-eslint").RuleModule<"emptyWebhookMethods" | "missingLifecycleMethod" | "missingWebhookMethods", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
44
50
  };
45
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AA8CA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CuB,CAAC"}
@@ -4,6 +4,7 @@ import { CredClassOAuth2NamingRule } from './cred-class-oauth2-naming.js';
4
4
  import { CredentialDocumentationUrlRule } from './credential-documentation-url.js';
5
5
  import { CredentialPasswordFieldRule } from './credential-password-field.js';
6
6
  import { CredentialTestRequiredRule } from './credential-test-required.js';
7
+ import { CredentialUnnecessaryPasswordRule } from './credential-unnecessary-password.js';
7
8
  import { IconPreferThemedVariantsRule } from './icon-prefer-themed-variants.js';
8
9
  import { IconValidationRule } from './icon-validation.js';
9
10
  import { MissingPairedItemRule } from './missing-paired-item.js';
@@ -11,20 +12,25 @@ import { N8nObjectValidationRule } from './n8n-object-validation.js';
11
12
  import { NoBuilderHintLeakageRule } from './no-builder-hint-leakage.js';
12
13
  import { NoCredentialReuseRule } from './no-credential-reuse.js';
13
14
  import { NoDangerousFunctionsRule } from './no-dangerous-functions.js';
15
+ import { NoDeadFilesRule } from './no-dead-files.js';
14
16
  import { NoDeprecatedWorkflowFunctionsRule } from './no-deprecated-workflow-functions.js';
15
17
  import { NoEmojiInOptionsRule } from './no-emoji-in-options.js';
16
18
  import { NoForbiddenLifecycleScriptsRule } from './no-forbidden-lifecycle-scripts.js';
19
+ import { NoHardcodedSecretsRule } from './no-hardcoded-secrets.js';
17
20
  import { NoHttpRequestWithManualAuthRule } from './no-http-request-with-manual-auth.js';
18
21
  import { NoOverridesFieldRule } from './no-overrides-field.js';
19
22
  import { NoRestrictedGlobalsRule } from './no-restricted-globals.js';
20
23
  import { NoRestrictedImportsRule } from './no-restricted-imports.js';
21
24
  import { NoRuntimeDependenciesRule } from './no-runtime-dependencies.js';
25
+ import { NoSilentErrorSwallowingRule } from './no-silent-error-swallowing.js';
22
26
  import { NoTemplatePlaceholdersRule } from './no-template-placeholders.js';
23
27
  import { NodeClassDescriptionIconMissingRule } from './node-class-description-icon-missing.js';
24
28
  import { NodeConnectionTypeLiteralRule } from './node-connection-type-literal.js';
25
29
  import { NodeRegistrationCompleteRule } from './node-registration-complete.js';
26
30
  import { NodeUsableAsToolRule } from './node-usable-as-tool.js';
27
31
  import { PackageNameConventionRule } from './package-name-convention.js';
32
+ import { RequireFilesArrayRule } from './require-files-array.js';
33
+ import { RequireHomepageRule } from './require-homepage.js';
28
34
  import { RequireNodeApiErrorRule } from './require-node-api-error.js';
29
35
  import { RequireNodeDescriptionFieldsRule } from './require-node-description-fields.js';
30
36
  import { RequireVersionRule } from './require-version.js';
@@ -45,12 +51,16 @@ export const rules = {
45
51
  'node-usable-as-tool': NodeUsableAsToolRule,
46
52
  'package-name-convention': PackageNameConventionRule,
47
53
  'credential-test-required': CredentialTestRequiredRule,
54
+ 'credential-unnecessary-password': CredentialUnnecessaryPasswordRule,
48
55
  'no-credential-reuse': NoCredentialReuseRule,
49
56
  'no-dangerous-functions': NoDangerousFunctionsRule,
57
+ 'no-dead-files': NoDeadFilesRule,
50
58
  'no-forbidden-lifecycle-scripts': NoForbiddenLifecycleScriptsRule,
59
+ 'no-hardcoded-secrets': NoHardcodedSecretsRule,
51
60
  'no-http-request-with-manual-auth': NoHttpRequestWithManualAuthRule,
52
61
  'no-overrides-field': NoOverridesFieldRule,
53
62
  'no-runtime-dependencies': NoRuntimeDependenciesRule,
63
+ 'no-silent-error-swallowing': NoSilentErrorSwallowingRule,
54
64
  'no-template-placeholders': NoTemplatePlaceholdersRule,
55
65
  'icon-validation': IconValidationRule,
56
66
  'icon-prefer-themed-variants': IconPreferThemedVariantsRule,
@@ -65,6 +75,8 @@ export const rules = {
65
75
  'missing-paired-item': MissingPairedItemRule,
66
76
  'no-builder-hint-leakage': NoBuilderHintLeakageRule,
67
77
  'n8n-object-validation': N8nObjectValidationRule,
78
+ 'require-files-array': RequireFilesArrayRule,
79
+ 'require-homepage': RequireHomepageRule,
68
80
  'require-node-api-error': RequireNodeApiErrorRule,
69
81
  'require-node-description-fields': RequireNodeDescriptionFieldsRule,
70
82
  'require-version': RequireVersionRule,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const NoCredentialReuseRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"didYouMean" | "useAvailable" | "credentialNotInPackage", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NoCredentialReuseRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"credentialNotInPackage" | "didYouMean" | "useAvailable", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
2
  //# sourceMappingURL=no-credential-reuse.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare const NoDangerousFunctionsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noEval" | "noFunctionConstructor" | "noChildProcess", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NoDangerousFunctionsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noChildProcess" | "noEval" | "noFunctionConstructor", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
2
  //# sourceMappingURL=no-dangerous-functions.d.ts.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns true if the given filename looks like a leftover backup, editor, or
3
+ * test-artifact file that should not ship with a community node.
4
+ */
5
+ export declare function isDeadFileName(fileName: string): boolean;
6
+ export declare const NoDeadFilesRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"deadFileFound", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
7
+ //# sourceMappingURL=no-dead-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-dead-files.d.ts","sourceRoot":"","sources":["../../src/rules/no-dead-files.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,eAAO,MAAM,eAAe,kJA2C1B,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { AST_NODE_TYPES } from '@typescript-eslint/utils';
2
+ import * as path from 'node:path';
3
+ import { createRule, findFilesInPackageDirs } from '../utils/index.js';
4
+ // Package subdirectories that ship in the published artifact and should stay clean.
5
+ const SCAN_DIRS = ['nodes', 'credentials'];
6
+ const DEAD_FILE_MATCHERS = [
7
+ (fileName) => fileName.endsWith('.backup'),
8
+ (fileName) => fileName.endsWith('.bak'),
9
+ // Windows "mark of the web" ADS files, extracted as literal filenames on
10
+ // filesystems without alternate data streams (e.g. `Foo.node.ts:Zone.Identifier`).
11
+ (fileName) => fileName.endsWith('Zone.Identifier'),
12
+ (fileName) => fileName === 'test.js',
13
+ (fileName) => fileName === 'test.ts',
14
+ ];
15
+ /**
16
+ * Returns true if the given filename looks like a leftover backup, editor, or
17
+ * test-artifact file that should not ship with a community node.
18
+ */
19
+ export function isDeadFileName(fileName) {
20
+ return DEAD_FILE_MATCHERS.some((matches) => matches(fileName));
21
+ }
22
+ export const NoDeadFilesRule = createRule({
23
+ name: 'no-dead-files',
24
+ meta: {
25
+ type: 'problem',
26
+ docs: {
27
+ description: 'Disallow leftover backup, editor, and test-artifact files in the `nodes/` and `credentials/` directories of a community node package',
28
+ },
29
+ messages: {
30
+ deadFileFound: 'Remove the leftover file "{{ file }}". Backup, editor, and test-artifact files should not be published with a community node.',
31
+ },
32
+ schema: [],
33
+ },
34
+ defaultOptions: [],
35
+ create(context) {
36
+ if (!context.filename.endsWith('package.json')) {
37
+ return {};
38
+ }
39
+ return {
40
+ ObjectExpression(node) {
41
+ // Only inspect the root object of the package.json file, so the scan runs once.
42
+ if (node.parent?.type !== AST_NODE_TYPES.ExpressionStatement) {
43
+ return;
44
+ }
45
+ const packageDir = path.dirname(context.filename);
46
+ for (const deadFile of findFilesInPackageDirs(context.filename, SCAN_DIRS, isDeadFileName)) {
47
+ context.report({
48
+ node,
49
+ messageId: 'deadFileFound',
50
+ data: { file: path.relative(packageDir, deadFile) },
51
+ });
52
+ }
53
+ },
54
+ };
55
+ },
56
+ });
57
+ //# sourceMappingURL=no-dead-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-dead-files.js","sourceRoot":"","sources":["../../src/rules/no-dead-files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,oFAAoF;AACpF,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAE3C,MAAM,kBAAkB,GAAyC;IAChE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC1C,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;IACvC,yEAAyE;IACzE,mFAAmF;IACnF,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAClD,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS;IACpC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS;CACpC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC9C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EACV,sIAAsI;SACvI;QACD,QAAQ,EAAE;YACT,aAAa,EACZ,+HAA+H;SAChI;QACD,MAAM,EAAE,EAAE;KACV;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACb,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAChD,OAAO,EAAE,CAAC;QACX,CAAC;QAED,OAAO;YACN,gBAAgB,CAAC,IAA+B;gBAC/C,gFAAgF;gBAChF,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,cAAc,CAAC,mBAAmB,EAAE,CAAC;oBAC9D,OAAO;gBACR,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAElD,KAAK,MAAM,QAAQ,IAAI,sBAAsB,CAC5C,OAAO,CAAC,QAAQ,EAChB,SAAS,EACT,cAAc,CACd,EAAE,CAAC;oBACH,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI;wBACJ,SAAS,EAAE,eAAe;wBAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;qBACnD,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const NoDeprecatedWorkflowFunctionsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"deprecatedRequestFunction" | "deprecatedFunction" | "deprecatedType" | "deprecatedWithoutReplacement" | "suggestReplaceFunction" | "suggestReplaceType", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const NoDeprecatedWorkflowFunctionsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"deprecatedFunction" | "deprecatedRequestFunction" | "deprecatedType" | "deprecatedWithoutReplacement" | "suggestReplaceFunction" | "suggestReplaceType", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
2
  //# sourceMappingURL=no-deprecated-workflow-functions.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const NoHardcodedSecretsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"hardcodedSecret", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
+ //# sourceMappingURL=no-hardcoded-secrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-hardcoded-secrets.d.ts","sourceRoot":"","sources":["../../src/rules/no-hardcoded-secrets.ts"],"names":[],"mappings":"AAkGA,eAAO,MAAM,sBAAsB,oJA8DjC,CAAC"}
@@ -0,0 +1,147 @@
1
+ import { TSESTree } from '@typescript-eslint/utils';
2
+ import { createRule, getStringLiteralValue, isSensitiveName } from '../utils/index.js';
3
+ const { AST_NODE_TYPES } = TSESTree;
4
+ /**
5
+ * Extra name fragments (beyond the shared sensitive set in `credential-fields`)
6
+ * that suggest a JS identifier holds a credential. Bare `key`/`auth` are broad,
7
+ * but the value heuristic below narrows the match, and they catch separator
8
+ * forms such as `api_key` that the compound fragments miss.
9
+ */
10
+ const EXTRA_SECRET_NAME_FRAGMENTS = ['key', 'passwd', 'auth'];
11
+ /**
12
+ * Fragments that mark a value as an obvious placeholder rather than a real
13
+ * secret. These are skipped to keep the (intentionally heuristic) rule quieter.
14
+ */
15
+ const PLACEHOLDER_FRAGMENTS = [
16
+ 'example',
17
+ 'placeholder',
18
+ 'changeme',
19
+ 'your',
20
+ 'dummy',
21
+ 'xxxx',
22
+ '<',
23
+ '{{',
24
+ ];
25
+ const MIN_SECRET_LENGTH = 16;
26
+ function nameLooksLikeSecret(name) {
27
+ // `exclusions: []` disables the URL/ID/pub name exclusions on purpose: the
28
+ // value heuristic below is the real gate, so a suspicious value on e.g.
29
+ // `publicKeyUrl` should still be flagged rather than silently skipped. Erring
30
+ // toward a false positive is safer than missing a secret.
31
+ return isSensitiveName(name, { extra: EXTRA_SECRET_NAME_FRAGMENTS, exclusions: [] });
32
+ }
33
+ function looksLikePlaceholder(value) {
34
+ const lower = value.toLowerCase();
35
+ return PLACEHOLDER_FRAGMENTS.some((fragment) => lower.includes(fragment));
36
+ }
37
+ /**
38
+ * Heuristic: does this string value look like a real credential? Real secrets
39
+ * are long, contiguous tokens with the shape of a hex digest or a base64/token
40
+ * string. The digit+letter/punctuation requirement keeps ordinary long
41
+ * camelCase words from being treated as secrets.
42
+ */
43
+ function looksLikeSecretValue(value) {
44
+ // Require at least MIN_SECRET_LENGTH characters; anything shorter is almost
45
+ // always a non-secret word or identifier rather than a generated credential.
46
+ if (value.length < MIN_SECRET_LENGTH)
47
+ return false;
48
+ if (/\s/.test(value))
49
+ return false;
50
+ if (looksLikePlaceholder(value))
51
+ return false;
52
+ // A long, purely hexadecimal string (e.g. an MD5/SHA/hex API key).
53
+ if (/^[0-9a-f]+$/i.test(value))
54
+ return true;
55
+ // A base64 / base64url / token-shaped string.
56
+ if (/^[A-Za-z0-9+/=_.-]+$/.test(value)) {
57
+ const hasDigit = /[0-9]/.test(value);
58
+ const hasLetter = /[a-z]/i.test(value);
59
+ // Only `+ / =` count as a standalone signal: they are hallmarks of base64
60
+ // but rarely appear in ordinary code strings. `. - _` are excluded here
61
+ // because dotted/hyphenated/snake_case constants (scopes, paths, ids) use
62
+ // them heavily and would otherwise be misflagged.
63
+ const hasStrongBase64Punctuation = /[+/=]/.test(value);
64
+ return (hasDigit && hasLetter) || hasStrongBase64Punctuation;
65
+ }
66
+ return false;
67
+ }
68
+ function getStaticStringValue(node) {
69
+ if (!node)
70
+ return null;
71
+ const literal = getStringLiteralValue(node);
72
+ if (literal !== null)
73
+ return literal;
74
+ if (node.type === AST_NODE_TYPES.TemplateLiteral &&
75
+ node.expressions.length === 0 &&
76
+ node.quasis.length === 1) {
77
+ return node.quasis[0]?.value.cooked ?? null;
78
+ }
79
+ return null;
80
+ }
81
+ function getKeyName(key) {
82
+ if (key.type === AST_NODE_TYPES.Identifier)
83
+ return key.name;
84
+ if (key.type === AST_NODE_TYPES.Literal && typeof key.value === 'string')
85
+ return key.value;
86
+ return null;
87
+ }
88
+ export const NoHardcodedSecretsRule = createRule({
89
+ name: 'no-hardcoded-secrets',
90
+ meta: {
91
+ type: 'problem',
92
+ docs: {
93
+ description: 'Disallow hardcoded secrets (API keys, tokens, passwords) embedded as string literals in source.',
94
+ },
95
+ messages: {
96
+ hardcodedSecret: 'Possible hardcoded secret assigned to `{{ name }}`. Store secrets in credentials or environment variables instead of embedding them in source. If this is not a real secret, rename the variable or move the value out of source to silence this rule.',
97
+ },
98
+ schema: [],
99
+ },
100
+ defaultOptions: [],
101
+ create(context) {
102
+ const check = (name, valueNode) => {
103
+ if (!name || !valueNode || !nameLooksLikeSecret(name))
104
+ return;
105
+ const value = getStaticStringValue(valueNode);
106
+ if (value === null || !looksLikeSecretValue(value))
107
+ return;
108
+ context.report({
109
+ node: valueNode,
110
+ messageId: 'hardcodedSecret',
111
+ data: { name },
112
+ });
113
+ };
114
+ return {
115
+ // const apiKey = '...'
116
+ VariableDeclarator(node) {
117
+ if (node.id.type !== AST_NODE_TYPES.Identifier)
118
+ return;
119
+ check(node.id.name, node.init);
120
+ },
121
+ // class field: private token = '...'
122
+ PropertyDefinition(node) {
123
+ if (node.computed)
124
+ return;
125
+ check(getKeyName(node.key), node.value);
126
+ },
127
+ // object literal: { apiKey: '...' } or { 'api_key': '...' }
128
+ Property(node) {
129
+ if (node.computed)
130
+ return;
131
+ check(getKeyName(node.key), node.value);
132
+ },
133
+ // this.secret = '...' / config.token = '...' / secret = '...'
134
+ AssignmentExpression(node) {
135
+ if (node.left.type === AST_NODE_TYPES.Identifier) {
136
+ check(node.left.name, node.right);
137
+ }
138
+ else if (node.left.type === AST_NODE_TYPES.MemberExpression &&
139
+ !node.left.computed &&
140
+ node.left.property.type === AST_NODE_TYPES.Identifier) {
141
+ check(node.left.property.name, node.right);
142
+ }
143
+ },
144
+ };
145
+ },
146
+ });
147
+ //# sourceMappingURL=no-hardcoded-secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-hardcoded-secrets.js","sourceRoot":"","sources":["../../src/rules/no-hardcoded-secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEvF,MAAM,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,qBAAqB,GAAG;IAC7B,SAAS;IACT,aAAa;IACb,UAAU;IACV,MAAM;IACN,OAAO;IACP,MAAM;IACN,GAAG;IACH,IAAI;CACJ,CAAC;AAEF,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,SAAS,mBAAmB,CAAC,IAAY;IACxC,2EAA2E;IAC3E,wEAAwE;IACxE,8EAA8E;IAC9E,0DAA0D;IAC1D,OAAO,eAAe,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,KAAa;IAC1C,4EAA4E;IAC5E,6EAA6E;IAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,iBAAiB;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,oBAAoB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE9C,mEAAmE;IACnE,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5C,8CAA8C;IAC9C,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,0EAA0E;QAC1E,wEAAwE;QACxE,0EAA0E;QAC1E,kDAAkD;QAClD,MAAM,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,0BAA0B,CAAC;IAC9D,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAsC;IACnE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAErC,IACC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;QAC5C,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EACvB,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;IAC7C,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,GAAkB;IACrC,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IAC5D,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC;IAC3F,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;IAChD,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EACV,iGAAiG;SAClG;QACD,QAAQ,EAAE;YACT,eAAe,EACd,wPAAwP;SACzP;QACD,MAAM,EAAE,EAAE;KACV;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACb,MAAM,KAAK,GAAG,CAAC,IAAmB,EAAE,SAA2C,EAAE,EAAE;YAClF,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;gBAAE,OAAO;YAE9D,MAAM,KAAK,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;gBAAE,OAAO;YAE3D,OAAO,CAAC,MAAM,CAAC;gBACd,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,iBAAiB;gBAC5B,IAAI,EAAE,EAAE,IAAI,EAAE;aACd,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO;YACN,uBAAuB;YACvB,kBAAkB,CAAC,IAAI;gBACtB,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;oBAAE,OAAO;gBACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YAED,qCAAqC;YACrC,kBAAkB,CAAC,IAAI;gBACtB,IAAI,IAAI,CAAC,QAAQ;oBAAE,OAAO;gBAC1B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;YAED,4DAA4D;YAC5D,QAAQ,CAAC,IAAI;gBACZ,IAAI,IAAI,CAAC,QAAQ;oBAAE,OAAO;gBAC1B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;YAED,8DAA8D;YAC9D,oBAAoB,CAAC,IAAI;gBACxB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAAE,CAAC;oBAClD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;qBAAM,IACN,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;oBAClD,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;oBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EACpD,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5C,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const NoRestrictedImportsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"restrictedImport" | "restrictedRequire" | "restrictedDynamicImport", [], 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
2
  //# 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":"AA8BA,eAAO,MAAM,uBAAuB,uMA8DlC,CAAC"}
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,4 +1,4 @@
1
- import { getModulePath, isDirectRequireCall, isRequireMemberCall, createRule, } from '../utils/index.js';
1
+ import { getModulePath, isDirectRequireCall, isRequireMemberCall, createRule, findPackageJson, readPackageJsonDevDependencies, } from '../utils/index.js';
2
2
  const allowedModules = [
3
3
  'n8n-workflow',
4
4
  'ai-node-sdk',
@@ -11,7 +11,7 @@ const allowedModules = [
11
11
  'node:crypto',
12
12
  '@n8n/ai-node-sdk',
13
13
  ];
14
- const isModuleAllowed = (modulePath) => {
14
+ const isModuleAllowed = (modulePath, devDependencies) => {
15
15
  if (modulePath.startsWith('./') || modulePath.startsWith('../'))
16
16
  return true;
17
17
  const moduleName = modulePath.startsWith('@')
@@ -19,6 +19,14 @@ const isModuleAllowed = (modulePath) => {
19
19
  : modulePath.split('/')[0];
20
20
  if (!moduleName)
21
21
  return true;
22
+ // Dev dependencies (e.g. `vitest`) are never installed at runtime on n8n
23
+ // Cloud, so they are not subject to this rule — it targets runtime
24
+ // dependencies only. `no-runtime-dependencies` already enforces that the
25
+ // package's `dependencies` field is empty, so any external package an
26
+ // author uses must be a devDependency (bundled at build) or a
27
+ // peerDependency (provided by the instance).
28
+ if (devDependencies.has(moduleName))
29
+ return true;
22
30
  return allowedModules.includes(moduleName);
23
31
  };
24
32
  export const NoRestrictedImportsRule = createRule({
@@ -37,10 +45,11 @@ export const NoRestrictedImportsRule = createRule({
37
45
  },
38
46
  defaultOptions: [],
39
47
  create(context) {
48
+ const devDependencies = readPackageJsonDevDependencies(findPackageJson(context.physicalFilename));
40
49
  return {
41
50
  ImportDeclaration(node) {
42
51
  const modulePath = getModulePath(node.source);
43
- if (modulePath && !isModuleAllowed(modulePath)) {
52
+ if (modulePath && !isModuleAllowed(modulePath, devDependencies)) {
44
53
  context.report({
45
54
  node,
46
55
  messageId: 'restrictedImport',
@@ -52,7 +61,7 @@ export const NoRestrictedImportsRule = createRule({
52
61
  },
53
62
  ImportExpression(node) {
54
63
  const modulePath = getModulePath(node.source);
55
- if (modulePath && !isModuleAllowed(modulePath)) {
64
+ if (modulePath && !isModuleAllowed(modulePath, devDependencies)) {
56
65
  context.report({
57
66
  node,
58
67
  messageId: 'restrictedDynamicImport',
@@ -65,7 +74,7 @@ export const NoRestrictedImportsRule = createRule({
65
74
  CallExpression(node) {
66
75
  if (isDirectRequireCall(node) || isRequireMemberCall(node)) {
67
76
  const modulePath = getModulePath(node.arguments[0] ?? null);
68
- if (modulePath && !isModuleAllowed(modulePath)) {
77
+ if (modulePath && !isModuleAllowed(modulePath, devDependencies)) {
69
78
  context.report({
70
79
  node,
71
80
  messageId: 'restrictedRequire',
@@ -1 +1 @@
1
- {"version":3,"file":"no-restricted-imports.js","sourceRoot":"","sources":["../../src/rules/no-restricted-imports.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,GACV,MAAM,mBAAmB,CAAC;AAE3B,MAAM,cAAc,GAAG;IACtB,cAAc;IACd,aAAa;IACb,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;IACP,KAAK;IACL,QAAQ;IACR,aAAa;IACb,kBAAkB;CAClB,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAW,EAAE;IACvD,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7E,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;QAC5C,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7C,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;IACjD,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EAAE,0DAA0D;SACvE;QACD,QAAQ,EAAE;YACT,gBAAgB,EACf,0GAA0G;YAC3G,iBAAiB,EAChB,2GAA2G;YAC5G,uBAAuB,EACtB,kHAAkH;SACnH;QACD,MAAM,EAAE,EAAE;KACV;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACb,OAAO;YACN,iBAAiB,CAAC,IAAI;gBACrB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,UAAU,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChD,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI;wBACJ,SAAS,EAAE,kBAAkB;wBAC7B,IAAI,EAAE;4BACL,UAAU;yBACV;qBACD,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YAED,gBAAgB,CAAC,IAAI;gBACpB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,UAAU,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChD,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI;wBACJ,SAAS,EAAE,yBAAyB;wBACpC,IAAI,EAAE;4BACL,UAAU;yBACV;qBACD,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YAED,cAAc,CAAC,IAAI;gBAClB,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;oBAC5D,IAAI,UAAU,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;wBAChD,OAAO,CAAC,MAAM,CAAC;4BACd,IAAI;4BACJ,SAAS,EAAE,mBAAmB;4BAC9B,IAAI,EAAE;gCACL,UAAU;6BACV;yBACD,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"no-restricted-imports.js","sourceRoot":"","sources":["../../src/rules/no-restricted-imports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const NoSilentErrorSwallowingRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"emptyCatch" | "silentReturn", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
+ //# sourceMappingURL=no-silent-error-swallowing.d.ts.map
@@ -0,0 +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"}