@empline/preflight 1.1.34 → 1.1.36
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/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.d.ts.map +1 -1
- package/dist/checks/auth/store-page-auth-guard.js +77 -29
- package/dist/checks/auth/store-page-auth-guard.js.map +1 -1
- package/dist/checks/data-integrity/api-route-reference-validation.d.ts +14 -0
- package/dist/checks/data-integrity/api-route-reference-validation.d.ts.map +1 -0
- package/dist/checks/data-integrity/api-route-reference-validation.js +219 -0
- package/dist/checks/data-integrity/api-route-reference-validation.js.map +1 -0
- package/dist/checks/system/active-preflight-migration-tracker.d.ts +13 -0
- package/dist/checks/system/active-preflight-migration-tracker.d.ts.map +1 -0
- package/dist/checks/system/active-preflight-migration-tracker.js +244 -0
- package/dist/checks/system/active-preflight-migration-tracker.js.map +1 -0
- package/dist/checks/ui/filter-option-coverage.d.ts +14 -0
- package/dist/checks/ui/filter-option-coverage.d.ts.map +1 -0
- package/dist/checks/ui/filter-option-coverage.js +286 -0
- package/dist/checks/ui/filter-option-coverage.js.map +1 -0
- package/dist/checks/ui/query-param-state-sync.d.ts +14 -0
- package/dist/checks/ui/query-param-state-sync.d.ts.map +1 -0
- package/dist/checks/ui/query-param-state-sync.js +251 -0
- package/dist/checks/ui/query-param-state-sync.js.map +1 -0
- package/dist/checks/ui/unimplemented-action-handler.d.ts +14 -0
- package/dist/checks/ui/unimplemented-action-handler.d.ts.map +1 -0
- package/dist/checks/ui/unimplemented-action-handler.js +230 -0
- package/dist/checks/ui/unimplemented-action-handler.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 +1 -1
|
@@ -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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"}
|