@empline/preflight 1.1.21 → 1.1.23

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.
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-structure-duplication.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/jsx-structure-duplication.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AAWH,eAAO,MAAM,EAAE,2CAA2C,CAAC;AAC3D,eAAO,MAAM,IAAI,wCAAwC,CAAC;AAC1D,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AACvC,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,eAAO,MAAM,WAAW,qFAC4D,CAAC;AACrF,eAAO,MAAM,IAAI,UAA6E,CAAC;AAgR/F,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAsDzC"}
1
+ {"version":3,"file":"jsx-structure-duplication.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/jsx-structure-duplication.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AAWH,eAAO,MAAM,EAAE,2CAA2C,CAAC;AAC3D,eAAO,MAAM,IAAI,wCAAwC,CAAC;AAC1D,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AACvC,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,eAAO,MAAM,WAAW,qFAC4D,CAAC;AACrF,eAAO,MAAM,IAAI,UAA6E,CAAC;AAyZ/F,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAqDzC"}
@@ -57,8 +57,8 @@ const fs = __importStar(require("fs"));
57
57
  const crypto = __importStar(require("crypto"));
58
58
  const glob_1 = require("glob");
59
59
  const console_chars_1 = require("../../utils/console-chars");
60
- const universal_progress_reporter_1 = require("../system/universal-progress-reporter");
61
60
  const glob_patterns_1 = require("../../shared/glob-patterns");
61
+ const exclusions_1 = require("../../shared/exclusions");
62
62
  // Check metadata
63
63
  exports.id = "architecture/jsx-structure-duplication";
64
64
  exports.name = "JSX Structure Duplication Detection";
@@ -99,6 +99,8 @@ function extractJSXBlocks(content, filePath) {
99
99
  // - Fragment openings
100
100
  // - Conditional JSX: {condition && (<JSX>...)}
101
101
  // - Ternary JSX: {condition ? (<JSX>...) : ...}
102
+ // - Map/filter callbacks returning JSX
103
+ // - Arrow function returns
102
104
  const jsxStartPatterns = [
103
105
  // Conditional rendering with opening paren
104
106
  /\{[^}]*&&\s*\(\s*$/,
@@ -107,8 +109,17 @@ function extractJSXBlocks(content, filePath) {
107
109
  /return\s*\(\s*$/,
108
110
  // Variable assignment with JSX
109
111
  /=\s*\(\s*$/,
110
- // Opening Card/Box/Stack/div with className
111
- /<(?:Card|Box|Stack|div|Paper|Container)[^>]*className[^>]*>\s*$/,
112
+ // Arrow function returning JSX (map, filter, etc.)
113
+ /=>\s*\(\s*$/,
114
+ /\.map\s*\([^)]*=>\s*\(\s*$/,
115
+ /\.filter\s*\([^)]*=>\s*\(\s*$/,
116
+ // Fragment openings
117
+ /<>\s*$/,
118
+ /<React\.Fragment>\s*$/,
119
+ // Opening Card/Box/Stack/div/section/article with className
120
+ /<(?:Card|Box|Stack|div|Paper|Container|section|article|main|aside|header|footer|Grid|Flex)[^>]*className[^>]*>\s*$/,
121
+ // MUI/Chakra specific patterns
122
+ /<(?:Typography|Button|IconButton|TextField|Select|Modal|Dialog|Drawer|Menu|Tooltip|Alert|Snackbar)[^>]*>\s*$/,
112
123
  ];
113
124
  let blockStart = null;
114
125
  let depth = 0;
@@ -170,13 +181,20 @@ function normalizeJSX(jsx) {
170
181
  return (jsx
171
182
  // Remove all whitespace
172
183
  .replace(/\s+/g, " ")
184
+ // Normalize template literals
185
+ .replace(/`[^`]*`/g, '"STRING"')
173
186
  // Normalize string values
174
187
  .replace(/"[^"]*"/g, '"STRING"')
175
188
  .replace(/'[^']*'/g, '"STRING"')
189
+ // Normalize spread props
190
+ .replace(/\{\.\.\.[\w.]+\}/g, "{...SPREAD}")
191
+ // Normalize array access
192
+ .replace(/\{[\w.]+\[\d+\]\}/g, "{ARR[IDX]}")
193
+ .replace(/\{[\w.]+\[[\w.]+\]\}/g, "{ARR[KEY]}")
176
194
  // Normalize variable names in expressions
177
195
  .replace(/\{[a-z_][a-zA-Z0-9_]*\}/gi, "{VAR}")
178
- // Normalize function calls
179
- .replace(/\{[a-z_][a-zA-Z0-9_]*\([^)]*\)\}/gi, "{FUNC()}")
196
+ // Normalize function calls (including chained)
197
+ .replace(/\{[a-z_][a-zA-Z0-9_]*\([^)]*\)(?:\.[a-zA-Z0-9_]+\([^)]*\))*\}/gi, "{FUNC()}")
180
198
  // Normalize property access
181
199
  .replace(/\{[a-z_][a-zA-Z0-9_]*\.[a-zA-Z0-9_.]+\}/gi, "{VAR.PROP}")
182
200
  // Normalize numbers
@@ -184,12 +202,22 @@ function normalizeJSX(jsx) {
184
202
  // Normalize conditional expressions but keep structure
185
203
  .replace(/\{[^}]+\s*\?\s*/g, "{COND ? ")
186
204
  .replace(/\s*:\s*[^}]+\}/g, " : ALT}")
187
- // Normalize onClick/onChange handlers
205
+ // Normalize all event handlers (onClick, onChange, onSubmit, etc.)
188
206
  .replace(/on[A-Z][a-zA-Z]*=\{[^}]+\}/g, "onEVENT={HANDLER}")
189
207
  // Normalize className values but keep the attribute
190
208
  .replace(/className="[^"]+"/g, 'className="CLASSES"')
209
+ .replace(/className=\{[^}]+\}/g, 'className="CLASSES"')
210
+ // Normalize style props
211
+ .replace(/style=\{[^}]+\}/g, "style={STYLES}")
191
212
  // Normalize key props
192
213
  .replace(/key=\{[^}]+\}/g, "key={KEY}")
214
+ // Normalize ref props
215
+ .replace(/ref=\{[^}]+\}/g, "ref={REF}")
216
+ // Normalize id props
217
+ .replace(/id="[^"]+"/g, 'id="ID"')
218
+ .replace(/id=\{[^}]+\}/g, 'id="ID"')
219
+ // Normalize data-testid
220
+ .replace(/data-testid="[^"]+"/g, 'data-testid="TESTID"')
193
221
  // Trim
194
222
  .trim());
195
223
  }
@@ -203,33 +231,71 @@ function hashString(str) {
203
231
  * Extract a suggested component name from the JSX structure
204
232
  */
205
233
  function suggestComponentName(blocks) {
206
- // Look for common patterns in the JSX
207
234
  const sample = blocks[0].raw;
208
- // Check for common UI patterns
209
- if (/Resume.*Import/i.test(sample))
210
- return "ResumeImportPrompt";
211
- if (/Empty.*State/i.test(sample))
212
- return "EmptyStateCard";
213
- if (/Loading.*Spinner/i.test(sample))
214
- return "LoadingIndicator";
215
- if (/Confirm.*Dialog/i.test(sample))
216
- return "ConfirmationCard";
217
- if (/Error.*Message/i.test(sample))
218
- return "ErrorDisplay";
219
- if (/Success.*Message/i.test(sample))
220
- return "SuccessDisplay";
221
- if (/Filter.*Bar/i.test(sample))
222
- return "FilterBar";
223
- if (/Search.*Input/i.test(sample))
224
- return "SearchBar";
225
- if (/Stat.*Card/i.test(sample))
226
- return "StatCard";
227
- if (/Progress.*Bar/i.test(sample))
228
- return "ProgressIndicator";
235
+ const lowerSample = sample.toLowerCase();
236
+ // Check for common UI patterns (ordered by specificity)
237
+ const patterns = [
238
+ // Import/Export patterns
239
+ [/resume.*import|import.*resume/i, "ResumeImportPrompt"],
240
+ [/csv.*import|import.*csv/i, "CsvImportPrompt"],
241
+ [/bulk.*import|import.*bulk/i, "BulkImportPrompt"],
242
+ // State patterns
243
+ [/empty.*state|no.*results|nothing.*found/i, "EmptyStateCard"],
244
+ [/loading|spinner|skeleton/i, "LoadingIndicator"],
245
+ [/error.*message|error.*display/i, "ErrorDisplay"],
246
+ [/success.*message|success.*display/i, "SuccessDisplay"],
247
+ // Dialog/Modal patterns
248
+ [/confirm.*dialog|confirmation/i, "ConfirmationDialog"],
249
+ [/delete.*confirm|confirm.*delete/i, "DeleteConfirmationDialog"],
250
+ [/warning.*dialog|alert.*dialog/i, "WarningDialog"],
251
+ // Form patterns
252
+ [/filter.*bar|filters/i, "FilterBar"],
253
+ [/search.*input|search.*bar/i, "SearchBar"],
254
+ [/date.*picker|date.*range/i, "DateRangePicker"],
255
+ [/pagination|page.*nav/i, "PaginationControls"],
256
+ // Card patterns
257
+ [/stat.*card|metric.*card/i, "StatCard"],
258
+ [/info.*card|detail.*card/i, "InfoCard"],
259
+ [/action.*card/i, "ActionCard"],
260
+ [/summary.*card/i, "SummaryCard"],
261
+ // Progress patterns
262
+ [/progress.*bar|progress.*indicator/i, "ProgressIndicator"],
263
+ [/step.*indicator|stepper/i, "StepIndicator"],
264
+ // List patterns
265
+ [/list.*item|item.*row/i, "ListItemRow"],
266
+ [/table.*row/i, "TableRow"],
267
+ // Header/Footer patterns
268
+ [/page.*header|section.*header/i, "SectionHeader"],
269
+ [/page.*footer|section.*footer/i, "SectionFooter"],
270
+ // Badge/Status patterns
271
+ [/status.*badge|badge/i, "StatusBadge"],
272
+ [/tag.*list|chip.*list/i, "TagList"],
273
+ ];
274
+ for (const [pattern, name] of patterns) {
275
+ if (typeof pattern === "string" ? lowerSample.includes(pattern) : pattern.test(sample)) {
276
+ return name;
277
+ }
278
+ }
279
+ // Analyze the structure for component hints
280
+ const hasIcon = /<\w*Icon|Icon\s*\/>/i.test(sample);
281
+ const hasButton = /<Button/i.test(sample);
282
+ const hasText = /<Typography|<Text|<p>|<span>/i.test(sample);
283
+ const hasImage = /<img|<Image/i.test(sample);
284
+ const hasForm = /<form|<Form|<input|<Input|<TextField/i.test(sample);
229
285
  // Check for the root component type
230
286
  const rootMatch = sample.match(/<([A-Z][a-zA-Z]+)/);
231
- if (rootMatch) {
232
- return `Shared${rootMatch[1]}`;
287
+ const rootComponent = rootMatch ? rootMatch[1] : null;
288
+ // Build a descriptive name based on content
289
+ if (rootComponent) {
290
+ if (hasIcon && hasText && !hasButton)
291
+ return `Icon${rootComponent}`;
292
+ if (hasButton && hasText)
293
+ return `${rootComponent}WithAction`;
294
+ if (hasImage && hasText)
295
+ return `${rootComponent}WithMedia`;
296
+ if (hasForm)
297
+ return `${rootComponent}Form`;
298
+ return `Shared${rootComponent}`;
233
299
  }
234
300
  return "SharedComponent";
235
301
  }
@@ -241,20 +307,44 @@ function generateStructurePreview(block) {
241
307
  return lines.map((l) => " " + l.trim()).join("\n") + (block.raw.split("\n").length > 8 ? "\n ..." : "");
242
308
  }
243
309
  // Main Detection Logic
310
+ /**
311
+ * Calculate similarity between two normalized strings (0-1)
312
+ */
313
+ function calculateSimilarity(a, b) {
314
+ if (a === b)
315
+ return 1;
316
+ if (a.length === 0 || b.length === 0)
317
+ return 0;
318
+ // Simple token-based similarity
319
+ const tokensA = new Set(a.split(/\s+/));
320
+ const tokensB = new Set(b.split(/\s+/));
321
+ const intersection = new Set([...tokensA].filter((x) => tokensB.has(x)));
322
+ const union = new Set([...tokensA, ...tokensB]);
323
+ return intersection.size / union.size;
324
+ }
244
325
  async function detectDuplicates() {
245
326
  const allBlocks = [];
327
+ // Load app-specific exclusions
328
+ const appExclusions = await (0, exclusions_1.getExclusions)(exports.id);
246
329
  // Gather all files
247
330
  const files = [];
248
331
  for (const dir of CONFIG.includeDirs) {
332
+ if (!fs.existsSync(dir))
333
+ continue;
249
334
  const matches = await (0, glob_1.glob)(`${dir}/**/*.tsx`, {
250
- ignore: CONFIG.excludePatterns,
335
+ ignore: [...CONFIG.excludePatterns],
251
336
  cwd: process.cwd(),
252
337
  });
253
338
  files.push(...matches);
254
339
  }
255
- console.log(`${console_chars_1.emoji.folder} Scanning ${files.length} files for JSX structures...`);
340
+ // Filter out excluded files
341
+ const filteredFiles = files.filter((f) => !(0, exclusions_1.shouldExcludeFile)(f, appExclusions));
342
+ console.log(`${console_chars_1.emoji.folder} Scanning ${filteredFiles.length} files for JSX structures...`);
343
+ if (files.length !== filteredFiles.length) {
344
+ console.log(`${console_chars_1.emoji.info} (${files.length - filteredFiles.length} files excluded by config)`);
345
+ }
256
346
  // Extract blocks from each file
257
- for (const file of files) {
347
+ for (const file of filteredFiles) {
258
348
  try {
259
349
  const content = fs.readFileSync(file, "utf-8");
260
350
  const blocks = extractJSXBlocks(content, file);
@@ -265,7 +355,7 @@ async function detectDuplicates() {
265
355
  }
266
356
  }
267
357
  console.log(`${console_chars_1.emoji.search} Found ${allBlocks.length} JSX blocks to analyze`);
268
- // Group by fingerprint
358
+ // Group by fingerprint (exact matches)
269
359
  const groups = new Map();
270
360
  for (const block of allBlocks) {
271
361
  if (!groups.has(block.fingerprint)) {
@@ -273,6 +363,31 @@ async function detectDuplicates() {
273
363
  }
274
364
  groups.get(block.fingerprint).push(block);
275
365
  }
366
+ // Also find near-duplicates (similarity >= 85%)
367
+ const SIMILARITY_THRESHOLD = 0.85;
368
+ const processedPairs = new Set();
369
+ for (const [fp1, blocks1] of groups) {
370
+ for (const [fp2, blocks2] of groups) {
371
+ if (fp1 >= fp2)
372
+ continue; // Skip self and already-processed pairs
373
+ const pairKey = `${fp1}:${fp2}`;
374
+ if (processedPairs.has(pairKey))
375
+ continue;
376
+ processedPairs.add(pairKey);
377
+ const similarity = calculateSimilarity(blocks1[0].normalized, blocks2[0].normalized);
378
+ if (similarity >= SIMILARITY_THRESHOLD && similarity < 1) {
379
+ // Merge similar groups
380
+ const mergedBlocks = [...blocks1, ...blocks2];
381
+ const uniqueFiles = new Set(mergedBlocks.map((b) => b.file));
382
+ if (uniqueFiles.size >= CONFIG.minOccurrences) {
383
+ // Use the larger group's fingerprint
384
+ const targetFp = blocks1.length >= blocks2.length ? fp1 : fp2;
385
+ groups.set(targetFp, mergedBlocks);
386
+ groups.delete(blocks1.length >= blocks2.length ? fp2 : fp1);
387
+ }
388
+ }
389
+ }
390
+ }
276
391
  // Filter to duplicates (3+ occurrences in different files)
277
392
  const duplicates = [];
278
393
  for (const [fingerprint, blocks] of groups) {
@@ -293,7 +408,6 @@ async function detectDuplicates() {
293
408
  }
294
409
  // Main Runner
295
410
  async function run() {
296
- const reporter = (0, universal_progress_reporter_1.createUniversalProgressReporter)(exports.name);
297
411
  const startTime = Date.now();
298
412
  const args = process.argv.slice(2);
299
413
  const verbose = args.includes("--verbose") || args.includes("-v");
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-structure-duplication.js","sourceRoot":"","sources":["../../../src/checks/architecture/jsx-structure-duplication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsx-structure-duplication.js","sourceRoot":"","sources":["../../../src/checks/architecture/jsx-structure-duplication.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empline/preflight",
3
- "version": "1.1.21",
3
+ "version": "1.1.23",
4
4
  "description": "Distributable preflight validation system with app-specific plugin support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -19,13 +19,15 @@
19
19
  },
20
20
  "scripts": {
21
21
  "build": "tsc",
22
- "prebuild": "npm run check:hygiene",
22
+ "prebuild": "npm run check:hygiene && npm run check:metadata && npm run check:broken",
23
23
  "dev": "tsc --watch",
24
24
  "preflight": "tsx src/bin/preflight.ts",
25
- "check:all": "tsx src/checks/**/*.ts",
26
- "check:security": "tsx src/checks/security/*.ts",
27
- "check:business": "tsx src/checks/business/*.ts",
25
+ "check:system": "tsx src/bin/preflight.ts --category system",
26
+ "check:security": "tsx src/bin/preflight.ts --category security",
27
+ "check:business": "tsx src/bin/preflight.ts --category business",
28
28
  "check:hygiene": "tsx scripts/maintenance/module-boundary-validator.ts",
29
+ "check:metadata": "tsx src/checks/system/preflight-metadata-validator.ts",
30
+ "check:broken": "tsx src/checks/system/broken-preflight-detection.ts",
29
31
  "check:hygiene:all": "tsx scripts/maintenance/module-boundary-validator.ts && tsx scripts/maintenance/workflow-composition-validator.ts && tsx scripts/maintenance/canonical-import-enforcer.ts",
30
32
  "lint": "eslint src/",
31
33
  "test": "vitest",