|
| 1 | +diff --git internal/node/node_patches.cjs internal/node/node_patches.cjs |
| 2 | +index 239bb5f..1c02e06 100755 |
| 3 | +--- internal/node/node_patches.cjs |
| 4 | ++++ internal/node/node_patches.cjs |
| 5 | +@@ -15,7 +15,7 @@ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof win |
| 6 | + |
| 7 | + function createCommonjsModule(fn) { |
| 8 | + var module = { exports: {} }; |
| 9 | +- return fn(module, module.exports), module.exports; |
| 10 | ++ return fn(module, module.exports), module.exports; |
| 11 | + } |
| 12 | + |
| 13 | + var fs = createCommonjsModule(function (module, exports) { |
| 14 | +@@ -95,7 +95,7 @@ const patcher = (fs = fs__default['default'], roots) => { |
| 15 | + args[args.length - 1] = (err, stats) => { |
| 16 | + if (err) |
| 17 | + return cb(err); |
| 18 | +- path__default['default'].resolve(args[0]); |
| 19 | ++ path__default['default'].resolve(args[0].toString()); |
| 20 | + if (!stats.isSymbolicLink()) { |
| 21 | + return cb(null, stats); |
| 22 | + } |
| 23 | +@@ -116,7 +116,7 @@ const patcher = (fs = fs__default['default'], roots) => { |
| 24 | + return cb(err); |
| 25 | + } |
| 26 | + } |
| 27 | +- str = path__default['default'].resolve(path__default['default'].dirname(args[0]), str); |
| 28 | ++ str = path__default['default'].resolve(path__default['default'].dirname(args[0].toString()), str); |
| 29 | + if (isEscape(str, args[0])) { |
| 30 | + // if it's an out link we have to return the original stat. |
| 31 | + return origStat(args[0], (err, plainStat) => { |
| 32 | +@@ -143,7 +143,7 @@ const patcher = (fs = fs__default['default'], roots) => { |
| 33 | + if (err) |
| 34 | + return cb(err); |
| 35 | + if (isEscape(str, args[0])) { |
| 36 | +- cb(null, path__default['default'].resolve(args[0])); |
| 37 | ++ cb(null, path__default['default'].resolve(args[0].toString())); |
| 38 | + } |
| 39 | + else { |
| 40 | + cb(null, str); |
| 41 | +@@ -161,7 +161,7 @@ const patcher = (fs = fs__default['default'], roots) => { |
| 42 | + if (err) |
| 43 | + return cb(err); |
| 44 | + if (isEscape(str, args[0])) { |
| 45 | +- cb(null, path__default['default'].resolve(args[0])); |
| 46 | ++ cb(null, path__default['default'].resolve(args[0].toString())); |
| 47 | + } |
| 48 | + else { |
| 49 | + cb(null, str); |
| 50 | +@@ -176,9 +176,9 @@ const patcher = (fs = fs__default['default'], roots) => { |
| 51 | + if (cb) { |
| 52 | + cb = once(cb); |
| 53 | + args[args.length - 1] = (err, str) => { |
| 54 | +- args[0] = path__default['default'].resolve(args[0]); |
| 55 | ++ args[0] = path__default['default'].resolve(args[0].toString()); |
| 56 | + if (str) |
| 57 | +- str = path__default['default'].resolve(path__default['default'].dirname(args[0]), str); |
| 58 | ++ str = path__default['default'].resolve(path__default['default'].dirname(args[0].toString()), str); |
| 59 | + if (err) |
| 60 | + return cb(err); |
| 61 | + if (isEscape(str, args[0])) { |
| 62 | +@@ -196,13 +196,13 @@ const patcher = (fs = fs__default['default'], roots) => { |
| 63 | + // tslint:disable-next-line:no-any |
| 64 | + fs.lstatSync = (...args) => { |
| 65 | + const stats = origLstatSync(...args); |
| 66 | +- const linkPath = path__default['default'].resolve(args[0]); |
| 67 | ++ const linkPath = path__default['default'].resolve(args[0].toString()); |
| 68 | + if (!stats.isSymbolicLink()) { |
| 69 | + return stats; |
| 70 | + } |
| 71 | + let linkTarget; |
| 72 | + try { |
| 73 | +- linkTarget = path__default['default'].resolve(path__default['default'].dirname(args[0]), origReadlinkSync(linkPath)); |
| 74 | ++ linkTarget = path__default['default'].resolve(path__default['default'].dirname(args[0].toString()), origReadlinkSync(linkPath)); |
| 75 | + } |
| 76 | + catch (e) { |
| 77 | + if (e.code === 'ENOENT') { |
| 78 | +@@ -228,7 +228,7 @@ const patcher = (fs = fs__default['default'], roots) => { |
| 79 | + fs.realpathSync = (...args) => { |
| 80 | + const str = origRealpathSync(...args); |
| 81 | + if (isEscape(str, args[0])) { |
| 82 | +- return path__default['default'].resolve(args[0]); |
| 83 | ++ return path__default['default'].resolve(args[0].toString()); |
| 84 | + } |
| 85 | + return str; |
| 86 | + }; |
| 87 | +@@ -236,14 +236,14 @@ const patcher = (fs = fs__default['default'], roots) => { |
| 88 | + fs.realpathSync.native = (...args) => { |
| 89 | + const str = origRealpathSyncNative(...args); |
| 90 | + if (isEscape(str, args[0])) { |
| 91 | +- return path__default['default'].resolve(args[0]); |
| 92 | ++ return path__default['default'].resolve(args[0].toString()); |
| 93 | + } |
| 94 | + return str; |
| 95 | + }; |
| 96 | + // tslint:disable-next-line:no-any |
| 97 | + fs.readlinkSync = (...args) => { |
| 98 | +- args[0] = path__default['default'].resolve(args[0]); |
| 99 | +- const str = path__default['default'].resolve(path__default['default'].dirname(args[0]), origReadlinkSync(...args)); |
| 100 | ++ args[0] = path__default['default'].resolve(args[0].toString()); |
| 101 | ++ const str = path__default['default'].resolve(path__default['default'].dirname(args[0].toString()), origReadlinkSync(...args)); |
| 102 | + if (isEscape(str, args[0]) || str === args[0]) { |
| 103 | + const e = new Error('EINVAL: invalid argument, readlink \'' + args[0] + '\''); |
| 104 | + // tslint:disable-next-line:no-any |
| 105 | +@@ -254,7 +254,7 @@ const patcher = (fs = fs__default['default'], roots) => { |
| 106 | + }; |
| 107 | + // tslint:disable-next-line:no-any |
| 108 | + fs.readdir = (...args) => { |
| 109 | +- const p = path__default['default'].resolve(args[0]); |
| 110 | ++ const p = path__default['default'].resolve(args[0].toString()); |
| 111 | + let cb = args[args.length - 1]; |
| 112 | + if (typeof cb !== 'function') { |
| 113 | + // this will likely throw callback required error. |
| 114 | +@@ -284,7 +284,7 @@ const patcher = (fs = fs__default['default'], roots) => { |
| 115 | + // tslint:disable-next-line:no-any |
| 116 | + fs.readdirSync = (...args) => { |
| 117 | + const res = origReaddirSync(...args); |
| 118 | +- const p = path__default['default'].resolve(args[0]); |
| 119 | ++ const p = path__default['default'].resolve(args[0].toString()); |
| 120 | + // tslint:disable-next-line:no-any |
| 121 | + res.forEach((v) => { |
| 122 | + handleDirentSync(p, v); |
| 123 | +@@ -504,6 +504,8 @@ const escapeFunction = (roots) => { |
| 124 | + // ensure roots are always absolute |
| 125 | + roots = roots.map(root => path__default['default'].resolve(root)); |
| 126 | + function isEscape(linkTarget, linkPath) { |
| 127 | ++ linkTarget = linkTarget.toString(); |
| 128 | ++ linkPath = linkPath.toString(); |
| 129 | + if (!path__default['default'].isAbsolute(linkPath)) { |
| 130 | + linkPath = path__default['default'].resolve(linkPath); |
| 131 | + } |
0 commit comments