From 15dba5dd4536662f2f71ca99314dea249da86784 Mon Sep 17 00:00:00 2001 From: undefined Date: Thu, 23 Mar 2023 20:01:49 +0800 Subject: [PATCH] core: allow require module from plugin dir --- packages/hydrooj/bin/hydrooj.js | 9 +++++++-- packages/hydrooj/package.json | 2 +- .../components/scratchpad/ScratchpadToolbarContainer.jsx | 4 ++-- packages/ui-default/package.json | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/hydrooj/bin/hydrooj.js b/packages/hydrooj/bin/hydrooj.js index ecce3b7a..53bbe06a 100755 --- a/packages/hydrooj/bin/hydrooj.js +++ b/packages/hydrooj/bin/hydrooj.js @@ -2,8 +2,9 @@ require('@hydrooj/utils/lib/register'); const packageBasedir = require('path').resolve(__dirname, '..'); +const { homedir } = require('os'); const { default: hook } = require('require-resolve-hook'); -const { bypass } = hook(/^(hydrooj|@hydrooj\/utils|cordis|lodash|js-yaml)($|\/)/, (id) => { +const { bypass } = hook(/^(hydrooj|@hydrooj|cordis|lodash|js-yaml)($|\/)/, (id) => { if (id.startsWith('hydrooj/src')) { console.log('module require via %s is deprecated.', id); if (process.env.DEV) { @@ -24,7 +25,11 @@ const { bypass } = hook(/^(hydrooj|@hydrooj\/utils|cordis|lodash|js-yaml)($|\/)/ try { return require.resolve(id, { paths: [`${process.cwd()}/node_modules`] }); } catch (e) { - return id; + try { + return require.resolve(id.replace(/^@hydrooj\//, './'), { paths: [`${homedir()}/.hydro/addons`] }); + } catch (er) { + return id; + } } } }); diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index edf3f400..dc74baf1 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "4.9.4", + "version": "4.9.5", "bin": "bin/hydrooj.js", "main": "src/plugin-api", "module": "src/plugin-api", diff --git a/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx b/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx index 0c6d9ee3..0efbc32a 100644 --- a/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx +++ b/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx @@ -83,8 +83,8 @@ export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadTool super(props); if (!availableLangs[this.props.editorLang]) { // preference not allowed - const key = keys.filter((i) => availableLangs[i].pretest) - .find((i) => availableLangs[i].pretest.split('.')[0] === this.props.editorLang.split('.')[0]); + const key = this.props.editorLang ? keys.filter((i) => availableLangs[i].pretest) + .find((i) => availableLangs[i].pretest.split('.')[0] === this.props.editorLang.split('.')[0]) : ''; this.props.setEditorLanguage(key || keys[0]); } } diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 26c0c19c..505d5b59 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.48.8", + "version": "4.48.9", "author": "undefined ", "license": "AGPL-3.0", "main": "index.ts",