/* eslint-disable no-eval */ const os = require('os'); const fs = require('fs'); const builtinLib = [ 'axios', 'download', 'i18n', 'mail', 'markdown', 'md5', 'misc', 'paginate', 'hash.hydro', 'rank', 'template', 'validator', 'nav', 'sysinfo', ]; const builtinModel = [ 'builtin', 'document', 'domain', 'blacklist', 'opcount', 'setting', 'token', 'user', 'problem', 'record', 'contest', 'message', 'solution', 'training', 'file', 'discussion', 'system', ]; const builtinHandler = [ 'home', 'problem', 'record', 'judge', 'user', 'contest', 'training', 'discussion', 'manage', 'import', 'misc', 'homework', 'domain', 'wiki', ]; const builtinScript = [ 'install', 'uninstall', 'rating', 'recalcRating', 'register', 'blacklist', 'setSuperadmin', ]; async function handler(pending, fail) { for (const i of pending) { const p = `${os.tmpdir()}/hydro/tmp/${i}/handler.js`; if (fs.existsSync(p) && !fail.includes(i)) { try { console.log(`Handler init: ${i}`); console.time(`Handler init: ${i}`); eval('require')(p); console.timeEnd(`Handler init: ${i}`); } catch (e) { fail.push(i); console.error(`Handler Load Fail: ${i}`); } } } } async function locale(pending, fail) { for (const i of pending) { const p = `${os.tmpdir()}/hydro/tmp/${i}/locale.json`; if (fs.existsSync(p) && !fail.includes(i)) { try { global.Hydro.lib.i18n(eval('require')(p)); console.log(`Locale init: ${i}`); } catch (e) { fail.push(i); console.error(`Locale Load Fail: ${i}`); } } } } async function template(pending, fail) { for (const i of pending) { const p = `${os.tmpdir()}/hydro/tmp/${i}/template.json`; if (fs.existsSync(p) && !fail.includes(i)) { try { Object.assign(global.Hydro.template, eval('require')(p)); console.log(`Template init: ${i}`); } catch (e) { fail.push(i); console.error(`Template Load Fail: ${i}`); } } } } async function model(pending, fail) { for (const i of pending) { const p = `${os.tmpdir()}/hydro/tmp/${i}/model.js`; if (fs.existsSync(p) && !fail.includes(i)) { try { console.log(`Model init: ${i}`); console.time(`Model init: ${i}`); eval('require')(p); console.timeEnd(`Model init: ${i}`); } catch (e) { fail.push(i); console.error(`Model Load Fail: ${i}`); } } } } async function lib(pending, fail) { for (const i of pending) { const p = `${os.tmpdir()}/hydro/tmp/${i}/lib.js`; if (fs.existsSync(p) && !fail.includes(i)) { try { console.log(`Lib init: ${i}`); console.time(`Lib init: ${i}`); eval('require')(p); console.timeEnd(`Lib init: ${i}`); } catch (e) { fail.push(i); console.error(`Lib Load Fail: ${i}`); } } } } async function service(pending, fail) { for (const i of pending) { const p = `${os.tmpdir()}/hydro/tmp/${i}/service.js`; if (fs.existsSync(p) && !fail.includes(i)) { try { console.log(`Service init: ${i}`); console.time(`Service init: ${i}`); eval('require')(p); console.timeEnd(`Service init: ${i}`); } catch (e) { fail.push(i); console.error(`Service Load Fail: ${i}`); console.error(e); } } } } async function script(pending, fail, active) { for (const i of pending) { const p = `${os.tmpdir()}/hydro/tmp/${i}/script.js`; if (fs.existsSync(p) && !fail.includes(i)) { try { console.time(`Script init: ${i}`); eval('require')(p); console.timeEnd(`Script init: ${i}`); } catch (e) { fail.push(i); console.error(`Script Load Fail: ${i}`); console.error(e); } } active.push(i); } } module.exports = { builtinLib, builtinModel, builtinHandler, builtinScript, handler, lib, locale, model, script, service, template, };