This page requires JavaScript to display.
Unpacking...
so the DOCTYPE stays first; prepending the script // would push the parser into quirks mode. DOMParser always emits a // (synthesizing one if the source HTML omitted it) but may carry // attributes through, so match the full opening tag. slice() rather than // replace() keeps us clear of $-pattern substitution in resourceScript. const headOpen = template.match(/]*>/i); if (headOpen) { const i = headOpen.index + headOpen[0].length; template = template.slice(0, i) + resourceScript + template.slice(i); } // Parse the template and swap the root element. Scripts inserted via // DOMParser/replaceWith are inert per spec — re-create each with // createElement so they execute, awaiting onload for src scripts to // preserve ordering (React before ReactDOM before Babel before text/babel). const doc = new DOMParser().parseFromString(template, 'text/html'); document.documentElement.replaceWith(doc.documentElement); const dead = Array.from(document.scripts); for (const old of dead) { const s = document.createElement('script'); for (const a of old.attributes) s.setAttribute(a.name, a.value); s.textContent = old.textContent; // text/babel scripts with a src: fetch and inline. transformScriptTags // does XHR against the src, but blob:null/ from a file:// origin is // silently dropped. Inlining makes it a plain inline babel script, // which transformScriptTags handles unconditionally. if ((s.type === 'text/babel' || s.type === 'text/jsx') && s.src) { const r = await fetch(s.src); s.textContent = await r.text(); s.removeAttribute('src'); } const p = s.src ? new Promise(function(r) { s.onload = s.onerror = r; }) : null; old.replaceWith(s); if (p) await p; } // Babel standalone auto-transforms type=text/babel on DOMContentLoaded, // which fired before we swapped the document. Trigger manually if present. if (window.Babel && typeof window.Babel.transformScriptTags === 'function') { window.Babel.transformScriptTags(); } } catch (err) { setStatus('Error unpacking: ' + err.message); console.error('Bundle unpack error:', err); } }); \n\n\n