diff --git a/packages/hydrooj/bin/hydrooj.js b/packages/hydrooj/bin/hydrooj.js index babea7a45..bad5d596e 100755 --- a/packages/hydrooj/bin/hydrooj.js +++ b/packages/hydrooj/bin/hydrooj.js @@ -35,18 +35,27 @@ const { bypass } = hook(/^(hydrooj|@hydrooj|cordis|lodash|js-yaml)($|\/)/, (id) }); }, { ignoreModuleNotFoundError: false }); -// Replace pnpm paths. +Error.stackTraceLimit = 50; + +// Replace pnp paths. // Vscode will try to open a local file for links, so this doesn't work for remote-ssh, etc. -if (process.env.npm_execpath && process.env.npm_execpath.includes('pnpm') && !process.env.SSH_CONNECTION) { +if (process.env.npm_execpath && !process.env.SSH_CONNECTION) { const original = Error.prepareStackTrace; - Error.prepareStackTrace = function capture(...args) { - const res = original.apply(this, args); - if (!res.includes('.pnpm')) return res; - return res.replace( - /([( ])([^( ]+\/\.pnpm\/.+?\/node_modules\/)(.+)(:\d+:[^)\n]+)/g, - '$1\u001B]8;;$2$3$4\u0007pnpm:$3$4\u001B]8;;\u0007', - ); - }; + if (process.env.npm_execpath.includes('yarn')) { + Error.prepareStackTrace = function capture(...args) { + return original.apply(this, args).split('\n').filter((i) => !i.includes('.pnp')).join('\n'); + }; + } + if (process.env.npm_execpath.includes('pnpm')) { + Error.prepareStackTrace = function capture(...args) { + const res = original.apply(this, args); + if (!res.includes('.pnpm')) return res; + return res.replace( + /([( ])([^( ]+\/\.pnpm\/.+?\/node_modules\/)(.+)(:\d+:[^)\n]+)/g, + '$1\u001B]8;;$2$3$4\u0007pnpm:$3$4\u001B]8;;\u0007', + ); + }; + } } require('./commands');