aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/node/node_fs.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/node/node_fs.zig')
-rw-r--r--src/bun.js/node/node_fs.zig23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/bun.js/node/node_fs.zig b/src/bun.js/node/node_fs.zig
index 5407c2d5c..4f9e2bf68 100644
--- a/src/bun.js/node/node_fs.zig
+++ b/src/bun.js/node/node_fs.zig
@@ -3177,7 +3177,7 @@ pub const Arguments = struct {
pub const UnwatchFile = void;
pub const Watch = JSC.Node.FSWatcher.Arguments;
- pub const WatchFile = void;
+ pub const WatchFile = JSC.Node.StatWatcher.Arguments;
pub const Fsync = struct {
fd: FileDescriptor,
@@ -3362,7 +3362,7 @@ const Return = struct {
pub const Unlink = void;
pub const UnwatchFile = void;
pub const Watch = JSC.JSValue;
- pub const WatchFile = void;
+ pub const WatchFile = JSC.JSValue;
pub const Utimes = void;
pub const Chown = void;
@@ -5245,6 +5245,25 @@ pub const NodeFS = struct {
return Maybe(Return.Unlink).todo;
}
+ pub fn watchFile(_: *NodeFS, args: Arguments.WatchFile, comptime flavor: Flavor) Maybe(Return.WatchFile) {
+ std.debug.assert(flavor == .sync);
+
+ if (comptime Environment.isWindows) {
+ args.global_this.throwTODO("watch is not supported on Windows yet");
+ return Maybe(Return.Watch){ .result = JSC.JSValue.undefined };
+ }
+
+ const watcher = args.createStatWatcher() catch |err| {
+ var buf = std.fmt.allocPrint(bun.default_allocator, "{s} watching {}", .{ @errorName(err), strings.QuotedFormatter{ .text = args.path.slice() } }) catch unreachable;
+ defer bun.default_allocator.free(buf);
+ args.global_this.throwValue((JSC.SystemError{
+ .message = bun.String.init(buf),
+ .path = bun.String.init(args.path.slice()),
+ }).toErrorInstance(args.global_this));
+ return Maybe(Return.Watch){ .result = JSC.JSValue.undefined };
+ };
+ return Maybe(Return.Watch){ .result = watcher };
+ }
pub fn unwatchFile(_: *NodeFS, _: Arguments.UnwatchFile, comptime _: Flavor) Maybe(Return.UnwatchFile) {
return Maybe(Return.UnwatchFile).todo;
}