| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 33f6158 commit b882148
8 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -16,8 +16,8 @@ function main({ n, paths }) { | |||
| 16 | 16 | ||
| 17 | 17 | bench.start(); | |
| 18 | 18 | for (let i = 0; i < n; i++) { | |
| 19 | - if (i % 3 === 0) { | ||
| 20 | - copy[1] = `${orig}${i}`; | ||
| 19 | + if (i % 5 === 0) { | ||
| 20 | + copy[1] = `${orig}/${i}`; | ||
| 21 | 21 | posix.join(...copy); | |
| 22 | 22 | } else { | |
| 23 | 23 | posix.join(...args); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -16,8 +16,8 @@ function main({ n, paths }) { | |||
| 16 | 16 | ||
| 17 | 17 | bench.start(); | |
| 18 | 18 | for (let i = 0; i < n; i++) { | |
| 19 | - if (i % 3 === 0) { | ||
| 20 | - copy[1] = `${orig}${i}`; | ||
| 19 | + if (i % 5 === 0) { | ||
| 20 | + copy[1] = `${orig}\\${i}`; | ||
| 21 | 21 | win32.join(...copy); | |
| 22 | 22 | } else { | |
| 23 | 23 | win32.join(...args); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -17,7 +17,7 @@ const bench = common.createBenchmark(main, { | |||
| 17 | 17 | function main({ n, path }) { | |
| 18 | 18 | bench.start(); | |
| 19 | 19 | for (let i = 0; i < n; i++) { | |
| 20 | - posix.normalize(i % 3 === 0 ? `${path}${i}` : path); | ||
| 20 | + posix.normalize(i % 5 === 0 ? `${path}/${i}` : path); | ||
| 21 | 21 | } | |
| 22 | 22 | bench.end(n); | |
| 23 | 23 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -17,7 +17,7 @@ const bench = common.createBenchmark(main, { | |||
| 17 | 17 | function main({ n, path }) { | |
| 18 | 18 | bench.start(); | |
| 19 | 19 | for (let i = 0; i < n; i++) { | |
| 20 | - win32.normalize(i % 3 === 0 ? `${path}${i}` : path); | ||
| 20 | + win32.normalize(i % 5 === 0 ? `${path}\\${i}` : path); | ||
| 21 | 21 | } | |
| 22 | 22 | bench.end(n); | |
| 23 | 23 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -4,23 +4,26 @@ const { posix } = require('path'); | |||
| 4 | 4 | ||
| 5 | 5 | const bench = common.createBenchmark(main, { | |
| 6 | 6 | paths: [ | |
| 7 | + 'empty', | ||
| 7 | 8 | '', | |
| 9 | + '.', | ||
| 8 | 10 | ['', ''].join('|'), | |
| 9 | 11 | ['foo/bar', '/tmp/file/', '..', 'a/../subfile'].join('|'), | |
| 10 | 12 | ['a/b/c/', '../../..'].join('|'), | |
| 13 | + ['/a/b/c/', 'abc'].join('|'), | ||
| 11 | 14 | ], | |
| 12 | 15 | n: [1e5], | |
| 13 | 16 | }); | |
| 14 | 17 | ||
| 15 | 18 | function main({ n, paths }) { | |
| 16 | - const args = paths.split('|'); | ||
| 19 | + const args = paths === 'empty' ? [] : paths.split('|'); | ||
| 17 | 20 | const copy = [...args]; | |
| 18 | - const orig = copy[0]; | ||
| 21 | + const orig = copy[0] ?? ''; | ||
| 19 | 22 | ||
| 20 | 23 | bench.start(); | |
| 21 | 24 | for (let i = 0; i < n; i++) { | |
| 22 | - if (i % 3 === 0) { | ||
| 23 | - copy[0] = `${orig}${i}`; | ||
| 25 | + if (i % 5 === 0) { | ||
| 26 | + copy[0] = `${orig}/${i}`; | ||
| 24 | 27 | posix.resolve(...copy); | |
| 25 | 28 | } else { | |
| 26 | 29 | posix.resolve(...args); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -4,7 +4,9 @@ const { win32 } = require('path'); | |||
| 4 | 4 | ||
| 5 | 5 | const bench = common.createBenchmark(main, { | |
| 6 | 6 | paths: [ | |
| 7 | + 'empty', | ||
| 7 | 8 | '', | |
| 9 | + '.', | ||
| 8 | 10 | ['', ''].join('|'), | |
| 9 | 11 | ['c:/ignore', 'd:\\a/b\\c/d', '\\e.exe'].join('|'), | |
| 10 | 12 | ['c:/blah\\blah', 'd:/games', 'c:../a'].join('|'), | |
@@ -13,14 +15,14 @@ const bench = common.createBenchmark(main, { | |||
| 13 | 15 | }); | |
| 14 | 16 | ||
| 15 | 17 | function main({ n, paths }) { | |
| 16 | - const args = paths.split('|'); | ||
| 18 | + const args = paths === 'empty' ? [] : paths.split('|'); | ||
| 17 | 19 | const copy = [...args]; | |
| 18 | - const orig = copy[0]; | ||
| 20 | + const orig = copy[0] ?? ''; | ||
| 19 | 21 | ||
| 20 | 22 | bench.start(); | |
| 21 | 23 | for (let i = 0; i < n; i++) { | |
| 22 | - if (i % 3 === 0) { | ||
| 23 | - copy[0] = `${orig}${i}`; | ||
| 24 | + if (i % 5 === 0) { | ||
| 25 | + copy[0] = `${orig}\\${i}`; | ||
| 24 | 26 | win32.resolve(...copy); | |
| 25 | 27 | } else { | |
| 26 | 28 | win32.resolve(...args); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -95,7 +95,7 @@ function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { | |||
| 95 | 95 | StringPrototypeCharCodeAt(res, res.length - 1) !== CHAR_DOT || | |
| 96 | 96 | StringPrototypeCharCodeAt(res, res.length - 2) !== CHAR_DOT) { | |
| 97 | 97 | if (res.length > 2) { | |
| 98 | - const lastSlashIndex = StringPrototypeLastIndexOf(res, separator); | ||
| 98 | + const lastSlashIndex = res.length - lastSegmentLength - 1; | ||
| 99 | 99 | if (lastSlashIndex === -1) { | |
| 100 | 100 | res = ''; | |
| 101 | 101 | lastSegmentLength = 0; | |
@@ -163,6 +163,8 @@ function _format(sep, pathObject) { | |||
| 163 | 163 | return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`; | |
| 164 | 164 | } | |
| 165 | 165 | ||
| 166 | + const forwardSlashRegExp = /\//g; | ||
| 167 | + | ||
| 166 | 168 | const win32 = { | |
| 167 | 169 | /** | |
| 168 | 170 | * path.resolve([from ...], to) | |
@@ -186,6 +188,14 @@ const win32 = { | |||
| 186 | 188 | } | |
| 187 | 189 | } else if (resolvedDevice.length === 0) { | |
| 188 | 190 | path = process.cwd(); | |
| 191 | + // Fast path for current directory | ||
| 192 | + if (args.length === 0 || ((args.length === 1 && (args[0] === '' || args[0] === '.')) && | ||
| 193 | + isPathSeparator(StringPrototypeCharCodeAt(path, 0)))) { | ||
| 194 | + if (!isWindows) { | ||
| 195 | + path = StringPrototypeReplace(path, forwardSlashRegExp, '\\'); | ||
| 196 | + } | ||
| 197 | + return path; | ||
| 198 | + } | ||
| 189 | 199 | } else { | |
| 190 | 200 | // Windows has the concept of drive-specific current working | |
| 191 | 201 | // directories. If we've resolved a drive letter but not yet an | |
@@ -1171,6 +1181,12 @@ const posix = { | |||
| 1171 | 1181 | * @returns {string} | |
| 1172 | 1182 | */ | |
| 1173 | 1183 | resolve(...args) { | |
| 1184 | + if (args.length === 0 || (args.length === 1 && (args[0] === '' || args[0] === '.'))) { | ||
| 1185 | + const cwd = posixCwd(); | ||
| 1186 | + if (StringPrototypeCharCodeAt(cwd, 0) === CHAR_FORWARD_SLASH) { | ||
| 1187 | + return cwd; | ||
| 1188 | + } | ||
| 1189 | + } | ||
| 1174 | 1190 | let resolvedPath = ''; | |
| 1175 | 1191 | let resolvedAbsolute = false; | |
| 1176 | 1192 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -24,6 +24,8 @@ const resolveTests = [ | |||
| 24 | 24 | [['c:/ignore', 'd:\\a/b\\c/d', '\\e.exe'], 'd:\\e.exe'], | |
| 25 | 25 | [['c:/ignore', 'c:/some/file'], 'c:\\some\\file'], | |
| 26 | 26 | [['d:/ignore', 'd:some/dir//'], 'd:\\ignore\\some\\dir'], | |
| 27 | + [[], process.cwd()], | ||
| 28 | + [[''], process.cwd()], | ||
| 27 | 29 | [['.'], process.cwd()], | |
| 28 | 30 | [['//server/share', '..', 'relative\\'], '\\\\server\\share\\relative'], | |
| 29 | 31 | [['c:/', '//'], 'c:\\'], | |
@@ -42,6 +44,8 @@ const resolveTests = [ | |||
| 42 | 44 | [[['/var/lib', '../', 'file/'], '/var/file'], | |
| 43 | 45 | [['/var/lib', '/../', 'file/'], '/file'], | |
| 44 | 46 | [['a/b/c/', '../../..'], posixyCwd], | |
| 47 | + [[], posixyCwd], | ||
| 48 | + [[''], posixyCwd], | ||
| 45 | 49 | [['.'], posixyCwd], | |
| 46 | 50 | [['/some/dir', '.', '/absolute/'], '/absolute'], | |
| 47 | 51 | [['/foo/tmp.3/', '../tmp.3/cycles/root.js'], '/foo/tmp.3/cycles/root.js'], | |
| Back | FazBrowse Home | New Git URL |
0 commit comments