mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00

Towards #29972 Allows the [parallel/test-fs-close-errors.js](https://github.com/nodejs/node/blob/v24.2.0/test/parallel/test-fs-close-errors.js) test to pass, and also addresses the `prefer-primordials` lint rule #24236
39 lines
1 KiB
TypeScript
39 lines
1 KiB
TypeScript
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
|
|
import {
|
|
type CallbackWithError,
|
|
makeCallback,
|
|
} from "ext:deno_node/_fs/_fs_common.ts";
|
|
import { getValidatedFd } from "ext:deno_node/internal/fs/utils.mjs";
|
|
import { core, primordials } from "ext:core/mod.js";
|
|
|
|
const {
|
|
Error,
|
|
ErrorPrototype,
|
|
ObjectPrototypeIsPrototypeOf,
|
|
} = primordials;
|
|
|
|
export function close(fd: number, callback: CallbackWithError) {
|
|
fd = getValidatedFd(fd);
|
|
callback = makeCallback(callback);
|
|
setTimeout(() => {
|
|
let error = null;
|
|
try {
|
|
// TODO(@littledivy): Treat `fd` as real file descriptor. `rid` is an
|
|
// implementation detail and may change.
|
|
core.close(fd);
|
|
} catch (err) {
|
|
error = ObjectPrototypeIsPrototypeOf(ErrorPrototype, err)
|
|
? err as Error
|
|
: new Error("[non-error thrown]");
|
|
}
|
|
callback(error);
|
|
}, 0);
|
|
}
|
|
|
|
export function closeSync(fd: number) {
|
|
fd = getValidatedFd(fd);
|
|
// TODO(@littledivy): Treat `fd` as real file descriptor. `rid` is an
|
|
// implementation detail and may change.
|
|
core.close(fd);
|
|
}
|