| const fs = require('../fs.js') | 
| const getOptions = require('../common/get-options.js') | 
| const node = require('../common/node.js') | 
| const owner = require('../common/owner.js') | 
|   | 
| const polyfill = require('./polyfill.js') | 
|   | 
| // node 10.12.0 added the options parameter, which allows recursive and mode | 
| // properties to be passed | 
| const useNative = node.satisfies('>=10.12.0') | 
|   | 
| // extends mkdir with the ability to specify an owner of the new dir | 
| const mkdir = async (path, opts) => { | 
|   const options = getOptions(opts, { | 
|     copy: ['mode', 'recursive', 'owner'], | 
|     wrap: 'mode', | 
|   }) | 
|   const { uid, gid } = await owner.validate(path, options.owner) | 
|   | 
|   // the polyfill is tested separately from this module, no need to hack | 
|   // process.version to try to trigger it just for coverage | 
|   // istanbul ignore next | 
|   const result = useNative | 
|     ? await fs.mkdir(path, options) | 
|     : await polyfill(path, options) | 
|   | 
|   await owner.update(path, uid, gid) | 
|   | 
|   return result | 
| } | 
|   | 
| module.exports = mkdir |