summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/_fs/_fs_readlink.ts
diff options
context:
space:
mode:
authorhaturau <135221985+haturatu@users.noreply.github.com>2024-11-20 01:20:47 +0900
committerGitHub <noreply@github.com>2024-11-20 01:20:47 +0900
commit85719a67e59c7aa45bead26e4942d7df8b1b42d4 (patch)
treeface0aecaac53e93ce2f23b53c48859bcf1a36ec /ext/node/polyfills/_fs/_fs_readlink.ts
parent67697bc2e4a62a9670699fd18ad0dd8efc5bd955 (diff)
parent186b52731c6bb326c4d32905c5e732d082e83465 (diff)
Merge branch 'denoland:main' into main
Diffstat (limited to 'ext/node/polyfills/_fs/_fs_readlink.ts')
-rw-r--r--ext/node/polyfills/_fs/_fs_readlink.ts33
1 files changed, 21 insertions, 12 deletions
diff --git a/ext/node/polyfills/_fs/_fs_readlink.ts b/ext/node/polyfills/_fs/_fs_readlink.ts
index 5f2312798..08bea843f 100644
--- a/ext/node/polyfills/_fs/_fs_readlink.ts
+++ b/ext/node/polyfills/_fs/_fs_readlink.ts
@@ -4,13 +4,10 @@
// deno-lint-ignore-file prefer-primordials
import { TextEncoder } from "ext:deno_web/08_text_encoding.js";
-import {
- intoCallbackAPIWithIntercept,
- MaybeEmpty,
- notImplemented,
-} from "ext:deno_node/_utils.ts";
+import { MaybeEmpty, notImplemented } from "ext:deno_node/_utils.ts";
import { pathFromURL } from "ext:deno_web/00_infra.js";
import { promisify } from "ext:deno_node/internal/util.mjs";
+import { denoErrorToNodeError } from "ext:deno_node/internal/errors.ts";
type ReadlinkCallback = (
err: MaybeEmpty<Error>,
@@ -69,12 +66,17 @@ export function readlink(
const encoding = getEncoding(optOrCallback);
- intoCallbackAPIWithIntercept<string, Uint8Array | string>(
- Deno.readLink,
- (data: string): string | Uint8Array => maybeEncode(data, encoding),
- cb,
- path,
- );
+ Deno.readLink(path).then((data: string) => {
+ const res = maybeEncode(data, encoding);
+ if (cb) cb(null, res);
+ }, (err: Error) => {
+ if (cb) {
+ (cb as (e: Error) => void)(denoErrorToNodeError(err, {
+ syscall: "readlink",
+ path,
+ }));
+ }
+ });
}
export const readlinkPromise = promisify(readlink) as (
@@ -88,5 +90,12 @@ export function readlinkSync(
): string | Uint8Array {
path = path instanceof URL ? pathFromURL(path) : path;
- return maybeEncode(Deno.readLinkSync(path), getEncoding(opt));
+ try {
+ return maybeEncode(Deno.readLinkSync(path), getEncoding(opt));
+ } catch (error) {
+ throw denoErrorToNodeError(error, {
+ syscall: "readlink",
+ path,
+ });
+ }
}