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.
29 lines
730 B
29 lines
730 B
const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform |
|
const { resolve, parse } = require('path') |
|
const pathArg = path => { |
|
if (/\0/.test(path)) { |
|
// simulate same failure that node raises |
|
throw Object.assign( |
|
new TypeError('path must be a string without null bytes'), |
|
{ |
|
path, |
|
code: 'ERR_INVALID_ARG_VALUE', |
|
} |
|
) |
|
} |
|
|
|
path = resolve(path) |
|
if (platform === 'win32') { |
|
const badWinChars = /[*|"<>?:]/ |
|
const {root} = parse(path) |
|
if (badWinChars.test(path.substr(root.length))) { |
|
throw Object.assign(new Error('Illegal characters in path.'), { |
|
path, |
|
code: 'EINVAL', |
|
}) |
|
} |
|
} |
|
|
|
return path |
|
} |
|
module.exports = pathArg
|
|
|