59 lines
2.2 KiB
JavaScript
Executable File
59 lines
2.2 KiB
JavaScript
Executable File
/**
|
|
* Before starting the Next.js runtime and requiring any module, we need to make
|
|
* sure the following scripts are executed in the correct order:
|
|
* - Polyfills
|
|
* - next/script with `beforeInteractive` strategy
|
|
*/ import { setAttributesFromProps } from './set-attributes-from-props';
|
|
const version = "15.5.3";
|
|
window.next = {
|
|
version,
|
|
appDir: true
|
|
};
|
|
function loadScriptsInSequence(scripts, hydrate) {
|
|
if (!scripts || !scripts.length) {
|
|
return hydrate();
|
|
}
|
|
return scripts.reduce((promise, param)=>{
|
|
let [src, props] = param;
|
|
return promise.then(()=>{
|
|
return new Promise((resolve, reject)=>{
|
|
const el = document.createElement('script');
|
|
if (props) {
|
|
setAttributesFromProps(el, props);
|
|
}
|
|
if (src) {
|
|
el.src = src;
|
|
el.onload = ()=>resolve();
|
|
el.onerror = reject;
|
|
} else if (props) {
|
|
el.innerHTML = props.children;
|
|
setTimeout(resolve);
|
|
}
|
|
document.head.appendChild(el);
|
|
});
|
|
});
|
|
}, Promise.resolve()).catch((err)=>{
|
|
console.error(err);
|
|
// Still try to hydrate even if there's an error.
|
|
}).then(()=>{
|
|
hydrate();
|
|
});
|
|
}
|
|
export function appBootstrap(hydrate) {
|
|
loadScriptsInSequence(self.__next_s, ()=>{
|
|
// If the static shell is being debugged, skip hydration if the
|
|
// `__nextppronly` query is present. This is only enabled when the
|
|
// environment variable `__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING` is
|
|
// set to `1`. Otherwise the following is optimized out.
|
|
if (process.env.__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING === '1') {
|
|
const search = new URLSearchParams(window.location.search);
|
|
if (search.get('__nextppronly') === 'fallback' || search.get('__nextppronly') === '1') {
|
|
console.warn("Skipping hydration due to __nextppronly=" + search.get('__nextppronly'));
|
|
return;
|
|
}
|
|
}
|
|
hydrate();
|
|
});
|
|
}
|
|
|
|
//# sourceMappingURL=app-bootstrap.js.map
|