@hatem427/code-guard-ci 3.5.4 → 3.5.6

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.
@@ -28,17 +28,17 @@ exports.sharedRules = [
28
28
  },
29
29
  {
30
30
  id: 'max-component-lines',
31
- label: 'Component size ≤ 400 lines',
32
- description: 'Components should not exceed 400 lines. Split large components into smaller, focused ones.',
33
- severity: 'error',
31
+ label: 'Component size ≤ 500 lines',
32
+ description: 'Components should not exceed 500 lines. Split large components into smaller, focused ones.',
33
+ severity: 'warning',
34
34
  fileExtensions: ['ts', 'tsx', 'jsx'],
35
35
  pattern: null,
36
36
  customCheck: (file) => {
37
- if (file.lineCount > 400) {
37
+ if (file.lineCount > 500) {
38
38
  return [
39
39
  {
40
40
  line: null,
41
- message: `File has ${file.lineCount} lines (max 400). Consider splitting into smaller components.`,
41
+ message: `File has ${file.lineCount} lines (max 500). Consider splitting into smaller components.`,
42
42
  },
43
43
  ];
44
44
  }
@@ -136,68 +136,59 @@ exports.sharedRules = [
136
136
  applicableTo: [],
137
137
  category: 'Code Quality',
138
138
  },
139
- {
140
- id: 'no-magic-numbers',
141
- label: 'Avoid magic numbers',
142
- description: 'Use named constants instead of magic numbers for better code readability.',
143
- severity: 'info',
144
- fileExtensions: ['ts', 'tsx', 'js', 'jsx'],
145
- pattern: null,
146
- customCheck: (file) => {
147
- const violations = [];
148
- const lines = file.lines;
149
- for (let i = 0; i < lines.length; i++) {
150
- const line = lines[i].trim();
151
- // ── Skip lines where numbers are expected ──
152
- // Skip JSX/HTML attributes (width={100}, height={20}, colspan={3}, etc.)
153
- if (/\w+=\{?\d+\}?/.test(line) && /<|className|style|width|height|cols|rows|span|size|max|min|step|tabIndex|priority/.test(line))
154
- continue;
155
- // Skip Tailwind / CSS class strings (w-64, p-4, mt-8, grid-cols-3, etc.)
156
- if (/className|class\s*=/.test(line))
157
- continue;
158
- // Skip JSX return / render lines (pure template markup)
159
- if (/^\s*</.test(line) || /return\s*\(/.test(line))
160
- continue;
161
- // Skip import/export statements
162
- if (/^\s*(import|export)\s/.test(line))
163
- continue;
164
- // Skip comments
165
- if (/^\s*(\/\/|\/\*|\*)/.test(line))
166
- continue;
167
- // Skip common safe patterns
168
- if (/setTimeout|setInterval|Array\(|\.length|\.indexOf|\.slice|\.substring|port|status|code|index|Math\.|\.toFixed/.test(line))
169
- continue;
170
- // Skip array access like arr[0], arr[2]
171
- if (/\[\d+\]/.test(line))
172
- continue;
173
- // Skip enums and object literals with number values
174
- if (/^\s*\w+\s*:\s*\d+/.test(line) && !/const|let|var/.test(line))
175
- continue;
176
- // ── Only flag: assignments with raw numbers (const x = 365, let y = 86400)
177
- // and comparisons/returns with unexplained numbers
178
- const isAssignment = /(?:const|let|var)\s+\w+\s*=\s*.*\d{2,}/.test(line);
179
- const isComparison = /[><=!]+\s*\d{3,}|if\s*\(.*\d{3,}/.test(line);
180
- const isReturn = /return\s+\d{3,}/.test(line);
181
- if (isAssignment || isComparison || isReturn) {
182
- // Extract the magic number
183
- const match = line.match(/(?<![\w.#-])\d{3,}(?![\w.px%remsvhw-])/);
184
- if (match) {
185
- // Skip common acceptable numbers
186
- const num = parseInt(match[0], 10);
187
- if ([100, 200, 300, 400, 404, 500, 1000, 1024, 2048].includes(num))
188
- continue;
189
- violations.push({
190
- line: i + 1,
191
- message: `Magic number found: ${match[0]}. Consider using a named constant.`,
192
- });
193
- }
194
- }
195
- }
196
- return violations.slice(0, 3); // Limit to 3 to avoid spam
197
- },
198
- applicableTo: [],
199
- category: 'Code Quality',
200
- },
139
+ // {
140
+ // id: 'no-magic-numbers',
141
+ // label: 'Avoid magic numbers',
142
+ // description: 'Use named constants instead of magic numbers for better code readability.',
143
+ // severity: 'info',
144
+ // fileExtensions: ['ts', 'tsx', 'js', 'jsx'],
145
+ // pattern: null,
146
+ // customCheck: (file) => {
147
+ // const violations: Array<{ line: number | null; message: string }> = [];
148
+ // const lines = file.lines;
149
+ // for (let i = 0; i < lines.length; i++) {
150
+ // const line = lines[i].trim();
151
+ // // ── Skip lines where numbers are expected ──
152
+ // // Skip JSX/HTML attributes (width={100}, height={20}, colspan={3}, etc.)
153
+ // if (/\w+=\{?\d+\}?/.test(line) && /<|className|style|width|height|cols|rows|span|size|max|min|step|tabIndex|priority/.test(line)) continue;
154
+ // // Skip Tailwind / CSS class strings (w-64, p-4, mt-8, grid-cols-3, etc.)
155
+ // if (/className|class\s*=/.test(line)) continue;
156
+ // // Skip JSX return / render lines (pure template markup)
157
+ // if (/^\s*</.test(line) || /return\s*\(/.test(line)) continue;
158
+ // // Skip import/export statements
159
+ // if (/^\s*(import|export)\s/.test(line)) continue;
160
+ // // Skip comments
161
+ // if (/^\s*(\/\/|\/\*|\*)/.test(line)) continue;
162
+ // // Skip common safe patterns
163
+ // if (/setTimeout|setInterval|Array\(|\.length|\.indexOf|\.slice|\.substring|port|status|code|index|Math\.|\.toFixed/.test(line)) continue;
164
+ // // Skip array access like arr[0], arr[2]
165
+ // if (/\[\d+\]/.test(line)) continue;
166
+ // // Skip enums and object literals with number values
167
+ // if (/^\s*\w+\s*:\s*\d+/.test(line) && !/const|let|var/.test(line)) continue;
168
+ // // ── Only flag: assignments with raw numbers (const x = 365, let y = 86400)
169
+ // // and comparisons/returns with unexplained numbers
170
+ // const isAssignment = /(?:const|let|var)\s+\w+\s*=\s*.*\d{2,}/.test(line);
171
+ // const isComparison = /[><=!]+\s*\d{3,}|if\s*\(.*\d{3,}/.test(line);
172
+ // const isReturn = /return\s+\d{3,}/.test(line);
173
+ // if (isAssignment || isComparison || isReturn) {
174
+ // // Extract the magic number
175
+ // const match = line.match(/(?<![\w.#-])\d{3,}(?![\w.px%remsvhw-])/);
176
+ // if (match) {
177
+ // // Skip common acceptable numbers
178
+ // const num = parseInt(match[0], 10);
179
+ // if ([100, 200, 300, 400, 404, 500, 1000, 1024, 2048].includes(num)) continue;
180
+ // violations.push({
181
+ // line: i + 1,
182
+ // message: `Magic number found: ${match[0]}. Consider using a named constant.`,
183
+ // });
184
+ // }
185
+ // }
186
+ // }
187
+ // return violations.slice(0, 3); // Limit to 3 to avoid spam
188
+ // },
189
+ // applicableTo: [],
190
+ // category: 'Code Quality',
191
+ // },
201
192
  // NOTE: 'prefer-template-literals' removed — covered by ESLint 'prefer-template' rule
202
193
  {
203
194
  id: 'no-unnecessary-bind',
@@ -209,16 +200,16 @@ exports.sharedRules = [
209
200
  applicableTo: [],
210
201
  category: 'Modern Syntax',
211
202
  },
212
- {
213
- id: 'prefer-early-return',
214
- label: 'Prefer early returns',
215
- description: 'Use early returns to avoid deep nesting and improve code readability.',
216
- severity: 'info',
217
- fileExtensions: ['ts', 'tsx', 'js', 'jsx'],
218
- pattern: null,
219
- applicableTo: [],
220
- category: 'Code Quality',
221
- },
203
+ // {
204
+ // id: 'prefer-early-return',
205
+ // label: 'Prefer early returns',
206
+ // description: 'Use early returns to avoid deep nesting and improve code readability.',
207
+ // severity: 'info',
208
+ // fileExtensions: ['ts', 'tsx', 'js', 'jsx'],
209
+ // pattern: null,
210
+ // applicableTo: [],
211
+ // category: 'Code Quality',
212
+ // },
222
213
  // NOTE: 'no-var-keyword' removed — covered by ESLint 'no-var' rule
223
214
  {
224
215
  id: 'prefer-arrow-functions',
@@ -230,6 +221,77 @@ exports.sharedRules = [
230
221
  applicableTo: [],
231
222
  category: 'Modern Syntax',
232
223
  },
224
+ {
225
+ id: 'function-formatting',
226
+ label: 'Function formatting conventions',
227
+ description: 'Functions must have a blank line before them, no space before (), and a space before and after {}.',
228
+ severity: 'error',
229
+ fileExtensions: ['ts', 'tsx', 'js', 'jsx'],
230
+ pattern: null,
231
+ customCheck: (file) => {
232
+ const violations = [];
233
+ const lines = file.lines;
234
+ for (let i = 0; i < lines.length; i++) {
235
+ const line = lines[i];
236
+ const trimmed = line.trim();
237
+ // Skip empty lines, comments, imports, decorators
238
+ if (!trimmed ||
239
+ trimmed.startsWith('//') ||
240
+ trimmed.startsWith('/*') ||
241
+ trimmed.startsWith('*') ||
242
+ trimmed.startsWith('@') ||
243
+ trimmed.startsWith('import '))
244
+ continue;
245
+ // Detect named function declarations:
246
+ // function foo(), async function foo(), export function foo(), export default function foo()
247
+ const isFunctionDecl = /^\s*(export\s+)?(default\s+)?(async\s+)?function\s+\w+/.test(line);
248
+ // Detect arrow/regular function assignments:
249
+ // const foo = () =>, const foo = async () =>, const foo = function() {}
250
+ const isArrowAssign = /^\s*(export\s+)?(const|let|var)\s+\w+\s*=\s*(async\s+)?(\(|function\s*\()/.test(line);
251
+ if (!isFunctionDecl && !isArrowAssign)
252
+ continue;
253
+ // ── Check 1: Blank line before function ──────────────────────────
254
+ // Allowed to have no blank line: when preceded by opening brace, another decorator,
255
+ // a comment line, or when it is the very first meaningful line in the file
256
+ if (i > 0) {
257
+ const prevTrimmed = lines[i - 1].trim();
258
+ const isAllowedPrev = prevTrimmed === '' || // blank line — correct
259
+ prevTrimmed === '{' || // opening brace of class/block
260
+ prevTrimmed === '(' || // opening paren
261
+ prevTrimmed.startsWith('//') ||
262
+ prevTrimmed.startsWith('/*') ||
263
+ prevTrimmed.startsWith('*') ||
264
+ prevTrimmed.startsWith('@'); // decorator on previous line
265
+ if (!isAllowedPrev) {
266
+ violations.push({
267
+ line: i + 1,
268
+ message: `Missing blank line before function declaration. Previous line: "${prevTrimmed.substring(0, 60)}"`,
269
+ });
270
+ }
271
+ }
272
+ // ── Check 2: No space before () ──────────────────────────────────
273
+ // Catches: function foo (...) — space between name and paren
274
+ if (isFunctionDecl && /function\s+\w+\s+\(/.test(line)) {
275
+ violations.push({
276
+ line: i + 1,
277
+ message: 'No space allowed before (). Use `function name()` not `function name ()`.',
278
+ });
279
+ }
280
+ // ── Check 3: Space before { ──────────────────────────────────────
281
+ // Catches: function foo(){ or () => { missing space
282
+ // Note: Prettier handles this, so only flag if Prettier isn't running
283
+ if (/\)\{/.test(line)) {
284
+ violations.push({
285
+ line: i + 1,
286
+ message: 'Missing space before `{`. Use `) {` not `){`.',
287
+ });
288
+ }
289
+ }
290
+ return violations.slice(0, 10);
291
+ },
292
+ applicableTo: [],
293
+ category: 'Code Style',
294
+ },
233
295
  ];
234
296
  // ── Rule registry (populated by project-specific configs) ───────────────────
235
297
  const ruleRegistry = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"guidelines.config.js","sourceRoot":"","sources":["../../config/guidelines.config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guidelines.config.js","sourceRoot":"","sources":["../../config/guidelines.config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"nextjs.config.d.ts","sourceRoot":"","sources":["../../config/nextjs.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAiB,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE1D,QAAA,MAAM,WAAW,EAAE,IAAI,EAyItB,CAAC;AAKF,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"nextjs.config.d.ts","sourceRoot":"","sources":["../../config/nextjs.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAiB,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE1D,QAAA,MAAM,WAAW,EAAE,IAAI,EAsLtB,CAAC;AAKF,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -74,7 +74,7 @@ const nextjsRules = [
74
74
  id: 'nextjs-api-error-handling',
75
75
  label: 'API routes must have error handling',
76
76
  description: 'All API route handlers (GET, POST, etc.) must wrap logic in try/catch and return proper error responses.',
77
- severity: 'warning',
77
+ severity: 'info',
78
78
  fileExtensions: ['ts', 'js'],
79
79
  pattern: null,
80
80
  customCheck: (file) => {
@@ -98,6 +98,44 @@ const nextjsRules = [
98
98
  applicableTo: ['nextjs'],
99
99
  category: 'Next.js API Routes',
100
100
  },
101
+ // ── Sharp optimizer ───────────────────────────────────────────────────
102
+ {
103
+ id: 'nextjs-require-sharp',
104
+ label: 'Install sharp for image optimization',
105
+ description: 'Next.js requires the "sharp" package for optimized image processing in production. Add it as a dependency: npm install sharp',
106
+ severity: 'warning',
107
+ fileExtensions: ['json'],
108
+ pattern: null,
109
+ customCheck: (file) => {
110
+ const violations = [];
111
+ // Only check package.json at the project root
112
+ const basename = file.relativePath.split('/').pop() || '';
113
+ if (basename !== 'package.json')
114
+ return [];
115
+ let pkg;
116
+ try {
117
+ pkg = JSON.parse(file.content);
118
+ }
119
+ catch {
120
+ return [];
121
+ }
122
+ const allDeps = {
123
+ ...pkg.dependencies,
124
+ ...pkg.devDependencies,
125
+ ...pkg.peerDependencies,
126
+ ...pkg.optionalDependencies,
127
+ };
128
+ if (!allDeps['sharp']) {
129
+ violations.push({
130
+ line: null,
131
+ message: 'Missing "sharp" package. Next.js uses sharp for production image optimization. Run: npm install sharp',
132
+ });
133
+ }
134
+ return violations;
135
+ },
136
+ applicableTo: ['nextjs'],
137
+ category: 'Next.js Performance',
138
+ },
101
139
  // ── Metadata ──────────────────────────────────────────────────────────
102
140
  {
103
141
  id: 'nextjs-page-metadata',
@@ -1 +1 @@
1
- {"version":3,"file":"nextjs.config.js","sourceRoot":"","sources":["../../config/nextjs.config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nextjs.config.js","sourceRoot":"","sources":["../../config/nextjs.config.ts"],"names":[],"mappings":"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"}