@n8n/eslint-plugin-community-nodes 0.18.0 β†’ 0.19.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 (49) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/README.md +38 -36
  3. package/dist/plugin.d.ts +6 -0
  4. package/dist/plugin.d.ts.map +1 -1
  5. package/dist/plugin.js +2 -0
  6. package/dist/plugin.js.map +1 -1
  7. package/dist/rules/cred-class-name-field-conventions.d.ts +2 -0
  8. package/dist/rules/cred-class-name-field-conventions.d.ts.map +1 -0
  9. package/dist/rules/cred-class-name-field-conventions.js +89 -0
  10. package/dist/rules/cred-class-name-field-conventions.js.map +1 -0
  11. package/dist/rules/credential-password-field.js +1 -1
  12. package/dist/rules/index.d.ts +2 -1
  13. package/dist/rules/index.d.ts.map +1 -1
  14. package/dist/rules/index.js +2 -0
  15. package/dist/rules/index.js.map +1 -1
  16. package/dist/rules/no-credential-reuse.js +1 -1
  17. package/dist/rules/no-restricted-globals.js +1 -1
  18. package/dist/rules/no-template-placeholders.d.ts.map +1 -1
  19. package/dist/rules/no-template-placeholders.js +3 -1
  20. package/dist/rules/no-template-placeholders.js.map +1 -1
  21. package/dist/rules/node-usable-as-tool.js +1 -1
  22. package/dist/rules/package-name-convention.d.ts +1 -1
  23. package/dist/rules/package-name-convention.d.ts.map +1 -1
  24. package/dist/rules/package-name-convention.js +19 -0
  25. package/dist/rules/package-name-convention.js.map +1 -1
  26. package/dist/rules/require-node-api-error.d.ts +2 -1
  27. package/dist/rules/require-node-api-error.d.ts.map +1 -1
  28. package/dist/rules/require-node-api-error.js +2 -3
  29. package/dist/rules/require-node-api-error.js.map +1 -1
  30. package/dist/rules/valid-credential-references.js +1 -1
  31. package/docs/rules/cred-class-name-field-conventions.md +38 -0
  32. package/docs/rules/no-builder-hint-leakage.md +38 -0
  33. package/docs/rules/package-name-convention.md +14 -0
  34. package/package.json +5 -4
  35. package/src/plugin.ts +2 -0
  36. package/src/rules/cred-class-name-field-conventions.test.ts +121 -0
  37. package/src/rules/cred-class-name-field-conventions.ts +102 -0
  38. package/src/rules/credential-password-field.ts +1 -1
  39. package/src/rules/index.ts +2 -0
  40. package/src/rules/no-credential-reuse.ts +1 -1
  41. package/src/rules/no-restricted-globals.ts +1 -1
  42. package/src/rules/no-template-placeholders.test.ts +18 -0
  43. package/src/rules/no-template-placeholders.ts +3 -1
  44. package/src/rules/node-usable-as-tool.ts +1 -1
  45. package/src/rules/package-name-convention.test.ts +32 -5
  46. package/src/rules/package-name-convention.ts +23 -0
  47. package/src/rules/require-node-api-error.ts +4 -3
  48. package/src/rules/valid-credential-references.ts +1 -1
  49. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1,4 +1,4 @@
1
1
 
2
- > @n8n/eslint-plugin-community-nodes@0.18.0 build /home/runner/work/n8n/n8n/packages/@n8n/eslint-plugin-community-nodes
2
+ > @n8n/eslint-plugin-community-nodes@0.19.0 build /home/runner/work/n8n/n8n/packages/@n8n/eslint-plugin-community-nodes
3
3
  > tsc --project tsconfig.build.json
4
4
 
package/README.md CHANGED
@@ -44,41 +44,43 @@ export default [
44
44
  πŸ’‘ Manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions).\
45
45
  ❌ Deprecated.
46
46
 
47
- | NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | ⚠️ | πŸ”§ | πŸ’‘ | ❌ |
48
- | :--------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | :--- | :--- | :- | :- | :- |
49
- | [ai-node-package-json](docs/rules/ai-node-package-json.md) | Enforce consistency between n8n.aiNodeSdkVersion and ai-node-sdk peer dependency in community node packages | βœ… β˜‘οΈ | | | | |
50
- | [cred-class-field-icon-missing](docs/rules/cred-class-field-icon-missing.md) | Credential class must have an `icon` property defined | βœ… β˜‘οΈ | | | πŸ’‘ | |
51
- | [cred-class-name-suffix](docs/rules/cred-class-name-suffix.md) | Credential class names must be suffixed with `Api` | βœ… β˜‘οΈ | | πŸ”§ | | |
52
- | [cred-class-oauth2-naming](docs/rules/cred-class-oauth2-naming.md) | OAuth2 credentials must include `OAuth2` in the class name, `name`, and `displayName` | βœ… β˜‘οΈ | | πŸ”§ | | |
53
- | [credential-documentation-url](docs/rules/credential-documentation-url.md) | Enforce valid credential documentationUrl format (URL or lowercase alphanumeric slug) | βœ… β˜‘οΈ | | πŸ”§ | | |
54
- | [credential-password-field](docs/rules/credential-password-field.md) | Ensure credential fields with sensitive names have typeOptions.password = true | βœ… β˜‘οΈ | | πŸ”§ | | |
55
- | [credential-test-required](docs/rules/credential-test-required.md) | Ensure credentials have a credential test | βœ… β˜‘οΈ | | | πŸ’‘ | |
56
- | [icon-validation](docs/rules/icon-validation.md) | Validate node and credential icon files exist, are SVG format, and light/dark icons are different | βœ… β˜‘οΈ | | | πŸ’‘ | |
57
- | [missing-paired-item](docs/rules/missing-paired-item.md) | Require pairedItem on INodeExecutionData objects in execute() methods to preserve item linking. | βœ… β˜‘οΈ | | | | |
58
- | [n8n-object-validation](docs/rules/n8n-object-validation.md) | Validate the structure of the "n8n" object in community node package.json (required keys, types, and dist/ paths) | βœ… β˜‘οΈ | | | | |
59
- | [no-credential-reuse](docs/rules/no-credential-reuse.md) | Prevent credential re-use security issues by ensuring nodes only reference credentials from the same package | βœ… β˜‘οΈ | | | πŸ’‘ | |
60
- | [no-deprecated-workflow-functions](docs/rules/no-deprecated-workflow-functions.md) | Disallow usage of deprecated functions and types from n8n-workflow package | βœ… β˜‘οΈ | | | πŸ’‘ | |
61
- | [no-forbidden-lifecycle-scripts](docs/rules/no-forbidden-lifecycle-scripts.md) | Ban lifecycle scripts (prepare, preinstall, postinstall, etc.) in community node packages | βœ… β˜‘οΈ | | | | |
62
- | [no-http-request-with-manual-auth](docs/rules/no-http-request-with-manual-auth.md) | Disallow this.helpers.httpRequest() in functions that call this.getCredentials(). Use this.helpers.httpRequestWithAuthentication() instead. | βœ… β˜‘οΈ | | | | |
63
- | [no-overrides-field](docs/rules/no-overrides-field.md) | Ban the "overrides" field in community node package.json | βœ… β˜‘οΈ | | | | |
64
- | [no-restricted-globals](docs/rules/no-restricted-globals.md) | Disallow usage of restricted global variables in community nodes. | βœ… | | | | |
65
- | [no-restricted-imports](docs/rules/no-restricted-imports.md) | Disallow usage of restricted imports in community nodes. | βœ… | | | | |
66
- | [no-runtime-dependencies](docs/rules/no-runtime-dependencies.md) | Disallow non-empty "dependencies" in community node package.json | βœ… β˜‘οΈ | | | | |
67
- | [no-template-placeholders](docs/rules/no-template-placeholders.md) | Disallow unresolved template placeholders in package.json | βœ… β˜‘οΈ | | | | |
68
- | [node-class-description-icon-missing](docs/rules/node-class-description-icon-missing.md) | Node class description must have an `icon` property defined. Deprecated: use `require-node-description-fields` instead. | | | | πŸ’‘ | ❌ |
69
- | [node-connection-type-literal](docs/rules/node-connection-type-literal.md) | Disallow string literals in node description `inputs`/`outputs` β€” use `NodeConnectionTypes` enum instead | βœ… β˜‘οΈ | | πŸ”§ | | |
70
- | [node-operation-error-itemindex](docs/rules/node-operation-error-itemindex.md) | Require { itemIndex } in NodeOperationError / NodeApiError options inside item loops | βœ… β˜‘οΈ | | | | |
71
- | [node-usable-as-tool](docs/rules/node-usable-as-tool.md) | Ensure node classes have usableAsTool property | βœ… β˜‘οΈ | | πŸ”§ | | |
72
- | [options-sorted-alphabetically](docs/rules/options-sorted-alphabetically.md) | Enforce alphabetical ordering of options arrays in n8n node properties | | βœ… β˜‘οΈ | | | |
73
- | [package-name-convention](docs/rules/package-name-convention.md) | Enforce correct package naming convention for n8n community nodes | βœ… β˜‘οΈ | | | πŸ’‘ | |
74
- | [require-community-node-keyword](docs/rules/require-community-node-keyword.md) | Require the "n8n-community-node-package" keyword in community node package.json | | βœ… β˜‘οΈ | πŸ”§ | | |
75
- | [require-continue-on-fail](docs/rules/require-continue-on-fail.md) | Require continueOnFail() handling in execute() methods of node classes | βœ… β˜‘οΈ | | | | |
76
- | [require-node-api-error](docs/rules/require-node-api-error.md) | Require NodeApiError or NodeOperationError for error wrapping in catch blocks. Raw errors lose HTTP context in the n8n UI. | βœ… β˜‘οΈ | | | | |
77
- | [require-node-description-fields](docs/rules/require-node-description-fields.md) | Node class description must define all required fields: icon, subtitle | βœ… β˜‘οΈ | | | | |
78
- | [resource-operation-pattern](docs/rules/resource-operation-pattern.md) | Enforce proper resource/operation pattern for better UX in n8n nodes | | βœ… β˜‘οΈ | | | |
79
- | [valid-credential-references](docs/rules/valid-credential-references.md) | Ensure credentials referenced in node descriptions exist as credential classes in the package | βœ… β˜‘οΈ | | | πŸ’‘ | |
80
- | [valid-description](docs/rules/valid-description.md) | Require a non-empty "description" field in community node package.json | βœ… β˜‘οΈ | | | | |
81
- | [valid-peer-dependencies](docs/rules/valid-peer-dependencies.md) | Require community node package.json peerDependencies to contain only "n8n-workflow": "*" (and optionally "ai-node-sdk") | βœ… β˜‘οΈ | | πŸ”§ | | |
82
- | [webhook-lifecycle-complete](docs/rules/webhook-lifecycle-complete.md) | Require webhook trigger nodes to implement the complete webhookMethods lifecycle (checkExists, create, delete) | βœ… β˜‘οΈ | | | | |
47
+ | NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | ⚠️ | πŸ”§ | πŸ’‘ | ❌ |
48
+ | :--------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--- | :--- | :- | :- | :- |
49
+ | [ai-node-package-json](docs/rules/ai-node-package-json.md) | Enforce consistency between n8n.aiNodeSdkVersion and ai-node-sdk peer dependency in community node packages | βœ… β˜‘οΈ | | | | |
50
+ | [cred-class-field-icon-missing](docs/rules/cred-class-field-icon-missing.md) | Credential class must have an `icon` property defined | βœ… β˜‘οΈ | | | πŸ’‘ | |
51
+ | [cred-class-name-field-conventions](docs/rules/cred-class-name-field-conventions.md) | Credential `name` field must end with `Api` and start with a lowercase letter | βœ… β˜‘οΈ | | πŸ”§ | | |
52
+ | [cred-class-name-suffix](docs/rules/cred-class-name-suffix.md) | Credential class names must be suffixed with `Api` | βœ… β˜‘οΈ | | πŸ”§ | | |
53
+ | [cred-class-oauth2-naming](docs/rules/cred-class-oauth2-naming.md) | OAuth2 credentials must include `OAuth2` in the class name, `name`, and `displayName` | βœ… β˜‘οΈ | | πŸ”§ | | |
54
+ | [credential-documentation-url](docs/rules/credential-documentation-url.md) | Enforce valid credential documentationUrl format (URL or lowercase alphanumeric slug) | βœ… β˜‘οΈ | | πŸ”§ | | |
55
+ | [credential-password-field](docs/rules/credential-password-field.md) | Ensure credential fields with sensitive names have typeOptions.password = true | βœ… β˜‘οΈ | | πŸ”§ | | |
56
+ | [credential-test-required](docs/rules/credential-test-required.md) | Ensure credentials have a credential test | βœ… β˜‘οΈ | | | πŸ’‘ | |
57
+ | [icon-validation](docs/rules/icon-validation.md) | Validate node and credential icon files exist, are SVG format, and light/dark icons are different | βœ… β˜‘οΈ | | | πŸ’‘ | |
58
+ | [missing-paired-item](docs/rules/missing-paired-item.md) | Require pairedItem on INodeExecutionData objects in execute() methods to preserve item linking. | βœ… β˜‘οΈ | | | | |
59
+ | [n8n-object-validation](docs/rules/n8n-object-validation.md) | Validate the structure of the "n8n" object in community node package.json (required keys, types, and dist/ paths) | βœ… β˜‘οΈ | | | | |
60
+ | [no-builder-hint-leakage](docs/rules/no-builder-hint-leakage.md) | Disallow wire-format expression syntax (={{...}}) and NodeConnectionType string literals in builderHint texts and AI-builder prompts. Use expr() and SDK-canonical references instead. | βœ… β˜‘οΈ | | | | |
61
+ | [no-credential-reuse](docs/rules/no-credential-reuse.md) | Prevent credential re-use security issues by ensuring nodes only reference credentials from the same package | βœ… β˜‘οΈ | | | πŸ’‘ | |
62
+ | [no-deprecated-workflow-functions](docs/rules/no-deprecated-workflow-functions.md) | Disallow usage of deprecated functions and types from n8n-workflow package | βœ… β˜‘οΈ | | | πŸ’‘ | |
63
+ | [no-forbidden-lifecycle-scripts](docs/rules/no-forbidden-lifecycle-scripts.md) | Ban lifecycle scripts (prepare, preinstall, postinstall, etc.) in community node packages | βœ… β˜‘οΈ | | | | |
64
+ | [no-http-request-with-manual-auth](docs/rules/no-http-request-with-manual-auth.md) | Disallow this.helpers.httpRequest() in functions that call this.getCredentials(). Use this.helpers.httpRequestWithAuthentication() instead. | βœ… β˜‘οΈ | | | | |
65
+ | [no-overrides-field](docs/rules/no-overrides-field.md) | Ban the "overrides" field in community node package.json | βœ… β˜‘οΈ | | | | |
66
+ | [no-restricted-globals](docs/rules/no-restricted-globals.md) | Disallow usage of restricted global variables in community nodes. | βœ… | | | | |
67
+ | [no-restricted-imports](docs/rules/no-restricted-imports.md) | Disallow usage of restricted imports in community nodes. | βœ… | | | | |
68
+ | [no-runtime-dependencies](docs/rules/no-runtime-dependencies.md) | Disallow non-empty "dependencies" in community node package.json | βœ… β˜‘οΈ | | | | |
69
+ | [no-template-placeholders](docs/rules/no-template-placeholders.md) | Disallow unresolved template placeholders in package.json | βœ… β˜‘οΈ | | | | |
70
+ | [node-class-description-icon-missing](docs/rules/node-class-description-icon-missing.md) | Node class description must have an `icon` property defined. Deprecated: use `require-node-description-fields` instead. | | | | πŸ’‘ | ❌ |
71
+ | [node-connection-type-literal](docs/rules/node-connection-type-literal.md) | Disallow string literals in node description `inputs`/`outputs` β€” use `NodeConnectionTypes` enum instead | βœ… β˜‘οΈ | | πŸ”§ | | |
72
+ | [node-operation-error-itemindex](docs/rules/node-operation-error-itemindex.md) | Require { itemIndex } in NodeOperationError / NodeApiError options inside item loops | βœ… β˜‘οΈ | | | | |
73
+ | [node-usable-as-tool](docs/rules/node-usable-as-tool.md) | Ensure node classes have usableAsTool property | βœ… β˜‘οΈ | | πŸ”§ | | |
74
+ | [options-sorted-alphabetically](docs/rules/options-sorted-alphabetically.md) | Enforce alphabetical ordering of options arrays in n8n node properties | | βœ… β˜‘οΈ | | | |
75
+ | [package-name-convention](docs/rules/package-name-convention.md) | Enforce correct package naming convention for n8n community nodes | βœ… β˜‘οΈ | | | πŸ’‘ | |
76
+ | [require-community-node-keyword](docs/rules/require-community-node-keyword.md) | Require the "n8n-community-node-package" keyword in community node package.json | | βœ… β˜‘οΈ | πŸ”§ | | |
77
+ | [require-continue-on-fail](docs/rules/require-continue-on-fail.md) | Require continueOnFail() handling in execute() methods of node classes | βœ… β˜‘οΈ | | | | |
78
+ | [require-node-api-error](docs/rules/require-node-api-error.md) | Require NodeApiError or NodeOperationError for error wrapping in catch blocks. Raw errors lose HTTP context in the n8n UI. | βœ… β˜‘οΈ | | | | |
79
+ | [require-node-description-fields](docs/rules/require-node-description-fields.md) | Node class description must define all required fields: icon, subtitle | βœ… β˜‘οΈ | | | | |
80
+ | [resource-operation-pattern](docs/rules/resource-operation-pattern.md) | Enforce proper resource/operation pattern for better UX in n8n nodes | | βœ… β˜‘οΈ | | | |
81
+ | [valid-credential-references](docs/rules/valid-credential-references.md) | Ensure credentials referenced in node descriptions exist as credential classes in the package | βœ… β˜‘οΈ | | | πŸ’‘ | |
82
+ | [valid-description](docs/rules/valid-description.md) | Require a non-empty "description" field in community node package.json | βœ… β˜‘οΈ | | | | |
83
+ | [valid-peer-dependencies](docs/rules/valid-peer-dependencies.md) | Require community node package.json peerDependencies to contain only "n8n-workflow": "*" (and optionally "ai-node-sdk") | βœ… β˜‘οΈ | | πŸ”§ | | |
84
+ | [webhook-lifecycle-complete](docs/rules/webhook-lifecycle-complete.md) | Require webhook trigger nodes to implement the complete webhookMethods lifecycle (checkExists, create, delete) | βœ… β˜‘οΈ | | | | |
83
85
 
84
86
  <!-- end auto-generated rules list -->
package/dist/plugin.d.ts CHANGED
@@ -34,6 +34,7 @@ declare const configs: {
34
34
  '@n8n/community-nodes/resource-operation-pattern': "warn";
35
35
  '@n8n/community-nodes/credential-documentation-url': "error";
36
36
  '@n8n/community-nodes/cred-class-field-icon-missing': "error";
37
+ '@n8n/community-nodes/cred-class-name-field-conventions': "error";
37
38
  '@n8n/community-nodes/cred-class-name-suffix': "error";
38
39
  '@n8n/community-nodes/cred-class-oauth2-naming': "error";
39
40
  '@n8n/community-nodes/node-connection-type-literal': "error";
@@ -81,6 +82,7 @@ declare const configs: {
81
82
  '@n8n/community-nodes/credential-documentation-url': "error";
82
83
  '@n8n/community-nodes/resource-operation-pattern': "warn";
83
84
  '@n8n/community-nodes/cred-class-field-icon-missing': "error";
85
+ '@n8n/community-nodes/cred-class-name-field-conventions': "error";
84
86
  '@n8n/community-nodes/cred-class-name-suffix': "error";
85
87
  '@n8n/community-nodes/cred-class-oauth2-naming': "error";
86
88
  '@n8n/community-nodes/node-connection-type-literal': "error";
@@ -133,6 +135,7 @@ declare const pluginWithConfigs: {
133
135
  '@n8n/community-nodes/resource-operation-pattern': "warn";
134
136
  '@n8n/community-nodes/credential-documentation-url': "error";
135
137
  '@n8n/community-nodes/cred-class-field-icon-missing': "error";
138
+ '@n8n/community-nodes/cred-class-name-field-conventions': "error";
136
139
  '@n8n/community-nodes/cred-class-name-suffix': "error";
137
140
  '@n8n/community-nodes/cred-class-oauth2-naming': "error";
138
141
  '@n8n/community-nodes/node-connection-type-literal': "error";
@@ -180,6 +183,7 @@ declare const pluginWithConfigs: {
180
183
  '@n8n/community-nodes/credential-documentation-url': "error";
181
184
  '@n8n/community-nodes/resource-operation-pattern': "warn";
182
185
  '@n8n/community-nodes/cred-class-field-icon-missing': "error";
186
+ '@n8n/community-nodes/cred-class-name-field-conventions': "error";
183
187
  '@n8n/community-nodes/cred-class-name-suffix': "error";
184
188
  '@n8n/community-nodes/cred-class-oauth2-naming': "error";
185
189
  '@n8n/community-nodes/node-connection-type-literal': "error";
@@ -239,6 +243,7 @@ declare const n8nCommunityNodesPlugin: {
239
243
  '@n8n/community-nodes/resource-operation-pattern': "warn";
240
244
  '@n8n/community-nodes/credential-documentation-url': "error";
241
245
  '@n8n/community-nodes/cred-class-field-icon-missing': "error";
246
+ '@n8n/community-nodes/cred-class-name-field-conventions': "error";
242
247
  '@n8n/community-nodes/cred-class-name-suffix': "error";
243
248
  '@n8n/community-nodes/cred-class-oauth2-naming': "error";
244
249
  '@n8n/community-nodes/node-connection-type-literal': "error";
@@ -286,6 +291,7 @@ declare const n8nCommunityNodesPlugin: {
286
291
  '@n8n/community-nodes/credential-documentation-url': "error";
287
292
  '@n8n/community-nodes/resource-operation-pattern': "warn";
288
293
  '@n8n/community-nodes/cred-class-field-icon-missing': "error";
294
+ '@n8n/community-nodes/cred-class-name-field-conventions': "error";
289
295
  '@n8n/community-nodes/cred-class-name-suffix': "error";
290
296
  '@n8n/community-nodes/cred-class-oauth2-naming': "error";
291
297
  '@n8n/community-nodes/node-connection-type-literal': "error";
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AAG7C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAYzC,QAAA,MAAM,OAAO;;;;;;;;;;uBAHI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAAtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFE,CAAC;AAE1C,QAAA,MAAM,iBAAiB;;;;;;;;;;;2BAxFN,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAAtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAAtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;CAwFiC,CAAC;AAEzE,QAAA,MAAM,uBAAuB;;;;;;;;;;;2BA1FZ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAAtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAAtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;CA0FU,CAAC;AAClD,eAAe,iBAAiB,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AAG7C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAYzC,QAAA,MAAM,OAAO;;;;;;;;;;uBAHI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAAtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwFE,CAAC;AAE1C,QAAA,MAAM,iBAAiB;;;;;;;;;;;2BA1FN,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAAtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAAtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;CA0FiC,CAAC;AAEzE,QAAA,MAAM,uBAAuB;;;;;;;;;;;2BA5FZ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAAtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAAtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;CA4FU,CAAC;AAClD,eAAe,iBAAiB,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
package/dist/plugin.js CHANGED
@@ -36,6 +36,7 @@ const configs = {
36
36
  '@n8n/community-nodes/resource-operation-pattern': 'warn',
37
37
  '@n8n/community-nodes/credential-documentation-url': 'error',
38
38
  '@n8n/community-nodes/cred-class-field-icon-missing': 'error',
39
+ '@n8n/community-nodes/cred-class-name-field-conventions': 'error',
39
40
  '@n8n/community-nodes/cred-class-name-suffix': 'error',
40
41
  '@n8n/community-nodes/cred-class-oauth2-naming': 'error',
41
42
  '@n8n/community-nodes/node-connection-type-literal': 'error',
@@ -76,6 +77,7 @@ const configs = {
76
77
  '@n8n/community-nodes/credential-documentation-url': 'error',
77
78
  '@n8n/community-nodes/resource-operation-pattern': 'warn',
78
79
  '@n8n/community-nodes/cred-class-field-icon-missing': 'error',
80
+ '@n8n/community-nodes/cred-class-name-field-conventions': 'error',
79
81
  '@n8n/community-nodes/cred-class-name-suffix': 'error',
80
82
  '@n8n/community-nodes/cred-class-oauth2-naming': 'error',
81
83
  '@n8n/community-nodes/node-connection-type-literal': 'error',
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const CredClassNameFieldConventionsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingSuffix" | "uppercaseFirstChar", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
+ //# sourceMappingURL=cred-class-name-field-conventions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cred-class-name-field-conventions.d.ts","sourceRoot":"","sources":["../../src/rules/cred-class-name-field-conventions.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,iCAAiC,yKAqE5C,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { createRule, findClassProperty, getStringLiteralValue, isCredentialTypeClass, isFileType, } from '../utils/index.js';
2
+ function lowercaseFirstChar(name) {
3
+ return name.charAt(0).toLowerCase() + name.slice(1);
4
+ }
5
+ function addApiSuffix(name) {
6
+ if (name.endsWith('Api'))
7
+ return name;
8
+ if (name.endsWith('Ap'))
9
+ return `${name}i`;
10
+ if (name.endsWith('A'))
11
+ return `${name}pi`;
12
+ return `${name}Api`;
13
+ }
14
+ // Serialize a value as a string literal using the original quote character,
15
+ // escaping any characters that would otherwise break the literal so the
16
+ // autofix never emits invalid code (e.g. names containing quotes).
17
+ function toStringLiteral(value, quote) {
18
+ const escaped = value
19
+ .replace(/\\/g, '\\\\')
20
+ .replace(/\n/g, '\\n')
21
+ .replace(/\r/g, '\\r')
22
+ .split(quote)
23
+ .join(`\\${quote}`);
24
+ return `${quote}${escaped}${quote}`;
25
+ }
26
+ export const CredClassNameFieldConventionsRule = createRule({
27
+ name: 'cred-class-name-field-conventions',
28
+ meta: {
29
+ type: 'problem',
30
+ docs: {
31
+ description: 'Credential `name` field must end with `Api` and start with a lowercase letter',
32
+ },
33
+ messages: {
34
+ missingSuffix: "Credential `name` field '{{value}}' must end with 'Api'",
35
+ uppercaseFirstChar: "Credential `name` field '{{value}}' must start with a lowercase letter",
36
+ },
37
+ fixable: 'code',
38
+ schema: [],
39
+ },
40
+ defaultOptions: [],
41
+ create(context) {
42
+ if (!isFileType(context.filename, '.credentials.ts')) {
43
+ return {};
44
+ }
45
+ return {
46
+ ClassDeclaration(node) {
47
+ if (!isCredentialTypeClass(node)) {
48
+ return;
49
+ }
50
+ const nameProperty = findClassProperty(node, 'name');
51
+ if (!nameProperty?.value) {
52
+ return;
53
+ }
54
+ const nameValue = getStringLiteralValue(nameProperty.value);
55
+ if (nameValue === null) {
56
+ return;
57
+ }
58
+ const startsLowercase = !/^[A-Z]/.test(nameValue);
59
+ const endsWithApi = nameValue.endsWith('Api');
60
+ if (startsLowercase && endsWithApi) {
61
+ return;
62
+ }
63
+ // Compute the fully-corrected value once so each fix yields the
64
+ // same result in a single pass, regardless of which one applies.
65
+ const fixedValue = addApiSuffix(lowercaseFirstChar(nameValue));
66
+ const valueNode = nameProperty.value;
67
+ const quote = context.sourceCode.getText(valueNode).charAt(0);
68
+ const replacement = toStringLiteral(fixedValue, quote);
69
+ if (!startsLowercase) {
70
+ context.report({
71
+ node: valueNode,
72
+ messageId: 'uppercaseFirstChar',
73
+ data: { value: nameValue },
74
+ fix: (fixer) => fixer.replaceText(valueNode, replacement),
75
+ });
76
+ }
77
+ if (!endsWithApi) {
78
+ context.report({
79
+ node: valueNode,
80
+ messageId: 'missingSuffix',
81
+ data: { value: nameValue },
82
+ fix: (fixer) => fixer.replaceText(valueNode, replacement),
83
+ });
84
+ }
85
+ },
86
+ };
87
+ },
88
+ });
89
+ //# sourceMappingURL=cred-class-name-field-conventions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cred-class-name-field-conventions.js","sourceRoot":"","sources":["../../src/rules/cred-class-name-field-conventions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TSESTree } from '@typescript-eslint/types';
1
+ import { TSESTree } from '@typescript-eslint/utils';
2
2
  import { isCredentialTypeClass, findClassProperty, findObjectProperty, getStringLiteralValue, getBooleanLiteralValue, createRule, } from '../utils/index.js';
3
3
  const SENSITIVE_PATTERNS = [
4
4
  'password',
@@ -6,7 +6,7 @@ export declare const rules: {
6
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>;
7
7
  'node-usable-as-tool': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingUsableAsTool", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
8
8
  'options-sorted-alphabetically': import("@typescript-eslint/utils/ts-eslint").RuleModule<"optionsNotSorted", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
9
- 'package-name-convention': import("@typescript-eslint/utils/ts-eslint").RuleModule<"renameTo" | "invalidPackageName", [], 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>;
10
10
  'credential-test-required': import("@typescript-eslint/utils/ts-eslint").RuleModule<"addTemplate" | "missingCredentialTest", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
11
11
  'no-credential-reuse': import("@typescript-eslint/utils/ts-eslint").RuleModule<"didYouMean" | "useAvailable" | "credentialNotInPackage", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
12
12
  'no-forbidden-lifecycle-scripts': import("@typescript-eslint/utils/ts-eslint").RuleModule<"forbiddenScript", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
@@ -22,6 +22,7 @@ export declare const rules: {
22
22
  }], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
23
23
  'node-class-description-icon-missing': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingIcon" | "addPlaceholder", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
24
24
  'cred-class-field-icon-missing': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingIcon" | "addPlaceholder", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
25
+ 'cred-class-name-field-conventions': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingSuffix" | "uppercaseFirstChar", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
25
26
  'cred-class-name-suffix': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingSuffix", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
26
27
  'cred-class-oauth2-naming': import("@typescript-eslint/utils/ts-eslint").RuleModule<"classNameMissingOAuth2" | "nameMissingOAuth2" | "displayNameMissingOAuth2", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
27
28
  'node-connection-type-literal': import("@typescript-eslint/utils/ts-eslint").RuleModule<"stringLiteralInInputs" | "stringLiteralInOutputs" | "unknownStringLiteralInInputs" | "unknownStringLiteralInOutputs", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCuB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { AiNodePackageJsonRule } from './ai-node-package-json.js';
2
2
  import { CredClassFieldIconMissingRule } from './cred-class-field-icon-missing.js';
3
+ import { CredClassNameFieldConventionsRule } from './cred-class-name-field-conventions.js';
3
4
  import { CredClassNameSuffixRule } from './cred-class-name-suffix.js';
4
5
  import { CredClassOAuth2NamingRule } from './cred-class-oauth2-naming.js';
5
6
  import { CredentialDocumentationUrlRule } from './credential-documentation-url.js';
@@ -54,6 +55,7 @@ export const rules = {
54
55
  'credential-documentation-url': CredentialDocumentationUrlRule,
55
56
  'node-class-description-icon-missing': NodeClassDescriptionIconMissingRule,
56
57
  'cred-class-field-icon-missing': CredClassFieldIconMissingRule,
58
+ 'cred-class-name-field-conventions': CredClassNameFieldConventionsRule,
57
59
  'cred-class-name-suffix': CredClassNameSuffixRule,
58
60
  'cred-class-oauth2-naming': CredClassOAuth2NamingRule,
59
61
  'node-connection-type-literal': NodeConnectionTypeLiteralRule,
@@ -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,4 +1,4 @@
1
- import { TSESTree } from '@typescript-eslint/types';
1
+ import { TSESTree } from '@typescript-eslint/utils';
2
2
  import { isNodeTypeClass, findClassProperty, findArrayLiteralProperty, extractCredentialNameFromArray, findPackageJson, readPackageJsonCredentials, isFileType, findSimilarStrings, createRule, } from '../utils/index.js';
3
3
  export const NoCredentialReuseRule = createRule({
4
4
  name: 'no-credential-reuse',
@@ -1,4 +1,4 @@
1
- import { TSESTree } from '@typescript-eslint/types';
1
+ import { TSESTree } from '@typescript-eslint/utils';
2
2
  import { createRule } from '../utils/index.js';
3
3
  const restrictedGlobals = [
4
4
  'clearInterval',
@@ -1 +1 @@
1
- {"version":3,"file":"no-template-placeholders.d.ts","sourceRoot":"","sources":["../../src/rules/no-template-placeholders.ts"],"names":[],"mappings":"AAoBA,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,0JA+CrC,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { AST_NODE_TYPES } from '@typescript-eslint/utils';
2
2
  import { createRule } from '../utils/index.js';
3
- const ANGLE_PLACEHOLDER = /<[^<>\n]+?>/;
3
+ // Excludes `@` so that emails inside npm "person" strings
4
+ // (e.g. `"author": "Jane Doe <jane@example.com>"`) are not flagged.
5
+ const ANGLE_PLACEHOLDER = /<[^<>\n@]+?>/;
4
6
  const MUSTACHE_PLACEHOLDER = /\{\{[^{}\n]+?\}\}/;
5
7
  function findPlaceholder(value) {
6
8
  const angleMatch = ANGLE_PLACEHOLDER.exec(value);
@@ -1 +1 @@
1
- {"version":3,"file":"no-template-placeholders.js","sourceRoot":"","sources":["../../src/rules/no-template-placeholders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,iBAAiB,GAAG,aAAa,CAAC;AACxC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD,SAAS,eAAe,CAAC,KAAa;IACrC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC;IACpD,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EAAE,2DAA2D;SACxE;QACD,QAAQ,EAAE;YACT,qBAAqB,EACpB,2HAA2H;SAC5H;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,OAAO,CAAC,IAAsB;gBAC7B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACpC,OAAO;gBACR,CAAC;gBAED,yCAAyC;gBACzC,IACC,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,cAAc,CAAC,QAAQ;oBAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI;oBACxB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,CAAC;oBACF,OAAO;gBACR,CAAC;gBAED,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,CAAC,WAAW,EAAE,CAAC;oBAClB,OAAO;gBACR,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC;oBACd,IAAI;oBACJ,SAAS,EAAE,uBAAuB;oBAClC,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE;iBACtC,CAAC,CAAC;YACJ,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"no-template-placeholders.js","sourceRoot":"","sources":["../../src/rules/no-template-placeholders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,0DAA0D;AAC1D,oEAAoE;AACpE,MAAM,iBAAiB,GAAG,cAAc,CAAC;AACzC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD,SAAS,eAAe,CAAC,KAAa;IACrC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC;IACpD,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EAAE,2DAA2D;SACxE;QACD,QAAQ,EAAE;YACT,qBAAqB,EACpB,2HAA2H;SAC5H;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,OAAO,CAAC,IAAsB;gBAC7B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACpC,OAAO;gBACR,CAAC;gBAED,yCAAyC;gBACzC,IACC,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,cAAc,CAAC,QAAQ;oBAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI;oBACxB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,CAAC;oBACF,OAAO;gBACR,CAAC;gBAED,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,CAAC,WAAW,EAAE,CAAC;oBAClB,OAAO;gBACR,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC;oBACd,IAAI;oBACJ,SAAS,EAAE,uBAAuB;oBAClC,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE;iBACtC,CAAC,CAAC;YACJ,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { TSESTree } from '@typescript-eslint/types';
1
+ import { TSESTree } from '@typescript-eslint/utils';
2
2
  import { isNodeTypeClass, findClassProperty, findObjectProperty, createRule, } from '../utils/index.js';
3
3
  export const NodeUsableAsToolRule = createRule({
4
4
  name: 'node-usable-as-tool',
@@ -1,2 +1,2 @@
1
- export declare const PackageNameConventionRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"renameTo" | "invalidPackageName", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const PackageNameConventionRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"renameTo" | "invalidPackageName" | "missingName" | "defaultPlaceholderName", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
2
  //# 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,oKAqEpC,CAAC"}
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"}
@@ -10,6 +10,8 @@ export const PackageNameConventionRule = createRule({
10
10
  messages: {
11
11
  renameTo: "Rename to '{{suggestedName}}'",
12
12
  invalidPackageName: 'Package name "{{ packageName }}" must follow the convention "n8n-nodes-[PACKAGE-NAME]" or "@[AUTHOR]/n8n-nodes-[PACKAGE-NAME]"',
13
+ missingName: 'Package name is missing. Add a "name" field following the convention "n8n-nodes-[PACKAGE-NAME]" or "@[AUTHOR]/n8n-nodes-[PACKAGE-NAME]"',
14
+ defaultPlaceholderName: 'Package name "{{ packageName }}" still contains the default placeholder. Replace "<...>" with your package name',
13
15
  },
14
16
  schema: [],
15
17
  hasSuggestions: true,
@@ -26,6 +28,10 @@ export const PackageNameConventionRule = createRule({
26
28
  }
27
29
  const nameProperty = findJsonProperty(node, 'name');
28
30
  if (!nameProperty) {
31
+ context.report({
32
+ node,
33
+ messageId: 'missingName',
34
+ });
29
35
  return;
30
36
  }
31
37
  if (nameProperty.value.type !== AST_NODE_TYPES.Literal) {
@@ -33,6 +39,16 @@ export const PackageNameConventionRule = createRule({
33
39
  }
34
40
  const packageName = nameProperty.value.value;
35
41
  const packageNameStr = typeof packageName === 'string' ? packageName : null;
42
+ if (packageNameStr && isDefaultPlaceholderName(packageNameStr)) {
43
+ context.report({
44
+ node: nameProperty,
45
+ messageId: 'defaultPlaceholderName',
46
+ data: {
47
+ packageName: packageNameStr,
48
+ },
49
+ });
50
+ return;
51
+ }
36
52
  if (!packageNameStr || !isValidPackageName(packageNameStr)) {
37
53
  const suggestions = [];
38
54
  // Generate package name suggestions if we have a valid string
@@ -61,6 +77,9 @@ export const PackageNameConventionRule = createRule({
61
77
  };
62
78
  },
63
79
  });
80
+ function isDefaultPlaceholderName(name) {
81
+ return name.includes('<...>');
82
+ }
64
83
  function isValidPackageName(name) {
65
84
  const unscoped = /^n8n-nodes-.+$/;
66
85
  const scoped = /^@.+\/n8n-nodes-.+$/;
@@ -1 +1 @@
1
- {"version":3,"file":"package-name-convention.js","sourceRoot":"","sources":["../../src/rules/package-name-convention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-name-convention.js","sourceRoot":"","sources":["../../src/rules/package-name-convention.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- export declare const RequireNodeApiErrorRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"useNodeApiError" | "useNodeApiErrorInsteadOfGeneric", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+ export declare const RequireNodeApiErrorRule: TSESLint.RuleModule<"useNodeApiError" | "useNodeApiErrorInsteadOfGeneric", [], unknown, TSESLint.RuleListener>;
2
3
  //# 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":"AA4BA,eAAO,MAAM,uBAAuB,wLA6DlC,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,gHA+DlC,CAAC"}
@@ -1,5 +1,4 @@
1
- import { DefinitionType } from '@typescript-eslint/scope-manager';
2
- import { AST_NODE_TYPES } from '@typescript-eslint/utils';
1
+ import { AST_NODE_TYPES, TSESLint } from '@typescript-eslint/utils';
3
2
  import { isFileType } from '../utils/index.js';
4
3
  import { createRule } from '../utils/rule-creator.js';
5
4
  const ALLOWED_ERROR_CLASSES = new Set(['NodeApiError', 'NodeOperationError']);
@@ -56,7 +55,7 @@ export const RequireNodeApiErrorRule = createRule({
56
55
  if (argument.type === AST_NODE_TYPES.Identifier) {
57
56
  const scope = context.sourceCode.getScope(node);
58
57
  const ref = scope.references.find((r) => r.identifier === argument);
59
- const isCatchParam = ref?.resolved?.defs.some((def) => def.type === DefinitionType.CatchClause) ?? false;
58
+ const isCatchParam = ref?.resolved?.defs.some((def) => def.type === TSESLint.Scope.DefinitionType.CatchClause) ?? false;
60
59
  if (isCatchParam) {
61
60
  context.report({ node, messageId: 'useNodeApiError' });
62
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"require-node-api-error.js","sourceRoot":"","sources":["../../src/rules/require-node-api-error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"require-node-api-error.js","sourceRoot":"","sources":["../../src/rules/require-node-api-error.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TSESTree } from '@typescript-eslint/types';
1
+ import { TSESTree } from '@typescript-eslint/utils';
2
2
  import { isNodeTypeClass, findClassProperty, findArrayLiteralProperty, extractCredentialNameFromArray, findPackageJson, readPackageJsonCredentials, isFileType, findSimilarStrings, createRule, } from '../utils/index.js';
3
3
  export const ValidCredentialReferencesRule = createRule({
4
4
  name: 'valid-credential-references',