framework: remove lodash and moment-timezone from deps

This commit is contained in:
undefined committed 2025-06-08 19:46:33 +08:00
1 parent 8f135894b2
commit 1586852f1e
3 files changed
+15 -12

No files matched your search

+7 -2
View File
@@ -1,12 +1,17 @@
import { PassThrough } from 'stream';
import type { Next } from 'koa';
import { pick } from 'lodash';
import {
HydroRequest, HydroResponse, KoaContext, serializer,
} from '@hydrooj/framework';
import { errorMessage } from '@hydrooj/utils/lib/utils';
import { SystemError, UserFacingError } from './error';
const pick = <T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> => {
const result: Partial<Pick<T, K>> = {};
for (const key of keys) result[key] = obj[key];
return result as Pick<T, K>;
};
export default (logger, xff, xhost) => async (ctx: KoaContext, next: Next) => {
// Base Layer
const request: HydroRequest = {
@@ -112,7 +117,7 @@ export default (logger, xff, xhost) => async (ctx: KoaContext, next: Next) => {
ctx.response.status = 302;
ctx.redirect(response.redirect);
} else if (response.body) {
ctx.body = response.body instanceof Blob ? Buffer.from(await response.body.arrayBuffer()) : response.body;
ctx.body = response.body;
ctx.response.status = response.status || 200;
ctx.response.type = response.type
|| (request.json
-3
View File
@@ -14,8 +14,6 @@
"koa-body": "^6.0.1",
"koa-compress": "^5.1.1",
"koa-router": "^13.0.1",
"lodash": "^4.17.21",
"moment-timezone": "^0.5.48",
"path-to-regexp": "^8.2.0",
"sanitize-filename": "^1.6.3",
"saslprep": "^1.0.3",
@@ -28,7 +26,6 @@
"@types/koa": "^2.15.0",
"@types/koa-compress": "^4.0.6",
"@types/koa-router": "^7.4.8",
"@types/lodash": "^4.17.17",
"@types/saslprep": "^1.0.3",
"@types/ws": "^8.18.1"
}
+8 -7
View File
@@ -1,7 +1,5 @@
import assert from 'assert';
import emojiRegex from 'emoji-regex';
import { isSafeInteger } from 'lodash';
import moment from 'moment-timezone';
import sanitize from 'sanitize-filename';
import saslprep from 'saslprep';
import Schema from 'schemastery';
@@ -107,9 +105,9 @@ export const Types = {
ShortString: basicString(/^.{1,255}$/),
String: basicString(),
Int: [(v) => +v, (v) => /^[+-]?[0-9]+$/.test(v.toString().trim()) && isSafeInteger(+v)],
UnsignedInt: [(v) => +v, (v) => /^(-0|\+?[0-9]+)$/.test(v.toString().trim()) && isSafeInteger(+v)],
PositiveInt: [(v) => +v, (v) => /^\+?[1-9][0-9]*$/.test(v.toString().trim()) && isSafeInteger(+v)],
Int: [(v) => +v, (v) => /^[+-]?[0-9]+$/.test(v.toString().trim()) && Number.isSafeInteger(+v)],
UnsignedInt: [(v) => +v, (v) => /^(-0|\+?[0-9]+)$/.test(v.toString().trim()) && Number.isSafeInteger(+v)],
PositiveInt: [(v) => +v, (v) => /^\+?[1-9][0-9]*$/.test(v.toString().trim()) && Number.isSafeInteger(+v)],
Float: [(v) => +v, (v) => Number.isFinite(+v)],
ObjectId: [() => { throw new Error('mongodb package not found'); }, () => true],
@@ -118,13 +116,15 @@ export const Types = {
(v) => {
const d = v.split('-');
assert(d.length === 3);
assert(d[0].length === 4);
return `${d[0]}-${d[1].length === 1 ? '0' : ''}${d[1]}-${d[2].length === 1 ? '0' : ''}${d[2]}`;
},
(v) => {
const d = v.toString().split('-');
if (d.length !== 3) return false;
if (d[0].length !== 4) return false;
const st = `${d[0]}-${d[1].length === 1 ? '0' : ''}${d[1]}-${d[2].length === 1 ? '0' : ''}${d[2]}`;
return moment(st).isValid();
return Number.isFinite(new Date(st).getTime());
},
],
Time: [
@@ -136,7 +136,8 @@ export const Types = {
(v) => {
const t = v.toString().split(':');
if (t.length !== 2) return false;
return moment(`2020-01-01 ${(t[0].length === 1 ? '0' : '') + t[0]}:${t[1].length === 1 ? '0' : ''}${t[1]}`).isValid();
const d = new Date(`2020-01-01 ${(t[0].length === 1 ? '0' : '') + t[0]}:${t[1].length === 1 ? '0' : ''}${t[1]}`);
return Number.isFinite(d.getTime());
},
],
Range: (range) => [