| Current Path : /home/users/unlimited/www/ultimate-ai.codeskitter.site/vendor/laravel/octane/bin/ |
| Current File : /home/users/unlimited/www/ultimate-ai.codeskitter.site/vendor/laravel/octane/bin/file-watcher.cjs |
const chokidar = require('chokidar');
const paths = JSON.parse(process.argv[2]);
const poll = process.argv[3] ? true : false;
// Chokidar removed support for glob in version 4...
const chokidarPackagePath = require.resolve('chokidar').replace('index.js', 'package.json');
const chokidarVersion4 = require(chokidarPackagePath).version.startsWith('4.');
const extractWildcardExtension = (path) => {
// Match patterns like *.php, **/*.blade.php
const match = path.match(/\/\*\.((\w|\.)+)$/);
return match ? match[1] : null;
};
const getPathBeforeWildcard = (path) => {
const match = path.match(/^(.*?)(\*|$)/);
return match ? match[1] : path;
};
const extractedPaths = paths.map(path => {
return { path: getPathBeforeWildcard(path), extension: extractWildcardExtension(path) };
});
const watcherPaths = chokidarVersion4 ? extractedPaths.map(ep => ep.path) : paths;
const watcherIgnored = chokidarVersion4 ? (path, stats) => {
if (! stats?.isFile()) {
return false;
}
const matchedPattern = extractedPaths.find(ep => path.startsWith(ep.path));
if (! matchedPattern) {
return true;
}
return matchedPattern.extension ? ! path.endsWith(`.${matchedPattern.extension}`) : false;
} : undefined;
const watcher = chokidar.watch(watcherPaths, {
ignoreInitial: true,
usePolling: poll,
ignored: watcherIgnored,
});
watcher
.on('add', () => console.log('File added...'))
.on('change', () => console.log('File changed...'))
.on('unlink', () => console.log('File deleted...'))
.on('unlinkDir', () => console.log('Directory deleted...'));