Fs.Watchlet config:
?persistent:bool =>
?recursive:bool =>
?encoding:Js.String.t =>
unit =>
config;there is no need to accept listener, since we return a watcher back it can register event listener there. Currently we introduce a type string_buffer, for the filename, it will be Buffer when the encoding is `utf8. This is dependent type which can be tracked by GADT in some way, but to make things simple, let's just introduce an or type
let on:
t =>
f:
[ `change(Js.Fn.arity2((string => Node.string_buffer => unit)))
| `error(Js.Fn.arity0(unit)) ] =>
t;let close: t => unit;