diff --git a/packages/hydrooj/bin/hydrooj.js b/packages/hydrooj/bin/hydrooj.js index 105764c98..dfcb18204 100755 --- a/packages/hydrooj/bin/hydrooj.js +++ b/packages/hydrooj/bin/hydrooj.js @@ -22,6 +22,8 @@ const fs = require('fs-extra'); const argv = require('cac')().parse(); const child = require('child_process'); const esbuild = require('esbuild'); +const { default: hook } = require('require-resolve-hook'); +const { bypass } = hook(/^hydrooj/, (id) => bypass(() => require.resolve(id))); const exec = (...args) => { console.log('Executing: ', args[0], args[1].join(' ')); diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 3dace9c85..58a601d42 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.2.40", + "version": "3.2.41", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", @@ -41,6 +41,7 @@ "notp": "^2.0.3", "p-queue": "^7.1.0", "reflect-metadata": "^0.1.13", + "require-resolve-hook": "^1.1.0", "serialize-javascript": "^6.0.0", "sockjs": "^0.3.24", "source-map-support": "^0.5.21", diff --git a/packages/hydrooj/src/handler/api.ts b/packages/hydrooj/src/handler/api.ts index db9d972c1..a0d17563c 100644 --- a/packages/hydrooj/src/handler/api.ts +++ b/packages/hydrooj/src/handler/api.ts @@ -40,7 +40,8 @@ export function registerResolver( const wrappedFunc = async (arg, ctx, info) => { const res = await func(arg, ctx, info); if (typeof res !== 'object') return res; - if (handlers[value]) Object.assign(res, handlers[value]); + const node = value.includes('!') ? value.split('!')[0] : value; + if (handlers[node]) Object.assign(res, handlers[node]); ctx.parent = res; return res; };