diff --git a/packages/hydrooj/bin/hydrooj.js b/packages/hydrooj/bin/hydrooj.js index e0d779abb..611a0410c 100755 --- a/packages/hydrooj/bin/hydrooj.js +++ b/packages/hydrooj/bin/hydrooj.js @@ -10,7 +10,11 @@ const argv = require('cac')().parse(); const child = require('child_process'); const esbuild = require('esbuild'); +const major = +process.version.split('.')[0].split('v')[1]; +const minor = +process.version.split('.')[1]; + let transformTimeUsage = 0; +let transformCount = 0; let displayTimeout; function transform(type, filename) { const start = new Date(); @@ -19,16 +23,22 @@ function transform(type, filename) { sourcemap: 'inline', platform: 'node', format: 'cjs', - target: `node${process.version.split('.')[0].split('v')[1]}`, + target: `node${major}.${minor}`, jsx: 'transform', write: false, }); if (result.warnings.length) console.warn(result.warnings); transformTimeUsage += new Date().getTime() - start.getTime(); + transformCount++; if (displayTimeout) clearTimeout(displayTimeout); - displayTimeout = setTimeout(() => console.log(`Code transform took ${transformTimeUsage}ms`), 1000); + displayTimeout = setTimeout(() => console.log(`Transformed ${transformCount} files. (${transformTimeUsage}ms)`), 1000); return result.outputFiles[0].text; } +if (major < 14) { + require.extensions['.js'] = function loader(module, filename) { + return module._compile(transform('js', filename), filename); + }; +} require.extensions['.ts'] = function loader(module, filename) { return module._compile(transform('ts', filename), filename); }; diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index a2b16dc79..781cacec8 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.30.8", + "version": "2.30.9", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/init.ts b/packages/hydrooj/src/init.ts index 229fe1ee8..cedac2b6a 100644 --- a/packages/hydrooj/src/init.ts +++ b/packages/hydrooj/src/init.ts @@ -1,6 +1,10 @@ -const versionNum = +process.version.replace(/v/gim, '').split('.')[0]; -if (versionNum < 14) throw new Error('NodeJS >=v14 required'); +import cluster from 'cluster'; +const versionNum = +process.version.replace(/v/gim, '').split('.')[0]; +if (versionNum < 10) throw new Error('NodeJS >=10.4 required'); +else if (versionNum < 14 && cluster.isMaster) { + console.warn('NodeJS version <14, startup performance will be impacted.'); +} if (!global.Hydro) { global.Hydro = { version: {