deno/ext/node/polyfills/_fs/_fs_lchmod.ts
Daniel Osvaldo R 9bcd4366ee
Some checks are pending
ci / build libs (push) Blocked by required conditions
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
fix(ext/node): add lchmod, lchmod promise, lchmodSync to node:fs (#29833)
2025-06-26 15:46:07 +09:00

47 lines
1.5 KiB
TypeScript

// Copyright 2018-2025 the Deno authors. MIT license.
import { type Buffer } from "node:buffer";
import {
type CallbackWithError,
makeCallback,
} from "ext:deno_node/_fs/_fs_common.ts";
import { ERR_METHOD_NOT_IMPLEMENTED } from "ext:deno_node/internal/errors.ts";
import { getValidatedPathToString } from "ext:deno_node/internal/fs/utils.mjs";
import { isMacOS } from "ext:deno_node/_util/os.ts";
import { op_node_lchmod, op_node_lchmod_sync } from "ext:core/ops";
import { parseFileMode } from "ext:deno_node/internal/validators.mjs";
import { primordials } from "ext:core/mod.js";
import { promisify } from "ext:deno_node/internal/util.mjs";
const { PromisePrototypeThen, PromiseReject } = primordials;
export const lchmod = !isMacOS ? undefined : (
path: string | Buffer | URL,
mode: number,
callback: CallbackWithError,
) => {
path = getValidatedPathToString(path);
mode = parseFileMode(mode, "mode");
callback = makeCallback(callback);
PromisePrototypeThen(
op_node_lchmod(path, mode),
() => callback(null),
(err) => callback(err),
);
};
export const lchmodPromise = !isMacOS
? () => PromiseReject(new ERR_METHOD_NOT_IMPLEMENTED("lchmod()"))
: promisify(lchmod) as (
path: string | Buffer | URL,
mode: number,
) => Promise<void>;
export const lchmodSync = !isMacOS
? undefined
: (path: string | Buffer | URL, mode: number) => {
path = getValidatedPathToString(path);
mode = parseFileMode(mode, "mode");
return op_node_lchmod_sync(path, mode);
};