41 lines
1.4 KiB
JavaScript
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;
|