nuxt
Version:
28 lines (27 loc) • 1.07 kB
JavaScript
import { rendererDiagnostics } from "./diagnostics.js";
//#region src/runtime/server/renderer/no-scripts.ts
const SSR_CLIENT_TELEPORT_RE = /^uid=[^;]*;client=/;
function detectClientScriptReliance(ssrContext) {
const reasons = [];
if (ssrContext["~lazyHydratedModules"]?.size) reasons.push("it uses lazy hydration strategies, which require client-side JavaScript to hydrate");
if (ssrContext.teleports) {
for (const key in ssrContext.teleports) if (SSR_CLIENT_TELEPORT_RE.test(key)) {
reasons.push("it renders a server component with a `nuxt-client` child, which requires client-side JavaScript to hydrate");
break;
}
}
return reasons;
}
const warnedPaths = /* @__PURE__ */ new Set();
function warnNoScriptsClientReliance(ssrContext, path) {
if (warnedPaths.has(path)) return;
const reasons = detectClientScriptReliance(ssrContext);
if (!reasons.length) return;
warnedPaths.add(path);
rendererDiagnostics.NUXT_E8007({
path,
reasons: reasons.join("\n - ")
});
}
//#endregion
export { detectClientScriptReliance, warnNoScriptsClientReliance };