UNPKG

856 BJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.makeStaticFileCache = makeStaticFileCache;
7
8var _caching = require("../caching");
9
10var fs = require("../../gensync-utils/fs");
11
12function _fs2() {
13 const data = require("fs");
14
15 _fs2 = function () {
16 return data;
17 };
18
19 return data;
20}
21
22function makeStaticFileCache(fn) {
23 return (0, _caching.makeStrongCache)(function* (filepath, cache) {
24 const cached = cache.invalidate(() => fileMtime(filepath));
25
26 if (cached === null) {
27 return null;
28 }
29
30 return fn(filepath, yield* fs.readFile(filepath, "utf8"));
31 });
32}
33
34function fileMtime(filepath) {
35 if (!_fs2().existsSync(filepath)) return null;
36
37 try {
38 return +_fs2().statSync(filepath).mtime;
39 } catch (e) {
40 if (e.code !== "ENOENT" && e.code !== "ENOTDIR") throw e;
41 }
42
43 return null;
44}
\No newline at end of file