• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1const fs = require('fs/promises')
2const getOptions = require('../common/get-options.js')
3const node = require('../common/node.js')
4const polyfill = require('./polyfill.js')
5
6// node 16.7.0 added fs.cp
7const useNative = node.satisfies('>=16.7.0')
8
9const cp = async (src, dest, opts) => {
10  const options = getOptions(opts, {
11    copy: ['dereference', 'errorOnExist', 'filter', 'force', 'preserveTimestamps', 'recursive'],
12  })
13
14  // the polyfill is tested separately from this module, no need to hack
15  // process.version to try to trigger it just for coverage
16  // istanbul ignore next
17  return useNative
18    ? fs.cp(src, dest, options)
19    : polyfill(src, dest, options)
20}
21
22module.exports = cp
23