diff options
Diffstat (limited to 'ext/node/polyfills/_fs/_fs_rename.ts')
-rw-r--r-- | ext/node/polyfills/_fs/_fs_rename.ts | 28 |
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); +} |