| 'use strict' | 
|   | 
| const fs = require('@npmcli/fs') | 
|   | 
| const fixOwner = require('./fix-owner') | 
| const path = require('path') | 
|   | 
| module.exports.mkdir = mktmpdir | 
|   | 
| function mktmpdir (cache, opts = {}) { | 
|   const { tmpPrefix } = opts | 
|   const tmpDir = path.join(cache, 'tmp') | 
|   return fs.mkdir(tmpDir, { recursive: true, owner: 'inherit' }) | 
|     .then(() => { | 
|       // do not use path.join(), it drops the trailing / if tmpPrefix is unset | 
|       const target = `${tmpDir}${path.sep}${tmpPrefix || ''}` | 
|       return fs.mkdtemp(target, { owner: 'inherit' }) | 
|     }) | 
| } | 
|   | 
| module.exports.withTmp = withTmp | 
|   | 
| function withTmp (cache, opts, cb) { | 
|   if (!cb) { | 
|     cb = opts | 
|     opts = {} | 
|   } | 
|   return fs.withTempDir(path.join(cache, 'tmp'), cb, opts) | 
| } | 
|   | 
| module.exports.fix = fixtmpdir | 
|   | 
| function fixtmpdir (cache) { | 
|   return fixOwner(cache, path.join(cache, 'tmp')) | 
| } |