From 1e7e3b8c421fc8a83955c91e3598fbaeaa9cd05c Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Fri, 28 Jul 2023 10:33:11 +0500 Subject: [PATCH] core: use explicit import/require for dynamic imports --- packages/core/utils/templates/html/builder.js | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/core/utils/templates/html/builder.js b/packages/core/utils/templates/html/builder.js index 12e503352..2b17892f7 100644 --- a/packages/core/utils/templates/html/builder.js +++ b/packages/core/utils/templates/html/builder.js @@ -36,8 +36,12 @@ async function preprocessHTML(templateData) { const mathInlines = doc.querySelectorAll(".math-inline.math-node"); if (mathBlocks.length || mathInlines.length) { - const katex = require("katex"); - require("katex/contrib/mhchem/mhchem.js"); + const katex = hasRequire() + ? require("katex") + : (await import("katex")).default; + hasRequire() + ? require("katex/contrib/mhchem/mhchem.js") + : await import("katex/contrib/mhchem/mhchem.js"); for (const mathBlock of mathBlocks) { const text = mathBlock.textContent; console.log(text); @@ -59,17 +63,20 @@ async function preprocessHTML(templateData) { const codeblocks = doc.querySelectorAll("pre > code"); if (codeblocks.length) { - const prismjs = require("prismjs"); + const prismjs = hasRequire() + ? require("prismjs") + : (await import("prismjs")).default; + const { loadLanguage } = hasRequire() + ? require("../../../../editor/languages/index.js") + : await import("../../../../editor/languages/index.js"); prismjs.register = () => {}; for (const codeblock of codeblocks) { const language = LANGUAGE_REGEX.exec( codeblock.parentElement.className )?.[1]; if (!language) continue; - const { - default: grammar - } = require(`../../../../editor/languages/${language}.js`); + const { default: grammar } = await loadLanguage(language); grammar(prismjs); codeblock.innerHTML = prismjs.highlight( @@ -86,3 +93,7 @@ async function preprocessHTML(templateData) { } export default { buildHTML }; + +function hasRequire() { + return typeof require === "function"; +}