From a8aa163302fa058d7f1e8d7a6b462495e7d7102c Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 23 Mar 2022 22:14:20 +0800 Subject: [PATCH] ui: esbuild page loader --- packages/ui-default/handler.ts | 18 ++++++++++++++---- packages/ui-default/package.json | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/ui-default/handler.ts b/packages/ui-default/handler.ts index 89a3dfcaa..cf9ccd556 100644 --- a/packages/ui-default/handler.ts +++ b/packages/ui-default/handler.ts @@ -1,21 +1,31 @@ /* eslint-disable no-return-await */ /* eslint-disable camelcase */ import crypto from 'crypto'; -import { readFileSync } from 'fs-extra'; import { join } from 'path'; import { ObjectID } from 'mongodb'; import * as bus from 'hydrooj/src/service/bus'; import { Route, Handler } from 'hydrooj/src/service/server'; import { PERM, PRIV } from 'hydrooj/src/model/builtin'; +import esbuild from 'esbuild'; import markdown from './backendlib/markdown'; const { system, user, setting, problem, contest, } = global.Hydro.model; -const pages = Object.keys(global.Hydro.ui.manifest) - .filter((file) => file.endsWith('.page.js')) - .map((i) => readFileSync(join(global.Hydro.ui.manifest[i], i), 'utf-8')); +const pageFiles = Object.keys(global.Hydro.ui.manifest) + .filter((file) => file.endsWith('.page.js') || file.endsWith('.page.ts')); +const build = esbuild.buildSync({ + format: 'iife', + entryPoints: pageFiles.map((i) => join(global.Hydro.ui.manifest[i], i)), + bundle: true, + splitting: false, + write: false, + minify: !process.env.DEV, +}); +if (build.errors.length) console.error(build.errors); +if (build.warnings.length) console.warn(build.warnings); +const pages = build.outputFiles.map((i) => i.text); let constant = ''; let hash = ''; diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index b336ee05a..27c8e1fc5 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.34.20", + "version": "4.34.21", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js",