@futdevpro/dynamo-eslint 1.14.25 → 1.14.27
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/.github/workflows/main.yml +5 -0
- package/build/configs/base.js +1 -0
- package/build/configs/base.js.map +1 -1
- package/build/plugin/index.d.ts +2 -0
- package/build/plugin/index.d.ts.map +1 -1
- package/build/plugin/index.js +3 -0
- package/build/plugin/index.js.map +1 -1
- package/build/plugin/rules/no-getter-logic.d.ts +4 -0
- package/build/plugin/rules/no-getter-logic.d.ts.map +1 -0
- package/build/plugin/rules/no-getter-logic.js +176 -0
- package/build/plugin/rules/no-getter-logic.js.map +1 -0
- package/build/plugin/rules/no-getter-logic.spec.d.ts +2 -0
- package/build/plugin/rules/no-getter-logic.spec.d.ts.map +1 -0
- package/build/plugin/rules/no-getter-logic.spec.js +461 -0
- package/build/plugin/rules/no-getter-logic.spec.js.map +1 -0
- package/build/plugin/rules/require-jsdoc-description.d.ts.map +1 -1
- package/build/plugin/rules/require-jsdoc-description.js +53 -10
- package/build/plugin/rules/require-jsdoc-description.js.map +1 -1
- package/build/plugin/rules/require-jsdoc-description.spec.js +94 -0
- package/build/plugin/rules/require-jsdoc-description.spec.js.map +1 -1
- package/futdevpro-dynamo-eslint-1.14.27.tgz +0 -0
- package/package.json +1 -1
- package/src/configs/base.ts +1 -0
- package/src/plugin/index.ts +3 -0
- package/src/plugin/rules/no-getter-logic.spec.ts +520 -0
- package/src/plugin/rules/no-getter-logic.ts +201 -0
- package/src/plugin/rules/require-jsdoc-description.spec.ts +111 -0
- package/src/plugin/rules/require-jsdoc-description.ts +61 -12
- package/futdevpro-dynamo-eslint-1.14.25.tgz +0 -0
|
@@ -149,6 +149,11 @@ jobs:
|
|
|
149
149
|
run: |
|
|
150
150
|
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
|
|
151
151
|
|
|
152
|
+
- name: Get safe-chain version
|
|
153
|
+
run: |
|
|
154
|
+
VERSION=$(curl -s https://api.github.com/repos/AikidoSec/safe-chain/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' | sed 's/^v//')
|
|
155
|
+
echo "SAFE_CHAIN_VERSION=$VERSION" >> $GITHUB_ENV
|
|
156
|
+
|
|
152
157
|
- name: Install safe-chain
|
|
153
158
|
run: |
|
|
154
159
|
curl -fsSL https://raw.githubusercontent.com/AikidoSec/safe-chain/main/install-scripts/install-safe-chain.sh | sh -s -- --ci
|
package/build/configs/base.js
CHANGED
|
@@ -110,6 +110,7 @@ module.exports = [
|
|
|
110
110
|
'@futdevpro/dynamo/require-jsdoc-description': ['warn', { scope: 'public' }],
|
|
111
111
|
'@futdevpro/dynamo/prefer-enum-over-string-union': ['warn', { minValues: 3 }],
|
|
112
112
|
'@futdevpro/dynamo/require-test-description-prefix': ['warn', { prefix: '| ' }],
|
|
113
|
+
'@futdevpro/dynamo/no-getter-logic': 'warn',
|
|
113
114
|
},
|
|
114
115
|
},
|
|
115
116
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/configs/base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/configs/base.ts"],"names":[],"mappings":"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"}
|
package/build/plugin/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ declare const _default: {
|
|
|
8
8
|
'require-jsdoc-description': Rule.RuleModule;
|
|
9
9
|
'prefer-enum-over-string-union': Rule.RuleModule;
|
|
10
10
|
'require-test-description-prefix': Rule.RuleModule;
|
|
11
|
+
'no-getter-logic': Rule.RuleModule;
|
|
11
12
|
'naming-patterns': Rule.RuleModule;
|
|
12
13
|
};
|
|
13
14
|
configs: {
|
|
@@ -21,6 +22,7 @@ declare const _default: {
|
|
|
21
22
|
'@futdevpro/dynamo/require-jsdoc-description': string;
|
|
22
23
|
'@futdevpro/dynamo/prefer-enum-over-string-union': string;
|
|
23
24
|
'@futdevpro/dynamo/require-test-description-prefix': string;
|
|
25
|
+
'@futdevpro/dynamo/no-getter-logic': string;
|
|
24
26
|
'@futdevpro/dynamo/naming-patterns': string;
|
|
25
27
|
};
|
|
26
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,kBA+BE"}
|
package/build/plugin/index.js
CHANGED
|
@@ -9,6 +9,7 @@ const prefer_interface_over_duplicate_types_1 = tslib_1.__importDefault(require(
|
|
|
9
9
|
const require_jsdoc_description_1 = tslib_1.__importDefault(require("./rules/require-jsdoc-description"));
|
|
10
10
|
const prefer_enum_over_string_union_1 = tslib_1.__importDefault(require("./rules/prefer-enum-over-string-union"));
|
|
11
11
|
const require_test_description_prefix_1 = tslib_1.__importDefault(require("./rules/require-test-description-prefix"));
|
|
12
|
+
const no_getter_logic_1 = tslib_1.__importDefault(require("./rules/no-getter-logic"));
|
|
12
13
|
module.exports = {
|
|
13
14
|
rules: {
|
|
14
15
|
'explicit-types': explicit_types_1.default,
|
|
@@ -19,6 +20,7 @@ module.exports = {
|
|
|
19
20
|
'require-jsdoc-description': require_jsdoc_description_1.default,
|
|
20
21
|
'prefer-enum-over-string-union': prefer_enum_over_string_union_1.default,
|
|
21
22
|
'require-test-description-prefix': require_test_description_prefix_1.default,
|
|
23
|
+
'no-getter-logic': no_getter_logic_1.default,
|
|
22
24
|
'naming-patterns': naming_patterns_1.default,
|
|
23
25
|
},
|
|
24
26
|
configs: {
|
|
@@ -32,6 +34,7 @@ module.exports = {
|
|
|
32
34
|
'@futdevpro/dynamo/require-jsdoc-description': 'warn',
|
|
33
35
|
'@futdevpro/dynamo/prefer-enum-over-string-union': 'warn',
|
|
34
36
|
'@futdevpro/dynamo/require-test-description-prefix': 'warn',
|
|
37
|
+
'@futdevpro/dynamo/no-getter-logic': 'warn',
|
|
35
38
|
'@futdevpro/dynamo/naming-patterns': 'warn',
|
|
36
39
|
},
|
|
37
40
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":";;AAAA,oFAAuD;AACvD,uFAA0D;AAC1D,sFAAyD;AACzD,2FAA6D;AAC7D,uFAA4D;AAC5D,kIAAgF;AAChF,0GAAiE;AACjE,kHAAmE;AACnE,sHAA4E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":";;AAAA,oFAAuD;AACvD,uFAA0D;AAC1D,sFAAyD;AACzD,2FAA6D;AAC7D,uFAA4D;AAC5D,kIAAgF;AAChF,0GAAiE;AACjE,kHAAmE;AACnE,sHAA4E;AAC5E,sFAAwD;AAExD,iBAAS;IACP,KAAK,EAAE;QACL,gBAAgB,EAAE,wBAAiB;QACnC,cAAc,EAAE,sBAAe;QAC/B,gBAAgB,EAAE,wBAAgB;QAClC,cAAc,EAAE,sBAAiB;QACjC,uCAAuC,EAAE,+CAAmB;QAC5D,2BAA2B,EAAE,mCAAgB;QAC7C,+BAA+B,EAAE,uCAAc;QAC/C,iCAAiC,EAAE,yCAAqB;QACxD,iBAAiB,EAAE,yBAAiB;QAEpC,iBAAiB,EAAE,yBAAkB;KACtC;IACD,OAAO,EAAE;QACP,WAAW,EAAE;YACX,KAAK,EAAE;gBACL,kCAAkC,EAAE,MAAM;gBAC1C,gCAAgC,EAAE,MAAM;gBACxC,kCAAkC,EAAE,MAAM;gBAC1C,gCAAgC,EAAE,MAAM;gBACxC,yDAAyD,EAAE,MAAM;gBACjE,6CAA6C,EAAE,MAAM;gBACrD,iDAAiD,EAAE,MAAM;gBACzD,mDAAmD,EAAE,MAAM;gBAC3D,mCAAmC,EAAE,MAAM;gBAE3C,mCAAmC,EAAE,MAAM;aAC5C;SACF;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-getter-logic.d.ts","sourceRoot":"","sources":["../../../src/plugin/rules/no-getter-logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA0J9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UA4ChB,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Check if a node type is allowed in getter (simple property mapping only)
|
|
5
|
+
*/
|
|
6
|
+
function isAllowedNodeType(nodeType) {
|
|
7
|
+
const allowedTypes = [
|
|
8
|
+
'ReturnStatement',
|
|
9
|
+
'MemberExpression',
|
|
10
|
+
'Identifier',
|
|
11
|
+
'ThisExpression',
|
|
12
|
+
'Literal',
|
|
13
|
+
'BlockStatement',
|
|
14
|
+
'ExpressionStatement',
|
|
15
|
+
];
|
|
16
|
+
return allowedTypes.includes(nodeType);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Check if a node type is explicitly forbidden (logic, calculations, function calls)
|
|
20
|
+
*/
|
|
21
|
+
function isForbiddenNodeType(nodeType) {
|
|
22
|
+
const forbiddenTypes = [
|
|
23
|
+
'CallExpression',
|
|
24
|
+
'BinaryExpression',
|
|
25
|
+
'UnaryExpression',
|
|
26
|
+
'ConditionalExpression',
|
|
27
|
+
'LogicalExpression',
|
|
28
|
+
'AssignmentExpression',
|
|
29
|
+
'UpdateExpression',
|
|
30
|
+
'NewExpression',
|
|
31
|
+
'YieldExpression',
|
|
32
|
+
'AwaitExpression',
|
|
33
|
+
'TaggedTemplateExpression',
|
|
34
|
+
'TemplateLiteral',
|
|
35
|
+
'SequenceExpression',
|
|
36
|
+
'SpreadElement',
|
|
37
|
+
'RestElement',
|
|
38
|
+
];
|
|
39
|
+
return forbiddenTypes.includes(nodeType);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Recursively check if a node contains only allowed patterns
|
|
43
|
+
* Returns true if forbidden node is found
|
|
44
|
+
*/
|
|
45
|
+
function containsForbiddenNode(node) {
|
|
46
|
+
if (!node || typeof node !== 'object') {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
// Check current node type
|
|
50
|
+
if (node.type && isForbiddenNodeType(node.type)) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
// Special handling for MemberExpression - allow property access but check nested calls
|
|
54
|
+
if (node.type === 'MemberExpression') {
|
|
55
|
+
// Check if this is a function call disguised as property access
|
|
56
|
+
// This will be caught by parent CallExpression, so we just check children
|
|
57
|
+
if (node.object && containsForbiddenNode(node.object)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (node.property && containsForbiddenNode(node.property)) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
// Allow computed property access like [index] but check the index expression
|
|
64
|
+
if (node.computed && node.property && containsForbiddenNode(node.property)) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
// Special handling for ReturnStatement - check the argument
|
|
70
|
+
if (node.type === 'ReturnStatement') {
|
|
71
|
+
if (node.argument && containsForbiddenNode(node.argument)) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
// Special handling for BlockStatement - check all statements
|
|
77
|
+
if (node.type === 'BlockStatement') {
|
|
78
|
+
if (node.body && Array.isArray(node.body)) {
|
|
79
|
+
for (const statement of node.body) {
|
|
80
|
+
if (containsForbiddenNode(statement)) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
// Special handling for ExpressionStatement - check the expression
|
|
88
|
+
if (node.type === 'ExpressionStatement') {
|
|
89
|
+
if (node.expression && containsForbiddenNode(node.expression)) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
// For other node types, recursively check all properties
|
|
95
|
+
for (const key in node) {
|
|
96
|
+
if (key === 'parent' || key === 'range' || key === 'loc') {
|
|
97
|
+
continue; // Skip parent references and location data
|
|
98
|
+
}
|
|
99
|
+
const value = node[key];
|
|
100
|
+
if (Array.isArray(value)) {
|
|
101
|
+
for (const item of value) {
|
|
102
|
+
if (containsForbiddenNode(item)) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (value && typeof value === 'object') {
|
|
108
|
+
if (containsForbiddenNode(value)) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get getter name for error message
|
|
117
|
+
*/
|
|
118
|
+
function getGetterName(node) {
|
|
119
|
+
try {
|
|
120
|
+
if (node.key && node.key.name) {
|
|
121
|
+
return node.key.name;
|
|
122
|
+
}
|
|
123
|
+
if (node.key && node.key.type === 'Identifier') {
|
|
124
|
+
return node.key.name || 'unknown';
|
|
125
|
+
}
|
|
126
|
+
return 'unknown';
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
console.error('[no-getter-logic] Error in getGetterName:', error);
|
|
130
|
+
return 'unknown';
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const rule = {
|
|
134
|
+
meta: {
|
|
135
|
+
type: 'suggestion',
|
|
136
|
+
docs: {
|
|
137
|
+
description: 'Getters should only contain simple property mappings, no logic, calculations, or function calls',
|
|
138
|
+
recommended: true,
|
|
139
|
+
},
|
|
140
|
+
schema: [],
|
|
141
|
+
messages: {
|
|
142
|
+
noLogic: 'Getter "{{name}}" should only contain simple property mappings, no logic, calculations, or function calls.',
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
create(context) {
|
|
146
|
+
return {
|
|
147
|
+
MethodDefinition(node, _context, _sourceCode) {
|
|
148
|
+
try {
|
|
149
|
+
// Only check getters
|
|
150
|
+
if (node.kind !== 'get') {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Check if getter has a body
|
|
154
|
+
if (!node.value || !node.value.body) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const body = node.value.body;
|
|
158
|
+
// Check for forbidden nodes in the getter body
|
|
159
|
+
if (containsForbiddenNode(body)) {
|
|
160
|
+
const getterName = getGetterName(node);
|
|
161
|
+
context.report({
|
|
162
|
+
node: body,
|
|
163
|
+
messageId: 'noLogic',
|
|
164
|
+
data: { name: getterName },
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
console.error('[no-getter-logic] Error in MethodDefinition visitor:', error);
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
exports.default = rule;
|
|
176
|
+
//# sourceMappingURL=no-getter-logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-getter-logic.js","sourceRoot":"","sources":["../../../src/plugin/rules/no-getter-logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-getter-logic.spec.d.ts","sourceRoot":"","sources":["../../../src/plugin/rules/no-getter-logic.spec.ts"],"names":[],"mappings":""}
|