From 2aeacb04ab3244e347bd5abd3502861acb964cb5 Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 16 Jun 2020 13:09:43 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=90=AF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hydro/entry/common.js | 1 + hydro/handler/manage.js | 5 +++++ hydro/lib/markdown.js | 4 ++++ hydro/loader.js | 24 +++++++++++++++++++++--- manager/daemon.js | 7 ------- module/html2md/hydro.json | 5 ----- module/html2md/lib.js | 26 -------------------------- package.json | 2 ++ templates/manage_dashboard.html | 6 ++++++ yarn.lock | 10 ++++++++++ 10 files changed, 49 insertions(+), 41 deletions(-) delete mode 100644 manager/daemon.js delete mode 100644 module/html2md/hydro.json delete mode 100644 module/html2md/lib.js diff --git a/hydro/entry/common.js b/hydro/entry/common.js index d98b8795f..5a37b4de0 100644 --- a/hydro/entry/common.js +++ b/hydro/entry/common.js @@ -103,6 +103,7 @@ async function lib(pending, fail) { } catch (e) { fail.push(i); console.error(`Lib Load Fail: ${i}`); + console.error(e); } } } diff --git a/hydro/handler/manage.js b/hydro/handler/manage.js index e62905aa0..a4090bb70 100644 --- a/hydro/handler/manage.js +++ b/hydro/handler/manage.js @@ -31,6 +31,11 @@ class SystemDashboardHandler extends SystemHandler { this.response.template = 'manage_dashboard.html'; this.response.body.path.push(['manage_dashboard', null]); } + + async postRestart() { + process.send({ event: 'restart' }); + this.back(); + } } class SystemModuleHandler extends SystemHandler { diff --git a/hydro/lib/markdown.js b/hydro/lib/markdown.js index 9f39ae791..eb7ef6218 100644 --- a/hydro/lib/markdown.js +++ b/hydro/lib/markdown.js @@ -23,6 +23,8 @@ const Mark = require('markdown-it-mark'); // :::warn This page requires javascript. ::: // :::record-pass Accepted ::: const Container = require('markdown-it-container'); +const Anchor = require('markdown-it-anchor'); +const TOC = require('markdown-it-table-of-contents'); require('prismjs/components/index'); @@ -45,6 +47,8 @@ class Markdown extends MarkdownIt { this.use(Imsize); this.use(Footnote); this.use(Mark); + this.use(Anchor); + this.use(TOC); const RE_CONTAINER = /^(note|warn|record-pending|record-progress|record-fail|record-pass|record-ignored)\s+(.*)$/; const CONTAINER_MAP = { note: ['
', '
'], diff --git a/hydro/loader.js b/hydro/loader.js index 96c8e2bcc..70d845133 100644 --- a/hydro/loader.js +++ b/hydro/loader.js @@ -20,6 +20,25 @@ async function entry(config) { } } +async function stopWorker() { + cluster.disconnect(); +} + +async function startWorker() { + for (let i = 0; i < numCPUs; i++) { + cluster.fork(); + } +} + +async function messageHandler(worker, msg) { + if (msg.event && msg.event === 'restart') { + console.log('Restarting'); + await stopWorker(); + console.log('Worker stopped'); + await startWorker(); + } +} + async function load() { global.nodeModules = { bson: require('bson'), @@ -65,9 +84,8 @@ async function load() { cluster.on('online', (worker) => { console.log(`Worker ${worker.process.pid} is online`); }); - for (let i = 0; i < numCPUs; i++) { - cluster.fork(); - } + cluster.on('message', messageHandler); + await startWorker(); } else { console.log(`Worker ${process.pid} Starting`); await entry({ entry: 'worker' }); diff --git a/manager/daemon.js b/manager/daemon.js deleted file mode 100644 index 09cf49ff9..000000000 --- a/manager/daemon.js +++ /dev/null @@ -1,7 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const child = require('child_process'); - -const appPath = path.resolve(__dirname, '..', 'hydro', 'development.js'); - -const app = child.fork(appPath); diff --git a/module/html2md/hydro.json b/module/html2md/hydro.json deleted file mode 100644 index b8edffbfd..000000000 --- a/module/html2md/hydro.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "id": "html2md", - "version": "0.0.1", - "description": "Convert html to markdown" -} \ No newline at end of file diff --git a/module/html2md/lib.js b/module/html2md/lib.js deleted file mode 100644 index b37cf973a..000000000 --- a/module/html2md/lib.js +++ /dev/null @@ -1,26 +0,0 @@ -const RE_IMG = /(.*?)<\/img>/i; -const RE_A = /(.*?)<\/a>/i; -const RE_BLOCKQUOTE = /(.*?)<\/blockquote>/i; - -function replacer(RE, cb) { // eslint-disable-line no-unused-vars - // eslint-disable-next-line no-eval - return eval(`(substr)=>{ - const s = RE.exec(substr); - return cb(s); - }`); -} - -function html2md(str) { - return str.replace(/

/gmi, '').replace(/<\/p>/gmi, ' ') - .replace(//gmi, (substr) => { - const s = //i.exec(substr); - return `${'#'.repeat(parseInt(s[1]))} `; - }) - .replace(/<\/h[0-6]>/, '\n') - .replace(/<\/?code>/, '\n```\n') - .replace(/.*?<\/img>/gmi, replacer(RE_IMG, (s) => `![${s[2]}](${s[1]})`)) - .replace(/.*?<\/a>/gmi, replacer(RE_A, (s) => `[${s[2]}](${s[1]})`)) - .replace(/.*?<\/blockquote>/gmi, replacer(RE_BLOCKQUOTE, (s) => `> ${s[1]}`)); -} - -global.Hydro.lib.html2md = module.exports = html2md; diff --git a/package.json b/package.json index 8b25b1dd8..3fd4aa4f1 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,13 @@ "koa-static-cache": "^5.1.3", "lodash": "^4.17.15", "markdown-it": "^10.0.0", + "markdown-it-anchor": "^5.3.0", "markdown-it-container": "^3.0.0", "markdown-it-footnote": "^3.0.2", "markdown-it-imsize": "^2.0.1", "markdown-it-katex": "^2.0.3", "markdown-it-mark": "^3.0.0", + "markdown-it-table-of-contents": "^0.4.4", "moment-timezone": "^0.5.31", "mongodb": "^3.5.7", "nodemailer": "^6.3.1", diff --git a/templates/manage_dashboard.html b/templates/manage_dashboard.html index cfb9243d2..c21875942 100644 --- a/templates/manage_dashboard.html +++ b/templates/manage_dashboard.html @@ -11,6 +11,12 @@

{{ _('Information') }}

+
+
+ + +
+
diff --git a/yarn.lock b/yarn.lock index 54e7964bd..6669d2b3d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2433,6 +2433,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-it-anchor@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz#d549acd64856a8ecd1bea58365ef385effbac744" + integrity sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA== + markdown-it-container@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/markdown-it-container/-/markdown-it-container-3.0.0.tgz#1d19b06040a020f9a827577bb7dbf67aa5de9a5b" @@ -2460,6 +2465,11 @@ markdown-it-mark@^3.0.0: resolved "https://registry.yarnpkg.com/markdown-it-mark/-/markdown-it-mark-3.0.0.tgz#27c3e39ef3cc310b2dde5375082c9fa912983cda" integrity sha512-HqMWeKfMMOu4zBO0emmxsoMWmbf2cPKZY1wP6FsTbKmicFfp5y4L3KXAsNeO1rM6NTJVOrNlLKMPjWzriBGspw== +markdown-it-table-of-contents@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz#3dc7ce8b8fc17e5981c77cc398d1782319f37fbc" + integrity sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw== + markdown-it@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc"