Files

41 lines
1.4 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.installFileWatcher = void 0;
const node_fs_1 = __importDefault(require("node:fs"));
const installFileWatcher = ({ file, onChange, }) => {
const existedAtBeginning = node_fs_1.default.existsSync(file);
let existedBefore = existedAtBeginning;
const listener = () => {
const existsNow = node_fs_1.default.existsSync(file);
if (!existedBefore && existsNow) {
onChange('created');
existedBefore = true;
return;
}
if (existedBefore && !existsNow) {
onChange('deleted');
existedBefore = false;
return;
}
if (existsNow) {
if (typeof Deno !== 'undefined') {
// Deno always goes here, even if the file has not changed.
// Don't support this for now.
return;
}
onChange('changed');
}
};
node_fs_1.default.watchFile(file, { interval: 100 }, listener);
return {
exists: existedAtBeginning,
unwatch: () => {
node_fs_1.default.unwatchFile(file, listener);
},
};
};
exports.installFileWatcher = installFileWatcher;