-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcache.ts
More file actions
30 lines (23 loc) · 728 Bytes
/
Copy pathcache.ts
File metadata and controls
30 lines (23 loc) · 728 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import fs from "fs";
import { ModuleExports } from "./types";
const fileCache = new Map<string, { mtime: number; exports: ModuleExports }>();
export function getFileMtime(filePath: string): number {
try {
return fs.statSync(filePath).mtimeMs;
} catch {
return 0;
}
}
export function getCachedExports(filePath: string): ModuleExports | null {
const mtime = getFileMtime(filePath);
const cached = fileCache.get(filePath);
if (cached && cached.mtime === mtime) {
return cached.exports;
}
return null;
}
export function setCachedExports(filePath: string, exports: ModuleExports): void {
const mtime = getFileMtime(filePath);
fileCache.set(filePath, { mtime, exports });
}
export { fileCache };