diff --git a/build/prepare.js b/build/prepare.js index 1a835d7bc..19d04a194 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 9ce2203ea..42a9700e8 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 561aecb2b..169e65b6e 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 cc12df955..2f76d19cf 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 f357e570d..958ed8c3e 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 80894cf7b..c2bf02d3e 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 1fcac7d53..e6d9b540c 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 {