Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.js24
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
+}