@empline/preflight 1.1.35 → 1.1.37
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/bin/approve.js +0 -0
- package/dist/bin/audit.js +0 -0
- package/dist/bin/install-hooks.js +0 -0
- package/dist/bin/preflight.js +0 -0
- package/dist/bin/review-drift.js +0 -0
- package/dist/bin/review.js +0 -0
- package/dist/bin/submit-drift.js +0 -0
- package/dist/bin/submit.js +0 -0
- package/dist/bin/sync-check.js +0 -0
- package/dist/bin/watch.js +0 -0
- package/dist/checks/auth/client-only-protected-pages.d.ts.map +1 -1
- package/dist/checks/auth/client-only-protected-pages.js +4 -2
- package/dist/checks/auth/client-only-protected-pages.js.map +1 -1
- package/dist/checks/auth/store-page-auth-guard.js +2 -2
- package/dist/checks/auth/store-page-auth-guard.js.map +1 -1
- package/dist/checks/system/preflight-drift-detector.js +0 -0
- package/dist/checks/ui/section-header-spacing.d.ts +24 -0
- package/dist/checks/ui/section-header-spacing.d.ts.map +1 -0
- package/dist/checks/ui/section-header-spacing.js +231 -0
- package/dist/checks/ui/section-header-spacing.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/performance-cache.d.ts +91 -0
- package/dist/utils/performance-cache.d.ts.map +1 -0
- package/dist/utils/performance-cache.js +233 -0
- package/dist/utils/performance-cache.js.map +1 -0
- package/package.json +18 -19
package/dist/bin/approve.js
CHANGED
|
File without changes
|
package/dist/bin/audit.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/bin/preflight.js
CHANGED
|
File without changes
|
package/dist/bin/review-drift.js
CHANGED
|
File without changes
|
package/dist/bin/review.js
CHANGED
|
File without changes
|
package/dist/bin/submit-drift.js
CHANGED
|
File without changes
|
package/dist/bin/submit.js
CHANGED
|
File without changes
|
package/dist/bin/sync-check.js
CHANGED
|
File without changes
|
package/dist/bin/watch.js
CHANGED
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-only-protected-pages.d.ts","sourceRoot":"","sources":["../../../src/checks/auth/client-only-protected-pages.ts"],"names":[],"mappings":";AA2BA,eAAO,MAAM,EAAE,qCAAqC,CAAC;AACrD,eAAO,MAAM,IAAI,gCAAgC,CAAC;AAClD,eAAO,MAAM,WAAW,sEAAsE,CAAC;AAC/F,eAAO,MAAM,QAAQ,SAAS,CAAC;AAC/B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,IAAI,UAA8D,CAAC;AAChF,eAAO,MAAM,QAAQ,UAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"client-only-protected-pages.d.ts","sourceRoot":"","sources":["../../../src/checks/auth/client-only-protected-pages.ts"],"names":[],"mappings":";AA2BA,eAAO,MAAM,EAAE,qCAAqC,CAAC;AACrD,eAAO,MAAM,IAAI,gCAAgC,CAAC;AAClD,eAAO,MAAM,WAAW,sEAAsE,CAAC;AAC/F,eAAO,MAAM,QAAQ,SAAS,CAAC;AAC/B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,IAAI,UAA8D,CAAC;AAChF,eAAO,MAAM,QAAQ,UAA0B,CAAC;AAiDhD,wBAAsB,GAAG,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAmH3F"}
|
|
@@ -67,8 +67,10 @@ function hasUseClientDirective(content) {
|
|
|
67
67
|
}
|
|
68
68
|
function hasServerAuthCheck(content) {
|
|
69
69
|
// Check for server-side auth patterns
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
// Must match auth function calls AND have redirect/error handling
|
|
71
|
+
const authPatterns = /getServerSession|auth\s*\(\s*\)|requireAuth|requireAdmin|requireSeller|requireRole/;
|
|
72
|
+
const redirectPatterns = /redirect|notFound|throw/;
|
|
73
|
+
return authPatterns.test(content) && redirectPatterns.test(content);
|
|
72
74
|
}
|
|
73
75
|
async function run() {
|
|
74
76
|
console.log(`\n${console_chars_1.emoji.shield} CLIENT ONLY PROTECTED PAGES CHECK`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-only-protected-pages.js","sourceRoot":"","sources":["../../../src/checks/auth/client-only-protected-pages.ts"],"names":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"client-only-protected-pages.js","sourceRoot":"","sources":["../../../src/checks/auth/client-only-protected-pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,9 +51,9 @@ const STORE_PAGE_PATTERNS = [
|
|
|
51
51
|
* Required auth patterns for store pages
|
|
52
52
|
*/
|
|
53
53
|
const REQUIRED_AUTH_PATTERNS = {
|
|
54
|
-
// Session/auth check
|
|
54
|
+
// Session/auth check - must include all require* patterns
|
|
55
55
|
sessionCheck: {
|
|
56
|
-
pattern: /getServerSession|auth\s*\(\s*\)|requireAuth|getSession/,
|
|
56
|
+
pattern: /getServerSession|auth\s*\(\s*\)|requireAuth|requireAdmin|requireSeller|requireRole|getSession/,
|
|
57
57
|
description: "Session/authentication check",
|
|
58
58
|
critical: true,
|
|
59
59
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-page-auth-guard.js","sourceRoot":"","sources":["../../../src/checks/auth/store-page-auth-guard.ts"],"names":[],"mappings":";;;;;;;AAkIA,kBA4IC;AA7QD;;;;;;;;;;;;;;;;;;GAkBG;AACH,4CAAoB;AACpB,gDAAwB;AACxB,+BAA4B;AAE5B,6DAAiE;AAEjE,kDAAkD;AACrC,QAAA,EAAE,GAAG,4BAA4B,CAAC;AAClC,QAAA,IAAI,GAAG,uBAAuB,CAAC;AAC/B,QAAA,WAAW,GAAG,+DAA+D,CAAC;AAC9E,QAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,QAAQ,GAAG,IAAI,CAAC,CAAC,0BAA0B;AAC3C,QAAA,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;AACnE,QAAA,QAAQ,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,mBAAmB,GAAG;IAC1B,uBAAuB;IACvB,yBAAyB;IACzB,2BAA2B;IAC3B,yBAAyB;IACzB,2BAA2B;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG;IAC7B,
|
|
1
|
+
{"version":3,"file":"store-page-auth-guard.js","sourceRoot":"","sources":["../../../src/checks/auth/store-page-auth-guard.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section Header Spacing Preflight
|
|
3
|
+
*
|
|
4
|
+
* Ensures proper spacing around section headers (h2, h3) and their
|
|
5
|
+
* accompanying descriptive text. Without proper spacing, sections
|
|
6
|
+
* look cramped and unprofessional.
|
|
7
|
+
*
|
|
8
|
+
* RULES:
|
|
9
|
+
* 1. Container pattern check: When a div contains only heading (h2/h3) + paragraph,
|
|
10
|
+
* it MUST have flex/gap or mb-* spacing classes
|
|
11
|
+
* 2. Section header margin: Header containers should have bottom margin (mb-*)
|
|
12
|
+
* before grid/content follows
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* pnpm preflight:ui-spacing:section-headers
|
|
16
|
+
*/
|
|
17
|
+
export declare const id = "ui/section-header-spacing";
|
|
18
|
+
export declare const name = "Section Header Spacing";
|
|
19
|
+
export declare const category = "ui";
|
|
20
|
+
export declare const blocking = true;
|
|
21
|
+
export declare const description = "Ensures proper spacing around section headers";
|
|
22
|
+
export declare const tags: string[];
|
|
23
|
+
export declare function run(): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=section-header-spacing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-header-spacing.d.ts","sourceRoot":"","sources":["../../../src/checks/ui/section-header-spacing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,eAAO,MAAM,EAAE,8BAA8B,CAAC;AAC9C,eAAO,MAAM,IAAI,2BAA2B,CAAC;AAC7C,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,WAAW,kDAAkD,CAAC;AAC3E,eAAO,MAAM,IAAI,UAAoB,CAAC;AA8BtC,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAsLzC"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Section Header Spacing Preflight
|
|
4
|
+
*
|
|
5
|
+
* Ensures proper spacing around section headers (h2, h3) and their
|
|
6
|
+
* accompanying descriptive text. Without proper spacing, sections
|
|
7
|
+
* look cramped and unprofessional.
|
|
8
|
+
*
|
|
9
|
+
* RULES:
|
|
10
|
+
* 1. Container pattern check: When a div contains only heading (h2/h3) + paragraph,
|
|
11
|
+
* it MUST have flex/gap or mb-* spacing classes
|
|
12
|
+
* 2. Section header margin: Header containers should have bottom margin (mb-*)
|
|
13
|
+
* before grid/content follows
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* pnpm preflight:ui-spacing:section-headers
|
|
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 fs = __importStar(require("fs"));
|
|
55
|
+
const file_cache_1 = require("../../shared/file-cache");
|
|
56
|
+
const glob_patterns_1 = require("../../shared/glob-patterns");
|
|
57
|
+
const console_chars_1 = require("../../utils/console-chars");
|
|
58
|
+
// Check metadata
|
|
59
|
+
exports.id = "ui/section-header-spacing";
|
|
60
|
+
exports.name = "Section Header Spacing";
|
|
61
|
+
exports.category = "ui";
|
|
62
|
+
exports.blocking = true;
|
|
63
|
+
exports.description = "Ensures proper spacing around section headers";
|
|
64
|
+
exports.tags = ["ui", "spacing"];
|
|
65
|
+
const EXCLUDED = (0, glob_patterns_1.extendExcludes)(glob_patterns_1.STANDARD_EXCLUDES_WITH_TESTS, [
|
|
66
|
+
"**/scripts/**",
|
|
67
|
+
"**/test-results/**",
|
|
68
|
+
"**/packages/**",
|
|
69
|
+
]);
|
|
70
|
+
// Pattern 1: Div containing h2/h3 followed by p without gap class
|
|
71
|
+
// This catches: <div className="text-center"><h3>...</h3><p>...</p></div>
|
|
72
|
+
// with no gap-* or flex in the className
|
|
73
|
+
const HEADER_CONTAINER_PATTERN = /<div\s+(?:style=\{[^}]*\}\s+)?className="([^"]*)">\s*\n?\s*<h[23][^>]*>[\s\S]*?<\/h[23]>\s*\n?\s*<p[^>]*>/g;
|
|
74
|
+
// Pattern 2: Header containers that transition directly to grids without margin
|
|
75
|
+
// This catches content like: </div>\n\n<div className="grid"
|
|
76
|
+
const HEADER_TO_GRID_PATTERN = /<\/div>\s*\n?\s*(?:\{\/\*[^*]*\*\/\})?\s*\n?\s*<div\s+className="(?!.*mb-)([^"]*(?:grid|flex)[^"]*)"/g;
|
|
77
|
+
async function run() {
|
|
78
|
+
console.log(`\n${console_chars_1.emoji.search} Section Header Spacing Check\n`);
|
|
79
|
+
console.log("Rules:");
|
|
80
|
+
console.log(` ${console_chars_1.emoji.error} Section header containers (div with h2/h3 + p) must have gap-* or flex gap`);
|
|
81
|
+
console.log(` ${console_chars_1.emoji.error} Section header containers before grids must have mb-* for separation`);
|
|
82
|
+
console.log("");
|
|
83
|
+
const allFiles = await file_cache_1.fileCache.getAllTsTsx();
|
|
84
|
+
// Filter for component files
|
|
85
|
+
const files = allFiles.filter((file) => {
|
|
86
|
+
const normalizedPath = file.replace(/\\/g, "/");
|
|
87
|
+
return (!normalizedPath.includes("/scripts/") &&
|
|
88
|
+
!normalizedPath.includes("/tests/") &&
|
|
89
|
+
!normalizedPath.includes("/packages/") &&
|
|
90
|
+
!normalizedPath.includes("/test-results/") &&
|
|
91
|
+
(normalizedPath.includes("/components/") || normalizedPath.includes("/app/")));
|
|
92
|
+
});
|
|
93
|
+
const issues = [];
|
|
94
|
+
for (const file of files) {
|
|
95
|
+
const content = fs.readFileSync(file, "utf8");
|
|
96
|
+
const lines = content.split("\n");
|
|
97
|
+
// Skip files with preflight-ignore at file level
|
|
98
|
+
if (content.includes("// preflight-file-ignore: section-header-spacing"))
|
|
99
|
+
continue;
|
|
100
|
+
// Check Pattern 1: Header container without gap
|
|
101
|
+
// Look for multi-line patterns with div > h2/h3 > p
|
|
102
|
+
for (let i = 0; i < lines.length - 3; i++) {
|
|
103
|
+
const line = lines[i];
|
|
104
|
+
// Skip if line has preflight-ignore
|
|
105
|
+
if (line.includes("preflight-ignore"))
|
|
106
|
+
continue;
|
|
107
|
+
// Look for opening div with className (but not containing gap- or flex)
|
|
108
|
+
const divMatch = line.match(/<div\s+className="([^"]*)"\s*>/);
|
|
109
|
+
if (divMatch) {
|
|
110
|
+
const className = divMatch[1];
|
|
111
|
+
// Skip if it already has gap-* or flex with gap
|
|
112
|
+
if (className.includes("gap-") || (className.includes("flex") && className.includes("gap")))
|
|
113
|
+
continue;
|
|
114
|
+
// Check next few lines for h2/h3 followed by p (section header pattern)
|
|
115
|
+
const nextLines = lines.slice(i, i + 6).join("\n");
|
|
116
|
+
const isHeaderPattern = /<h[23][^>]*>[\s\S]*?<\/h[23]>\s*\n?\s*<p[^>]*>[\s\S]*?<\/p>/.test(nextLines);
|
|
117
|
+
if (isHeaderPattern) {
|
|
118
|
+
// Check if container has mb-* for spacing below
|
|
119
|
+
const hasBottomMargin = className.match(/\bmb-\d+\b/);
|
|
120
|
+
// Check if it has flex flex-col gap-*
|
|
121
|
+
const hasFlexGap = (className.includes("flex") || className.includes("flex-col")) &&
|
|
122
|
+
className.includes("gap-");
|
|
123
|
+
if (!hasBottomMargin && !hasFlexGap) {
|
|
124
|
+
issues.push({
|
|
125
|
+
file,
|
|
126
|
+
line: i + 1,
|
|
127
|
+
column: line.indexOf("className") + 1,
|
|
128
|
+
type: "error",
|
|
129
|
+
rule: "section-header-container-spacing",
|
|
130
|
+
message: 'Section header container (div with h2/h3 + p) lacks spacing. Add "flex flex-col gap-2" for internal spacing and "mb-6" for separation from following content.',
|
|
131
|
+
snippet: line.trim(),
|
|
132
|
+
suggestion: 'Add className="mb-6 flex flex-col items-center gap-2 text-center" for proper spacing',
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Check Pattern 2: Header block followed by grid without margin
|
|
139
|
+
// Look for lines where a closing tag is followed by a grid without mb-*
|
|
140
|
+
for (let i = 0; i < lines.length - 2; i++) {
|
|
141
|
+
const line = lines[i];
|
|
142
|
+
const nextLine = lines[i + 1] || "";
|
|
143
|
+
const nextNextLine = lines[i + 2] || "";
|
|
144
|
+
// Skip if commented
|
|
145
|
+
if (line.trim().startsWith("//") || line.trim().startsWith("/*"))
|
|
146
|
+
continue;
|
|
147
|
+
// Check for: </div> on one line, followed by a line with {/* Comment */} or blank,
|
|
148
|
+
// then a grid div without mb-*
|
|
149
|
+
if (line.includes("</div>")) {
|
|
150
|
+
// Check next 2-3 lines for a grid
|
|
151
|
+
const upcoming = [nextLine, nextNextLine].join("\n");
|
|
152
|
+
const gridMatch = upcoming.match(/<div\s+className="([^"]*\bgrid\b[^"]*)"/);
|
|
153
|
+
if (gridMatch) {
|
|
154
|
+
// Check if the previous line's container had mb-* (look back for the header container)
|
|
155
|
+
const prevLines = lines.slice(Math.max(0, i - 10), i).join("\n");
|
|
156
|
+
const isAfterHeader = prevLines.includes("<h2") || prevLines.includes("<h3");
|
|
157
|
+
if (isAfterHeader) {
|
|
158
|
+
// Check if the header container had mb-*
|
|
159
|
+
const headerContainerMatch = prevLines.match(/<div\s+className="([^"]*)"\s*>/);
|
|
160
|
+
if (headerContainerMatch) {
|
|
161
|
+
const containerClass = headerContainerMatch[1];
|
|
162
|
+
if (!containerClass.includes("mb-")) {
|
|
163
|
+
issues.push({
|
|
164
|
+
file,
|
|
165
|
+
line: i + 1,
|
|
166
|
+
column: 1,
|
|
167
|
+
type: "warning",
|
|
168
|
+
rule: "section-header-margin-before-grid",
|
|
169
|
+
message: "Section header container before grid lacks bottom margin. Content may appear cramped.",
|
|
170
|
+
snippet: lines.slice(Math.max(0, i - 2), i + 2).join("\n").trim(),
|
|
171
|
+
suggestion: 'Add "mb-6" to the header container for proper separation',
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Deduplicate issues by file+line
|
|
181
|
+
const uniqueIssues = issues.filter((issue, index, self) => index === self.findIndex((i) => i.file === issue.file && i.line === issue.line));
|
|
182
|
+
// Report results
|
|
183
|
+
const errors = uniqueIssues.filter((i) => i.type === "error");
|
|
184
|
+
const warnings = uniqueIssues.filter((i) => i.type === "warning");
|
|
185
|
+
if (errors.length > 0) {
|
|
186
|
+
console.log(`\n${console_chars_1.emoji.error} BLOCKING ERRORS (${errors.length}):\n`);
|
|
187
|
+
errors.slice(0, 20).forEach((issue) => {
|
|
188
|
+
console.log(` ${issue.file}:${issue.line}:${issue.column}`);
|
|
189
|
+
console.log(` Rule: ${issue.rule}`);
|
|
190
|
+
console.log(` ${issue.message}`);
|
|
191
|
+
if (issue.suggestion) {
|
|
192
|
+
console.log(` ${console_chars_1.emoji.hint} ${issue.suggestion}`);
|
|
193
|
+
}
|
|
194
|
+
console.log("");
|
|
195
|
+
});
|
|
196
|
+
if (errors.length > 20) {
|
|
197
|
+
console.log(` ... and ${errors.length - 20} more errors\n`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (warnings.length > 0) {
|
|
201
|
+
console.log(`\n${console_chars_1.emoji.warning} WARNINGS (${warnings.length}):\n`);
|
|
202
|
+
warnings.slice(0, 10).forEach((issue) => {
|
|
203
|
+
console.log(` ${issue.file}:${issue.line} - ${issue.message}`);
|
|
204
|
+
});
|
|
205
|
+
if (warnings.length > 10) {
|
|
206
|
+
console.log(` ... and ${warnings.length - 10} more warnings`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Summary
|
|
210
|
+
console.log("\n" + (0, console_chars_1.createDivider)(60, "light"));
|
|
211
|
+
console.log(`${console_chars_1.emoji.chart} Summary: ${errors.length} errors, ${warnings.length} warnings`);
|
|
212
|
+
if (errors.length > 0) {
|
|
213
|
+
console.log(`\n${console_chars_1.emoji.warning} ADVISORY: Found ${errors.length} section header spacing issues`);
|
|
214
|
+
console.log("\nFix guide:");
|
|
215
|
+
console.log(` ${console_chars_1.chars.bullet} Header containers with h2/h3 + p need gap-2 for internal spacing`);
|
|
216
|
+
console.log(` ${console_chars_1.chars.bullet} Header containers before grids need mb-6 for separation`);
|
|
217
|
+
console.log(` ${console_chars_1.chars.bullet} Standard pattern: className="mb-6 flex flex-col items-center gap-2 text-center"`);
|
|
218
|
+
console.log(`\n${console_chars_1.emoji.hint} This check is advisory. Pre-existing issues won't block the build.`);
|
|
219
|
+
}
|
|
220
|
+
else if (warnings.length > 0) {
|
|
221
|
+
console.log(`\n${console_chars_1.emoji.warning} Section header spacing check passed with ${warnings.length} advisory warnings.`);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
console.log(`\n${console_chars_1.emoji.success} Section header spacing check passed!`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Allow direct execution
|
|
228
|
+
if (require.main === module) {
|
|
229
|
+
run().catch(console.error);
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=section-header-spacing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-header-spacing.js","sourceRoot":"","sources":["../../../src/checks/ui/section-header-spacing.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export { CORE_EXCLUDES, STANDARD_EXCLUDES, FULL_EXCLUDES, TEST_FILE_EXCLUDES, ST
|
|
|
28
28
|
export { SPACING_SCALE, spacingToPx, pxToSpacing, GAPS, GAPS_PX, CSS_VARS, CSS_SPACING_PATTERN, SECTION_SPACING, FONT_SIZES, FONT_SIZES_PX, LINE_HEIGHTS, LINE_CLAMP, TEXT_TO_ICON_SIZE, FONT_WEIGHTS, FONT_WEIGHT_VARS, LETTER_SPACING, TRACKING_CLASSES, COLORS, ALLOWED_HARDCODED_COLORS, SHADOWS, SHADOW_CLASSES, MAX_WIDTHS, ASPECT_RATIOS, GRID_CONFIGS, CARD_STANDARDS, CARD_CSS, COMPONENT_HEIGHTS, HEADER_HEIGHTS, ICON_SIZES, BORDER_RADIUS, BORDER_WIDTHS, AVATAR_SIZES, BADGE_SIZES, CHIP_SIZES, MODAL_SIZES, SKELETON_ANIMATION, SKELETON_HEIGHTS, TABLE_PADDING, TABLE_ROW_HEIGHTS, TOUCH_TARGETS, CONTRAST_RATIOS, DISABLED_STANDARDS, FOCUS_RING, OPACITY, MIN_DISABLED_OPACITY, VIEWPORTS, BREAKPOINTS, Z_INDEX, DURATIONS, EASINGS, EASING_CLASSES, } from "./shared/design-tokens";
|
|
29
29
|
export { TokenGroupName, TokenConfig, PreflightConfig as TokenPreflightConfig, loadPreflightConfig, clearConfigCache, definePreflightConfig, isTokenGroupEnabled, getTokenGroup, getAllTokens, TOKEN_GROUPS, isCheckEnabled, isCheckWarningOnly, } from "./shared/design-tokens-config";
|
|
30
30
|
export { fileCache, FileCache, CacheEntry, FileCacheOptions, PresetName, } from "./shared/file-cache";
|
|
31
|
+
export { FileCache as PerformanceFileCache, FileContentCache, GlobCache, GlobResultCache, parallelProcess, batchProcess, clearAllCaches, getCacheStats, } from "./utils/performance-cache";
|
|
31
32
|
export { ConcurrencyConfig, CheckDefinition, CheckResult, getConcurrencyConfig, runChecksWithConcurrency, logConcurrencyConfig, parsePreflightArgs, OutputMode, } from "./shared/concurrency-config";
|
|
32
33
|
export { progress, box, chars, emoji, createProgressBar, createDivider, createHeader, formatTree, supportsUnicode, getTerminalInfo, } from "./utils/console-chars";
|
|
33
34
|
export { PreflightFindingSeverity, WritableFinding, indexToLineCol, writeFindings, createFinding, } from "./utils/findings-writer";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,cAAc,EACd,YAAY,EACZ,eAAe,EACf,kBAAkB,EAElB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAEL,aAAa,EACb,WAAW,EACX,WAAW,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,mBAAmB,EACnB,eAAe,EAGf,UAAU,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAGhB,MAAM,EACN,wBAAwB,EAGxB,OAAO,EACP,cAAc,EAGd,UAAU,EACV,aAAa,EACb,YAAY,EAGZ,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EAGjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,OAAO,EACP,oBAAoB,EAGpB,SAAS,EACT,WAAW,EAGX,OAAO,EACP,SAAS,EACT,OAAO,EACP,cAAc,GACf,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAEL,cAAc,EACd,WAAW,EACX,eAAe,IAAI,oBAAoB,EAGvC,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EAGrB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,YAAY,EAGZ,cAAc,EACd,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,SAAS,IAAI,oBAAoB,EACjC,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,GACX,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,QAAQ,EACR,GAAG,EACH,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,cAAc,EACd,aAAa,EACb,aAAa,GACd,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,eAAe,IAAI,WAAW,EAC9B,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
exports.extendExcludes = exports.DATABASE_CHECK_CONFIG = exports.API_CHECK_CONFIG = exports.E2E_CHECK_CONFIG = exports.SECURITY_CHECK_CONFIG = exports.CODE_QUALITY_CONFIG = exports.UI_CHECK_CONFIG = exports.MIGRATION_FILE_PATTERN = exports.PRISMA_SCHEMA_PATTERN = exports.CSS_FILE_PATTERN = exports.LAYOUT_FILE_PATTERN = exports.PAGE_FILE_PATTERN = exports.API_ROUTE_PATTERN = exports.UNIT_TEST_PATTERN = exports.E2E_TEST_PATTERN = exports.APP_COMPONENT_PATTERN = exports.APP_CODE_PATTERN = exports.COMPONENT_FILE_PATTERN = exports.TS_FILE_PATTERN = exports.CODE_FILE_PATTERN = exports.SHARED_COMPONENT_EXCLUDES = exports.UI_LIBRARY_EXCLUDES = exports.CONFIG_FILE_EXCLUDES = exports.SCRIPT_EXCLUDES = exports.PRODUCTION_CODE_EXCLUDES = exports.STORY_FILE_EXCLUDES = exports.FULL_EXCLUDES_WITH_TESTS = exports.STANDARD_EXCLUDES_WITH_TESTS = exports.TEST_FILE_EXCLUDES = exports.FULL_EXCLUDES = exports.STANDARD_EXCLUDES = exports.CORE_EXCLUDES = exports.printCategoryHelp = exports.isValidCategory = exports.getCategoryNames = exports.buildFilterFromCategories = exports.CATEGORY_CONFIGS = exports.QUICK_CATEGORIES = exports.CATEGORY_FILTERS = exports.clearExclusionsCache = exports.getFilteredFiles = exports.filterExcludedFiles = exports.shouldExcludeFile = exports.getExclusionsSync = exports.getExclusions = exports.shouldRunCheck = exports.loadAppConfig = exports.inferAppName = exports.findConfigFile = exports.getEnvironmentInfo = void 0;
|
|
26
26
|
exports.Z_INDEX = exports.BREAKPOINTS = exports.VIEWPORTS = exports.MIN_DISABLED_OPACITY = exports.OPACITY = exports.FOCUS_RING = exports.DISABLED_STANDARDS = exports.CONTRAST_RATIOS = exports.TOUCH_TARGETS = exports.TABLE_ROW_HEIGHTS = exports.TABLE_PADDING = exports.SKELETON_HEIGHTS = exports.SKELETON_ANIMATION = exports.MODAL_SIZES = exports.CHIP_SIZES = exports.BADGE_SIZES = exports.AVATAR_SIZES = exports.BORDER_WIDTHS = exports.BORDER_RADIUS = exports.ICON_SIZES = exports.HEADER_HEIGHTS = exports.COMPONENT_HEIGHTS = exports.CARD_CSS = exports.CARD_STANDARDS = exports.GRID_CONFIGS = exports.ASPECT_RATIOS = exports.MAX_WIDTHS = exports.SHADOW_CLASSES = exports.SHADOWS = exports.ALLOWED_HARDCODED_COLORS = exports.COLORS = exports.TRACKING_CLASSES = exports.LETTER_SPACING = exports.FONT_WEIGHT_VARS = exports.FONT_WEIGHTS = exports.TEXT_TO_ICON_SIZE = exports.LINE_CLAMP = exports.LINE_HEIGHTS = exports.FONT_SIZES_PX = exports.FONT_SIZES = exports.SECTION_SPACING = exports.CSS_SPACING_PATTERN = exports.CSS_VARS = exports.GAPS_PX = exports.GAPS = exports.pxToSpacing = exports.spacingToPx = exports.SPACING_SCALE = exports.isExcluded = exports.reduceExcludes = void 0;
|
|
27
|
-
exports.
|
|
27
|
+
exports.getCoreRepo = exports.loadConfig = exports.getPluginSummary = exports.filterPluginsByCategory = exports.groupPluginsByCategory = exports.loadAppPlugins = exports.loadPlugin = exports.discoverPlugins = exports.withUniversalProgress = exports.createUniversalProgressReporter = exports.UniversalProgressReporter = exports.createFinding = exports.writeFindings = exports.indexToLineCol = exports.getTerminalInfo = exports.supportsUnicode = exports.formatTree = exports.createHeader = exports.createDivider = exports.createProgressBar = exports.emoji = exports.chars = exports.box = exports.progress = exports.parsePreflightArgs = exports.logConcurrencyConfig = exports.runChecksWithConcurrency = exports.getConcurrencyConfig = exports.getCacheStats = exports.clearAllCaches = exports.batchProcess = exports.parallelProcess = exports.GlobResultCache = exports.GlobCache = exports.FileContentCache = exports.PerformanceFileCache = exports.FileCache = exports.fileCache = exports.isCheckWarningOnly = exports.isCheckEnabled = exports.TOKEN_GROUPS = exports.getAllTokens = exports.getTokenGroup = exports.isTokenGroupEnabled = exports.definePreflightConfig = exports.clearConfigCache = exports.loadPreflightConfig = exports.EASING_CLASSES = exports.EASINGS = exports.DURATIONS = void 0;
|
|
28
|
+
exports.main = exports.runPreflights = exports.hasConfigFile = void 0;
|
|
28
29
|
// Core types
|
|
29
30
|
var types_1 = require("./core/types");
|
|
30
31
|
Object.defineProperty(exports, "getEnvironmentInfo", { enumerable: true, get: function () { return types_1.getEnvironmentInfo; } });
|
|
@@ -167,6 +168,16 @@ Object.defineProperty(exports, "isCheckWarningOnly", { enumerable: true, get: fu
|
|
|
167
168
|
var file_cache_1 = require("./shared/file-cache");
|
|
168
169
|
Object.defineProperty(exports, "fileCache", { enumerable: true, get: function () { return file_cache_1.fileCache; } });
|
|
169
170
|
Object.defineProperty(exports, "FileCache", { enumerable: true, get: function () { return file_cache_1.FileCache; } });
|
|
171
|
+
// Performance cache utilities
|
|
172
|
+
var performance_cache_1 = require("./utils/performance-cache");
|
|
173
|
+
Object.defineProperty(exports, "PerformanceFileCache", { enumerable: true, get: function () { return performance_cache_1.FileCache; } });
|
|
174
|
+
Object.defineProperty(exports, "FileContentCache", { enumerable: true, get: function () { return performance_cache_1.FileContentCache; } });
|
|
175
|
+
Object.defineProperty(exports, "GlobCache", { enumerable: true, get: function () { return performance_cache_1.GlobCache; } });
|
|
176
|
+
Object.defineProperty(exports, "GlobResultCache", { enumerable: true, get: function () { return performance_cache_1.GlobResultCache; } });
|
|
177
|
+
Object.defineProperty(exports, "parallelProcess", { enumerable: true, get: function () { return performance_cache_1.parallelProcess; } });
|
|
178
|
+
Object.defineProperty(exports, "batchProcess", { enumerable: true, get: function () { return performance_cache_1.batchProcess; } });
|
|
179
|
+
Object.defineProperty(exports, "clearAllCaches", { enumerable: true, get: function () { return performance_cache_1.clearAllCaches; } });
|
|
180
|
+
Object.defineProperty(exports, "getCacheStats", { enumerable: true, get: function () { return performance_cache_1.getCacheStats; } });
|
|
170
181
|
// Concurrency
|
|
171
182
|
var concurrency_config_1 = require("./shared/concurrency-config");
|
|
172
183
|
Object.defineProperty(exports, "getConcurrencyConfig", { enumerable: true, get: function () { return concurrency_config_1.getConcurrencyConfig; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LRU cache for file contents to avoid redundant reads
|
|
3
|
+
*/
|
|
4
|
+
declare class FileContentCache {
|
|
5
|
+
private cache;
|
|
6
|
+
private maxSize;
|
|
7
|
+
private maxAge;
|
|
8
|
+
private totalSize;
|
|
9
|
+
private maxTotalSize;
|
|
10
|
+
constructor(options?: {
|
|
11
|
+
maxSize?: number;
|
|
12
|
+
maxAge?: number;
|
|
13
|
+
maxTotalSize?: number;
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Read file with caching
|
|
17
|
+
*/
|
|
18
|
+
read(filePath: string): Promise<string | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Check if file exists (uses cache if available)
|
|
21
|
+
*/
|
|
22
|
+
exists(filePath: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Evict old entries to make room
|
|
25
|
+
*/
|
|
26
|
+
private evictIfNeeded;
|
|
27
|
+
/**
|
|
28
|
+
* Clear all cached content
|
|
29
|
+
*/
|
|
30
|
+
clear(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Get cache statistics
|
|
33
|
+
*/
|
|
34
|
+
stats(): {
|
|
35
|
+
entries: number;
|
|
36
|
+
totalSize: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Cache for glob results to avoid redundant directory scans
|
|
41
|
+
*/
|
|
42
|
+
declare class GlobResultCache {
|
|
43
|
+
private cache;
|
|
44
|
+
private maxAge;
|
|
45
|
+
constructor(options?: {
|
|
46
|
+
maxAge?: number;
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* Run glob with caching
|
|
50
|
+
*/
|
|
51
|
+
glob(pattern: string | string[], options?: {
|
|
52
|
+
cwd?: string;
|
|
53
|
+
ignore?: string[];
|
|
54
|
+
}): Promise<string[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Clear all cached results
|
|
57
|
+
*/
|
|
58
|
+
clear(): void;
|
|
59
|
+
}
|
|
60
|
+
interface ParallelOptions {
|
|
61
|
+
concurrency?: number;
|
|
62
|
+
onProgress?: (completed: number, total: number) => void;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Process items in parallel with concurrency limit
|
|
66
|
+
*/
|
|
67
|
+
declare function parallelProcess<T, R>(items: T[], processor: (item: T, index: number) => Promise<R>, options?: ParallelOptions): Promise<R[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Process items in batches
|
|
70
|
+
*/
|
|
71
|
+
declare function batchProcess<T, R>(items: T[], processor: (batch: T[]) => Promise<R[]>, batchSize?: number): Promise<R[]>;
|
|
72
|
+
export declare const FileCache: FileContentCache;
|
|
73
|
+
export declare const GlobCache: GlobResultCache;
|
|
74
|
+
export { FileContentCache, GlobResultCache, parallelProcess, batchProcess, };
|
|
75
|
+
/**
|
|
76
|
+
* Clear all caches - call at start of preflight run
|
|
77
|
+
*/
|
|
78
|
+
export declare function clearAllCaches(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Get combined cache statistics
|
|
81
|
+
*/
|
|
82
|
+
export declare function getCacheStats(): {
|
|
83
|
+
fileCache: {
|
|
84
|
+
entries: number;
|
|
85
|
+
totalSize: number;
|
|
86
|
+
};
|
|
87
|
+
globCache: {
|
|
88
|
+
entries: number;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=performance-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-cache.d.ts","sourceRoot":"","sources":["../../src/utils/performance-cache.ts"],"names":[],"mappings":"AAiCA;;GAEG;AACH,cAAM,gBAAgB;IACpB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO;IAMtF;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkCpD;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQjC;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAMhD;AAMD;;GAEG;AACH,cAAM,eAAe;IACnB,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;IAI7C;;OAEG;IACG,IAAI,CACR,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GAChD,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBpB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAMD,UAAU,eAAe;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD;AAED;;GAEG;AACH,iBAAe,eAAe,CAAC,CAAC,EAAE,CAAC,EACjC,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAuBd;AAED;;GAEG;AACH,iBAAe,YAAY,CAAC,CAAC,EAAE,CAAC,EAC9B,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EACvC,SAAS,SAAK,GACb,OAAO,CAAC,CAAC,EAAE,CAAC,CAUd;AAOD,eAAO,MAAM,SAAS,kBAAyB,CAAC;AAChD,eAAO,MAAM,SAAS,iBAAwB,CAAC;AAM/C,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,GACb,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAC/B,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC,CAKA"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GlobResultCache = exports.FileContentCache = exports.GlobCache = exports.FileCache = void 0;
|
|
7
|
+
exports.parallelProcess = parallelProcess;
|
|
8
|
+
exports.batchProcess = batchProcess;
|
|
9
|
+
exports.clearAllCaches = clearAllCaches;
|
|
10
|
+
exports.getCacheStats = getCacheStats;
|
|
11
|
+
/**
|
|
12
|
+
* Performance Cache Utilities
|
|
13
|
+
*
|
|
14
|
+
* Shared caching and parallel processing utilities for preflight checks.
|
|
15
|
+
* These reduce redundant file reads and glob operations when running
|
|
16
|
+
* multiple preflights in a single session.
|
|
17
|
+
*
|
|
18
|
+
* Usage:
|
|
19
|
+
* import { FileCache, GlobCache, parallelProcess } from './performance-cache';
|
|
20
|
+
*
|
|
21
|
+
* // Use cached file reads
|
|
22
|
+
* const content = await FileCache.read(filePath);
|
|
23
|
+
*
|
|
24
|
+
* // Use cached glob results
|
|
25
|
+
* const files = await GlobCache.glob('app/** /page.tsx');
|
|
26
|
+
*
|
|
27
|
+
* // Process files in parallel with concurrency limit
|
|
28
|
+
* await parallelProcess(files, async (file) => { ... }, { concurrency: 10 });
|
|
29
|
+
*/
|
|
30
|
+
const fs_1 = __importDefault(require("fs"));
|
|
31
|
+
const path_1 = __importDefault(require("path"));
|
|
32
|
+
const glob_1 = require("glob");
|
|
33
|
+
/**
|
|
34
|
+
* LRU cache for file contents to avoid redundant reads
|
|
35
|
+
*/
|
|
36
|
+
class FileContentCache {
|
|
37
|
+
cache = new Map();
|
|
38
|
+
maxSize;
|
|
39
|
+
maxAge;
|
|
40
|
+
totalSize = 0;
|
|
41
|
+
maxTotalSize;
|
|
42
|
+
constructor(options = {}) {
|
|
43
|
+
this.maxSize = options.maxSize ?? 1000; // Max number of files
|
|
44
|
+
this.maxAge = options.maxAge ?? 30000; // 30 seconds
|
|
45
|
+
this.maxTotalSize = options.maxTotalSize ?? 50 * 1024 * 1024; // 50MB
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Read file with caching
|
|
49
|
+
*/
|
|
50
|
+
async read(filePath) {
|
|
51
|
+
const absolutePath = path_1.default.resolve(filePath);
|
|
52
|
+
const cached = this.cache.get(absolutePath);
|
|
53
|
+
// Check if cached and still valid
|
|
54
|
+
if (cached && Date.now() - cached.timestamp < this.maxAge) {
|
|
55
|
+
// Move to end (LRU)
|
|
56
|
+
this.cache.delete(absolutePath);
|
|
57
|
+
this.cache.set(absolutePath, cached);
|
|
58
|
+
return cached.value;
|
|
59
|
+
}
|
|
60
|
+
// Read from disk
|
|
61
|
+
try {
|
|
62
|
+
const content = fs_1.default.readFileSync(absolutePath, "utf-8");
|
|
63
|
+
const size = Buffer.byteLength(content, "utf-8");
|
|
64
|
+
// Evict if needed
|
|
65
|
+
this.evictIfNeeded(size);
|
|
66
|
+
// Store in cache
|
|
67
|
+
this.cache.set(absolutePath, {
|
|
68
|
+
value: content,
|
|
69
|
+
timestamp: Date.now(),
|
|
70
|
+
size,
|
|
71
|
+
});
|
|
72
|
+
this.totalSize += size;
|
|
73
|
+
return content;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if file exists (uses cache if available)
|
|
81
|
+
*/
|
|
82
|
+
exists(filePath) {
|
|
83
|
+
const absolutePath = path_1.default.resolve(filePath);
|
|
84
|
+
if (this.cache.has(absolutePath)) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
return fs_1.default.existsSync(absolutePath);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Evict old entries to make room
|
|
91
|
+
*/
|
|
92
|
+
evictIfNeeded(newSize) {
|
|
93
|
+
// Evict by count
|
|
94
|
+
while (this.cache.size >= this.maxSize) {
|
|
95
|
+
const firstKey = this.cache.keys().next().value;
|
|
96
|
+
if (firstKey) {
|
|
97
|
+
const entry = this.cache.get(firstKey);
|
|
98
|
+
if (entry?.size)
|
|
99
|
+
this.totalSize -= entry.size;
|
|
100
|
+
this.cache.delete(firstKey);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Evict by total size
|
|
104
|
+
while (this.totalSize + newSize > this.maxTotalSize && this.cache.size > 0) {
|
|
105
|
+
const firstKey = this.cache.keys().next().value;
|
|
106
|
+
if (firstKey) {
|
|
107
|
+
const entry = this.cache.get(firstKey);
|
|
108
|
+
if (entry?.size)
|
|
109
|
+
this.totalSize -= entry.size;
|
|
110
|
+
this.cache.delete(firstKey);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Clear all cached content
|
|
116
|
+
*/
|
|
117
|
+
clear() {
|
|
118
|
+
this.cache.clear();
|
|
119
|
+
this.totalSize = 0;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get cache statistics
|
|
123
|
+
*/
|
|
124
|
+
stats() {
|
|
125
|
+
return {
|
|
126
|
+
entries: this.cache.size,
|
|
127
|
+
totalSize: this.totalSize,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.FileContentCache = FileContentCache;
|
|
132
|
+
// =============================================================================
|
|
133
|
+
// GLOB RESULT CACHE
|
|
134
|
+
// =============================================================================
|
|
135
|
+
/**
|
|
136
|
+
* Cache for glob results to avoid redundant directory scans
|
|
137
|
+
*/
|
|
138
|
+
class GlobResultCache {
|
|
139
|
+
cache = new Map();
|
|
140
|
+
maxAge;
|
|
141
|
+
constructor(options = {}) {
|
|
142
|
+
this.maxAge = options.maxAge ?? 60000; // 1 minute
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Run glob with caching
|
|
146
|
+
*/
|
|
147
|
+
async glob(pattern, options = {}) {
|
|
148
|
+
const cwd = options.cwd ?? process.cwd();
|
|
149
|
+
const cacheKey = JSON.stringify({ pattern, cwd, ignore: options.ignore });
|
|
150
|
+
const cached = this.cache.get(cacheKey);
|
|
151
|
+
if (cached && Date.now() - cached.timestamp < this.maxAge) {
|
|
152
|
+
return cached.value;
|
|
153
|
+
}
|
|
154
|
+
// Run glob
|
|
155
|
+
const results = await (0, glob_1.glob)(pattern, {
|
|
156
|
+
cwd,
|
|
157
|
+
ignore: options.ignore,
|
|
158
|
+
nodir: true,
|
|
159
|
+
});
|
|
160
|
+
// Cache results
|
|
161
|
+
this.cache.set(cacheKey, {
|
|
162
|
+
value: results,
|
|
163
|
+
timestamp: Date.now(),
|
|
164
|
+
});
|
|
165
|
+
return results;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Clear all cached results
|
|
169
|
+
*/
|
|
170
|
+
clear() {
|
|
171
|
+
this.cache.clear();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.GlobResultCache = GlobResultCache;
|
|
175
|
+
/**
|
|
176
|
+
* Process items in parallel with concurrency limit
|
|
177
|
+
*/
|
|
178
|
+
async function parallelProcess(items, processor, options = {}) {
|
|
179
|
+
const { concurrency = 10, onProgress } = options;
|
|
180
|
+
const results = new Array(items.length);
|
|
181
|
+
let completed = 0;
|
|
182
|
+
let current = 0;
|
|
183
|
+
async function processNext() {
|
|
184
|
+
while (current < items.length) {
|
|
185
|
+
const index = current++;
|
|
186
|
+
const item = items[index];
|
|
187
|
+
results[index] = await processor(item, index);
|
|
188
|
+
completed++;
|
|
189
|
+
onProgress?.(completed, items.length);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Start workers up to concurrency limit
|
|
193
|
+
const workers = Array(Math.min(concurrency, items.length))
|
|
194
|
+
.fill(null)
|
|
195
|
+
.map(() => processNext());
|
|
196
|
+
await Promise.all(workers);
|
|
197
|
+
return results;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Process items in batches
|
|
201
|
+
*/
|
|
202
|
+
async function batchProcess(items, processor, batchSize = 50) {
|
|
203
|
+
const results = [];
|
|
204
|
+
for (let i = 0; i < items.length; i += batchSize) {
|
|
205
|
+
const batch = items.slice(i, i + batchSize);
|
|
206
|
+
const batchResults = await processor(batch);
|
|
207
|
+
results.push(...batchResults);
|
|
208
|
+
}
|
|
209
|
+
return results;
|
|
210
|
+
}
|
|
211
|
+
// =============================================================================
|
|
212
|
+
// SINGLETON INSTANCES
|
|
213
|
+
// =============================================================================
|
|
214
|
+
// Global cache instances for shared use across preflights
|
|
215
|
+
exports.FileCache = new FileContentCache();
|
|
216
|
+
exports.GlobCache = new GlobResultCache();
|
|
217
|
+
/**
|
|
218
|
+
* Clear all caches - call at start of preflight run
|
|
219
|
+
*/
|
|
220
|
+
function clearAllCaches() {
|
|
221
|
+
exports.FileCache.clear();
|
|
222
|
+
exports.GlobCache.clear();
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get combined cache statistics
|
|
226
|
+
*/
|
|
227
|
+
function getCacheStats() {
|
|
228
|
+
return {
|
|
229
|
+
fileCache: exports.FileCache.stats(),
|
|
230
|
+
globCache: { entries: 0 }, // GlobCache doesn't expose this
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=performance-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-cache.js","sourceRoot":"","sources":["../../src/utils/performance-cache.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.
|
|
3
|
+
"version": "1.1.37",
|
|
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",
|
|
@@ -17,23 +17,6 @@
|
|
|
17
17
|
"preflight-review-drift": "dist/bin/review-drift.js",
|
|
18
18
|
"preflight-sync-check": "dist/bin/sync-check.js"
|
|
19
19
|
},
|
|
20
|
-
"scripts": {
|
|
21
|
-
"build": "tsc",
|
|
22
|
-
"prebuild": "npx ai-manager cleanup -q -r . && npm run check:hygiene && npm run check:metadata && npm run check:broken",
|
|
23
|
-
"dev": "tsc --watch",
|
|
24
|
-
"preflight": "tsx src/bin/preflight.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
|
-
"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",
|
|
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",
|
|
32
|
-
"lint": "eslint src/",
|
|
33
|
-
"test": "vitest",
|
|
34
|
-
"preinstall": "node dist/bin/preinstall.js",
|
|
35
|
-
"prepublishOnly": "node -e \"const pkg = require('./package.json'); if (pkg.publishConfig?.access !== 'restricted') { console.error('ERROR: publishConfig.access must be restricted'); process.exit(1); }\" && npm run build"
|
|
36
|
-
},
|
|
37
20
|
"exports": {
|
|
38
21
|
".": {
|
|
39
22
|
"types": "./dist/index.d.ts",
|
|
@@ -86,5 +69,21 @@
|
|
|
86
69
|
},
|
|
87
70
|
"engines": {
|
|
88
71
|
"node": ">=18.0.0"
|
|
72
|
+
},
|
|
73
|
+
"scripts": {
|
|
74
|
+
"build": "tsc",
|
|
75
|
+
"prebuild": "npx ai-manager cleanup -q -r . && npm run check:hygiene && npm run check:metadata && npm run check:broken",
|
|
76
|
+
"dev": "tsc --watch",
|
|
77
|
+
"preflight": "tsx src/bin/preflight.ts",
|
|
78
|
+
"check:system": "tsx src/bin/preflight.ts --category system",
|
|
79
|
+
"check:security": "tsx src/bin/preflight.ts --category security",
|
|
80
|
+
"check:business": "tsx src/bin/preflight.ts --category business",
|
|
81
|
+
"check:hygiene": "tsx scripts/maintenance/module-boundary-validator.ts",
|
|
82
|
+
"check:metadata": "tsx src/checks/system/preflight-metadata-validator.ts",
|
|
83
|
+
"check:broken": "tsx src/checks/system/broken-preflight-detection.ts",
|
|
84
|
+
"check:hygiene:all": "tsx scripts/maintenance/module-boundary-validator.ts && tsx scripts/maintenance/workflow-composition-validator.ts && tsx scripts/maintenance/canonical-import-enforcer.ts",
|
|
85
|
+
"lint": "eslint src/",
|
|
86
|
+
"test": "vitest",
|
|
87
|
+
"preinstall": "node dist/bin/preinstall.js"
|
|
89
88
|
}
|
|
90
|
-
}
|
|
89
|
+
}
|