1import * as fs from "fs"; 2 3if (process.argv.length < 3) { 4 process.exit(1); 5} 6const directoryName = process.argv[2]; 7// main reason why we need separate process to check if it is safe to watch some path 8// is to guard against crashes that cannot be intercepted with protected blocks and 9// code in tsserver already can handle normal cases, like non-existing folders. 10// This means that here we treat any result (success or exception) from fs.watch as success since it does not tear down the process. 11// The only case that should be considered as failure - when watchGuard process crashes. 12try { 13 const watcher = fs.watch(directoryName, { recursive: true }, () => ({})); 14 watcher.close(); 15} 16catch { /*ignore*/ } 17process.exit(0); 18