summaryrefslogtreecommitdiff
path: root/node_modules/@babel/cli/lib/babel/watcher.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-10-14 15:31:11 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-10-14 15:31:11 +0800
commitaa773172311dcada759dfbaac485f4bc6e00bc21 (patch)
treeca6d9a5eff3ab8f689f9acb4f0df791d9486813d /node_modules/@babel/cli/lib/babel/watcher.js
parentc5a5384e846f242e901e859fe600d695d8990a9a (diff)
added babel
Diffstat (limited to 'node_modules/@babel/cli/lib/babel/watcher.js')
-rw-r--r--node_modules/@babel/cli/lib/babel/watcher.js129
1 files changed, 129 insertions, 0 deletions
diff --git a/node_modules/@babel/cli/lib/babel/watcher.js b/node_modules/@babel/cli/lib/babel/watcher.js
new file mode 100644
index 00000000..203e8ca8
--- /dev/null
+++ b/node_modules/@babel/cli/lib/babel/watcher.js
@@ -0,0 +1,129 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.enable = enable;
+exports.onFilesChange = onFilesChange;
+exports.startWatcher = startWatcher;
+exports.updateExternalDependencies = updateExternalDependencies;
+exports.watch = watch;
+function _path() {
+ const data = require("path");
+ _path = function () {
+ return data;
+ };
+ return data;
+}
+const fileToDeps = new Map();
+const depToFiles = new Map();
+let isWatchMode = false;
+let watcher;
+const watchQueue = new Set();
+let hasStarted = false;
+function enable({
+ enableGlobbing
+}) {
+ isWatchMode = true;
+ const {
+ FSWatcher
+ } = requireChokidar();
+ const options = {
+ disableGlobbing: !enableGlobbing,
+ persistent: true,
+ ignoreInitial: true,
+ awaitWriteFinish: {
+ stabilityThreshold: 50,
+ pollInterval: 10
+ }
+ };
+ watcher = new FSWatcher(options);
+ watcher.on("unlink", unwatchFile);
+}
+function startWatcher() {
+ hasStarted = true;
+ for (const dep of watchQueue) {
+ watcher.add(dep);
+ }
+ watchQueue.clear();
+ watcher.on("ready", () => {
+ console.log("The watcher is ready.");
+ });
+}
+function watch(filename) {
+ if (!isWatchMode) {
+ throw new Error("Internal Babel error: .watch called when not in watch mode.");
+ }
+ if (!hasStarted) {
+ watchQueue.add(_path().resolve(filename));
+ } else {
+ watcher.add(_path().resolve(filename));
+ }
+}
+function onFilesChange(callback) {
+ if (!isWatchMode) {
+ throw new Error("Internal Babel error: .onFilesChange called when not in watch mode.");
+ }
+ watcher.on("all", (event, filename) => {
+ var _depToFiles$get;
+ if (event !== "change" && event !== "add") return;
+ const absoluteFile = _path().resolve(filename);
+ callback([absoluteFile, ...((_depToFiles$get = depToFiles.get(absoluteFile)) != null ? _depToFiles$get : [])], event, absoluteFile);
+ });
+}
+function updateExternalDependencies(filename, dependencies) {
+ if (!isWatchMode) return;
+ const absFilename = _path().resolve(filename);
+ const absDependencies = new Set(Array.from(dependencies, dep => _path().resolve(dep)));
+ const deps = fileToDeps.get(absFilename);
+ if (deps) {
+ for (const dep of deps) {
+ if (!absDependencies.has(dep)) {
+ removeFileDependency(absFilename, dep);
+ }
+ }
+ }
+ for (const dep of absDependencies) {
+ let deps = depToFiles.get(dep);
+ if (!deps) {
+ depToFiles.set(dep, deps = new Set());
+ if (!hasStarted) {
+ watchQueue.add(dep);
+ } else {
+ watcher.add(dep);
+ }
+ }
+ deps.add(absFilename);
+ }
+ fileToDeps.set(absFilename, absDependencies);
+}
+function removeFileDependency(filename, dep) {
+ const deps = depToFiles.get(dep);
+ deps.delete(filename);
+ if (deps.size === 0) {
+ depToFiles.delete(dep);
+ if (!hasStarted) {
+ watchQueue.delete(dep);
+ } else {
+ watcher.unwatch(dep);
+ }
+ }
+}
+function unwatchFile(filename) {
+ const deps = fileToDeps.get(filename);
+ if (!deps) return;
+ for (const dep of deps) {
+ removeFileDependency(filename, dep);
+ }
+ fileToDeps.delete(filename);
+}
+function requireChokidar() {
+ try {
+ return parseInt(process.versions.node) >= 8 ? require("chokidar") : require("@nicolo-ribaudo/chokidar-2");
+ } catch (err) {
+ console.error("The optional dependency chokidar failed to install and is required for " + "--watch. Chokidar is likely not supported on your platform.");
+ throw err;
+ }
+}
+
+//# sourceMappingURL=watcher.js.map