mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
remove bson & pandora support
This commit is contained in:
1 parent
31622bc580
commit
8051bb958b
23 files changed
+660
-170
No files matched your search
@@ -1,27 +1,11 @@
|
|||||||
/* eslint-disable no-await-in-loop */
|
/* eslint-disable no-await-in-loop */
|
||||||
/* eslint-disable import/no-dynamic-require */
|
/* eslint-disable import/no-dynamic-require */
|
||||||
const os = require('os');
|
|
||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
const {
|
const {
|
||||||
lib, service, model, setting,
|
lib, service, model, setting,
|
||||||
builtinLib, builtinHandler, builtinModel,
|
builtinLib, builtinHandler, builtinModel,
|
||||||
} = require('./common');
|
} = require('./common');
|
||||||
|
|
||||||
function ensureDir(dir) {
|
|
||||||
if (!fs.existsSync(dir)) {
|
|
||||||
fs.mkdirSync(dir);
|
|
||||||
} else if (!fs.statSync(dir).isDirectory()) {
|
|
||||||
fs.unlinkSync(dir);
|
|
||||||
fs.mkdirSync(dir);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function load(call) {
|
async function load(call) {
|
||||||
ensureDir(path.resolve(os.tmpdir(), 'hydro'));
|
|
||||||
ensureDir(path.resolve(os.tmpdir(), 'hydro', 'tmp'));
|
|
||||||
ensureDir(path.resolve(os.tmpdir(), 'hydro', 'public'));
|
|
||||||
await call({ entry: 'unzip', newProcess: true });
|
|
||||||
let pending = await require('../lib/hpm').getInstalled();
|
let pending = await require('../lib/hpm').getInstalled();
|
||||||
const fail = [];
|
const fail = [];
|
||||||
require('../lib/i18n');
|
require('../lib/i18n');
|
||||||
|
|||||||
@@ -35,10 +35,11 @@ async function load() {
|
|||||||
console.error(e);
|
console.error(e);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
});
|
});
|
||||||
|
ensureDir(path.resolve(os.tmpdir(), 'hydro'));
|
||||||
|
ensureDir(path.resolve(os.tmpdir(), 'hydro', 'tmp'));
|
||||||
|
ensureDir(path.resolve(os.tmpdir(), 'hydro', 'public'));
|
||||||
const files = fs.readdirSync(moduleRoot);
|
const files = fs.readdirSync(moduleRoot);
|
||||||
const t = ['service', 'lib', 'model', 'handler', 'script'];
|
const t = ['service', 'lib', 'model', 'handler', 'script'];
|
||||||
ensureDir(`${os.tmpdir()}/hydro`);
|
|
||||||
ensureDir(`${os.tmpdir()}/hydro/tmp`);
|
|
||||||
for (const file of files) {
|
for (const file of files) {
|
||||||
if (file.endsWith('.hydro')) {
|
if (file.endsWith('.hydro')) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
const moment = require('moment-timezone');
|
const moment = require('moment-timezone');
|
||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
const AdmZip = require('adm-zip');
|
const AdmZip = require('adm-zip');
|
||||||
const {
|
const {
|
||||||
ContestNotLiveError, ValidationError, ProblemNotFoundError,
|
ContestNotLiveError, ValidationError, ProblemNotFoundError,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
const paginate = require('../lib/paginate');
|
const paginate = require('../lib/paginate');
|
||||||
const system = require('../model/system');
|
const system = require('../model/system');
|
||||||
const user = require('../model/user');
|
const user = require('../model/user');
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
const yaml = require('js-yaml');
|
const yaml = require('js-yaml');
|
||||||
const moment = require('moment-timezone');
|
const moment = require('moment-timezone');
|
||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
const AdmZip = require('adm-zip');
|
const AdmZip = require('adm-zip');
|
||||||
const {
|
const {
|
||||||
ValidationError, HomeworkNotLiveError, ProblemNotFoundError,
|
ValidationError, HomeworkNotLiveError, ProblemNotFoundError,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
const { PermissionError } = require('../error');
|
const { PermissionError } = require('../error');
|
||||||
const { PERM_READ_RECORD_CODE, PERM_REJUDGE, PERM_VIEW_PROBLEM_HIDDEN } = require('../model/builtin').PERM;
|
const { PERM_READ_RECORD_CODE, PERM_REJUDGE, PERM_VIEW_PROBLEM_HIDDEN } = require('../model/builtin').PERM;
|
||||||
const problem = require('../model/problem');
|
const problem = require('../model/problem');
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
|
|
||||||
exports.udoc = {
|
exports.udoc = {
|
||||||
_id: 0,
|
_id: 0,
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
import { ObjectID } from 'bson';
|
import { ObjectID } from 'mongodb';
|
||||||
|
|
||||||
export interface Udoc {
|
export interface Udoc {
|
||||||
_id: number
|
_id: number
|
||||||
|
|||||||
+6
-4
@@ -4,6 +4,8 @@
|
|||||||
const cluster = require('cluster');
|
const cluster = require('cluster');
|
||||||
const { argv } = require('yargs');
|
const { argv } = require('yargs');
|
||||||
|
|
||||||
|
if (argv.debug) console.log(process.argv);
|
||||||
|
|
||||||
async function terminate() {
|
async function terminate() {
|
||||||
for (const task of global.onDestory) {
|
for (const task of global.onDestory) {
|
||||||
// eslint-disable-next-line no-await-in-loop
|
// eslint-disable-next-line no-await-in-loop
|
||||||
@@ -13,7 +15,7 @@ async function terminate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function fork(args = []) {
|
async function fork(args = []) {
|
||||||
cluster.setupMaster({ args, exec: __filename });
|
cluster.setupMaster({ args });
|
||||||
return cluster.fork();
|
return cluster.fork();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,7 +84,6 @@ async function messageHandler(worker, msg) {
|
|||||||
async function load() {
|
async function load() {
|
||||||
global.nodeModules = {
|
global.nodeModules = {
|
||||||
'adm-zip': require('adm-zip'),
|
'adm-zip': require('adm-zip'),
|
||||||
bson: require('bson'),
|
|
||||||
superagent: require('superagent'),
|
superagent: require('superagent'),
|
||||||
'js-yaml': require('js-yaml'),
|
'js-yaml': require('js-yaml'),
|
||||||
mongodb: require('mongodb'),
|
mongodb: require('mongodb'),
|
||||||
@@ -104,7 +105,7 @@ async function load() {
|
|||||||
process.on('SIGINT', terminate);
|
process.on('SIGINT', terminate);
|
||||||
process.on('message', messageHandler);
|
process.on('message', messageHandler);
|
||||||
cluster.on('message', messageHandler);
|
cluster.on('message', messageHandler);
|
||||||
if (cluster.isMaster) {
|
if (cluster.isMaster || argv.startAsMaster) {
|
||||||
console.log(`Master ${process.pid} Starting`);
|
console.log(`Master ${process.pid} Starting`);
|
||||||
process.stdin.setEncoding('utf8');
|
process.stdin.setEncoding('utf8');
|
||||||
process.stdin.on('data', (input) => {
|
process.stdin.on('data', (input) => {
|
||||||
@@ -117,6 +118,7 @@ async function load() {
|
|||||||
executeCommand(input);
|
executeCommand(input);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
await entry({ entry: 'unzip', newProcess: true });
|
||||||
const cnt = await entry({ entry: 'master' });
|
const cnt = await entry({ entry: 'master' });
|
||||||
console.log('Master started');
|
console.log('Master started');
|
||||||
cluster.on('exit', (worker, code, signal) => {
|
cluster.on('exit', (worker, code, signal) => {
|
||||||
@@ -145,7 +147,7 @@ async function load() {
|
|||||||
if (global.gc) global.gc();
|
if (global.gc) global.gc();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!module.parent) {
|
if (argv.pandora || !module.parent) {
|
||||||
load().catch((e) => {
|
load().catch((e) => {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ const RULES = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {import('bson').ObjectID} ObjectID
|
* @typedef {import('mongodb').ObjectID} ObjectID
|
||||||
* @typedef {import('../interface').Tdoc} Tdoc
|
* @typedef {import('../interface').Tdoc} Tdoc
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
const problem = require('./problem');
|
const problem = require('./problem');
|
||||||
const document = require('./document');
|
const document = require('./document');
|
||||||
const contest = require('./contest');
|
const contest = require('./contest');
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
const db = require('../service/db');
|
const db = require('../service/db');
|
||||||
|
|
||||||
const coll = db.collection('document');
|
const coll = db.collection('document');
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const coll = db.collection('domain');
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {import('../interface').Pdoc} Pdoc
|
* @typedef {import('../interface').Pdoc} Pdoc
|
||||||
* @typedef {import('bson').ObjectID} ObjectID
|
* @typedef {import('mongodb').ObjectID} ObjectID
|
||||||
* @typedef {import('mongodb').Cursor} Cursor
|
* @typedef {import('mongodb').Cursor} Cursor
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const { ObjectId } = require('bson');
|
const { ObjectId } = require('mongodb');
|
||||||
const { STATUS_ACCEPTED } = require('./builtin').STATUS;
|
const { STATUS_ACCEPTED } = require('./builtin').STATUS;
|
||||||
const file = require('./file');
|
const file = require('./file');
|
||||||
const document = require('./document');
|
const document = require('./document');
|
||||||
@@ -8,7 +8,7 @@ const readConfig = require('../lib/readConfig');
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {import('../interface').Pdoc} Pdoc
|
* @typedef {import('../interface').Pdoc} Pdoc
|
||||||
* @typedef {import('bson').ObjectID} ObjectID
|
* @typedef {import('mongodb').ObjectID} ObjectID
|
||||||
* @typedef {import('mongodb').Cursor} Cursor
|
* @typedef {import('mongodb').Cursor} Cursor
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
const { STATUS_WAITING } = require('./builtin').STATUS;
|
const { STATUS_WAITING } = require('./builtin').STATUS;
|
||||||
const task = require('./task');
|
const task = require('./task');
|
||||||
const problem = require('./problem');
|
const problem = require('./problem');
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ const description = 'Add blacklist by ip, uid';
|
|||||||
|
|
||||||
// This code format is just for fun. DO NOT DO THIS IN YOUR CODE !
|
// This code format is just for fun. DO NOT DO THIS IN YOUR CODE !
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
const document = require('../model/document');
|
const document = require('../model/document');
|
||||||
const discussion = require('../model/discussion');
|
const discussion = require('../model/discussion');
|
||||||
const user = require('../model/user');
|
const user = require('../model/user');
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
const description = 'Calculate the rating of a contest';
|
const description = 'Calculate the rating of a contest';
|
||||||
|
|
||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
const contest = require('../model/contest');
|
const contest = require('../model/contest');
|
||||||
const user = require('../model/user');
|
const user = require('../model/user');
|
||||||
const rating = require('../lib/rating');
|
const rating = require('../lib/rating');
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
class Cron {
|
|
||||||
constructor() {
|
|
||||||
this.tasks = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
plan(time, task) {
|
|
||||||
const now = new Date();
|
|
||||||
if (!(time instanceof Date)) time = new Date(time);
|
|
||||||
this.tasks.push({
|
|
||||||
id: setTimeout(() => {
|
|
||||||
for (const i in this.tasks) {
|
|
||||||
if (this.tasks[i].func === task) {
|
|
||||||
this.tasks.splice(i, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
task();
|
|
||||||
}, time - now),
|
|
||||||
func: task,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
interval(time, task) {
|
|
||||||
const now = new Date();
|
|
||||||
if (!(time instanceof Date)) time = new Date(time);
|
|
||||||
this.tasks.push({
|
|
||||||
id: setTimeout(() => { task(); }, time - now),
|
|
||||||
func: task,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = Cron;
|
|
||||||
@@ -2,7 +2,7 @@ const assert = require('assert');
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const os = require('os');
|
const os = require('os');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const { ObjectID } = require('bson');
|
const { ObjectID } = require('mongodb');
|
||||||
const Koa = require('koa');
|
const Koa = require('koa');
|
||||||
const yaml = require('js-yaml');
|
const yaml = require('js-yaml');
|
||||||
const morgan = require('koa-morgan');
|
const morgan = require('koa-morgan');
|
||||||
|
|||||||
+1
-2
@@ -9,7 +9,6 @@
|
|||||||
"@hydrooj/markdown-it-katex": "^2.1.1",
|
"@hydrooj/markdown-it-katex": "^2.1.1",
|
||||||
"adm-zip": "^0.4.16",
|
"adm-zip": "^0.4.16",
|
||||||
"ansi_up": "^4.0.4",
|
"ansi_up": "^4.0.4",
|
||||||
"bson": "^4.0.2",
|
|
||||||
"detect-browser": "^5.1.1",
|
"detect-browser": "^5.1.1",
|
||||||
"eslint": "7.2.0",
|
"eslint": "7.2.0",
|
||||||
"js-yaml": "^3.13.1",
|
"js-yaml": "^3.13.1",
|
||||||
@@ -64,4 +63,4 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"snyk": true
|
"snyk": true
|
||||||
}
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
// For pandora
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {import('pandora').ProcfileReconcilerAccessor} pandora
|
||||||
|
*/
|
||||||
|
function start(pandora) {
|
||||||
|
pandora
|
||||||
|
.process('Hydro')
|
||||||
|
.scale(1)
|
||||||
|
.args(['--pandora'])
|
||||||
|
.entry('./hydro/loader.js');
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = start;
|
||||||
@@ -94,28 +94,28 @@ _prepare, prepare, get, post, post[Operation], cleanup, _cleanup
|
|||||||
先执行 _prepare(args) (如果存在)
|
先执行 _prepare(args) (如果存在)
|
||||||
args 为传入的参数集合(包括 QueryString, Body, Path)中的全部参数,并对以下字段进行了校验:
|
args 为传入的参数集合(包括 QueryString, Body, Path)中的全部参数,并对以下字段进行了校验:
|
||||||
|
|
||||||
| 名称 | 类型 |
|
| Key | Type |
|
||||||
|:--------:|:-------------:|
|
|:--------:|:----------------:|
|
||||||
| content | string |
|
| content | string |
|
||||||
| title | string |
|
| title | string |
|
||||||
| uid | number(int) |
|
| uid | number(int) |
|
||||||
| password | string |
|
| password | string |
|
||||||
| mail | string(mail) |
|
| mail | string(mail) |
|
||||||
| uname | string |
|
| uname | string |
|
||||||
| page | number(int) |
|
| page | number(int) |
|
||||||
| duration | number(float) |
|
| duration | number(float) |
|
||||||
| role | string |
|
| role | string |
|
||||||
| roles | string[] |
|
| roles | string[] |
|
||||||
| pids | string |
|
| pids | string |
|
||||||
| tid | bson.ObjectID |
|
| tid | mongodb.ObjectID |
|
||||||
| rid | bson.ObjectID |
|
| rid | mongodb.ObjectID |
|
||||||
| did | bson.ObjectID |
|
| did | mongodb.ObjectID |
|
||||||
| drid | bson.ObjectID |
|
| drid | mongodb.ObjectID |
|
||||||
| drrid | bson.ObjectID |
|
| drrid | mongodb.ObjectID |
|
||||||
| psid | bson.ObjectID |
|
| psid | mongodb.ObjectID |
|
||||||
| psrid | bson.ObjectID |
|
| psrid | mongodb.ObjectID |
|
||||||
| docId | bson.ObjectID |
|
| docId | mongodb.ObjectID |
|
||||||
| mongoId | bson.ObjectID |
|
| mongoId | mongodb.ObjectID |
|
||||||
|
|
||||||
再执行 prepare(args) (如果存在)
|
再执行 prepare(args) (如果存在)
|
||||||
检查请求类型:
|
检查请求类型:
|
||||||
|
|||||||
Reference in new issue
Block a user