51 lines
No EOL
1.7 KiB
JavaScript
51 lines
No EOL
1.7 KiB
JavaScript
import path from "node:path";
|
|
import chokidar from "chokidar";
|
|
import { filterLogLevel } from "../../logger.js";
|
|
import { runOxlint } from "./cli.js";
|
|
import { dispatchDiagnostics } from "./diagnostics.js";
|
|
async function setupDevServer(root, options, manager, displayTargets) {
|
|
const initial = await runOxlint(options.command, root);
|
|
manager.initWith(initial);
|
|
dispatchDiagnostics(
|
|
filterLogLevel(manager.getDiagnostics(), options.logLevel),
|
|
displayTargets
|
|
);
|
|
const watcher = chokidar.watch(options.watchTarget, {
|
|
cwd: root,
|
|
ignored: (path2) => path2.includes("node_modules")
|
|
});
|
|
watcher.on("change", async (filePath) => {
|
|
await handleFileChange(root, options.command, filePath, manager);
|
|
dispatchDiagnostics(
|
|
filterLogLevel(manager.getDiagnostics(), options.logLevel),
|
|
displayTargets
|
|
);
|
|
});
|
|
watcher.on("unlink", (filePath) => {
|
|
handleFileUnlink(root, filePath, manager);
|
|
dispatchDiagnostics(
|
|
filterLogLevel(manager.getDiagnostics(), options.logLevel),
|
|
displayTargets
|
|
);
|
|
});
|
|
watcher.add(".");
|
|
}
|
|
function handleFileUnlink(root, filePath, manager) {
|
|
const absPath = path.resolve(root, filePath);
|
|
manager.updateByFileId(absPath, []);
|
|
}
|
|
async function handleFileChange(root, command, filePath, manager) {
|
|
const absPath = path.resolve(root, filePath);
|
|
const isConfigFile = path.basename(absPath) === ".oxlintrc.json";
|
|
if (isConfigFile) {
|
|
const diagnostics = await runOxlint(`${command} ${root}`, root);
|
|
manager.initWith(diagnostics);
|
|
} else {
|
|
const diagnostics = await runOxlint(`${command} ${absPath}`, root);
|
|
manager.updateByFileId(absPath, diagnostics);
|
|
}
|
|
}
|
|
export {
|
|
setupDevServer
|
|
};
|
|
//# sourceMappingURL=server.js.map
|