diff --git a/build/prepare.js b/build/prepare.js index 1a835d7b..19d04a19 100644 --- a/build/prepare.js +++ b/build/prepare.js @@ -7,11 +7,12 @@ const compilerOptionsBase = { esModuleInterop: true, moduleResolution: 'node', declaration: true, - sourceMap: true, + sourceMap: false, composite: true, strictBindCallApply: true, experimentalDecorators: true, emitDecoratorMetadata: true, + noEmit: true, }; const config = { compilerOptions: compilerOptionsBase, @@ -23,7 +24,7 @@ const config = { const configSrc = { compilerOptions: { ...compilerOptionsBase, - outDir: 'dist', + outDir: 'src', rootDir: 'src', }, include: ['src'], @@ -60,7 +61,7 @@ for (const package of packages) { if (!fs.statSync(path.resolve(basedir, 'src', file)).isFile()) continue; const name = file.split('.')[0]; if (['handler', 'service', 'lib', 'model', 'script'].includes(name)) { - fs.writeFileSync(path.resolve(basedir, `${name}.js`), `module.exports = require('./dist/${name}');\n`); + fs.writeFileSync(path.resolve(basedir, `${name}.js`), `module.exports = require('./src/${name}');\n`); } } } diff --git a/packages/hydrojudge/bin/hydrojudge.js b/packages/hydrojudge/bin/hydrojudge.js index 9ce2203e..42a9700e 100755 --- a/packages/hydrojudge/bin/hydrojudge.js +++ b/packages/hydrojudge/bin/hydrojudge.js @@ -1,7 +1,34 @@ #!/usr/bin/env node const argv = require('cac')().parse(); +const esbuild = require('esbuild'); + +let transformTimeUsage = 0; +let displayTimeout; +function transform(type, filename) { + const start = new Date(); + const result = esbuild.buildSync({ + entryPoints: [filename], + sourcemap: 'inline', + platform: 'node', + format: 'cjs', + target: `node${process.version.split('.')[0].split('v')[1]}`, + jsx: 'transform', + write: false, + }); + if (result.warnings.length) console.warn(result.warnings); + transformTimeUsage += new Date().getTime() - start.getTime(); + if (displayTimeout) clearTimeout(displayTimeout); + displayTimeout = setTimeout(() => console.log(`Code transform took ${transformTimeUsage}ms`), 1000); + return result.outputFiles[0].text; +} +require.extensions['.ts'] = function loader(module, filename) { + return module._compile(transform('ts', filename), filename); +}; +require.extensions['.tsx'] = function loader(module, filename) { + return module._compile(transform('tsx', filename), filename); +}; if (argv.options.debug) process.env.DEV = 'on'; -if (argv.args[0] === 'cache') require('../dist/cache')(); -else require('../dist/daemon')(); +if (argv.args[0] === 'cache') require('../src/cache')(); +else require('../src/daemon')(); diff --git a/packages/hydrojudge/service.js b/packages/hydrojudge/service.js index 561aecb2..169e65b6 100644 --- a/packages/hydrojudge/service.js +++ b/packages/hydrojudge/service.js @@ -1 +1 @@ -module.exports = require('./dist/service'); +module.exports = require('./src/service'); diff --git a/packages/login-with-github/package.json b/packages/login-with-github/package.json index cc12df95..2f76d19c 100644 --- a/packages/login-with-github/package.json +++ b/packages/login-with-github/package.json @@ -10,7 +10,7 @@ "@types/superagent": "^4.1.12" }, "peerDependencies": { - "hydrooj": "workspace:*" + "hydrooj": "*" }, "dependencies": { "superagent": "^6.1.0" diff --git a/packages/login-with-google/package.json b/packages/login-with-google/package.json index f357e570..958ed8c3 100644 --- a/packages/login-with-google/package.json +++ b/packages/login-with-google/package.json @@ -10,7 +10,7 @@ "@types/superagent": "^4.1.12" }, "peerDependencies": { - "hydrooj": "workspace:*" + "hydrooj": "*" }, "dependencies": { "superagent": "^6.1.0" diff --git a/packages/login-with-osu/package.json b/packages/login-with-osu/package.json index 80894cf7..c2bf02d3 100644 --- a/packages/login-with-osu/package.json +++ b/packages/login-with-osu/package.json @@ -10,7 +10,7 @@ "@types/superagent": "^4.1.12" }, "peerDependencies": { - "hydrooj": "workspace:*" + "hydrooj": "*" }, "dependencies": { "superagent": "^6.1.0" diff --git a/packages/vjudge/src/interface.ts b/packages/vjudge/src/interface.ts index 1fcac7d5..e6d9b540 100644 --- a/packages/vjudge/src/interface.ts +++ b/packages/vjudge/src/interface.ts @@ -13,8 +13,8 @@ declare module 'hydrooj/src/interface' { } interface DomainDoc { - mount: string; - mountInfo: any; + mount?: string; + mountInfo?: any; } } export interface IBasicProvider {