invar-tools 1.17.2__py3-none-any.whl → 1.17.3__py3-none-any.whl
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.
- invar/node_tools/.gitignore +10 -6
- invar/node_tools/eslint-plugin/rules/__tests__/behavior.test.js +1321 -0
- invar/node_tools/eslint-plugin/rules/__tests__/behavior.test.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/__tests__/e2e-scenarios.test.js +414 -0
- invar/node_tools/eslint-plugin/rules/__tests__/e2e-scenarios.test.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/function-lengths.js +142 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/function-lengths.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/has-io-imports.js +15 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/has-io-imports.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/valid-small.js +27 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/valid-small.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/exported-functions.js +43 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/exported-functions.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/shell/with-io.js +27 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/shell/with-io.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/tests/large.test.js +260 -0
- invar/node_tools/eslint-plugin/rules/__tests__/fixtures/tests/large.test.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/max-file-lines.js +105 -0
- invar/node_tools/eslint-plugin/rules/max-file-lines.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/max-function-lines.js +133 -0
- invar/node_tools/eslint-plugin/rules/max-function-lines.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/no-any-in-schema.js +39 -0
- invar/node_tools/eslint-plugin/rules/no-any-in-schema.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/no-empty-schema.js +69 -0
- invar/node_tools/eslint-plugin/rules/no-empty-schema.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/no-impure-calls-in-core.js +52 -0
- invar/node_tools/eslint-plugin/rules/no-impure-calls-in-core.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/no-io-in-core.js +99 -0
- invar/node_tools/eslint-plugin/rules/no-io-in-core.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/no-pure-logic-in-shell.js +197 -0
- invar/node_tools/eslint-plugin/rules/no-pure-logic-in-shell.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/no-redundant-type-schema.js +99 -0
- invar/node_tools/eslint-plugin/rules/no-redundant-type-schema.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/no-runtime-imports.js +66 -0
- invar/node_tools/eslint-plugin/rules/no-runtime-imports.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/require-complete-validation.js +104 -0
- invar/node_tools/eslint-plugin/rules/require-complete-validation.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/require-jsdoc-example.js +81 -0
- invar/node_tools/eslint-plugin/rules/require-jsdoc-example.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/require-schema-validation.js +308 -0
- invar/node_tools/eslint-plugin/rules/require-schema-validation.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/shell-complexity.js +273 -0
- invar/node_tools/eslint-plugin/rules/shell-complexity.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/shell-result-type.js +138 -0
- invar/node_tools/eslint-plugin/rules/shell-result-type.js.map +1 -0
- invar/node_tools/eslint-plugin/rules/thin-entry-points.js +174 -0
- invar/node_tools/eslint-plugin/rules/thin-entry-points.js.map +1 -0
- invar/node_tools/eslint-plugin/utils/layer-detection.js +91 -0
- invar/node_tools/eslint-plugin/utils/layer-detection.js.map +1 -0
- invar/node_tools/eslint-plugin/utils/math-example.js +31 -0
- invar/node_tools/eslint-plugin/utils/math-example.js.map +1 -0
- {invar_tools-1.17.2.dist-info → invar_tools-1.17.3.dist-info}/METADATA +1 -1
- {invar_tools-1.17.2.dist-info → invar_tools-1.17.3.dist-info}/RECORD +58 -8
- {invar_tools-1.17.2.dist-info → invar_tools-1.17.3.dist-info}/WHEEL +0 -0
- {invar_tools-1.17.2.dist-info → invar_tools-1.17.3.dist-info}/entry_points.txt +0 -0
- {invar_tools-1.17.2.dist-info → invar_tools-1.17.3.dist-info}/licenses/LICENSE +0 -0
- {invar_tools-1.17.2.dist-info → invar_tools-1.17.3.dist-info}/licenses/LICENSE-GPL +0 -0
- {invar_tools-1.17.2.dist-info → invar_tools-1.17.3.dist-info}/licenses/NOTICE +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valid-small.js","sourceRoot":"","sources":["../../../../../src/rules/__tests__/fixtures/core/valid-small.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,CAAS;IAC3C,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,+CAA+C;AAC/C,SAAS,MAAM;IACb,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test require-jsdoc-example rule
|
|
3
|
+
* Tests exported functions and arrow functions
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Valid: Exported function with @example
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* validFunction() // => 'valid'
|
|
10
|
+
*/
|
|
11
|
+
export function validFunction() {
|
|
12
|
+
return 'valid';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Invalid: Exported function WITHOUT @example
|
|
16
|
+
*/
|
|
17
|
+
export function invalidFunction() {
|
|
18
|
+
return 'invalid';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Valid: Exported arrow function with @example
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* validArrow() // => 'valid'
|
|
25
|
+
*/
|
|
26
|
+
export const validArrow = () => {
|
|
27
|
+
return 'valid';
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Invalid: Exported arrow function WITHOUT @example
|
|
31
|
+
*/
|
|
32
|
+
export const invalidArrow = () => {
|
|
33
|
+
return 'invalid';
|
|
34
|
+
};
|
|
35
|
+
// Valid: Non-exported function without @example (allowed)
|
|
36
|
+
function privateFunction() {
|
|
37
|
+
return 'private';
|
|
38
|
+
}
|
|
39
|
+
// Valid: Non-exported arrow function without @example (allowed)
|
|
40
|
+
const privateArrow = () => {
|
|
41
|
+
return 'private';
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=exported-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exported-functions.js","sourceRoot":"","sources":["../../../../src/rules/__tests__/fixtures/exported-functions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,0DAA0D;AAC1D,SAAS,eAAe;IACtB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gEAAgE;AAChE,MAAM,YAAY,GAAG,GAAW,EAAE;IAChC,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Valid Shell file - I/O imports allowed
|
|
3
|
+
* Tests: no-io-in-core (should pass in /shell/ directory)
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs'; // ✅ Allowed in Shell
|
|
6
|
+
import axios from 'axios'; // ✅ Allowed in Shell
|
|
7
|
+
/**
|
|
8
|
+
* Shell function with I/O operations
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* readConfig('/path') // => { ... }
|
|
12
|
+
*/
|
|
13
|
+
export function readConfig(path) {
|
|
14
|
+
const content = fs.readFileSync(path, 'utf-8');
|
|
15
|
+
return JSON.parse(content);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Shell function with HTTP operations
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* fetchData('url') // => Promise<data>
|
|
22
|
+
*/
|
|
23
|
+
export async function fetchData(url) {
|
|
24
|
+
const response = await axios.get(url);
|
|
25
|
+
return response.data;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=with-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-io.js","sourceRoot":"","sources":["../../../../../src/rules/__tests__/fixtures/shell/with-io.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,qBAAqB;AAE/C,OAAO,KAAK,MAAM,OAAO,CAAC,CAAC,qBAAqB;AAGhD;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Valid Tests file - tests layer has highest limits
|
|
3
|
+
* Tests: layer-detection (tests), max-file-lines (tests: 1300), max-function-lines (tests: 260)
|
|
4
|
+
*/
|
|
5
|
+
import { describe, it, expect } from 'vitest';
|
|
6
|
+
describe('Example test suite', () => {
|
|
7
|
+
it('should pass', () => {
|
|
8
|
+
expect(true).toBe(true);
|
|
9
|
+
});
|
|
10
|
+
/**
|
|
11
|
+
* Large test function - valid for tests layer (260 line limit)
|
|
12
|
+
* This would fail in Core (65) or Shell (130)
|
|
13
|
+
*/
|
|
14
|
+
it('large test function - within 260 line limit', () => {
|
|
15
|
+
const data = [];
|
|
16
|
+
// Line 20
|
|
17
|
+
data.push(1);
|
|
18
|
+
data.push(2);
|
|
19
|
+
data.push(3);
|
|
20
|
+
data.push(4);
|
|
21
|
+
data.push(5);
|
|
22
|
+
data.push(6);
|
|
23
|
+
data.push(7);
|
|
24
|
+
data.push(8);
|
|
25
|
+
data.push(9);
|
|
26
|
+
data.push(10); // Line 30
|
|
27
|
+
data.push(11);
|
|
28
|
+
data.push(12);
|
|
29
|
+
data.push(13);
|
|
30
|
+
data.push(14);
|
|
31
|
+
data.push(15);
|
|
32
|
+
data.push(16);
|
|
33
|
+
data.push(17);
|
|
34
|
+
data.push(18);
|
|
35
|
+
data.push(19);
|
|
36
|
+
data.push(20); // Line 40
|
|
37
|
+
data.push(21);
|
|
38
|
+
data.push(22);
|
|
39
|
+
data.push(23);
|
|
40
|
+
data.push(24);
|
|
41
|
+
data.push(25);
|
|
42
|
+
data.push(26);
|
|
43
|
+
data.push(27);
|
|
44
|
+
data.push(28);
|
|
45
|
+
data.push(29);
|
|
46
|
+
data.push(30); // Line 50
|
|
47
|
+
data.push(31);
|
|
48
|
+
data.push(32);
|
|
49
|
+
data.push(33);
|
|
50
|
+
data.push(34);
|
|
51
|
+
data.push(35);
|
|
52
|
+
data.push(36);
|
|
53
|
+
data.push(37);
|
|
54
|
+
data.push(38);
|
|
55
|
+
data.push(39);
|
|
56
|
+
data.push(40); // Line 60
|
|
57
|
+
data.push(41);
|
|
58
|
+
data.push(42);
|
|
59
|
+
data.push(43);
|
|
60
|
+
data.push(44);
|
|
61
|
+
data.push(45);
|
|
62
|
+
data.push(46);
|
|
63
|
+
data.push(47);
|
|
64
|
+
data.push(48);
|
|
65
|
+
data.push(49);
|
|
66
|
+
data.push(50); // Line 70
|
|
67
|
+
data.push(51);
|
|
68
|
+
data.push(52);
|
|
69
|
+
data.push(53);
|
|
70
|
+
data.push(54);
|
|
71
|
+
data.push(55);
|
|
72
|
+
data.push(56);
|
|
73
|
+
data.push(57);
|
|
74
|
+
data.push(58);
|
|
75
|
+
data.push(59);
|
|
76
|
+
data.push(60); // Line 80
|
|
77
|
+
data.push(61);
|
|
78
|
+
data.push(62);
|
|
79
|
+
data.push(63);
|
|
80
|
+
data.push(64);
|
|
81
|
+
data.push(65);
|
|
82
|
+
data.push(66);
|
|
83
|
+
data.push(67);
|
|
84
|
+
data.push(68);
|
|
85
|
+
data.push(69);
|
|
86
|
+
data.push(70); // Line 90
|
|
87
|
+
data.push(71);
|
|
88
|
+
data.push(72);
|
|
89
|
+
data.push(73);
|
|
90
|
+
data.push(74);
|
|
91
|
+
data.push(75);
|
|
92
|
+
data.push(76);
|
|
93
|
+
data.push(77);
|
|
94
|
+
data.push(78);
|
|
95
|
+
data.push(79);
|
|
96
|
+
data.push(80); // Line 100
|
|
97
|
+
data.push(81);
|
|
98
|
+
data.push(82);
|
|
99
|
+
data.push(83);
|
|
100
|
+
data.push(84);
|
|
101
|
+
data.push(85);
|
|
102
|
+
data.push(86);
|
|
103
|
+
data.push(87);
|
|
104
|
+
data.push(88);
|
|
105
|
+
data.push(89);
|
|
106
|
+
data.push(90); // Line 110
|
|
107
|
+
data.push(91);
|
|
108
|
+
data.push(92);
|
|
109
|
+
data.push(93);
|
|
110
|
+
data.push(94);
|
|
111
|
+
data.push(95);
|
|
112
|
+
data.push(96);
|
|
113
|
+
data.push(97);
|
|
114
|
+
data.push(98);
|
|
115
|
+
data.push(99);
|
|
116
|
+
data.push(100); // Line 120
|
|
117
|
+
data.push(101);
|
|
118
|
+
data.push(102);
|
|
119
|
+
data.push(103);
|
|
120
|
+
data.push(104);
|
|
121
|
+
data.push(105);
|
|
122
|
+
data.push(106);
|
|
123
|
+
data.push(107);
|
|
124
|
+
data.push(108);
|
|
125
|
+
data.push(109);
|
|
126
|
+
data.push(110); // Line 130
|
|
127
|
+
data.push(111);
|
|
128
|
+
data.push(112);
|
|
129
|
+
data.push(113);
|
|
130
|
+
data.push(114);
|
|
131
|
+
data.push(115);
|
|
132
|
+
data.push(116);
|
|
133
|
+
data.push(117);
|
|
134
|
+
data.push(118);
|
|
135
|
+
data.push(119);
|
|
136
|
+
data.push(120); // Line 140
|
|
137
|
+
data.push(121);
|
|
138
|
+
data.push(122);
|
|
139
|
+
data.push(123);
|
|
140
|
+
data.push(124);
|
|
141
|
+
data.push(125);
|
|
142
|
+
data.push(126);
|
|
143
|
+
data.push(127);
|
|
144
|
+
data.push(128);
|
|
145
|
+
data.push(129);
|
|
146
|
+
data.push(130); // Line 150
|
|
147
|
+
data.push(131);
|
|
148
|
+
data.push(132);
|
|
149
|
+
data.push(133);
|
|
150
|
+
data.push(134);
|
|
151
|
+
data.push(135);
|
|
152
|
+
data.push(136);
|
|
153
|
+
data.push(137);
|
|
154
|
+
data.push(138);
|
|
155
|
+
data.push(139);
|
|
156
|
+
data.push(140); // Line 160
|
|
157
|
+
data.push(141);
|
|
158
|
+
data.push(142);
|
|
159
|
+
data.push(143);
|
|
160
|
+
data.push(144);
|
|
161
|
+
data.push(145);
|
|
162
|
+
data.push(146);
|
|
163
|
+
data.push(147);
|
|
164
|
+
data.push(148);
|
|
165
|
+
data.push(149);
|
|
166
|
+
data.push(150); // Line 170
|
|
167
|
+
data.push(151);
|
|
168
|
+
data.push(152);
|
|
169
|
+
data.push(153);
|
|
170
|
+
data.push(154);
|
|
171
|
+
data.push(155);
|
|
172
|
+
data.push(156);
|
|
173
|
+
data.push(157);
|
|
174
|
+
data.push(158);
|
|
175
|
+
data.push(159);
|
|
176
|
+
data.push(160); // Line 180
|
|
177
|
+
data.push(161);
|
|
178
|
+
data.push(162);
|
|
179
|
+
data.push(163);
|
|
180
|
+
data.push(164);
|
|
181
|
+
data.push(165);
|
|
182
|
+
data.push(166);
|
|
183
|
+
data.push(167);
|
|
184
|
+
data.push(168);
|
|
185
|
+
data.push(169);
|
|
186
|
+
data.push(170); // Line 190
|
|
187
|
+
data.push(171);
|
|
188
|
+
data.push(172);
|
|
189
|
+
data.push(173);
|
|
190
|
+
data.push(174);
|
|
191
|
+
data.push(175);
|
|
192
|
+
data.push(176);
|
|
193
|
+
data.push(177);
|
|
194
|
+
data.push(178);
|
|
195
|
+
data.push(179);
|
|
196
|
+
data.push(180); // Line 200
|
|
197
|
+
data.push(181);
|
|
198
|
+
data.push(182);
|
|
199
|
+
data.push(183);
|
|
200
|
+
data.push(184);
|
|
201
|
+
data.push(185);
|
|
202
|
+
data.push(186);
|
|
203
|
+
data.push(187);
|
|
204
|
+
data.push(188);
|
|
205
|
+
data.push(189);
|
|
206
|
+
data.push(190); // Line 210
|
|
207
|
+
data.push(191);
|
|
208
|
+
data.push(192);
|
|
209
|
+
data.push(193);
|
|
210
|
+
data.push(194);
|
|
211
|
+
data.push(195);
|
|
212
|
+
data.push(196);
|
|
213
|
+
data.push(197);
|
|
214
|
+
data.push(198);
|
|
215
|
+
data.push(199);
|
|
216
|
+
data.push(200); // Line 220
|
|
217
|
+
data.push(201);
|
|
218
|
+
data.push(202);
|
|
219
|
+
data.push(203);
|
|
220
|
+
data.push(204);
|
|
221
|
+
data.push(205);
|
|
222
|
+
data.push(206);
|
|
223
|
+
data.push(207);
|
|
224
|
+
data.push(208);
|
|
225
|
+
data.push(209);
|
|
226
|
+
data.push(210); // Line 230
|
|
227
|
+
data.push(211);
|
|
228
|
+
data.push(212);
|
|
229
|
+
data.push(213);
|
|
230
|
+
data.push(214);
|
|
231
|
+
data.push(215);
|
|
232
|
+
data.push(216);
|
|
233
|
+
data.push(217);
|
|
234
|
+
data.push(218);
|
|
235
|
+
data.push(219);
|
|
236
|
+
data.push(220); // Line 240
|
|
237
|
+
data.push(221);
|
|
238
|
+
data.push(222);
|
|
239
|
+
data.push(223);
|
|
240
|
+
data.push(224);
|
|
241
|
+
data.push(225);
|
|
242
|
+
data.push(226);
|
|
243
|
+
data.push(227);
|
|
244
|
+
data.push(228);
|
|
245
|
+
data.push(229);
|
|
246
|
+
data.push(230); // Line 250
|
|
247
|
+
data.push(231);
|
|
248
|
+
data.push(232);
|
|
249
|
+
data.push(233);
|
|
250
|
+
data.push(234);
|
|
251
|
+
data.push(235);
|
|
252
|
+
data.push(236);
|
|
253
|
+
data.push(237);
|
|
254
|
+
data.push(238);
|
|
255
|
+
data.push(239);
|
|
256
|
+
data.push(240); // Line 260
|
|
257
|
+
expect(data.length).toBe(240);
|
|
258
|
+
}); // Line 262 - within 260 limit
|
|
259
|
+
});
|
|
260
|
+
//# sourceMappingURL=large.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"large.test.js","sourceRoot":"","sources":["../../../../../src/rules/__tests__/fixtures/tests/large.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH;;;OAGG;IACH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,UAAU;QACV,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;QAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;QAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;QAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC,CAAC,8BAA8B;AACpC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule: max-file-lines
|
|
3
|
+
*
|
|
4
|
+
* Enforce maximum file length with layer-based limits.
|
|
5
|
+
*
|
|
6
|
+
* TypeScript layered limits (LX-10, Python × 1.3):
|
|
7
|
+
* - Core: 650 lines (strict, pure logic)
|
|
8
|
+
* - Shell: 910 lines (I/O operations)
|
|
9
|
+
* - Tests: 1300 lines (test files)
|
|
10
|
+
* - Default: 780 lines (other files)
|
|
11
|
+
*/
|
|
12
|
+
import { getLayer, getLimits } from '../utils/layer-detection.js';
|
|
13
|
+
export const maxFileLines = {
|
|
14
|
+
meta: {
|
|
15
|
+
type: 'problem',
|
|
16
|
+
docs: {
|
|
17
|
+
description: 'Enforce maximum file length with layer-based limits',
|
|
18
|
+
recommended: true,
|
|
19
|
+
},
|
|
20
|
+
schema: [
|
|
21
|
+
{
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
max: {
|
|
25
|
+
type: 'number',
|
|
26
|
+
minimum: 1,
|
|
27
|
+
},
|
|
28
|
+
skipBlankLines: {
|
|
29
|
+
type: 'boolean',
|
|
30
|
+
},
|
|
31
|
+
skipComments: {
|
|
32
|
+
type: 'boolean',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
additionalProperties: false,
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
messages: {
|
|
39
|
+
tooManyLines: 'File has {{actual}} lines ({{layer}} layer max: {{max}}). Consider splitting into smaller modules.',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
create(context) {
|
|
43
|
+
const filename = context.filename || context.getFilename();
|
|
44
|
+
const layer = getLayer(filename);
|
|
45
|
+
const limits = getLimits(filename);
|
|
46
|
+
// Allow override via options
|
|
47
|
+
const options = context.options[0] || {};
|
|
48
|
+
const maxLines = options.max !== undefined ? options.max : limits.maxFileLines;
|
|
49
|
+
const skipBlankLines = options.skipBlankLines || false;
|
|
50
|
+
const skipComments = options.skipComments || false;
|
|
51
|
+
return {
|
|
52
|
+
Program(node) {
|
|
53
|
+
const sourceCode = context.sourceCode || context.getSourceCode();
|
|
54
|
+
const lines = sourceCode.lines;
|
|
55
|
+
let actualLines = lines.length;
|
|
56
|
+
// Count non-blank/non-comment lines if requested
|
|
57
|
+
if (skipBlankLines || skipComments) {
|
|
58
|
+
const allComments = sourceCode.getAllComments();
|
|
59
|
+
const commentLines = new Set();
|
|
60
|
+
if (skipComments) {
|
|
61
|
+
allComments.forEach(comment => {
|
|
62
|
+
if (!comment.loc)
|
|
63
|
+
return; // Skip comments without location info
|
|
64
|
+
const start = comment.loc.start.line;
|
|
65
|
+
const end = comment.loc.end.line;
|
|
66
|
+
for (let i = start; i <= end; i++) {
|
|
67
|
+
commentLines.add(i);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
actualLines = 0;
|
|
72
|
+
for (let i = 0; i < lines.length; i++) {
|
|
73
|
+
const lineNum = i + 1;
|
|
74
|
+
const line = lines[i];
|
|
75
|
+
// Skip if line doesn't exist (edge case)
|
|
76
|
+
if (!line)
|
|
77
|
+
continue;
|
|
78
|
+
// Skip comment lines
|
|
79
|
+
if (skipComments && commentLines.has(lineNum)) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
// Skip blank lines
|
|
83
|
+
if (skipBlankLines && line.trim().length === 0) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
actualLines++;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (actualLines > maxLines) {
|
|
90
|
+
context.report({
|
|
91
|
+
node: node,
|
|
92
|
+
messageId: 'tooManyLines',
|
|
93
|
+
data: {
|
|
94
|
+
actual: String(actualLines),
|
|
95
|
+
max: String(maxLines),
|
|
96
|
+
layer,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
export default maxFileLines;
|
|
105
|
+
//# sourceMappingURL=max-file-lines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"max-file-lines.js","sourceRoot":"","sources":["../../src/rules/max-file-lines.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule: max-function-lines
|
|
3
|
+
*
|
|
4
|
+
* Enforce maximum function length with layer-based limits.
|
|
5
|
+
*
|
|
6
|
+
* TypeScript layered limits (LX-10, Python × 1.3):
|
|
7
|
+
* - Core: 65 lines (strict, pure logic)
|
|
8
|
+
* - Shell: 130 lines (I/O operations)
|
|
9
|
+
* - Tests: 260 lines (test functions)
|
|
10
|
+
* - Default: 104 lines (other files)
|
|
11
|
+
*/
|
|
12
|
+
import { getLayer, getLimits } from '../utils/layer-detection.js';
|
|
13
|
+
function getFunctionName(node) {
|
|
14
|
+
const anyNode = node;
|
|
15
|
+
// FunctionDeclaration with name
|
|
16
|
+
if (anyNode.id?.name) {
|
|
17
|
+
return anyNode.id.name;
|
|
18
|
+
}
|
|
19
|
+
// MethodDefinition
|
|
20
|
+
if (anyNode.key?.name) {
|
|
21
|
+
return anyNode.key.name;
|
|
22
|
+
}
|
|
23
|
+
// Arrow function assigned to variable
|
|
24
|
+
if (anyNode.parent?.type === 'VariableDeclarator' && anyNode.parent.id?.name) {
|
|
25
|
+
return anyNode.parent.id.name;
|
|
26
|
+
}
|
|
27
|
+
return '(anonymous)';
|
|
28
|
+
}
|
|
29
|
+
export const maxFunctionLines = {
|
|
30
|
+
meta: {
|
|
31
|
+
type: 'problem',
|
|
32
|
+
docs: {
|
|
33
|
+
description: 'Enforce maximum function length with layer-based limits',
|
|
34
|
+
recommended: true,
|
|
35
|
+
},
|
|
36
|
+
schema: [
|
|
37
|
+
{
|
|
38
|
+
type: 'object',
|
|
39
|
+
properties: {
|
|
40
|
+
max: {
|
|
41
|
+
type: 'number',
|
|
42
|
+
minimum: 1,
|
|
43
|
+
},
|
|
44
|
+
skipBlankLines: {
|
|
45
|
+
type: 'boolean',
|
|
46
|
+
},
|
|
47
|
+
skipComments: {
|
|
48
|
+
type: 'boolean',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
additionalProperties: false,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
messages: {
|
|
55
|
+
tooManyLines: 'Function "{{name}}" has {{actual}} lines ({{layer}} layer max: {{max}}). Consider breaking into smaller functions.',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
create(context) {
|
|
59
|
+
const filename = context.filename || context.getFilename();
|
|
60
|
+
const layer = getLayer(filename);
|
|
61
|
+
const limits = getLimits(filename);
|
|
62
|
+
// Allow override via options
|
|
63
|
+
const options = context.options[0] || {};
|
|
64
|
+
const maxLines = options.max !== undefined ? options.max : limits.maxFunctionLines;
|
|
65
|
+
const skipBlankLines = options.skipBlankLines || false;
|
|
66
|
+
const skipComments = options.skipComments || false;
|
|
67
|
+
function checkFunction(node) {
|
|
68
|
+
const sourceCode = context.sourceCode || context.getSourceCode();
|
|
69
|
+
const loc = node.loc;
|
|
70
|
+
if (!loc)
|
|
71
|
+
return;
|
|
72
|
+
let actualLines = loc.end.line - loc.start.line + 1;
|
|
73
|
+
// Count non-blank/non-comment lines if requested
|
|
74
|
+
if (skipBlankLines || skipComments) {
|
|
75
|
+
const allComments = sourceCode.getAllComments();
|
|
76
|
+
const commentLines = new Set();
|
|
77
|
+
if (skipComments) {
|
|
78
|
+
allComments.forEach((comment) => {
|
|
79
|
+
if (!comment.loc)
|
|
80
|
+
return; // Skip comments without location info
|
|
81
|
+
const start = comment.loc.start.line;
|
|
82
|
+
const end = comment.loc.end.line;
|
|
83
|
+
for (let i = start; i <= end; i++) {
|
|
84
|
+
commentLines.add(i);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
actualLines = 0;
|
|
89
|
+
for (let lineNum = loc.start.line; lineNum <= loc.end.line; lineNum++) {
|
|
90
|
+
const line = sourceCode.lines[lineNum - 1];
|
|
91
|
+
// Skip if line doesn't exist (edge case with trailing newlines)
|
|
92
|
+
if (!line)
|
|
93
|
+
continue;
|
|
94
|
+
// Skip comment lines
|
|
95
|
+
if (skipComments && commentLines.has(lineNum)) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
// Skip blank lines
|
|
99
|
+
if (skipBlankLines && line.trim().length === 0) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
actualLines++;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (actualLines > maxLines) {
|
|
106
|
+
const name = getFunctionName(node);
|
|
107
|
+
context.report({
|
|
108
|
+
node,
|
|
109
|
+
messageId: 'tooManyLines',
|
|
110
|
+
data: {
|
|
111
|
+
name,
|
|
112
|
+
actual: String(actualLines),
|
|
113
|
+
max: String(maxLines),
|
|
114
|
+
layer,
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
FunctionDeclaration(node) {
|
|
121
|
+
checkFunction(node);
|
|
122
|
+
},
|
|
123
|
+
FunctionExpression(node) {
|
|
124
|
+
checkFunction(node);
|
|
125
|
+
},
|
|
126
|
+
ArrowFunctionExpression(node) {
|
|
127
|
+
checkFunction(node);
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
export default maxFunctionLines;
|
|
133
|
+
//# sourceMappingURL=max-function-lines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"max-function-lines.js","sourceRoot":"","sources":["../../src/rules/max-function-lines.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule: no-any-in-schema
|
|
3
|
+
*
|
|
4
|
+
* Forbid z.any() in Zod schemas.
|
|
5
|
+
* z.any() defeats the purpose of schema validation.
|
|
6
|
+
*/
|
|
7
|
+
export const noAnyInSchema = {
|
|
8
|
+
meta: {
|
|
9
|
+
type: 'problem',
|
|
10
|
+
docs: {
|
|
11
|
+
description: 'Forbid z.any() in Zod schemas',
|
|
12
|
+
recommended: true,
|
|
13
|
+
},
|
|
14
|
+
schema: [],
|
|
15
|
+
messages: {
|
|
16
|
+
noAny: 'Avoid z.any() - use a specific type or z.unknown() with refinement',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
create(context) {
|
|
20
|
+
return {
|
|
21
|
+
CallExpression(node) {
|
|
22
|
+
const callee = node.callee;
|
|
23
|
+
// Check for z.any()
|
|
24
|
+
if (callee.type === 'MemberExpression' &&
|
|
25
|
+
callee.object.type === 'Identifier' &&
|
|
26
|
+
callee.object.name === 'z' &&
|
|
27
|
+
callee.property.type === 'Identifier' &&
|
|
28
|
+
callee.property.name === 'any') {
|
|
29
|
+
context.report({
|
|
30
|
+
node: node,
|
|
31
|
+
messageId: 'noAny',
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
export default noAnyInSchema;
|
|
39
|
+
//# sourceMappingURL=no-any-in-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-any-in-schema.js","sourceRoot":"","sources":["../../src/rules/no-any-in-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,+BAA+B;YAC5C,WAAW,EAAE,IAAI;SAClB;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,KAAK,EACH,oEAAoE;SACvE;KACF;IAED,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,cAAc,CAAC,IAAI;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAE3B,oBAAoB;gBACpB,IACE,MAAM,CAAC,IAAI,KAAK,kBAAkB;oBAClC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;oBACnC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG;oBAC1B,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;oBACrC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,EAC9B,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,IAA4B;wBAClC,SAAS,EAAE,OAAO;qBACnB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,eAAe,aAAa,CAAC"}
|