summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/_fs/_fs_rename.ts
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/polyfills/_fs/_fs_rename.ts')
-rw-r--r--ext/node/polyfills/_fs/_fs_rename.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/ext/node/polyfills/_fs/_fs_rename.ts b/ext/node/polyfills/_fs/_fs_rename.ts
new file mode 100644
index 000000000..3f8b5bd7e
--- /dev/null
+++ b/ext/node/polyfills/_fs/_fs_rename.ts
@@ -0,0 +1,28 @@
+// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
+import { fromFileUrl } from "internal:deno_node/polyfills/path.ts";
+import { promisify } from "internal:deno_node/polyfills/internal/util.mjs";
+
+export function rename(
+ oldPath: string | URL,
+ newPath: string | URL,
+ callback: (err?: Error) => void,
+) {
+ oldPath = oldPath instanceof URL ? fromFileUrl(oldPath) : oldPath;
+ newPath = newPath instanceof URL ? fromFileUrl(newPath) : newPath;
+
+ if (!callback) throw new Error("No callback function supplied");
+
+ Deno.rename(oldPath, newPath).then((_) => callback(), callback);
+}
+
+export const renamePromise = promisify(rename) as (
+ oldPath: string | URL,
+ newPath: string | URL,
+) => Promise<void>;
+
+export function renameSync(oldPath: string | URL, newPath: string | URL) {
+ oldPath = oldPath instanceof URL ? fromFileUrl(oldPath) : oldPath;
+ newPath = newPath instanceof URL ? fromFileUrl(newPath) : newPath;
+
+ Deno.renameSync(oldPath, newPath);
+}