diff options
Diffstat (limited to 'ext/node/polyfills/_fs/_fs_truncate.ts')
-rw-r--r-- | ext/node/polyfills/_fs/_fs_truncate.ts | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/ext/node/polyfills/_fs/_fs_truncate.ts b/ext/node/polyfills/_fs/_fs_truncate.ts new file mode 100644 index 000000000..105555abc --- /dev/null +++ b/ext/node/polyfills/_fs/_fs_truncate.ts @@ -0,0 +1,33 @@ +// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. +import { CallbackWithError } from "internal:deno_node/polyfills/_fs/_fs_common.ts"; +import { fromFileUrl } from "internal:deno_node/polyfills/path.ts"; +import { promisify } from "internal:deno_node/polyfills/internal/util.mjs"; + +export function truncate( + path: string | URL, + lenOrCallback: number | CallbackWithError, + maybeCallback?: CallbackWithError, +) { + path = path instanceof URL ? fromFileUrl(path) : path; + const len: number | undefined = typeof lenOrCallback === "number" + ? lenOrCallback + : undefined; + const callback: CallbackWithError = typeof lenOrCallback === "function" + ? lenOrCallback + : maybeCallback as CallbackWithError; + + if (!callback) throw new Error("No callback function supplied"); + + Deno.truncate(path, len).then(() => callback(null), callback); +} + +export const truncatePromise = promisify(truncate) as ( + path: string | URL, + len?: number, +) => Promise<void>; + +export function truncateSync(path: string | URL, len?: number) { + path = path instanceof URL ? fromFileUrl(path) : path; + + Deno.truncateSync(path, len); +} |