@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.
- package/dist/checks/auth/session-provider-wrapper.d.ts +47 -0
- package/dist/checks/auth/session-provider-wrapper.d.ts.map +1 -0
- package/dist/checks/auth/session-provider-wrapper.js +286 -0
- package/dist/checks/auth/session-provider-wrapper.js.map +1 -0
- package/dist/checks/core/ui-quality.js +1 -1
- package/dist/checks/core/ui-quality.js.map +1 -1
- package/dist/checks/database/prisma-upsert-safety.d.ts +39 -0
- package/dist/checks/database/prisma-upsert-safety.d.ts.map +1 -0
- package/dist/checks/database/prisma-upsert-safety.js +220 -0
- package/dist/checks/database/prisma-upsert-safety.js.map +1 -0
- package/dist/checks/dependencies/dependency-health-monitor.d.ts +49 -0
- package/dist/checks/dependencies/dependency-health-monitor.d.ts.map +1 -0
- package/dist/checks/dependencies/dependency-health-monitor.js +323 -0
- package/dist/checks/dependencies/dependency-health-monitor.js.map +1 -0
- package/dist/checks/email/email-template-db-verification.d.ts +5 -1
- package/dist/checks/email/email-template-db-verification.d.ts.map +1 -1
- package/dist/checks/email/email-template-db-verification.js +49 -3
- package/dist/checks/email/email-template-db-verification.js.map +1 -1
- package/dist/checks/file-hygiene-validation.d.ts +31 -0
- package/dist/checks/file-hygiene-validation.d.ts.map +1 -0
- package/dist/checks/file-hygiene-validation.js +934 -0
- package/dist/checks/file-hygiene-validation.js.map +1 -0
- package/dist/checks/organization/file-cleanup-validation.d.ts +22 -0
- package/dist/checks/organization/file-cleanup-validation.d.ts.map +1 -0
- package/dist/checks/organization/file-cleanup-validation.js +1121 -0
- package/dist/checks/organization/file-cleanup-validation.js.map +1 -0
- package/dist/checks/runtime/tailwind-runtime-check.d.ts +36 -0
- package/dist/checks/runtime/tailwind-runtime-check.d.ts.map +1 -0
- package/dist/checks/runtime/tailwind-runtime-check.js +264 -0
- package/dist/checks/runtime/tailwind-runtime-check.js.map +1 -0
- package/dist/checks/shipping-integration-validation.d.ts +28 -0
- package/dist/checks/shipping-integration-validation.d.ts.map +1 -0
- package/dist/checks/shipping-integration-validation.js +409 -0
- package/dist/checks/shipping-integration-validation.js.map +1 -0
- package/dist/checks/specialized/shared-components-migration.d.ts.map +1 -1
- package/dist/checks/specialized/shared-components-migration.js +2 -2
- package/dist/checks/specialized/shared-components-migration.js.map +1 -1
- package/dist/checks/specialized/store-specialties-normalization.d.ts +10 -1
- package/dist/checks/specialized/store-specialties-normalization.d.ts.map +1 -1
- package/dist/checks/specialized/store-specialties-normalization.js +39 -12
- package/dist/checks/specialized/store-specialties-normalization.js.map +1 -1
- package/dist/checks/system/layout-constants-sync.d.ts +36 -0
- package/dist/checks/system/layout-constants-sync.d.ts.map +1 -0
- package/dist/checks/system/layout-constants-sync.js +642 -0
- package/dist/checks/system/layout-constants-sync.js.map +1 -0
- package/dist/checks/system/package-health-check.d.ts +43 -0
- package/dist/checks/system/package-health-check.d.ts.map +1 -0
- package/dist/checks/system/package-health-check.js +323 -0
- package/dist/checks/system/package-health-check.js.map +1 -0
- package/dist/checks/system/preflight-circular-dependency-detector.d.ts +26 -0
- package/dist/checks/system/preflight-circular-dependency-detector.d.ts.map +1 -0
- package/dist/checks/system/preflight-circular-dependency-detector.js +310 -0
- package/dist/checks/system/preflight-circular-dependency-detector.js.map +1 -0
- package/dist/checks/system/preflight-execution-benchmarks.d.ts +24 -0
- package/dist/checks/system/preflight-execution-benchmarks.d.ts.map +1 -0
- package/dist/checks/system/preflight-execution-benchmarks.js +282 -0
- package/dist/checks/system/preflight-execution-benchmarks.js.map +1 -0
- package/dist/checks/system/preflight-tag-taxonomy-validator.d.ts +27 -0
- package/dist/checks/system/preflight-tag-taxonomy-validator.d.ts.map +1 -0
- package/dist/checks/system/preflight-tag-taxonomy-validator.js +361 -0
- package/dist/checks/system/preflight-tag-taxonomy-validator.js.map +1 -0
- package/dist/checks/testing/data-entry-regression-required.d.ts +5 -0
- package/dist/checks/testing/data-entry-regression-required.d.ts.map +1 -1
- package/dist/checks/testing/data-entry-regression-required.js +28 -7
- package/dist/checks/testing/data-entry-regression-required.js.map +1 -1
- package/dist/checks/testing/e2e-timeouts.d.ts +1 -0
- package/dist/checks/testing/e2e-timeouts.d.ts.map +1 -1
- package/dist/checks/testing/e2e-timeouts.js +49 -6
- package/dist/checks/testing/e2e-timeouts.js.map +1 -1
- package/dist/utils/console-chars.d.ts +16 -0
- package/dist/utils/console-chars.d.ts.map +1 -1
- package/dist/utils/console-chars.js +10 -0
- package/dist/utils/console-chars.js.map +1 -1
- 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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"}
|