diff options
Diffstat (limited to 'deps/npm/node_modules/tar/lib/strip-trailing-slashes.js')
-rw-r--r-- | deps/npm/node_modules/tar/lib/strip-trailing-slashes.js | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/deps/npm/node_modules/tar/lib/strip-trailing-slashes.js b/deps/npm/node_modules/tar/lib/strip-trailing-slashes.js new file mode 100644 index 00000000000..f702ed5a5c0 --- /dev/null +++ b/deps/npm/node_modules/tar/lib/strip-trailing-slashes.js @@ -0,0 +1,24 @@ +// this is the only approach that was significantly faster than using +// str.replace(/\/+$/, '') for strings ending with a lot of / chars and +// containing multiple / chars. +const batchStrings = [ + '/'.repeat(1024), + '/'.repeat(512), + '/'.repeat(256), + '/'.repeat(128), + '/'.repeat(64), + '/'.repeat(32), + '/'.repeat(16), + '/'.repeat(8), + '/'.repeat(4), + '/'.repeat(2), + '/', +] + +module.exports = str => { + for (const s of batchStrings) { + while (str.length >= s.length && str.slice(-1 * s.length) === s) + str = str.slice(0, -1 * s.length) + } + return str +} |