You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
921 B
20 lines
921 B
// Get the appropriate flag to use for creating files |
|
// We use fmap on Windows platforms for files less than |
|
// 512kb. This is a fairly low limit, but avoids making |
|
// things slower in some cases. Since most of what this |
|
// library is used for is extracting tarballs of many |
|
// relatively small files in npm packages and the like, |
|
// it can be a big boost on Windows platforms. |
|
// Only supported in Node v12.9.0 and above. |
|
const platform = process.env.__FAKE_PLATFORM__ || process.platform |
|
const isWindows = platform === 'win32' |
|
const fs = global.__FAKE_TESTING_FS__ || require('fs') |
|
|
|
/* istanbul ignore next */ |
|
const { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants |
|
|
|
const fMapEnabled = isWindows && !!UV_FS_O_FILEMAP |
|
const fMapLimit = 512 * 1024 |
|
const fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY |
|
module.exports = !fMapEnabled ? () => 'w' |
|
: size => size < fMapLimit ? fMapFlag : 'w'
|
|
|