diff --git a/assets/js/highlight.mjs b/assets/js/highlight.mjs index 102f432..7193b24 100644 --- a/assets/js/highlight.mjs +++ b/assets/js/highlight.mjs @@ -74,9 +74,32 @@ async function initializeHighlightJS() { let langs = []; for (let lang of languages) { console.log(`highlight.JS: Importing language definition for '${lang}'...`); - langs.push(import(`./highlightjs/languages/${lang}.min.js`).then((mod) => { - window.highlightJS.registerLanguage(lang, mod.default); - console.log(`highlight.JS: Imported language definition for '${lang}'.`); + langs.push(new Promise(async (resolve, reject) => { + const start = performance.now(); + const max_attempts = 5; + let attempt = 0; + + let mod = undefined; + let err = null; + for (let attempt = 1; attempt <= 5; attempt++) { + try { + mod = await import(`./highlightjs/languages/${lang}.min.js`); + break; + } catch(ex) { + err = ex; + await new Promise((resolve, reject) => { + setTimeout(() => {resolve()}, 1000); + }) + } + } + + if (!mod) { + reject(err); + } else { + window.highlightJS.registerLanguage(lang, mod.default); + console.log(`highlight.JS: Imported language definition for '${lang}' after ${(performance.now() - start).toFixed(2)}ms.`); + resolve(mod); + } })); } await Promise.allSettled(langs)