Simplify shell escaping - escape chars instead of quoting whole string

This commit is contained in:
Michal Dorner 2020-12-12 21:02:07 +01:00
parent 44ac6d8e25
commit ada1eee648
No known key found for this signature in database
GPG key ID: 9EEE04B48DA36786
3 changed files with 19 additions and 17 deletions

View file

@ -1,7 +1,5 @@
// Credits to https://github.com/xxorax/node-shell-escape
// Uses easy safe set of characters which can be left unescaped to keep it readable.
// Every other character will be backslash-escaped
export default function shellEscape(value: string): string {
return `'${value.replace(/'/g, "'\\''")}'`
.replace(/^(?:'')+/g, '') // unduplicate single-quote at the beginning
.replace(/\\'''/g, "\\'") // remove non-escaped single-quote if there are enclosed between 2 escaped
return value.replace(/([^a-zA-Z0-9,._+:@%/-])/gm, '\\$1')
}