26 lines
		
	
	
		
			517 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			26 lines
		
	
	
		
			517 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const path = require('path')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// get drive on windows
							 | 
						||
| 
								 | 
							
								function getRootPath (p) {
							 | 
						||
| 
								 | 
							
								  p = path.normalize(path.resolve(p)).split(path.sep)
							 | 
						||
| 
								 | 
							
								  if (p.length > 0) return p[0]
							 | 
						||
| 
								 | 
							
								  return null
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// http://stackoverflow.com/a/62888/10333 contains more accurate
							 | 
						||
| 
								 | 
							
								// TODO: expand to include the rest
							 | 
						||
| 
								 | 
							
								const INVALID_PATH_CHARS = /[<>:"|?*]/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function invalidWin32Path (p) {
							 | 
						||
| 
								 | 
							
								  const rp = getRootPath(p)
							 | 
						||
| 
								 | 
							
								  p = p.replace(rp, '')
							 | 
						||
| 
								 | 
							
								  return INVALID_PATH_CHARS.test(p)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = {
							 | 
						||
| 
								 | 
							
								  getRootPath,
							 | 
						||
| 
								 | 
							
								  invalidWin32Path
							 | 
						||
| 
								 | 
							
								}
							 |