@empline/preflight 1.1.13 → 1.1.15

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.
Files changed (74) hide show
  1. package/dist/checks/auth/session-provider-wrapper.d.ts +47 -0
  2. package/dist/checks/auth/session-provider-wrapper.d.ts.map +1 -0
  3. package/dist/checks/auth/session-provider-wrapper.js +286 -0
  4. package/dist/checks/auth/session-provider-wrapper.js.map +1 -0
  5. package/dist/checks/core/ui-quality.js +1 -1
  6. package/dist/checks/core/ui-quality.js.map +1 -1
  7. package/dist/checks/database/prisma-upsert-safety.d.ts +39 -0
  8. package/dist/checks/database/prisma-upsert-safety.d.ts.map +1 -0
  9. package/dist/checks/database/prisma-upsert-safety.js +220 -0
  10. package/dist/checks/database/prisma-upsert-safety.js.map +1 -0
  11. package/dist/checks/dependencies/dependency-health-monitor.d.ts +49 -0
  12. package/dist/checks/dependencies/dependency-health-monitor.d.ts.map +1 -0
  13. package/dist/checks/dependencies/dependency-health-monitor.js +323 -0
  14. package/dist/checks/dependencies/dependency-health-monitor.js.map +1 -0
  15. package/dist/checks/email/email-template-db-verification.d.ts +5 -1
  16. package/dist/checks/email/email-template-db-verification.d.ts.map +1 -1
  17. package/dist/checks/email/email-template-db-verification.js +49 -3
  18. package/dist/checks/email/email-template-db-verification.js.map +1 -1
  19. package/dist/checks/file-hygiene-validation.d.ts +31 -0
  20. package/dist/checks/file-hygiene-validation.d.ts.map +1 -0
  21. package/dist/checks/file-hygiene-validation.js +934 -0
  22. package/dist/checks/file-hygiene-validation.js.map +1 -0
  23. package/dist/checks/organization/file-cleanup-validation.d.ts +22 -0
  24. package/dist/checks/organization/file-cleanup-validation.d.ts.map +1 -0
  25. package/dist/checks/organization/file-cleanup-validation.js +1121 -0
  26. package/dist/checks/organization/file-cleanup-validation.js.map +1 -0
  27. package/dist/checks/runtime/tailwind-runtime-check.d.ts +36 -0
  28. package/dist/checks/runtime/tailwind-runtime-check.d.ts.map +1 -0
  29. package/dist/checks/runtime/tailwind-runtime-check.js +264 -0
  30. package/dist/checks/runtime/tailwind-runtime-check.js.map +1 -0
  31. package/dist/checks/shipping-integration-validation.d.ts +28 -0
  32. package/dist/checks/shipping-integration-validation.d.ts.map +1 -0
  33. package/dist/checks/shipping-integration-validation.js +409 -0
  34. package/dist/checks/shipping-integration-validation.js.map +1 -0
  35. package/dist/checks/specialized/shared-components-migration.d.ts.map +1 -1
  36. package/dist/checks/specialized/shared-components-migration.js +2 -2
  37. package/dist/checks/specialized/shared-components-migration.js.map +1 -1
  38. package/dist/checks/specialized/store-specialties-normalization.d.ts +10 -1
  39. package/dist/checks/specialized/store-specialties-normalization.d.ts.map +1 -1
  40. package/dist/checks/specialized/store-specialties-normalization.js +39 -12
  41. package/dist/checks/specialized/store-specialties-normalization.js.map +1 -1
  42. package/dist/checks/system/layout-constants-sync.d.ts +36 -0
  43. package/dist/checks/system/layout-constants-sync.d.ts.map +1 -0
  44. package/dist/checks/system/layout-constants-sync.js +642 -0
  45. package/dist/checks/system/layout-constants-sync.js.map +1 -0
  46. package/dist/checks/system/package-health-check.d.ts +43 -0
  47. package/dist/checks/system/package-health-check.d.ts.map +1 -0
  48. package/dist/checks/system/package-health-check.js +323 -0
  49. package/dist/checks/system/package-health-check.js.map +1 -0
  50. package/dist/checks/system/preflight-circular-dependency-detector.d.ts +26 -0
  51. package/dist/checks/system/preflight-circular-dependency-detector.d.ts.map +1 -0
  52. package/dist/checks/system/preflight-circular-dependency-detector.js +310 -0
  53. package/dist/checks/system/preflight-circular-dependency-detector.js.map +1 -0
  54. package/dist/checks/system/preflight-execution-benchmarks.d.ts +24 -0
  55. package/dist/checks/system/preflight-execution-benchmarks.d.ts.map +1 -0
  56. package/dist/checks/system/preflight-execution-benchmarks.js +282 -0
  57. package/dist/checks/system/preflight-execution-benchmarks.js.map +1 -0
  58. package/dist/checks/system/preflight-tag-taxonomy-validator.d.ts +27 -0
  59. package/dist/checks/system/preflight-tag-taxonomy-validator.d.ts.map +1 -0
  60. package/dist/checks/system/preflight-tag-taxonomy-validator.js +361 -0
  61. package/dist/checks/system/preflight-tag-taxonomy-validator.js.map +1 -0
  62. package/dist/checks/testing/data-entry-regression-required.d.ts +5 -0
  63. package/dist/checks/testing/data-entry-regression-required.d.ts.map +1 -1
  64. package/dist/checks/testing/data-entry-regression-required.js +28 -7
  65. package/dist/checks/testing/data-entry-regression-required.js.map +1 -1
  66. package/dist/checks/testing/e2e-timeouts.d.ts +1 -0
  67. package/dist/checks/testing/e2e-timeouts.d.ts.map +1 -1
  68. package/dist/checks/testing/e2e-timeouts.js +49 -6
  69. package/dist/checks/testing/e2e-timeouts.js.map +1 -1
  70. package/dist/utils/console-chars.d.ts +16 -0
  71. package/dist/utils/console-chars.d.ts.map +1 -1
  72. package/dist/utils/console-chars.js +10 -0
  73. package/dist/utils/console-chars.js.map +1 -1
  74. package/package.json +1 -1
@@ -0,0 +1,310 @@
1
+ #!/usr/bin/env tsx
2
+ "use strict";
3
+ /**
4
+ * Preflight Circular Dependency Detector
5
+ *
6
+ * Detects circular dependencies in preflight workflows and consolidations.
7
+ * Circular dependencies cause infinite loops or stack overflows.
8
+ *
9
+ * Checks:
10
+ * 1. Workflow includes (workflow A includes B includes C includes A)
11
+ * 2. Preflight imports (preflight A imports B imports A)
12
+ * 3. Consolidation references
13
+ * 4. Tag-based group cycles
14
+ *
15
+ * Usage:
16
+ * pnpm preflight:circular-deps
17
+ * pnpm preflight:circular-deps --verbose
18
+ * pnpm preflight:circular-deps --visualize # Output DOT graph
19
+ */
20
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ var desc = Object.getOwnPropertyDescriptor(m, k);
23
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
24
+ desc = { enumerable: true, get: function() { return m[k]; } };
25
+ }
26
+ Object.defineProperty(o, k2, desc);
27
+ }) : (function(o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ o[k2] = m[k];
30
+ }));
31
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
32
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
33
+ }) : function(o, v) {
34
+ o["default"] = v;
35
+ });
36
+ var __importStar = (this && this.__importStar) || (function () {
37
+ var ownKeys = function(o) {
38
+ ownKeys = Object.getOwnPropertyNames || function (o) {
39
+ var ar = [];
40
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
41
+ return ar;
42
+ };
43
+ return ownKeys(o);
44
+ };
45
+ return function (mod) {
46
+ if (mod && mod.__esModule) return mod;
47
+ var result = {};
48
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
49
+ __setModuleDefault(result, mod);
50
+ return result;
51
+ };
52
+ })();
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.tags = exports.description = exports.blocking = exports.category = exports.name = exports.id = void 0;
55
+ exports.run = run;
56
+ const fs = __importStar(require("fs"));
57
+ const path = __importStar(require("path"));
58
+ const file_cache_1 = require("../../shared/file-cache");
59
+ const console_chars_1 = require("../../utils/console-chars");
60
+ const universal_progress_reporter_1 = require("./universal-progress-reporter");
61
+ // Check metadata
62
+ exports.id = "system/preflight-circular-dependency-detector";
63
+ exports.name = "Preflight Circular Dependency Detector";
64
+ exports.category = "system";
65
+ exports.blocking = true;
66
+ exports.description = "Detects circular dependencies in preflight workflows and imports";
67
+ exports.tags = ["system", "architecture", "blocking"];
68
+ const args = process.argv.slice(2);
69
+ const verbose = args.includes("--verbose");
70
+ const visualize = args.includes("--visualize");
71
+ const CHECKS_DIR = path.join(__dirname, "..");
72
+ const nodes = new Map();
73
+ const cycles = [];
74
+ function extractImports(content) {
75
+ const imports = [];
76
+ // Match relative imports within checks directory
77
+ const importMatches = content.matchAll(/from\s+["']\.\.?\/([^"']+)["']/g);
78
+ for (const match of importMatches) {
79
+ imports.push(match[1]);
80
+ }
81
+ // Match dynamic imports
82
+ const dynamicMatches = content.matchAll(/import\s*\(\s*["']\.\.?\/([^"']+)["']\s*\)/g);
83
+ for (const match of dynamicMatches) {
84
+ imports.push(match[1]);
85
+ }
86
+ return imports;
87
+ }
88
+ function extractWorkflowIncludes(content) {
89
+ const includes = [];
90
+ // Match workflow include patterns
91
+ // e.g., const preflights = ["api/check1", "database/check2"]
92
+ const listMatches = content.matchAll(/preflights?\s*[=:]\s*\[([^\]]+)\]/g);
93
+ for (const match of listMatches) {
94
+ const items = match[1].matchAll(/["']([^"']+)["']/g);
95
+ for (const item of items) {
96
+ includes.push(item[1]);
97
+ }
98
+ }
99
+ // Match runPreflight calls
100
+ const runMatches = content.matchAll(/runPreflight\s*\(\s*["']([^"']+)["']/g);
101
+ for (const match of runMatches) {
102
+ includes.push(match[1]);
103
+ }
104
+ // Match import references to other checks
105
+ const checkImports = content.matchAll(/from\s+["']\.\.\/([a-z-]+\/[a-z-]+)["']/g);
106
+ for (const match of checkImports) {
107
+ includes.push(match[1]);
108
+ }
109
+ return includes;
110
+ }
111
+ function getNodeType(filePath) {
112
+ if (filePath.includes("workflows"))
113
+ return "workflow";
114
+ if (filePath.includes("consolidated"))
115
+ return "consolidated";
116
+ return "preflight";
117
+ }
118
+ function analyzePreflightFile(filePath) {
119
+ try {
120
+ const content = fs.readFileSync(filePath, "utf8");
121
+ const relativePath = path.relative(CHECKS_DIR, filePath);
122
+ // Extract ID
123
+ const idMatch = content.match(/export\s+const\s+id\s*=\s*["'`]([^"'`]+)["'`]/);
124
+ const nodeId = idMatch ? idMatch[1] : relativePath.replace(/\.ts$/, "");
125
+ const node = {
126
+ id: nodeId,
127
+ file: relativePath,
128
+ imports: extractImports(content),
129
+ includes: extractWorkflowIncludes(content),
130
+ type: getNodeType(relativePath),
131
+ };
132
+ nodes.set(nodeId, node);
133
+ if (verbose) {
134
+ const deps = node.imports.length + node.includes.length;
135
+ if (deps > 0) {
136
+ console.log(` ${console_chars_1.chars.bullet} ${nodeId}: ${deps} dependencies`);
137
+ }
138
+ }
139
+ }
140
+ catch (error) {
141
+ if (verbose) {
142
+ console.log(` ${console_chars_1.emoji.warning} Could not analyze: ${filePath}`);
143
+ }
144
+ }
145
+ }
146
+ function detectCycles() {
147
+ // Use DFS to detect cycles
148
+ function findCycle(startId, currentId, visited, path, edgeType) {
149
+ if (path.includes(currentId)) {
150
+ // Found a cycle
151
+ const cycleStart = path.indexOf(currentId);
152
+ return [...path.slice(cycleStart), currentId];
153
+ }
154
+ if (visited.has(currentId)) {
155
+ return null;
156
+ }
157
+ visited.add(currentId);
158
+ path.push(currentId);
159
+ const node = nodes.get(currentId);
160
+ if (!node) {
161
+ path.pop();
162
+ return null;
163
+ }
164
+ const edges = edgeType === "import" ? node.imports : node.includes;
165
+ for (const dep of edges) {
166
+ // Normalize dependency ID
167
+ const depId = dep.replace(/\.ts$/, "").replace(/^\.\.\//, "");
168
+ // Check if this dependency exists in our nodes
169
+ const matchingNode = Array.from(nodes.values()).find((n) => n.id === depId || n.file.includes(depId) || depId.includes(n.id.split("/")[1] || ""));
170
+ if (matchingNode) {
171
+ const cycle = findCycle(startId, matchingNode.id, visited, path, edgeType);
172
+ if (cycle) {
173
+ return cycle;
174
+ }
175
+ }
176
+ }
177
+ path.pop();
178
+ return null;
179
+ }
180
+ // Check for import cycles
181
+ for (const [nodeId, node] of nodes) {
182
+ if (node.imports.length > 0) {
183
+ const visited = new Set();
184
+ const cycle = findCycle(nodeId, nodeId, visited, [], "import");
185
+ if (cycle && cycle.length > 1) {
186
+ // Avoid duplicate cycles
187
+ const cycleKey = [...cycle].sort().join("->");
188
+ const exists = cycles.some((c) => [...c.cycle].sort().join("->") === cycleKey);
189
+ if (!exists) {
190
+ cycles.push({ cycle, type: "import" });
191
+ }
192
+ }
193
+ }
194
+ }
195
+ // Check for include/workflow cycles
196
+ for (const [nodeId, node] of nodes) {
197
+ if (node.includes.length > 0) {
198
+ const visited = new Set();
199
+ const cycle = findCycle(nodeId, nodeId, visited, [], "include");
200
+ if (cycle && cycle.length > 1) {
201
+ const cycleKey = [...cycle].sort().join("->");
202
+ const exists = cycles.some((c) => [...c.cycle].sort().join("->") === cycleKey);
203
+ if (!exists) {
204
+ cycles.push({ cycle, type: node.type === "workflow" ? "workflow" : "include" });
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+ function generateDotGraph() {
211
+ let dot = "digraph PreflightDependencies {\n";
212
+ dot += " rankdir=LR;\n";
213
+ dot += " node [shape=box];\n\n";
214
+ // Color by type
215
+ dot += " // Preflights\n";
216
+ for (const [id, node] of nodes) {
217
+ const color = node.type === "workflow" ? "lightblue" : node.type === "consolidated" ? "lightyellow" : "lightgreen";
218
+ dot += ` "${id}" [fillcolor="${color}" style="filled"];\n`;
219
+ }
220
+ dot += "\n // Dependencies\n";
221
+ for (const [id, node] of nodes) {
222
+ for (const imp of node.imports) {
223
+ dot += ` "${id}" -> "${imp}" [style="dashed" color="gray"];\n`;
224
+ }
225
+ for (const inc of node.includes) {
226
+ dot += ` "${id}" -> "${inc}" [color="blue"];\n`;
227
+ }
228
+ }
229
+ // Highlight cycles
230
+ if (cycles.length > 0) {
231
+ dot += "\n // Cycles (red)\n";
232
+ for (const cycle of cycles) {
233
+ for (let i = 0; i < cycle.cycle.length - 1; i++) {
234
+ dot += ` "${cycle.cycle[i]}" -> "${cycle.cycle[i + 1]}" [color="red" penwidth="2"];\n`;
235
+ }
236
+ }
237
+ }
238
+ dot += "}\n";
239
+ return dot;
240
+ }
241
+ async function run() {
242
+ const reporter = (0, universal_progress_reporter_1.createUniversalProgressReporter)(exports.name);
243
+ console.log(`\n${console_chars_1.emoji.search} Preflight Circular Dependency Detector\n`);
244
+ console.log("Analyzing dependency graph for cycles...\n");
245
+ // Find all preflight files (including workflows and consolidated)
246
+ const files = await file_cache_1.fileCache.getFiles("**/*.ts", {
247
+ cwd: CHECKS_DIR,
248
+ ignore: ["**/*.test.ts", "**/*.spec.ts"],
249
+ absolute: true,
250
+ });
251
+ console.log(`Found ${files.length} files to analyze\n`);
252
+ if (verbose) {
253
+ console.log("Building dependency graph:\n");
254
+ }
255
+ // Analyze each file
256
+ for (const file of files) {
257
+ analyzePreflightFile(file);
258
+ }
259
+ // Detect cycles
260
+ detectCycles();
261
+ console.log((0, console_chars_1.createDivider)());
262
+ // Report cycles
263
+ if (cycles.length > 0) {
264
+ console.log(`\n${console_chars_1.emoji.error} Circular Dependencies Detected (${cycles.length}):\n`);
265
+ for (const cycle of cycles) {
266
+ const typeEmoji = cycle.type === "workflow" ? console_chars_1.emoji.workflow : cycle.type === "import" ? console_chars_1.emoji.import : console_chars_1.emoji.link;
267
+ console.log(` ${typeEmoji} ${cycle.type.toUpperCase()} cycle:`);
268
+ console.log(` ${cycle.cycle.join(" -> ")}`);
269
+ console.log();
270
+ }
271
+ console.log(` ${console_chars_1.emoji.warning} Circular dependencies can cause:`);
272
+ console.log(` ${console_chars_1.chars.bullet} Infinite loops during execution`);
273
+ console.log(` ${console_chars_1.chars.bullet} Stack overflow errors`);
274
+ console.log(` ${console_chars_1.chars.bullet} Unpredictable behavior`);
275
+ }
276
+ // Output DOT graph if requested
277
+ if (visualize) {
278
+ const dot = generateDotGraph();
279
+ const dotFile = "test-results/preflight-dependencies.dot";
280
+ const dir = path.dirname(dotFile);
281
+ if (!fs.existsSync(dir)) {
282
+ fs.mkdirSync(dir, { recursive: true });
283
+ }
284
+ fs.writeFileSync(dotFile, dot);
285
+ console.log(`\n${console_chars_1.emoji.file} Dependency graph written to: ${dotFile}`);
286
+ console.log(` Visualize with: dot -Tpng ${dotFile} -o preflight-deps.png`);
287
+ }
288
+ // Summary
289
+ console.log("\n" + (0, console_chars_1.createDivider)());
290
+ console.log(`\n${console_chars_1.emoji.chart} Summary:\n`);
291
+ console.log(` Nodes analyzed: ${nodes.size}`);
292
+ console.log(` Preflights: ${Array.from(nodes.values()).filter((n) => n.type === "preflight").length}`);
293
+ console.log(` Workflows: ${Array.from(nodes.values()).filter((n) => n.type === "workflow").length}`);
294
+ console.log(` Consolidated: ${Array.from(nodes.values()).filter((n) => n.type === "consolidated").length}`);
295
+ console.log(` Circular deps found: ${cycles.length}`);
296
+ if (cycles.length > 0) {
297
+ console.log(`\n${console_chars_1.emoji.error} Circular dependency check FAILED\n`);
298
+ console.log(`Fix the cycles above to prevent runtime issues.\n`);
299
+ process.exit(1);
300
+ }
301
+ else {
302
+ console.log(`\n${console_chars_1.emoji.check} No circular dependencies detected\n`);
303
+ process.exit(0);
304
+ }
305
+ }
306
+ // Allow direct execution
307
+ if (require.main === module) {
308
+ run().catch(console.error);
309
+ }
310
+ //# sourceMappingURL=preflight-circular-dependency-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-circular-dependency-detector.js","sourceRoot":"","sources":["../../../src/checks/system/preflight-circular-dependency-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Preflight Execution Time Benchmarks
4
+ *
5
+ * Tracks historical execution times for each preflight to:
6
+ * 1. Detect performance regressions
7
+ * 2. Identify consistently slow preflights
8
+ * 3. Track trends over time
9
+ * 4. Alert when execution time exceeds thresholds
10
+ *
11
+ * Usage:
12
+ * pnpm preflight:benchmarks # Show current benchmarks
13
+ * pnpm preflight:benchmarks --run # Run all preflights and record times
14
+ * pnpm preflight:benchmarks --trends # Show execution time trends
15
+ * pnpm preflight:benchmarks --slow # Only show slow preflights
16
+ */
17
+ export declare const id = "system/preflight-execution-benchmarks";
18
+ export declare const name = "Preflight Execution Time Benchmarks";
19
+ export declare const category = "system";
20
+ export declare const blocking = false;
21
+ export declare const description = "Tracks historical execution times to detect performance regressions";
22
+ export declare const tags: string[];
23
+ export declare function run(): Promise<void>;
24
+ //# sourceMappingURL=preflight-execution-benchmarks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-execution-benchmarks.d.ts","sourceRoot":"","sources":["../../../src/checks/system/preflight-execution-benchmarks.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG;AAUH,eAAO,MAAM,EAAE,0CAA0C,CAAC;AAC1D,eAAO,MAAM,IAAI,wCAAwC,CAAC;AAC1D,eAAO,MAAM,QAAQ,WAAW,CAAC;AACjC,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,eAAO,MAAM,WAAW,wEAAwE,CAAC;AACjG,eAAO,MAAM,IAAI,UAAuC,CAAC;AAoHzD,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CA+JzC"}
@@ -0,0 +1,282 @@
1
+ #!/usr/bin/env tsx
2
+ "use strict";
3
+ /**
4
+ * Preflight Execution Time Benchmarks
5
+ *
6
+ * Tracks historical execution times for each preflight to:
7
+ * 1. Detect performance regressions
8
+ * 2. Identify consistently slow preflights
9
+ * 3. Track trends over time
10
+ * 4. Alert when execution time exceeds thresholds
11
+ *
12
+ * Usage:
13
+ * pnpm preflight:benchmarks # Show current benchmarks
14
+ * pnpm preflight:benchmarks --run # Run all preflights and record times
15
+ * pnpm preflight:benchmarks --trends # Show execution time trends
16
+ * pnpm preflight:benchmarks --slow # Only show slow preflights
17
+ */
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ var desc = Object.getOwnPropertyDescriptor(m, k);
21
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
+ desc = { enumerable: true, get: function() { return m[k]; } };
23
+ }
24
+ Object.defineProperty(o, k2, desc);
25
+ }) : (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ o[k2] = m[k];
28
+ }));
29
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
30
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
31
+ }) : function(o, v) {
32
+ o["default"] = v;
33
+ });
34
+ var __importStar = (this && this.__importStar) || (function () {
35
+ var ownKeys = function(o) {
36
+ ownKeys = Object.getOwnPropertyNames || function (o) {
37
+ var ar = [];
38
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
39
+ return ar;
40
+ };
41
+ return ownKeys(o);
42
+ };
43
+ return function (mod) {
44
+ if (mod && mod.__esModule) return mod;
45
+ var result = {};
46
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
47
+ __setModuleDefault(result, mod);
48
+ return result;
49
+ };
50
+ })();
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.tags = exports.description = exports.blocking = exports.category = exports.name = exports.id = void 0;
53
+ exports.run = run;
54
+ const child_process_1 = require("child_process");
55
+ const fs = __importStar(require("fs"));
56
+ const path = __importStar(require("path"));
57
+ const file_cache_1 = require("../../shared/file-cache");
58
+ const console_chars_1 = require("../../utils/console-chars");
59
+ const universal_progress_reporter_1 = require("./universal-progress-reporter");
60
+ // Check metadata
61
+ exports.id = "system/preflight-execution-benchmarks";
62
+ exports.name = "Preflight Execution Time Benchmarks";
63
+ exports.category = "system";
64
+ exports.blocking = false;
65
+ exports.description = "Tracks historical execution times to detect performance regressions";
66
+ exports.tags = ["system", "performance", "metrics"];
67
+ const args = process.argv.slice(2);
68
+ const runBenchmarks = args.includes("--run");
69
+ const showTrends = args.includes("--trends");
70
+ const slowOnly = args.includes("--slow");
71
+ const verbose = args.includes("--verbose");
72
+ const CHECKS_DIR = path.join(__dirname, "..");
73
+ const BENCHMARK_FILE = "test-results/preflight-benchmarks.json";
74
+ // Thresholds
75
+ const SLOW_THRESHOLD_MS = 10000; // 10 seconds
76
+ const VERY_SLOW_THRESHOLD_MS = 30000; // 30 seconds
77
+ const REGRESSION_PERCENT = 50; // 50% slower than average
78
+ function loadBenchmarks() {
79
+ if (fs.existsSync(BENCHMARK_FILE)) {
80
+ try {
81
+ return JSON.parse(fs.readFileSync(BENCHMARK_FILE, "utf8"));
82
+ }
83
+ catch {
84
+ // Invalid file, start fresh
85
+ }
86
+ }
87
+ return {
88
+ version: 1,
89
+ lastUpdated: new Date().toISOString(),
90
+ preflights: {},
91
+ };
92
+ }
93
+ function saveBenchmarks(data) {
94
+ const dir = path.dirname(BENCHMARK_FILE);
95
+ if (!fs.existsSync(dir)) {
96
+ fs.mkdirSync(dir, { recursive: true });
97
+ }
98
+ data.lastUpdated = new Date().toISOString();
99
+ fs.writeFileSync(BENCHMARK_FILE, JSON.stringify(data, null, 2));
100
+ }
101
+ function calculateTrend(history) {
102
+ if (history.length < 5)
103
+ return "unknown";
104
+ const recent = history.slice(-5);
105
+ const older = history.slice(-10, -5);
106
+ if (older.length < 3)
107
+ return "unknown";
108
+ const recentAvg = recent.reduce((sum, e) => sum + e.duration, 0) / recent.length;
109
+ const olderAvg = older.reduce((sum, e) => sum + e.duration, 0) / older.length;
110
+ const changePercent = ((recentAvg - olderAvg) / olderAvg) * 100;
111
+ if (changePercent > 20)
112
+ return "degrading";
113
+ if (changePercent < -20)
114
+ return "improving";
115
+ return "stable";
116
+ }
117
+ function formatDuration(ms) {
118
+ if (ms < 1000)
119
+ return `${ms}ms`;
120
+ if (ms < 60000)
121
+ return `${(ms / 1000).toFixed(1)}s`;
122
+ return `${(ms / 60000).toFixed(1)}m`;
123
+ }
124
+ async function runPreflightBenchmark(filePath) {
125
+ const start = Date.now();
126
+ let result = "pass";
127
+ try {
128
+ (0, child_process_1.execSync)(`npx tsx "${filePath}"`, {
129
+ encoding: "utf8",
130
+ timeout: 120000, // 2 minute timeout
131
+ stdio: ["pipe", "pipe", "pipe"],
132
+ });
133
+ }
134
+ catch (error) {
135
+ if (error.killed) {
136
+ result = "timeout";
137
+ }
138
+ else if (error.status === 1) {
139
+ result = "fail";
140
+ }
141
+ else {
142
+ result = "error";
143
+ }
144
+ }
145
+ const duration = Date.now() - start;
146
+ return {
147
+ timestamp: new Date().toISOString(),
148
+ duration,
149
+ result,
150
+ };
151
+ }
152
+ async function run() {
153
+ const reporter = (0, universal_progress_reporter_1.createUniversalProgressReporter)(exports.name);
154
+ console.log(`\n${console_chars_1.emoji.chart} Preflight Execution Time Benchmarks\n`);
155
+ const data = loadBenchmarks();
156
+ if (runBenchmarks) {
157
+ console.log("Running benchmarks for all preflights...\n");
158
+ console.log(`${console_chars_1.emoji.warning} This may take several minutes.\n`);
159
+ // Find all preflight files
160
+ const files = await file_cache_1.fileCache.getFiles("**/*.ts", {
161
+ cwd: CHECKS_DIR,
162
+ ignore: ["**/*.test.ts", "**/*.spec.ts", "consolidated/**", "workflows/**", "core/**"],
163
+ absolute: true,
164
+ });
165
+ let completed = 0;
166
+ for (const file of files) {
167
+ const relativePath = path.relative(CHECKS_DIR, file);
168
+ try {
169
+ const content = fs.readFileSync(file, "utf8");
170
+ const idMatch = content.match(/export\s+const\s+id\s*=\s*["'`]([^"'`]+)["'`]/);
171
+ const nameMatch = content.match(/export\s+const\s+name\s*=\s*["'`]([^"'`]+)["'`]/);
172
+ if (!idMatch)
173
+ continue;
174
+ const preflightId = idMatch[1];
175
+ const preflightName = nameMatch ? nameMatch[1] : relativePath;
176
+ process.stdout.write(` ${console_chars_1.chars.bullet} ${preflightId}... `);
177
+ const entry = await runPreflightBenchmark(file);
178
+ // Update benchmark data
179
+ if (!data.preflights[preflightId]) {
180
+ data.preflights[preflightId] = {
181
+ id: preflightId,
182
+ name: preflightName,
183
+ history: [],
184
+ averageDuration: 0,
185
+ minDuration: Infinity,
186
+ maxDuration: 0,
187
+ lastRun: "",
188
+ trend: "unknown",
189
+ };
190
+ }
191
+ const benchmark = data.preflights[preflightId];
192
+ benchmark.history.push(entry);
193
+ // Keep only last 100 entries
194
+ if (benchmark.history.length > 100) {
195
+ benchmark.history = benchmark.history.slice(-100);
196
+ }
197
+ // Update statistics
198
+ const durations = benchmark.history.map((h) => h.duration);
199
+ benchmark.averageDuration = Math.round(durations.reduce((sum, d) => sum + d, 0) / durations.length);
200
+ benchmark.minDuration = Math.min(...durations);
201
+ benchmark.maxDuration = Math.max(...durations);
202
+ benchmark.lastRun = entry.timestamp;
203
+ benchmark.trend = calculateTrend(benchmark.history);
204
+ const statusEmoji = entry.result === "pass" ? console_chars_1.emoji.check : console_chars_1.emoji.error;
205
+ console.log(`${statusEmoji} ${formatDuration(entry.duration)}`);
206
+ completed++;
207
+ }
208
+ catch (error) {
209
+ console.log(`${console_chars_1.emoji.error} error`);
210
+ }
211
+ }
212
+ saveBenchmarks(data);
213
+ console.log(`\n${console_chars_1.emoji.check} Completed ${completed} benchmarks\n`);
214
+ }
215
+ console.log((0, console_chars_1.createDivider)());
216
+ // Analyze current benchmarks
217
+ const benchmarks = Object.values(data.preflights);
218
+ if (benchmarks.length === 0) {
219
+ console.log(`\n${console_chars_1.emoji.warning} No benchmark data available.`);
220
+ console.log(`Run with --run flag to collect benchmarks.\n`);
221
+ process.exit(0);
222
+ }
223
+ // Categorize by speed
224
+ const verySlow = benchmarks.filter((b) => b.averageDuration > VERY_SLOW_THRESHOLD_MS);
225
+ const slow = benchmarks.filter((b) => b.averageDuration > SLOW_THRESHOLD_MS && b.averageDuration <= VERY_SLOW_THRESHOLD_MS);
226
+ const degrading = benchmarks.filter((b) => b.trend === "degrading");
227
+ const fast = benchmarks.filter((b) => b.averageDuration <= SLOW_THRESHOLD_MS);
228
+ // Sort by duration
229
+ benchmarks.sort((a, b) => b.averageDuration - a.averageDuration);
230
+ if (verySlow.length > 0) {
231
+ console.log(`\n${console_chars_1.emoji.error} Very Slow Preflights (>${formatDuration(VERY_SLOW_THRESHOLD_MS)}):\n`);
232
+ for (const b of verySlow) {
233
+ const trendIcon = b.trend === "degrading" ? console_chars_1.emoji.arrowUp : b.trend === "improving" ? console_chars_1.emoji.arrowDown : "";
234
+ console.log(` ${console_chars_1.chars.bullet} ${b.id}`);
235
+ console.log(` Avg: ${formatDuration(b.averageDuration)} | Min: ${formatDuration(b.minDuration)} | Max: ${formatDuration(b.maxDuration)} ${trendIcon}`);
236
+ }
237
+ }
238
+ if (slow.length > 0 && !slowOnly) {
239
+ console.log(`\n${console_chars_1.emoji.warning} Slow Preflights (>${formatDuration(SLOW_THRESHOLD_MS)}):\n`);
240
+ for (const b of slow) {
241
+ const trendIcon = b.trend === "degrading" ? console_chars_1.emoji.arrowUp : b.trend === "improving" ? console_chars_1.emoji.arrowDown : "";
242
+ console.log(` ${console_chars_1.chars.bullet} ${b.id} - ${formatDuration(b.averageDuration)} ${trendIcon}`);
243
+ }
244
+ }
245
+ if (degrading.length > 0) {
246
+ console.log(`\n${console_chars_1.emoji.warning} Performance Regressions Detected:\n`);
247
+ for (const b of degrading) {
248
+ console.log(` ${console_chars_1.chars.bullet} ${b.id} - Getting slower over time`);
249
+ }
250
+ }
251
+ if (showTrends) {
252
+ console.log(`\n${console_chars_1.emoji.chart} Execution Time Trends:\n`);
253
+ const improving = benchmarks.filter((b) => b.trend === "improving");
254
+ const stable = benchmarks.filter((b) => b.trend === "stable");
255
+ console.log(` ${console_chars_1.emoji.arrowDown} Improving: ${improving.length}`);
256
+ console.log(` ${console_chars_1.chars.bullet} Stable: ${stable.length}`);
257
+ console.log(` ${console_chars_1.emoji.arrowUp} Degrading: ${degrading.length}`);
258
+ console.log(` ${console_chars_1.emoji.question} Unknown: ${benchmarks.filter((b) => b.trend === "unknown").length}`);
259
+ }
260
+ // Summary
261
+ console.log("\n" + (0, console_chars_1.createDivider)());
262
+ console.log(`\n${console_chars_1.emoji.chart} Summary:\n`);
263
+ console.log(` Total preflights: ${benchmarks.length}`);
264
+ console.log(` Very slow (>30s): ${verySlow.length}`);
265
+ console.log(` Slow (>10s): ${slow.length}`);
266
+ console.log(` Fast (<10s): ${fast.length}`);
267
+ console.log(` Degrading: ${degrading.length}`);
268
+ const totalAvg = Math.round(benchmarks.reduce((sum, b) => sum + b.averageDuration, 0) / benchmarks.length);
269
+ console.log(` Average duration: ${formatDuration(totalAvg)}`);
270
+ if (verySlow.length > 0 || degrading.length > 0) {
271
+ console.log(`\n${console_chars_1.emoji.warning} Some preflights need performance optimization\n`);
272
+ }
273
+ else {
274
+ console.log(`\n${console_chars_1.emoji.check} Preflight performance is healthy\n`);
275
+ }
276
+ process.exit(0);
277
+ }
278
+ // Allow direct execution
279
+ if (require.main === module) {
280
+ run().catch(console.error);
281
+ }
282
+ //# sourceMappingURL=preflight-execution-benchmarks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-execution-benchmarks.js","sourceRoot":"","sources":["../../../src/checks/system/preflight-execution-benchmarks.ts"],"names":[],"mappings":"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"}