From 526eaa2603a3db0748451159ebc2ee252bd3f5fb Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 26 Jul 2021 14:33:18 +0800 Subject: [PATCH] core: force numeric id --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/contest.ts | 1 + packages/hydrooj/src/handler/homework.ts | 1 + packages/ui-default/hydro.js | 15 +++++++++++---- packages/ui-default/package.json | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 8374309c5..f440acf3c 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.29.44", + "version": "2.29.45", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index 1a785912a..026b5b11a 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -226,6 +226,7 @@ export class ContestEditHandler extends Handler { i = i.trim(); if ((+i).toString() === i) return +i; if (i.split(':')[0] === domainId) return +i.split(':')[1]; + if (!i.includes(':')) throw new ValidationError('pids'); return i; }).filter((i) => i); const beginAtMoment = moment.tz(`${beginAtDate} ${beginAtTime}`, this.user.timeZone); diff --git a/packages/hydrooj/src/handler/homework.ts b/packages/hydrooj/src/handler/homework.ts index fd5cfc877..893b85e73 100644 --- a/packages/hydrooj/src/handler/homework.ts +++ b/packages/hydrooj/src/handler/homework.ts @@ -313,6 +313,7 @@ class HomeworkEditHandler extends Handler { i = i.trim(); if ((+i).toString() === i) return +i; if (i.split(':')[0] === domainId) return +i.split(':')[1]; + if (!i.includes(':')) throw new ValidationError('pids'); return i; }).filter((i) => i); const tdoc = tid diff --git a/packages/ui-default/hydro.js b/packages/ui-default/hydro.js index dddf75ce0..ae1ed5b1b 100644 --- a/packages/ui-default/hydro.js +++ b/packages/ui-default/hydro.js @@ -30,6 +30,7 @@ function buildSequence(pages, type) { async function load() { if (UiContext.extraPages) { const tasks = []; + const ts = new Date().getTime(); for (const page of UiContext.extraPages) { const head = document.getElementsByTagName('head')[0]; const script = document.createElement('script'); @@ -41,6 +42,10 @@ async function load() { })); } await Promise.all(tasks); + const time = new Date().getTime() - ts; + if ((process.env.NODE_ENV !== 'production' && time > 16) || time > 256) { + console.warn(`Extra pages loading took ${time}ms`); + } } const pageLoader = new PageLoader(); @@ -56,9 +61,7 @@ async function load() { ]; // eslint-disable-next-line no-restricted-syntax for (const { page, func, type } of loadSequence) { - if (process.env.NODE_ENV !== 'production') { - console.time(`${page.name}: ${type}Loading`); - } + const ts = new Date().getTime(); try { await func(currentPageName); } catch (e) { @@ -66,7 +69,11 @@ async function load() { console.error(`Failed to call '${type}Loading' of ${page.name}\n${e.stack}`); } if (process.env.NODE_ENV !== 'production') { - console.timeEnd(`${page.name}: ${type}Loading`); + console.time(`${page.name}: ${type}Loading`); + } + const time = new Date().getTime() - ts; + if ((process.env.NODE_ENV !== 'production' && time > 16) || time > 256) { + console.log(`${page.name}: ${type}Loading took ${time}ms`); } } const sections = _.map($('.section').get(), (section, idx) => ({ diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 07ea1c1c6..5d1ce5051 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.13.10", + "version": "4.13.11", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js",