D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
alt
/
alt-nodejs22
/
root
/
lib
/
node_modules
/
npm
/
node_modules
/
rimraf
/
dist
/
esm
/
Filename :
default-tmp.js
back
Copy
// The default temporary folder location for use in the windows algorithm. // It's TEMPting to use dirname(path), since that's guaranteed to be on the // same device. However, this means that: // rimraf(path).then(() => rimraf(dirname(path))) // will often fail with EBUSY, because the parent dir contains // marked-for-deletion directory entries (which do not show up in readdir). // The approach here is to use os.tmpdir() if it's on the same drive letter, // or resolve(path, '\\temp') if it exists, or the root of the drive if not. // On Posix (not that you'd be likely to use the windows algorithm there), // it uses os.tmpdir() always. import { tmpdir } from 'os'; import { parse, resolve } from 'path'; import { promises, statSync } from './fs.js'; import platform from './platform.js'; const { stat } = promises; const isDirSync = (path) => { try { return statSync(path).isDirectory(); } catch (er) { return false; } }; const isDir = (path) => stat(path).then(st => st.isDirectory(), () => false); const win32DefaultTmp = async (path) => { const { root } = parse(path); const tmp = tmpdir(); const { root: tmpRoot } = parse(tmp); if (root.toLowerCase() === tmpRoot.toLowerCase()) { return tmp; } const driveTmp = resolve(root, '/temp'); if (await isDir(driveTmp)) { return driveTmp; } return root; }; const win32DefaultTmpSync = (path) => { const { root } = parse(path); const tmp = tmpdir(); const { root: tmpRoot } = parse(tmp); if (root.toLowerCase() === tmpRoot.toLowerCase()) { return tmp; } const driveTmp = resolve(root, '/temp'); if (isDirSync(driveTmp)) { return driveTmp; } return root; }; const posixDefaultTmp = async () => tmpdir(); const posixDefaultTmpSync = () => tmpdir(); export const defaultTmp = platform === 'win32' ? win32DefaultTmp : posixDefaultTmp; export const defaultTmpSync = platform === 'win32' ? win32DefaultTmpSync : posixDefaultTmpSync; //# sourceMappingURL=default-tmp.js.map