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.
		
		
		
		
		
			
		
			
				
					21 lines
				
				921 B
			
		
		
			
		
	
	
					21 lines
				
				921 B
			| 
								 
											3 years ago
										 
									 | 
							
								// 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'
							 |