48 lines
2.1 KiB
JavaScript
48 lines
2.1 KiB
JavaScript
import { DynamicServerError } from "./hooks-server-context";
|
|
import { staticGenerationAsyncStorage } from "./static-generation-async-storage.external";
|
|
class StaticGenBailoutError extends Error {
|
|
constructor(...args){
|
|
super(...args);
|
|
this.code = "NEXT_STATIC_GEN_BAILOUT";
|
|
}
|
|
}
|
|
function formatErrorMessage(reason, opts) {
|
|
const { dynamic, link } = opts || {};
|
|
const suffix = link ? " See more info here: " + link : "";
|
|
return "Page" + (dynamic ? ' with `dynamic = "' + dynamic + '"`' : "") + " couldn't be rendered statically because it used `" + reason + "`." + suffix;
|
|
}
|
|
export const staticGenerationBailout = (reason, opts)=>{
|
|
const staticGenerationStore = staticGenerationAsyncStorage.getStore();
|
|
if (staticGenerationStore == null ? void 0 : staticGenerationStore.forceStatic) {
|
|
return true;
|
|
}
|
|
if (staticGenerationStore == null ? void 0 : staticGenerationStore.dynamicShouldError) {
|
|
var _opts_dynamic;
|
|
throw new StaticGenBailoutError(formatErrorMessage(reason, {
|
|
...opts,
|
|
dynamic: (_opts_dynamic = opts == null ? void 0 : opts.dynamic) != null ? _opts_dynamic : "error"
|
|
}));
|
|
}
|
|
if (staticGenerationStore) {
|
|
staticGenerationStore.revalidate = 0;
|
|
if (!(opts == null ? void 0 : opts.dynamic)) {
|
|
// we can statically prefetch pages that opt into dynamic,
|
|
// but not things like headers/cookies
|
|
staticGenerationStore.staticPrefetchBailout = true;
|
|
}
|
|
}
|
|
if (staticGenerationStore == null ? void 0 : staticGenerationStore.isStaticGeneration) {
|
|
const err = new DynamicServerError(formatErrorMessage(reason, {
|
|
...opts,
|
|
// this error should be caught by Next to bail out of static generation
|
|
// in case it's uncaught, this link provides some additional context as to why
|
|
link: "https://nextjs.org/docs/messages/dynamic-server-error"
|
|
}));
|
|
staticGenerationStore.dynamicUsageDescription = reason;
|
|
staticGenerationStore.dynamicUsageStack = err.stack;
|
|
throw err;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
//# sourceMappingURL=static-generation-bailout.js.map
|