mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-22 05:59:31 +08:00
opendirSync(path[, options]) and fs.promises.opendir(path[, options]) return a Dir that reads one Dirent at a time in OS order, as libuv's uv_fs_readdir does. Dir supports path, readSync(), read(), closeSync(), close() and for await. readSync and read answer null at the end. A closed Dir throws ERR_DIR_CLOSED from readSync and closeSync, and rejects with it from read and close. for await over a Dir reads with read() until null and closes the Dir in a finally, as Node's Dir.entries() does: normal exhaustion, break and a throw all close it, and a loop whose body closes the Dir ends with ERR_DIR_CLOSED. A Dir also crosses 'unknown' slots as a native handle (Dir), so a closure returning one can be passed to untyped JavaScript functions. Through such a slot, path and closeSync() work, and other members throw the "not supported yet" Error. Open failures carry the opendir syscall and no path. options.bufferSize is checked after the directory opens, with Node's ERR_OUT_OF_RANGE messages. The options must be an object literal with a numeric bufferSize and a utf8 encoding. Recursive walks, buffer encodings and the callback forms are not lowered. TypeScript sources get a compile diagnostic for them; in JavaScript sources, recursive walks and the callback forms throw the fence error when the call runs. Corpus 5544 covers both forms against Node 24.22.