From dc5d8ddeb2824257958eb00c7c064230a3123790 Mon Sep 17 00:00:00 2001 From: NGPixel Date: Sun, 3 Apr 2022 15:59:58 -0400 Subject: [PATCH] fix: handle page metadata parse failure --- server/models/pages.js | 52 +++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/server/models/pages.js b/server/models/pages.js index 5d941bc5..72c063fa 100644 --- a/server/models/pages.js +++ b/server/models/pages.js @@ -192,35 +192,39 @@ module.exports = class Page extends Model { */ static parseMetadata (raw, contentType) { let result - switch (contentType) { - case 'markdown': - result = frontmatterRegex.markdown.exec(raw) - if (result[2]) { - return { - ...yaml.safeLoad(result[2]), - content: result[3] - } - } else { - // Attempt legacy v1 format - result = frontmatterRegex.legacy.exec(raw) + try { + switch (contentType) { + case 'markdown': + result = frontmatterRegex.markdown.exec(raw) if (result[2]) { return { - title: result[2], - description: result[4], - content: result[5] + ...yaml.safeLoad(result[2]), + content: result[3] + } + } else { + // Attempt legacy v1 format + result = frontmatterRegex.legacy.exec(raw) + if (result[2]) { + return { + title: result[2], + description: result[4], + content: result[5] + } } } - } - break - case 'html': - result = frontmatterRegex.html.exec(raw) - if (result[2]) { - return { - ...yaml.safeLoad(result[2]), - content: result[3] + break + case 'html': + result = frontmatterRegex.html.exec(raw) + if (result[2]) { + return { + ...yaml.safeLoad(result[2]), + content: result[3] + } } - } - break + break + } + } catch (err) { + WIKI.logger.warn('Failed to parse page metadata. Invalid syntax.') } return { content: raw