@n8n/eslint-plugin-community-nodes 0.32.1 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/rules/ai-node-package-json.d.ts +3 -1
- package/dist/rules/ai-node-package-json.d.ts.map +1 -1
- package/dist/rules/cred-class-field-icon-missing.d.ts +3 -1
- package/dist/rules/cred-class-field-icon-missing.d.ts.map +1 -1
- package/dist/rules/cred-class-oauth2-naming.d.ts +3 -1
- package/dist/rules/cred-class-oauth2-naming.d.ts.map +1 -1
- package/dist/rules/credential-documentation-url.d.ts +3 -1
- package/dist/rules/credential-documentation-url.d.ts.map +1 -1
- package/dist/rules/credential-password-field.d.ts +3 -1
- package/dist/rules/credential-password-field.d.ts.map +1 -1
- package/dist/rules/credential-password-field.js +1 -2
- package/dist/rules/credential-test-required.d.ts +3 -1
- package/dist/rules/credential-test-required.d.ts.map +1 -1
- package/dist/rules/credential-unnecessary-password.d.ts +3 -1
- package/dist/rules/credential-unnecessary-password.d.ts.map +1 -1
- package/dist/rules/credential-unnecessary-password.js +1 -2
- package/dist/rules/icon-prefer-themed-variants.d.ts +3 -1
- package/dist/rules/icon-prefer-themed-variants.d.ts.map +1 -1
- package/dist/rules/icon-validation.d.ts +3 -1
- package/dist/rules/icon-validation.d.ts.map +1 -1
- package/dist/rules/icon-validation.js +5 -15
- package/dist/rules/index.d.ts +132 -44
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/missing-paired-item.d.ts +3 -1
- package/dist/rules/missing-paired-item.d.ts.map +1 -1
- package/dist/rules/n8n-object-validation.d.ts +3 -1
- package/dist/rules/n8n-object-validation.d.ts.map +1 -1
- package/dist/rules/no-builder-hint-leakage.d.ts +3 -1
- package/dist/rules/no-builder-hint-leakage.d.ts.map +1 -1
- package/dist/rules/no-credential-reuse.d.ts +3 -1
- package/dist/rules/no-credential-reuse.d.ts.map +1 -1
- package/dist/rules/no-dangerous-functions.d.ts +3 -1
- package/dist/rules/no-dangerous-functions.d.ts.map +1 -1
- package/dist/rules/no-dead-files.d.ts +3 -1
- package/dist/rules/no-dead-files.d.ts.map +1 -1
- package/dist/rules/no-deprecated-workflow-functions.d.ts +3 -1
- package/dist/rules/no-deprecated-workflow-functions.d.ts.map +1 -1
- package/dist/rules/no-emoji-in-options.d.ts +3 -1
- package/dist/rules/no-emoji-in-options.d.ts.map +1 -1
- package/dist/rules/no-forbidden-lifecycle-scripts.d.ts +3 -1
- package/dist/rules/no-forbidden-lifecycle-scripts.d.ts.map +1 -1
- package/dist/rules/no-forbidden-lifecycle-scripts.js +1 -1
- package/dist/rules/no-hardcoded-secrets.d.ts +3 -1
- package/dist/rules/no-hardcoded-secrets.d.ts.map +1 -1
- package/dist/rules/no-http-request-with-manual-auth.d.ts +3 -1
- package/dist/rules/no-http-request-with-manual-auth.d.ts.map +1 -1
- package/dist/rules/no-overrides-field.d.ts +3 -1
- package/dist/rules/no-overrides-field.d.ts.map +1 -1
- package/dist/rules/no-restricted-globals.d.ts +3 -1
- package/dist/rules/no-restricted-globals.d.ts.map +1 -1
- package/dist/rules/no-restricted-imports.d.ts +3 -1
- package/dist/rules/no-restricted-imports.d.ts.map +1 -1
- package/dist/rules/no-runtime-dependencies.d.ts +3 -1
- package/dist/rules/no-runtime-dependencies.d.ts.map +1 -1
- package/dist/rules/no-silent-error-swallowing.d.ts +3 -1
- package/dist/rules/no-silent-error-swallowing.d.ts.map +1 -1
- package/dist/rules/no-silent-error-swallowing.js +2 -12
- package/dist/rules/no-template-placeholders.d.ts +3 -1
- package/dist/rules/no-template-placeholders.d.ts.map +1 -1
- package/dist/rules/no-unsafe-connection-type-cast.d.ts +3 -1
- package/dist/rules/no-unsafe-connection-type-cast.d.ts.map +1 -1
- package/dist/rules/node-class-description-icon-missing.d.ts +3 -1
- package/dist/rules/node-class-description-icon-missing.d.ts.map +1 -1
- package/dist/rules/node-class-description-icon-missing.js +1 -2
- package/dist/rules/node-connection-type-literal.d.ts +3 -1
- package/dist/rules/node-connection-type-literal.d.ts.map +1 -1
- package/dist/rules/node-registration-complete.d.ts +3 -1
- package/dist/rules/node-registration-complete.d.ts.map +1 -1
- package/dist/rules/node-usable-as-tool.d.ts +3 -1
- package/dist/rules/node-usable-as-tool.d.ts.map +1 -1
- package/dist/rules/package-name-convention.d.ts +3 -1
- package/dist/rules/package-name-convention.d.ts.map +1 -1
- package/dist/rules/require-files-array.d.ts +3 -1
- package/dist/rules/require-files-array.d.ts.map +1 -1
- package/dist/rules/require-homepage.d.ts +3 -1
- package/dist/rules/require-homepage.d.ts.map +1 -1
- package/dist/rules/require-node-api-error.d.ts +3 -1
- package/dist/rules/require-node-api-error.d.ts.map +1 -1
- package/dist/rules/require-node-description-fields.d.ts +3 -1
- package/dist/rules/require-node-description-fields.d.ts.map +1 -1
- package/dist/rules/require-node-description-fields.js +1 -2
- package/dist/rules/require-version.d.ts +3 -1
- package/dist/rules/require-version.d.ts.map +1 -1
- package/dist/rules/resource-operation-pattern.d.ts +3 -1
- package/dist/rules/resource-operation-pattern.d.ts.map +1 -1
- package/dist/rules/resource-operation-pattern.js +3 -4
- package/dist/rules/trigger-node-conventions.d.ts +3 -1
- package/dist/rules/trigger-node-conventions.d.ts.map +1 -1
- package/dist/rules/valid-author.d.ts +3 -1
- package/dist/rules/valid-author.d.ts.map +1 -1
- package/dist/rules/valid-author.js +1 -1
- package/dist/rules/valid-credential-references.d.ts +3 -1
- package/dist/rules/valid-credential-references.d.ts.map +1 -1
- package/dist/rules/valid-description.d.ts +3 -1
- package/dist/rules/valid-description.d.ts.map +1 -1
- package/dist/rules/valid-peer-dependencies.d.ts +3 -1
- package/dist/rules/valid-peer-dependencies.d.ts.map +1 -1
- package/dist/rules/webhook-lifecycle-complete.d.ts +3 -1
- package/dist/rules/webhook-lifecycle-complete.d.ts.map +1 -1
- package/dist/rules/webhook-lifecycle-complete.js +3 -11
- package/dist/utils/ast-utils.d.ts +6 -0
- package/dist/utils/ast-utils.d.ts.map +1 -1
- package/dist/utils/ast-utils.js +22 -5
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +1 -2
- package/dist/utils/rule-creator.d.ts +3 -1
- package/dist/utils/rule-creator.d.ts.map +1 -1
- package/docs/rules/icon-prefer-themed-variants.md +2 -2
- package/docs/rules/icon-validation.md +11 -11
- package/eslint.config.mjs +2 -3
- package/package.json +7 -7
- package/src/rules/credential-password-field.ts +1 -4
- package/src/rules/credential-unnecessary-password.ts +1 -4
- package/src/rules/icon-validation.test.ts +19 -21
- package/src/rules/icon-validation.ts +5 -20
- package/src/rules/no-forbidden-lifecycle-scripts.ts +1 -1
- package/src/rules/no-silent-error-swallowing.test.ts +26 -0
- package/src/rules/no-silent-error-swallowing.ts +2 -9
- package/src/rules/node-class-description-icon-missing.ts +1 -4
- package/src/rules/require-node-description-fields.ts +1 -4
- package/src/rules/resource-operation-pattern.ts +3 -6
- package/src/rules/valid-author.ts +1 -1
- package/src/rules/webhook-lifecycle-complete.test.ts +42 -0
- package/src/rules/webhook-lifecycle-complete.ts +3 -12
- package/src/utils/ast-utils.ts +29 -6
- package/src/utils/file-utils.ts +3 -6
- package/dist/plugin.js.map +0 -1
- package/dist/rules/ai-node-package-json.js.map +0 -1
- package/dist/rules/cred-class-field-icon-missing.js.map +0 -1
- package/dist/rules/cred-class-oauth2-naming.js.map +0 -1
- package/dist/rules/credential-documentation-url.js.map +0 -1
- package/dist/rules/credential-password-field.js.map +0 -1
- package/dist/rules/credential-test-required.js.map +0 -1
- package/dist/rules/credential-unnecessary-password.js.map +0 -1
- package/dist/rules/icon-prefer-themed-variants.js.map +0 -1
- package/dist/rules/icon-validation.js.map +0 -1
- package/dist/rules/index.js.map +0 -1
- package/dist/rules/missing-paired-item.js.map +0 -1
- package/dist/rules/n8n-object-validation.js.map +0 -1
- package/dist/rules/no-builder-hint-leakage.js.map +0 -1
- package/dist/rules/no-credential-reuse.js.map +0 -1
- package/dist/rules/no-dangerous-functions.js.map +0 -1
- package/dist/rules/no-dead-files.js.map +0 -1
- package/dist/rules/no-deprecated-workflow-functions.js.map +0 -1
- package/dist/rules/no-emoji-in-options.js.map +0 -1
- package/dist/rules/no-forbidden-lifecycle-scripts.js.map +0 -1
- package/dist/rules/no-hardcoded-secrets.js.map +0 -1
- package/dist/rules/no-http-request-with-manual-auth.js.map +0 -1
- package/dist/rules/no-overrides-field.js.map +0 -1
- package/dist/rules/no-restricted-globals.js.map +0 -1
- package/dist/rules/no-restricted-imports.js.map +0 -1
- package/dist/rules/no-runtime-dependencies.js.map +0 -1
- package/dist/rules/no-silent-error-swallowing.js.map +0 -1
- package/dist/rules/no-template-placeholders.js.map +0 -1
- package/dist/rules/no-unsafe-connection-type-cast.js.map +0 -1
- package/dist/rules/node-class-description-icon-missing.js.map +0 -1
- package/dist/rules/node-connection-type-literal.js.map +0 -1
- package/dist/rules/node-registration-complete.js.map +0 -1
- package/dist/rules/node-usable-as-tool.js.map +0 -1
- package/dist/rules/package-name-convention.js.map +0 -1
- package/dist/rules/require-files-array.js.map +0 -1
- package/dist/rules/require-homepage.js.map +0 -1
- package/dist/rules/require-node-api-error.js.map +0 -1
- package/dist/rules/require-node-description-fields.js.map +0 -1
- package/dist/rules/require-version.js.map +0 -1
- package/dist/rules/resource-operation-pattern.js.map +0 -1
- package/dist/rules/trigger-node-conventions.js.map +0 -1
- package/dist/rules/valid-author.js.map +0 -1
- package/dist/rules/valid-credential-references.js.map +0 -1
- package/dist/rules/valid-description.js.map +0 -1
- package/dist/rules/valid-peer-dependencies.js.map +0 -1
- package/dist/rules/webhook-lifecycle-complete.js.map +0 -1
- package/dist/utils/ast-utils.js.map +0 -1
- package/dist/utils/constants.js.map +0 -1
- package/dist/utils/credential-fields.js.map +0 -1
- package/dist/utils/file-utils.js.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/rule-creator.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Validate node and credential icon files exist
|
|
1
|
+
# Validate node and credential icon files exist and use the file: protocol (`@n8n/community-nodes/icon-validation`)
|
|
2
2
|
|
|
3
3
|
💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`.
|
|
4
4
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
## Rule Details
|
|
10
10
|
|
|
11
|
-
Validates that your node and credential icon files exist and use the correct `file:` protocol.
|
|
11
|
+
Validates that your node and credential icon files exist and use the correct `file:` protocol. The `light` and `dark` slots can point to the same file: one theme-agnostic icon is a valid choice, and you do not have to copy it under a second filename.
|
|
12
12
|
|
|
13
13
|
Both SVG and PNG icons are accepted. SVG is recommended (it scales cleanly and supports theming), but PNG is allowed — see the `icon-prefer-themed-variants` rule for the related light/dark nudge.
|
|
14
14
|
|
|
@@ -27,28 +27,28 @@ export class MyNode implements INodeType {
|
|
|
27
27
|
}
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
### ✅ Correct
|
|
31
|
+
|
|
30
32
|
```typescript
|
|
31
33
|
export class MyNode implements INodeType {
|
|
32
34
|
description: INodeTypeDescription = {
|
|
33
35
|
displayName: 'My Node',
|
|
34
36
|
name: 'myNode',
|
|
35
|
-
icon:
|
|
36
|
-
light: 'file:icons/my-icon.svg',
|
|
37
|
-
dark: 'file:icons/my-icon.svg', // Same file for both themes
|
|
38
|
-
},
|
|
37
|
+
icon: 'file:icons/my-service.svg', // Correct format
|
|
39
38
|
// ...
|
|
40
39
|
};
|
|
41
40
|
}
|
|
42
41
|
```
|
|
43
42
|
|
|
44
|
-
### ✅ Correct
|
|
45
|
-
|
|
46
43
|
```typescript
|
|
47
44
|
export class MyNode implements INodeType {
|
|
48
45
|
description: INodeTypeDescription = {
|
|
49
46
|
displayName: 'My Node',
|
|
50
47
|
name: 'myNode',
|
|
51
|
-
icon:
|
|
48
|
+
icon: {
|
|
49
|
+
light: 'file:icons/my-service-light.svg',
|
|
50
|
+
dark: 'file:icons/my-service-dark.svg', // Different files
|
|
51
|
+
},
|
|
52
52
|
// ...
|
|
53
53
|
};
|
|
54
54
|
}
|
|
@@ -60,8 +60,8 @@ export class MyNode implements INodeType {
|
|
|
60
60
|
displayName: 'My Node',
|
|
61
61
|
name: 'myNode',
|
|
62
62
|
icon: {
|
|
63
|
-
light: 'file:icons/my-service
|
|
64
|
-
dark: 'file:icons/my-service
|
|
63
|
+
light: 'file:icons/my-service.svg',
|
|
64
|
+
dark: 'file:icons/my-service.svg', // One file that works on both themes
|
|
65
65
|
},
|
|
66
66
|
// ...
|
|
67
67
|
};
|
package/eslint.config.mjs
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { defineConfig } from 'eslint/config';
|
|
2
|
-
import {
|
|
2
|
+
import { backendConfig } from '@n8n/eslint-config/backend';
|
|
3
3
|
import eslintPlugin from 'eslint-plugin-eslint-plugin';
|
|
4
4
|
|
|
5
5
|
export default defineConfig([
|
|
6
|
-
|
|
6
|
+
backendConfig,
|
|
7
7
|
eslintPlugin.configs.recommended,
|
|
8
8
|
{
|
|
9
9
|
files: ['src/**/*.ts'],
|
|
10
10
|
languageOptions: {
|
|
11
11
|
parserOptions: {
|
|
12
|
-
project: './tsconfig.json',
|
|
13
12
|
allowDefaultProject: true,
|
|
14
13
|
},
|
|
15
14
|
},
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/eslint-plugin-community-nodes",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.34.0",
|
|
5
5
|
"main": "./dist/plugin.js",
|
|
6
6
|
"types": "./dist/plugin.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@typescript-eslint/typescript-estree": "8.
|
|
15
|
-
"@typescript-eslint/utils": "8.
|
|
14
|
+
"@typescript-eslint/typescript-estree": "8.70.0",
|
|
15
|
+
"@typescript-eslint/utils": "8.70.0",
|
|
16
16
|
"fastest-levenshtein": "1.0.16"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@n8n/typescript-config": "1.
|
|
20
|
-
"@n8n/vitest-config": "1.
|
|
19
|
+
"@n8n/typescript-config": "1.12.0",
|
|
20
|
+
"@n8n/vitest-config": "1.22.0",
|
|
21
21
|
"@types/node": "24.10.1",
|
|
22
|
-
"n8n-workflow": "2.
|
|
23
|
-
"@typescript-eslint/rule-tester": "8.
|
|
22
|
+
"n8n-workflow": "2.41.0",
|
|
23
|
+
"@typescript-eslint/rule-tester": "8.70.0",
|
|
24
24
|
"eslint-doc-generator": "^2.2.2",
|
|
25
25
|
"eslint-plugin-eslint-plugin": "^7.0.0",
|
|
26
26
|
"rimraf": "6.0.1",
|
|
@@ -69,10 +69,7 @@ export const CredentialPasswordFieldRule = createRule({
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
const propertiesProperty = findClassProperty(node, 'properties');
|
|
72
|
-
if (
|
|
73
|
-
!propertiesProperty?.value ||
|
|
74
|
-
propertiesProperty.value.type !== TSESTree.AST_NODE_TYPES.ArrayExpression
|
|
75
|
-
) {
|
|
72
|
+
if (propertiesProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ArrayExpression) {
|
|
76
73
|
return;
|
|
77
74
|
}
|
|
78
75
|
|
|
@@ -33,10 +33,7 @@ export const CredentialUnnecessaryPasswordRule = createRule({
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
const propertiesProperty = findClassProperty(node, 'properties');
|
|
36
|
-
if (
|
|
37
|
-
!propertiesProperty?.value ||
|
|
38
|
-
propertiesProperty.value.type !== TSESTree.AST_NODE_TYPES.ArrayExpression
|
|
39
|
-
) {
|
|
36
|
+
if (propertiesProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ArrayExpression) {
|
|
40
37
|
return;
|
|
41
38
|
}
|
|
42
39
|
|
|
@@ -162,6 +162,17 @@ ruleTester.run('icon-validation', IconValidationRule, {
|
|
|
162
162
|
true,
|
|
163
163
|
),
|
|
164
164
|
},
|
|
165
|
+
{
|
|
166
|
+
name: 'node with the same file for light and dark icons',
|
|
167
|
+
filename: nodeFilePath,
|
|
168
|
+
code: createNodeCode(
|
|
169
|
+
{
|
|
170
|
+
light: 'file:icons/SameIcon.svg',
|
|
171
|
+
dark: 'file:icons/SameIcon.svg',
|
|
172
|
+
},
|
|
173
|
+
true,
|
|
174
|
+
),
|
|
175
|
+
},
|
|
165
176
|
{
|
|
166
177
|
name: 'credential with valid string icon',
|
|
167
178
|
filename: credentialFilePath,
|
|
@@ -180,6 +191,14 @@ ruleTester.run('icon-validation', IconValidationRule, {
|
|
|
180
191
|
dark: 'file:icons/ValidIcon.dark.svg',
|
|
181
192
|
}),
|
|
182
193
|
},
|
|
194
|
+
{
|
|
195
|
+
name: 'credential with the same file for light and dark icons',
|
|
196
|
+
filename: credentialFilePath,
|
|
197
|
+
code: createCredentialCode({
|
|
198
|
+
light: 'file:icons/SameIcon.svg',
|
|
199
|
+
dark: 'file:icons/SameIcon.svg',
|
|
200
|
+
}),
|
|
201
|
+
},
|
|
183
202
|
],
|
|
184
203
|
invalid: [
|
|
185
204
|
{
|
|
@@ -205,18 +224,6 @@ ruleTester.run('icon-validation', IconValidationRule, {
|
|
|
205
224
|
code: createNodeCode('file:icons/NonExistent.svg', true),
|
|
206
225
|
errors: [{ messageId: 'iconFileNotFound', data: { iconPath: 'icons/NonExistent.svg' } }],
|
|
207
226
|
},
|
|
208
|
-
{
|
|
209
|
-
name: 'light and dark icons are the same file in description',
|
|
210
|
-
filename: nodeFilePath,
|
|
211
|
-
code: createNodeCode(
|
|
212
|
-
{
|
|
213
|
-
light: 'file:icons/SameIcon.svg',
|
|
214
|
-
dark: 'file:icons/SameIcon.svg',
|
|
215
|
-
},
|
|
216
|
-
true,
|
|
217
|
-
),
|
|
218
|
-
errors: [{ messageId: 'lightDarkSame', data: { iconPath: 'icons/SameIcon.svg' } }],
|
|
219
|
-
},
|
|
220
227
|
{
|
|
221
228
|
name: 'credential missing icon property',
|
|
222
229
|
filename: credentialFilePath,
|
|
@@ -240,15 +247,6 @@ ruleTester.run('icon-validation', IconValidationRule, {
|
|
|
240
247
|
code: createCredentialCode('file:icons/NonExistent.svg'),
|
|
241
248
|
errors: [{ messageId: 'iconFileNotFound', data: { iconPath: 'icons/NonExistent.svg' } }],
|
|
242
249
|
},
|
|
243
|
-
{
|
|
244
|
-
name: 'credential light and dark icons are the same file',
|
|
245
|
-
filename: credentialFilePath,
|
|
246
|
-
code: createCredentialCode({
|
|
247
|
-
light: 'file:icons/SameIcon.svg',
|
|
248
|
-
dark: 'file:icons/SameIcon.svg',
|
|
249
|
-
}),
|
|
250
|
-
errors: [{ messageId: 'lightDarkSame', data: { iconPath: 'icons/SameIcon.svg' } }],
|
|
251
|
-
},
|
|
252
250
|
{
|
|
253
251
|
name: 'node icon file does not exist but similar file exists - should suggest similar file',
|
|
254
252
|
filename: nodeFilePath,
|
|
@@ -16,7 +16,6 @@ import {
|
|
|
16
16
|
|
|
17
17
|
const messages = {
|
|
18
18
|
iconFileNotFound: 'Icon file "{{ iconPath }}" does not exist',
|
|
19
|
-
lightDarkSame: 'Light and dark icons cannot be the same file. Both point to "{{ iconPath }}"',
|
|
20
19
|
invalidIconPath: 'Icon path "{{ iconPath }}" must use file: protocol and be a string',
|
|
21
20
|
missingIcon: 'Node/Credential class must have an icon property defined',
|
|
22
21
|
addPlaceholder: 'Add icon property with placeholder',
|
|
@@ -29,8 +28,7 @@ export const IconValidationRule = createRule({
|
|
|
29
28
|
meta: {
|
|
30
29
|
type: 'problem',
|
|
31
30
|
docs: {
|
|
32
|
-
description:
|
|
33
|
-
'Validate node and credential icon files exist, use the file: protocol, and that light/dark icons are different',
|
|
31
|
+
description: 'Validate node and credential icon files exist and use the file: protocol',
|
|
34
32
|
},
|
|
35
33
|
messages,
|
|
36
34
|
schema: [],
|
|
@@ -114,22 +112,12 @@ export const IconValidationRule = createRule({
|
|
|
114
112
|
const lightProperty = findObjectProperty(iconValue, 'light');
|
|
115
113
|
const darkProperty = findObjectProperty(iconValue, 'dark');
|
|
116
114
|
|
|
117
|
-
|
|
118
|
-
const darkPath = darkProperty ? getStringLiteralValue(darkProperty.value) : null;
|
|
119
|
-
|
|
115
|
+
// A theme-agnostic file can fill both slots, so only each path is checked
|
|
120
116
|
if (lightProperty) {
|
|
121
|
-
validateIcon(
|
|
117
|
+
validateIcon(getStringLiteralValue(lightProperty.value), lightProperty.value);
|
|
122
118
|
}
|
|
123
119
|
if (darkProperty) {
|
|
124
|
-
validateIcon(
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (lightPath && darkPath && lightPath === darkPath && lightProperty) {
|
|
128
|
-
context.report({
|
|
129
|
-
node: lightProperty.value,
|
|
130
|
-
messageId: 'lightDarkSame',
|
|
131
|
-
data: { iconPath: lightPath.replace(/^file:/, '') },
|
|
132
|
-
});
|
|
120
|
+
validateIcon(getStringLiteralValue(darkProperty.value), darkProperty.value);
|
|
133
121
|
}
|
|
134
122
|
}
|
|
135
123
|
};
|
|
@@ -145,10 +133,7 @@ export const IconValidationRule = createRule({
|
|
|
145
133
|
|
|
146
134
|
if (isNodeClass) {
|
|
147
135
|
const descriptionProperty = findClassProperty(node, 'description');
|
|
148
|
-
if (
|
|
149
|
-
!descriptionProperty?.value ||
|
|
150
|
-
descriptionProperty.value.type !== TSESTree.AST_NODE_TYPES.ObjectExpression
|
|
151
|
-
) {
|
|
136
|
+
if (descriptionProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) {
|
|
152
137
|
context.report({
|
|
153
138
|
node,
|
|
154
139
|
messageId: 'missingIcon',
|
|
@@ -41,7 +41,7 @@ export const NoForbiddenLifecycleScriptsRule = createRule({
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
const scriptsProp = findJsonProperty(node, 'scripts');
|
|
44
|
-
if (
|
|
44
|
+
if (scriptsProp?.value.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -174,6 +174,32 @@ export class RegularClass {
|
|
|
174
174
|
}`),
|
|
175
175
|
errors: [{ messageId: 'silentReturn', data: { method: 'delete' } }],
|
|
176
176
|
},
|
|
177
|
+
{
|
|
178
|
+
name: 'lifecycle method written with a computed literal key',
|
|
179
|
+
code: createTriggerNode(`{
|
|
180
|
+
default: {
|
|
181
|
+
['delete']: async function (this: IHookFunctions): Promise<boolean> {
|
|
182
|
+
try {
|
|
183
|
+
return await this.helpers.httpRequest({ url: 'https://example.com' });
|
|
184
|
+
} catch (error) {}
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
}`),
|
|
188
|
+
errors: [{ messageId: 'emptyCatch', data: { method: 'delete' } }],
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
name: 'lifecycle group written with a quoted key',
|
|
192
|
+
code: createTriggerNode(`{
|
|
193
|
+
'default': {
|
|
194
|
+
async delete(this: IHookFunctions): Promise<boolean> {
|
|
195
|
+
try {
|
|
196
|
+
return await this.helpers.httpRequest({ url: 'https://example.com' });
|
|
197
|
+
} catch (error) {}
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
}`),
|
|
201
|
+
errors: [{ messageId: 'emptyCatch', data: { method: 'delete' } }],
|
|
202
|
+
},
|
|
177
203
|
{
|
|
178
204
|
name: 'catch block with a bare return',
|
|
179
205
|
code: createTriggerNode(`{
|
|
@@ -3,20 +3,13 @@ import { AST_NODE_TYPES, type TSESTree } from '@typescript-eslint/utils';
|
|
|
3
3
|
import {
|
|
4
4
|
createRule,
|
|
5
5
|
findClassProperty,
|
|
6
|
+
getPropertyKeyName,
|
|
6
7
|
isNodeTypeClass,
|
|
7
8
|
WEBHOOK_LIFECYCLE_METHODS,
|
|
8
9
|
} from '../utils/index.js';
|
|
9
10
|
|
|
10
11
|
const LIFECYCLE_METHODS: readonly string[] = WEBHOOK_LIFECYCLE_METHODS;
|
|
11
12
|
|
|
12
|
-
/** Returns the static name of a non-computed object property key, or null. */
|
|
13
|
-
function getPropertyName(property: TSESTree.Property): string | null {
|
|
14
|
-
if (property.computed) return null;
|
|
15
|
-
if (property.key.type === AST_NODE_TYPES.Identifier) return property.key.name;
|
|
16
|
-
if (property.key.type === AST_NODE_TYPES.Literal) return String(property.key.value);
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
13
|
function isFunctionNode(node: TSESTree.Node): boolean {
|
|
21
14
|
return (
|
|
22
15
|
node.type === AST_NODE_TYPES.FunctionDeclaration ||
|
|
@@ -81,7 +74,7 @@ export const NoSilentErrorSwallowingRule = createRule({
|
|
|
81
74
|
for (const methodProperty of groupProperty.value.properties) {
|
|
82
75
|
if (methodProperty.type !== AST_NODE_TYPES.Property) continue;
|
|
83
76
|
|
|
84
|
-
const methodName =
|
|
77
|
+
const methodName = getPropertyKeyName(methodProperty);
|
|
85
78
|
if (methodName === null || !LIFECYCLE_METHODS.includes(methodName)) continue;
|
|
86
79
|
|
|
87
80
|
const fn = methodProperty.value;
|
|
@@ -41,10 +41,7 @@ export const NodeClassDescriptionIconMissingRule = createRule({
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
const descriptionProperty = findClassProperty(node, 'description');
|
|
44
|
-
if (
|
|
45
|
-
!descriptionProperty?.value ||
|
|
46
|
-
descriptionProperty.value.type !== TSESTree.AST_NODE_TYPES.ObjectExpression
|
|
47
|
-
) {
|
|
44
|
+
if (descriptionProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) {
|
|
48
45
|
return;
|
|
49
46
|
}
|
|
50
47
|
|
|
@@ -41,10 +41,7 @@ export const RequireNodeDescriptionFieldsRule = createRule({
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
const descriptionProperty = findClassProperty(node, 'description');
|
|
44
|
-
if (
|
|
45
|
-
!descriptionProperty?.value ||
|
|
46
|
-
descriptionProperty.value.type !== TSESTree.AST_NODE_TYPES.ObjectExpression
|
|
47
|
-
) {
|
|
44
|
+
if (descriptionProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) {
|
|
48
45
|
return;
|
|
49
46
|
}
|
|
50
47
|
|
|
@@ -30,15 +30,12 @@ export const ResourceOperationPatternRule = createRule({
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
const analyzeNodeDescription = (descriptionValue: TSESTree.Expression | null): void => {
|
|
33
|
-
if (
|
|
33
|
+
if (descriptionValue?.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
const propertiesProperty = findObjectProperty(descriptionValue, 'properties');
|
|
38
|
-
if (
|
|
39
|
-
!propertiesProperty?.value ||
|
|
40
|
-
propertiesProperty.value.type !== AST_NODE_TYPES.ArrayExpression
|
|
41
|
-
) {
|
|
38
|
+
if (propertiesProperty?.value?.type !== AST_NODE_TYPES.ArrayExpression) {
|
|
42
39
|
return;
|
|
43
40
|
}
|
|
44
41
|
|
|
@@ -48,7 +45,7 @@ export const ResourceOperationPatternRule = createRule({
|
|
|
48
45
|
let operationNode: TSESTree.Node | null = null;
|
|
49
46
|
|
|
50
47
|
for (const property of propertiesArray.elements) {
|
|
51
|
-
if (
|
|
48
|
+
if (property?.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
52
49
|
continue;
|
|
53
50
|
}
|
|
54
51
|
|
|
@@ -22,7 +22,7 @@ function parsePersonString(value: string): { name: string; email: string } {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
function isNonEmptyStringLiteral(node: TSESTree.Property | null): boolean {
|
|
25
|
-
if (
|
|
25
|
+
if (node?.value.type !== AST_NODE_TYPES.Literal) {
|
|
26
26
|
return false;
|
|
27
27
|
}
|
|
28
28
|
const { value } = node.value;
|
|
@@ -88,6 +88,30 @@ export class RegularClass {
|
|
|
88
88
|
}`,
|
|
89
89
|
}),
|
|
90
90
|
},
|
|
91
|
+
{
|
|
92
|
+
name: 'lifecycle methods written with computed literal keys',
|
|
93
|
+
code: createTriggerNode({
|
|
94
|
+
webhookMethods: `{
|
|
95
|
+
default: {
|
|
96
|
+
['checkExists']: async () => true,
|
|
97
|
+
['create']: async () => true,
|
|
98
|
+
[\`delete\`]: async () => true,
|
|
99
|
+
},
|
|
100
|
+
}`,
|
|
101
|
+
}),
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'lifecycle group and methods written with quoted keys',
|
|
105
|
+
code: createTriggerNode({
|
|
106
|
+
webhookMethods: `{
|
|
107
|
+
'default': {
|
|
108
|
+
'checkExists': async () => true,
|
|
109
|
+
'create': async () => true,
|
|
110
|
+
'delete': async () => true,
|
|
111
|
+
},
|
|
112
|
+
}`,
|
|
113
|
+
}),
|
|
114
|
+
},
|
|
91
115
|
{
|
|
92
116
|
name: 'webhook lifecycle defined via arrow functions',
|
|
93
117
|
code: createTriggerNode({
|
|
@@ -189,6 +213,24 @@ export class RegularClass {
|
|
|
189
213
|
}),
|
|
190
214
|
errors: [{ messageId: 'missingWebhookMethods' }],
|
|
191
215
|
},
|
|
216
|
+
{
|
|
217
|
+
name: 'lifecycle method behind a key only known at runtime',
|
|
218
|
+
code: createTriggerNode({
|
|
219
|
+
webhookMethods: `{
|
|
220
|
+
default: {
|
|
221
|
+
async checkExists() { return true; },
|
|
222
|
+
async create() { return true; },
|
|
223
|
+
[methodName]: async () => true,
|
|
224
|
+
},
|
|
225
|
+
}`,
|
|
226
|
+
}),
|
|
227
|
+
errors: [
|
|
228
|
+
{
|
|
229
|
+
messageId: 'missingLifecycleMethod',
|
|
230
|
+
data: { group: 'default', missing: '`delete`' },
|
|
231
|
+
},
|
|
232
|
+
],
|
|
233
|
+
},
|
|
192
234
|
{
|
|
193
235
|
name: 'multiple webhook groups each missing methods',
|
|
194
236
|
code: createTriggerNode({
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
createRule,
|
|
5
5
|
findClassProperty,
|
|
6
6
|
findObjectProperty,
|
|
7
|
+
getPropertyKeyName,
|
|
7
8
|
isNodeTypeClass,
|
|
8
9
|
WEBHOOK_LIFECYCLE_METHODS,
|
|
9
10
|
type WebhookLifecycleMethod,
|
|
@@ -25,12 +26,7 @@ function hasWebhooksDeclared(descriptionValue: TSESTree.ObjectExpression): boole
|
|
|
25
26
|
/** Returns true when the property defines a (possibly async) method named `name`. */
|
|
26
27
|
function isMethodProperty(property: TSESTree.ObjectLiteralElement, name: string): boolean {
|
|
27
28
|
if (property.type !== AST_NODE_TYPES.Property) return false;
|
|
28
|
-
if (property
|
|
29
|
-
|
|
30
|
-
const keyMatches =
|
|
31
|
-
(property.key.type === AST_NODE_TYPES.Identifier && property.key.name === name) ||
|
|
32
|
-
(property.key.type === AST_NODE_TYPES.Literal && property.key.value === name);
|
|
33
|
-
if (!keyMatches) return false;
|
|
29
|
+
if (getPropertyKeyName(property) !== name) return false;
|
|
34
30
|
|
|
35
31
|
return (
|
|
36
32
|
property.value.type === AST_NODE_TYPES.FunctionExpression ||
|
|
@@ -104,12 +100,7 @@ export const WebhookLifecycleCompleteRule = createRule({
|
|
|
104
100
|
if (groupProperty.type !== AST_NODE_TYPES.Property) continue;
|
|
105
101
|
if (groupProperty.value.type !== AST_NODE_TYPES.ObjectExpression) continue;
|
|
106
102
|
|
|
107
|
-
const groupName =
|
|
108
|
-
groupProperty.key.type === AST_NODE_TYPES.Identifier
|
|
109
|
-
? groupProperty.key.name
|
|
110
|
-
: groupProperty.key.type === AST_NODE_TYPES.Literal
|
|
111
|
-
? String(groupProperty.key.value)
|
|
112
|
-
: 'default';
|
|
103
|
+
const groupName = getPropertyKeyName(groupProperty) ?? 'default';
|
|
113
104
|
|
|
114
105
|
const missing = findMissingMethods(groupProperty.value);
|
|
115
106
|
if (missing.length === 0) continue;
|
package/src/utils/ast-utils.ts
CHANGED
|
@@ -55,6 +55,33 @@ export function isTriggerNode(
|
|
|
55
55
|
return hasTriggerGroup(descriptionValue) || isTriggerNodeClass(node);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Returns the name a property key stands for, or null when it is only known at
|
|
60
|
+
* runtime. `delete`, `'delete'` and `['delete']` all name the same property, so
|
|
61
|
+
* how the key is written must not decide whether a rule sees it.
|
|
62
|
+
*/
|
|
63
|
+
export function getPropertyKeyName(
|
|
64
|
+
property: TSESTree.Property | TSESTree.PropertyDefinition | TSESTree.MethodDefinition,
|
|
65
|
+
): string | null {
|
|
66
|
+
const { key } = property;
|
|
67
|
+
|
|
68
|
+
if (key.type === AST_NODE_TYPES.Literal) {
|
|
69
|
+
return key.value === null ? null : String(key.value);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// A computed key still names one property when it is a template without
|
|
73
|
+
// substitutions; written plainly, an identifier is the name itself.
|
|
74
|
+
if (key.type === AST_NODE_TYPES.TemplateLiteral) {
|
|
75
|
+
return key.expressions.length === 0 ? (key.quasis[0]?.value.cooked ?? null) : null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (key.type === AST_NODE_TYPES.Identifier) {
|
|
79
|
+
return property.computed ? null : key.name;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
|
|
58
85
|
export function findClassProperty(
|
|
59
86
|
node: TSESTree.ClassDeclaration,
|
|
60
87
|
propertyName: string,
|
|
@@ -62,8 +89,7 @@ export function findClassProperty(
|
|
|
62
89
|
const property = node.body.body.find(
|
|
63
90
|
(member) =>
|
|
64
91
|
member.type === AST_NODE_TYPES.PropertyDefinition &&
|
|
65
|
-
member
|
|
66
|
-
member.key.name === propertyName,
|
|
92
|
+
getPropertyKeyName(member) === propertyName,
|
|
67
93
|
);
|
|
68
94
|
return property?.type === AST_NODE_TYPES.PropertyDefinition ? property : null;
|
|
69
95
|
}
|
|
@@ -140,10 +166,7 @@ export function findObjectProperty(
|
|
|
140
166
|
propertyName: string,
|
|
141
167
|
): TSESTree.Property | null {
|
|
142
168
|
const property = obj.properties.find(
|
|
143
|
-
(prop) =>
|
|
144
|
-
prop.type === AST_NODE_TYPES.Property &&
|
|
145
|
-
prop.key.type === AST_NODE_TYPES.Identifier &&
|
|
146
|
-
prop.key.name === propertyName,
|
|
169
|
+
(prop) => prop.type === AST_NODE_TYPES.Property && getPropertyKeyName(prop) === propertyName,
|
|
147
170
|
);
|
|
148
171
|
return property?.type === AST_NODE_TYPES.Property ? property : null;
|
|
149
172
|
}
|
package/src/utils/file-utils.ts
CHANGED
|
@@ -77,7 +77,7 @@ function readPackageJsonRaw(packageJsonPath: string): Record<string, unknown> |
|
|
|
77
77
|
try {
|
|
78
78
|
const content = readFileSync(packageJsonPath, 'utf8');
|
|
79
79
|
const parsed: unknown = JSON.parse(content);
|
|
80
|
-
return isValidPackageJson(parsed) ?
|
|
80
|
+
return isValidPackageJson(parsed) ? parsed : null;
|
|
81
81
|
} catch {
|
|
82
82
|
return null;
|
|
83
83
|
}
|
|
@@ -104,7 +104,7 @@ export function readPackageJsonDevDependencies(packageJsonPath: string | null):
|
|
|
104
104
|
if (!parsed) return new Set();
|
|
105
105
|
const devDeps = parsed.devDependencies;
|
|
106
106
|
if (typeof devDeps !== 'object' || devDeps === null) return new Set();
|
|
107
|
-
return new Set(Object.keys(devDeps
|
|
107
|
+
return new Set(Object.keys(devDeps));
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
function resolveN8nFilePaths(packageJsonPath: string, filePaths: string[]): string[] {
|
|
@@ -301,10 +301,7 @@ function checkCredentialUsageInFile(
|
|
|
301
301
|
enter(node: TSESTree.Node) {
|
|
302
302
|
if (node.type === AST_NODE_TYPES.ClassDeclaration && isNodeTypeClass(node)) {
|
|
303
303
|
const descriptionProperty = findClassProperty(node, 'description');
|
|
304
|
-
if (
|
|
305
|
-
!descriptionProperty?.value ||
|
|
306
|
-
descriptionProperty.value.type !== AST_NODE_TYPES.ObjectExpression
|
|
307
|
-
) {
|
|
304
|
+
if (descriptionProperty?.value?.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
308
305
|
return;
|
|
309
306
|
}
|
|
310
307
|
|
package/dist/plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ai-node-package-json.js","sourceRoot":"","sources":["../../src/rules/ai-node-package-json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;IAC/C,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EACV,6GAA6G;SAC9G;QACD,QAAQ,EAAE;YACT,cAAc,EACb,iJAAiJ;YAClJ,iBAAiB,EAChB,4HAA4H;YAC7H,iBAAiB,EAAE,qEAAqE;YACxF,aAAa,EACZ,6FAA6F;SAC9F;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,gDAAgD;gBAChD,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,cAAc,CAAC,QAAQ,EAAE,CAAC;oBACnD,OAAO;gBACR,CAAC;gBAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC9C,MAAM,SAAS,GACd,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAEhF,MAAM,oBAAoB,GAAG,SAAS;oBACrC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,CAAC;oBACjD,CAAC,CAAC,IAAI,CAAC;gBAER,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;gBAC5E,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;gBAExE,MAAM,mBAAmB,GAAG,oBAAoB,KAAK,IAAI,CAAC;gBAC1D,MAAM,mBAAmB,GACxB,oBAAoB,EAAE,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;oBACpE,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,IAAI;wBACzE,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC;gBAExE,oEAAoE;gBACpE,IAAI,wBAAwB,EAAE,CAAC;oBAC9B,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI,EAAE,wBAAwB;wBAC9B,SAAS,EAAE,eAAe;qBAC1B,CAAC,CAAC;gBACJ,CAAC;gBAED,+DAA+D;gBAC/D,IAAI,mBAAmB,EAAE,CAAC;oBACzB,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC;oBAC7C,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBACtF,OAAO,CAAC,MAAM,CAAC;4BACd,IAAI,EAAE,oBAAoB;4BAC1B,SAAS,EAAE,mBAAmB;4BAC9B,IAAI,EAAE;gCACL,KAAK,EAAE,MAAM,CACZ,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAC3E;6BACD;yBACD,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;gBAED,2EAA2E;gBAC3E,IAAI,mBAAmB,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACjD,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI,EAAE,oBAAoB;wBAC1B,SAAS,EAAE,gBAAgB;qBAC3B,CAAC,CAAC;gBACJ,CAAC;gBAED,2EAA2E;gBAC3E,IAAI,mBAAmB,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACjD,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI,EAAE,oBAAoB;wBAC1B,SAAS,EAAE,mBAAmB;qBAC9B,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cred-class-field-icon-missing.js","sourceRoot":"","sources":["../../src/rules/cred-class-field-icon-missing.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,EACV,UAAU,GACV,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAU,CAAC;IACvD,IAAI,EAAE,+BAA+B;IACrC,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EAAE,uDAAuD;SACpE;QACD,QAAQ,EAAE;YACT,WAAW,EAAE,sDAAsD;YACnE,cAAc,EAAE,oCAAoC;SACpD;QACD,MAAM,EAAE,EAAE;QACV,cAAc,EAAE,IAAI;KACpB;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACb,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,CAAC;QACX,CAAC;QAED,OAAO;YACN,gBAAgB,CAAC,IAAI;gBACpB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,OAAO;gBACR,CAAC;gBAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACrD,IAAI,YAAY,EAAE,KAAK,EAAE,CAAC;oBACzB,OAAO;gBACR,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC;oBACd,IAAI;oBACJ,SAAS,EAAE,aAAa;oBACxB,OAAO,EAAE;wBACR;4BACC,SAAS,EAAE,gBAAgB;4BAC3B,GAAG,CAAC,KAAK;gCACR,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gCACjC,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gCACrD,IAAI,YAAY,EAAE,CAAC;oCAClB,OAAO,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAC;gCAC/E,CAAC;gCACD,OAAO,IAAI,CAAC;4BACb,CAAC;yBACD;qBACD;iBACD,CAAC,CAAC;YACJ,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cred-class-oauth2-naming.js","sourceRoot":"","sources":["../../src/rules/cred-class-oauth2-naming.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACN,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,UAAU,GACV,MAAM,mBAAmB,CAAC;AAE3B,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC,SAAS,cAAc,CAAC,KAAa;IACpC,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAiC;IAC/D,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,cAAc,CAAC,eAAe;QAAE,OAAO,EAAE,CAAC;IACnE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,IAAI,KAAK,KAAK,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAiB;IAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,SAAS,WAAW,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAC;IACnD,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EACV,uFAAuF;SACxF;QACD,QAAQ,EAAE;YACT,sBAAsB,EAAE,mEAAmE;YAC3F,iBAAiB,EAAE,kEAAkE;YACrF,wBAAwB,EACvB,yEAAyE;SAC1E;QACD,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,MAAM;KACf;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACb,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,CAAC;QACX,CAAC;QAED,OAAO;YACN,gBAAgB,CAAC,IAAI;gBACpB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;oBAAE,OAAO;gBACzC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAAE,OAAO;gBAErB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;gBAC/B,MAAM,cAAc,GACnB,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAEnF,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAEzF,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBACnE,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,KAAK;oBAClD,CAAC,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,KAAK,CAAC;oBAClD,CAAC,CAAC,IAAI,CAAC;gBAER,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC3D,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAEpF,MAAM,kBAAkB,GACvB,cAAc,CAAC,SAAS,CAAC;oBACzB,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,CAAC,cAAc,CAAC,CAAC;oBAC3D,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;oBAClC,CAAC,SAAS,KAAK,IAAI,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC,gBAAgB,KAAK,IAAI,IAAI,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAEjE,IAAI,CAAC,kBAAkB;oBAAE,OAAO;gBAEhC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtC,MAAM,cAAc,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;oBAEvD,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI,EAAE,IAAI,CAAC,EAAE;wBACb,SAAS,EAAE,wBAAwB;wBACnC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;wBACzB,GAAG,CAAC,KAAK;4BACR,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAG,EAAE,cAAc,CAAC,CAAC;wBACpD,CAAC;qBACD,CAAC,CAAC;gBACJ,CAAC;gBAED,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;oBACtD,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI,EAAE,YAAa,CAAC,KAAM;wBAC1B,SAAS,EAAE,mBAAmB;wBAC9B,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;qBAC1B,CAAC,CAAC;gBACJ,CAAC;gBAED,IAAI,gBAAgB,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACpE,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI,EAAE,mBAAoB,CAAC,KAAM;wBACjC,SAAS,EAAE,0BAA0B;wBACrC,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;qBACjC,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credential-documentation-url.js","sourceRoot":"","sources":["../../src/rules/credential-documentation-url.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credential-password-field.js","sourceRoot":"","sources":["../../src/rules/credential-password-field.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credential-test-required.js","sourceRoot":"","sources":["../../src/rules/credential-test-required.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credential-unnecessary-password.js","sourceRoot":"","sources":["../../src/rules/credential-unnecessary-password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,UAAU,GACV,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,iCAAiC,GAAG,UAAU,CAAC;IAC3D,IAAI,EAAE,iCAAiC;IACvC,IAAI,EAAE;QACL,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACL,WAAW,EACV,sFAAsF;SACvF;QACD,QAAQ,EAAE;YACT,yBAAyB,EACxB,+IAA+I;SAChJ;QACD,MAAM,EAAE,EAAE;KACV;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACb,OAAO;YACN,gBAAgB,CAAC,IAAI;gBACpB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,OAAO;gBACR,CAAC;gBAED,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACjE,IACC,CAAC,kBAAkB,EAAE,KAAK;oBAC1B,kBAAkB,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,cAAc,CAAC,eAAe,EACxE,CAAC;oBACF,OAAO;gBACR,CAAC;gBAED,KAAK,MAAM,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACzD,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;wBAChE,SAAS;oBACV,CAAC;oBAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBACzD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAElF,IAAI,CAAC,SAAS,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;wBACnD,SAAS;oBACV,CAAC;oBAED,6EAA6E;oBAC7E,+EAA+E;oBAC/E,+EAA+E;oBAC/E,wEAAwE;oBACxE,uEAAuE;oBACvE,gDAAgD;oBAChD,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;wBACrD,OAAO,CAAC,MAAM,CAAC;4BACd,IAAI,EAAE,OAAO;4BACb,SAAS,EAAE,2BAA2B;4BACtC,IAAI,EAAE,EAAE,SAAS,EAAE;yBACnB,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon-prefer-themed-variants.js","sourceRoot":"","sources":["../../src/rules/icon-prefer-themed-variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EACN,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,UAAU,GACV,MAAM,mBAAmB,CAAC;AAE3B,MAAM,QAAQ,GAAG;IAChB,qBAAqB,EACpB,kJAAkJ;CAC1I,CAAC;AAEX,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC;IACtD,IAAI,EAAE,6BAA6B;IACnC,IAAI,EAAE;QACL,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACL,WAAW,EACV,kGAAkG;SACnG;QACD,QAAQ;QACR,MAAM,EAAE,EAAE;KACV;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACb,IACC,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;YACzC,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAC/C,CAAC;YACF,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,cAAc,GAAG,CAAC,SAAwB,EAAE,EAAE;YACnD,IACC,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,cAAc,CAAC,OAAO;gBAClD,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EAClC,CAAC;gBACF,OAAO,CAAC,MAAM,CAAC;oBACd,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,uBAAuB;iBAClC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC,CAAC;QAEF,OAAO;YACN,gBAAgB,CAAC,IAAI;gBACpB,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;oBACnE,IAAI,mBAAmB,EAAE,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;wBACnF,OAAO;oBACR,CAAC;oBAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBAC3E,IAAI,YAAY,EAAE,CAAC;wBAClB,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpC,CAAC;gBACF,CAAC;qBAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxC,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACrD,IAAI,YAAY,EAAE,KAAK,EAAE,CAAC;wBACzB,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpC,CAAC;gBACF,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
|