summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/_fs/_fs_truncate.ts
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/polyfills/_fs/_fs_truncate.ts')
-rw-r--r--ext/node/polyfills/_fs/_fs_truncate.ts33
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);
+}