diff options
Diffstat (limited to 'ext/node/polyfills')
-rw-r--r-- | ext/node/polyfills/_fs/_fs_cp.js | 41 | ||||
-rw-r--r-- | ext/node/polyfills/fs.ts | 6 |
2 files changed, 47 insertions, 0 deletions
diff --git a/ext/node/polyfills/_fs/_fs_cp.js b/ext/node/polyfills/_fs/_fs_cp.js new file mode 100644 index 000000000..dbe327974 --- /dev/null +++ b/ext/node/polyfills/_fs/_fs_cp.js @@ -0,0 +1,41 @@ +// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. + +// deno-lint-ignore-file prefer-primordials + +import { + getValidatedPath, + validateCpOptions, +} from "ext:deno_node/internal/fs/utils.mjs"; +import { promisify } from "ext:deno_node/internal/util.mjs"; + +const core = globalThis.__bootstrap.core; +const ops = core.ops; +const { op_node_cp } = core.ensureFastOps(); + +export function cpSync(src, dest, options) { + validateCpOptions(options); + const srcPath = getValidatedPath(src, "src"); + const destPath = getValidatedPath(dest, "dest"); + + ops.op_node_cp_sync(srcPath, destPath); +} + +export function cp(src, dest, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + validateCpOptions(options); + const srcPath = getValidatedPath(src, "src"); + const destPath = getValidatedPath(dest, "dest"); + + op_node_cp( + srcPath, + destPath, + ).then( + (res) => callback(null, res), + (err) => callback(err, null), + ); +} + +export const cpPromise = promisify(cp); diff --git a/ext/node/polyfills/fs.ts b/ext/node/polyfills/fs.ts index 881f0c139..01ac9912e 100644 --- a/ext/node/polyfills/fs.ts +++ b/ext/node/polyfills/fs.ts @@ -18,6 +18,7 @@ import { copyFilePromise, copyFileSync, } from "ext:deno_node/_fs/_fs_copy.ts"; +import { cp, cpPromise, cpSync } from "ext:deno_node/_fs/_fs_cp.js"; import Dir from "ext:deno_node/_fs/_fs_dir.ts"; import Dirent from "ext:deno_node/_fs/_fs_dirent.ts"; import { exists, existsSync } from "ext:deno_node/_fs/_fs_exists.ts"; @@ -137,6 +138,7 @@ const { const promises = { access: accessPromise, copyFile: copyFilePromise, + cp: cpPromise, open: openPromise, opendir: opendirPromise, rename: renamePromise, @@ -179,6 +181,8 @@ export default { constants, copyFile, copyFileSync, + cp, + cpSync, createReadStream, createWriteStream, Dir, @@ -280,6 +284,8 @@ export { constants, copyFile, copyFileSync, + cp, + cpSync, createReadStream, createWriteStream, Dir, |