@farm.js/core 0.1.0-beta.45 → 0.1.0-beta.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/route-manager.cjs.map +1 -1
- package/dist/api/route-manager.mjs +2 -2
- package/dist/api.cjs.map +1 -1
- package/dist/api.mjs +3 -3
- package/dist/{chunk-EPBXX44K.mjs → chunk-3UUEBVR3.mjs} +3 -3
- package/dist/{chunk-IRYMQRYJ.mjs → chunk-ECLWCE4H.mjs} +2 -2
- package/dist/{chunk-IWPBMZGE.mjs → chunk-IHYFDXKQ.mjs} +4 -4
- package/dist/{chunk-FLGRRGVU.mjs → chunk-KTV3UWGE.mjs} +2 -2
- package/dist/{chunk-FLGRRGVU.mjs.map → chunk-KTV3UWGE.mjs.map} +1 -1
- package/dist/{chunk-MU2QKVYL.mjs → chunk-MP2SDRRB.mjs} +2 -2
- package/dist/{chunk-6NCLVPI7.mjs → chunk-MWYVMV3T.mjs} +124 -15
- package/dist/chunk-MWYVMV3T.mjs.map +1 -0
- package/dist/{chunk-QLCUQD3U.mjs → chunk-SHZF3DEB.mjs} +2 -2
- package/dist/{chunk-VHYARVB7.mjs → chunk-TIESOJ7Z.mjs} +2 -2
- package/dist/{chunk-KEPCW6EI.mjs → chunk-U5SPS2HR.mjs} +10 -1
- package/dist/chunk-U5SPS2HR.mjs.map +1 -0
- package/dist/client/lifecycle.mjs +2 -2
- package/dist/client-plugins.cjs +1 -1
- package/dist/client-plugins.cjs.map +1 -1
- package/dist/client-plugins.mjs +2 -2
- package/dist/client.cjs +1 -1
- package/dist/client.cjs.map +1 -1
- package/dist/client.mjs +2 -2
- package/dist/index.cjs +134 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +11 -9
- package/dist/index.mjs.map +1 -1
- package/dist/internal/build-runtime.cjs +132 -12
- package/dist/internal/build-runtime.cjs.map +1 -1
- package/dist/internal/build-runtime.d.mts +1 -1
- package/dist/internal/build-runtime.d.ts +1 -1
- package/dist/internal/build-runtime.mjs +6 -6
- package/dist/internal/client-runtime.cjs +1 -1
- package/dist/internal/client-runtime.cjs.map +1 -1
- package/dist/internal/client-runtime.mjs +2 -2
- package/dist/internal/config-runtime.cjs.map +1 -1
- package/dist/internal/config-runtime.d.mts +1 -1
- package/dist/internal/config-runtime.d.ts +1 -1
- package/dist/internal/config-runtime.mjs +1 -1
- package/dist/middleware.cjs.map +1 -1
- package/dist/middleware.mjs +3 -3
- package/dist/plugin.cjs +127 -11
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.mjs +5 -5
- package/dist/server.cjs +129 -11
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.mts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.mjs +7 -5
- package/dist/server.mjs.map +1 -1
- package/dist/testing.mjs +2 -2
- package/dist/{utils-CjZRiq-l.d.mts → utils-9OPxcT1T.d.mts} +9 -1
- package/dist/{utils-_LOF-V9f.d.ts → utils-CIIoLfn9.d.ts} +9 -1
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +127 -11
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.mjs +5 -5
- package/package.json +3 -3
- package/dist/chunk-6NCLVPI7.mjs.map +0 -1
- package/dist/chunk-KEPCW6EI.mjs.map +0 -1
- /package/dist/{chunk-EPBXX44K.mjs.map → chunk-3UUEBVR3.mjs.map} +0 -0
- /package/dist/{chunk-IRYMQRYJ.mjs.map → chunk-ECLWCE4H.mjs.map} +0 -0
- /package/dist/{chunk-IWPBMZGE.mjs.map → chunk-IHYFDXKQ.mjs.map} +0 -0
- /package/dist/{chunk-MU2QKVYL.mjs.map → chunk-MP2SDRRB.mjs.map} +0 -0
- /package/dist/{chunk-QLCUQD3U.mjs.map → chunk-SHZF3DEB.mjs.map} +0 -0
- /package/dist/{chunk-VHYARVB7.mjs.map → chunk-TIESOJ7Z.mjs.map} +0 -0
package/dist/client.mjs
CHANGED
|
@@ -62,7 +62,7 @@ import {
|
|
|
62
62
|
createClientPluginManager,
|
|
63
63
|
installChunkErrorRecovery,
|
|
64
64
|
isChunkLoadError
|
|
65
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-SHZF3DEB.mjs";
|
|
66
66
|
import "./chunk-GQVQESLY.mjs";
|
|
67
67
|
import {
|
|
68
68
|
api,
|
|
@@ -80,7 +80,7 @@ import "./chunk-RBRLLZL5.mjs";
|
|
|
80
80
|
import "./chunk-WZ5QFROO.mjs";
|
|
81
81
|
import "./chunk-7ZMKVETU.mjs";
|
|
82
82
|
import "./chunk-FXG2PS27.mjs";
|
|
83
|
-
import "./chunk-
|
|
83
|
+
import "./chunk-KTV3UWGE.mjs";
|
|
84
84
|
import "./chunk-CGILA3WO.mjs";
|
|
85
85
|
export {
|
|
86
86
|
APIClientError,
|
package/dist/index.cjs
CHANGED
|
@@ -256,6 +256,13 @@ function matchRoute(url, segments) {
|
|
|
256
256
|
function resolveAppPath(root, ...paths) {
|
|
257
257
|
return import_path.default.resolve(root, ...paths);
|
|
258
258
|
}
|
|
259
|
+
function toRootRelativeUrlPath(absolutePath, projectRoot) {
|
|
260
|
+
if (absolutePath === projectRoot) return "";
|
|
261
|
+
if (absolutePath.startsWith(`${projectRoot}/`) || absolutePath.startsWith(`${projectRoot}\\`)) {
|
|
262
|
+
return absolutePath.slice(projectRoot.length).replace(/\\/g, "/");
|
|
263
|
+
}
|
|
264
|
+
return void 0;
|
|
265
|
+
}
|
|
259
266
|
function toViteModuleId(filePath, root) {
|
|
260
267
|
if (!import_path.default.isAbsolute(filePath)) return filePath;
|
|
261
268
|
const relativePath2 = import_path.default.relative(root, filePath);
|
|
@@ -304,6 +311,7 @@ var init_utils = __esm({
|
|
|
304
311
|
__name(segmentsToPattern, "segmentsToPattern");
|
|
305
312
|
__name(matchRoute, "matchRoute");
|
|
306
313
|
__name(resolveAppPath, "resolveAppPath");
|
|
314
|
+
__name(toRootRelativeUrlPath, "toRootRelativeUrlPath");
|
|
307
315
|
__name(toViteModuleId, "toViteModuleId");
|
|
308
316
|
__name(fileExists, "fileExists");
|
|
309
317
|
__name(globFiles, "globFiles");
|
|
@@ -10544,9 +10552,8 @@ var init_route_manager = __esm({
|
|
|
10544
10552
|
return this.clientManifestCache.manifest;
|
|
10545
10553
|
}
|
|
10546
10554
|
const toUrlPath = /* @__PURE__ */ __name((absolutePath) => {
|
|
10547
|
-
|
|
10548
|
-
|
|
10549
|
-
}
|
|
10555
|
+
const rootRelative = toRootRelativeUrlPath(absolutePath, normalizedProjectRoot);
|
|
10556
|
+
if (rootRelative !== void 0) return rootRelative;
|
|
10550
10557
|
if (import_path5.default.isAbsolute(absolutePath)) {
|
|
10551
10558
|
const normalized = absolutePath.replace(/\\/g, "/");
|
|
10552
10559
|
return normalized.startsWith("/") ? `/@fs${normalized}` : `/@fs/${normalized}`;
|
|
@@ -11172,6 +11179,60 @@ var init_route_manager = __esm({
|
|
|
11172
11179
|
}
|
|
11173
11180
|
});
|
|
11174
11181
|
|
|
11182
|
+
// src/server/full-document.ts
|
|
11183
|
+
function stripContentsWrappers(markup) {
|
|
11184
|
+
let out = markup.replace(/^\s+/, "");
|
|
11185
|
+
const opener = /^<div\b[^>]*style="display\s*:\s*contents"[^>]*>/i;
|
|
11186
|
+
let match;
|
|
11187
|
+
while (match = opener.exec(out)) {
|
|
11188
|
+
out = out.slice(match[0].length).replace(/^\s+/, "");
|
|
11189
|
+
}
|
|
11190
|
+
return out;
|
|
11191
|
+
}
|
|
11192
|
+
function extractFarmFullDocument(markup) {
|
|
11193
|
+
const inner = stripContentsWrappers(markup);
|
|
11194
|
+
if (!/^<!doctype/i.test(inner) && !/^<html[\s>]/i.test(inner)) return null;
|
|
11195
|
+
const start = markup.search(/<!doctype|<html[\s>]/i);
|
|
11196
|
+
const closeIndex = markup.toLowerCase().lastIndexOf("</html>");
|
|
11197
|
+
if (start < 0 || closeIndex < 0) return null;
|
|
11198
|
+
return markup.slice(start, closeIndex + "</html>".length);
|
|
11199
|
+
}
|
|
11200
|
+
function opensFarmFullDocument(markup) {
|
|
11201
|
+
const inner = stripContentsWrappers(markup);
|
|
11202
|
+
return /^<!doctype/i.test(inner) || /^<html[\s>]/i.test(inner);
|
|
11203
|
+
}
|
|
11204
|
+
function composeFarmFullDocument(documentHtml, assets) {
|
|
11205
|
+
let html = documentHtml;
|
|
11206
|
+
if (assets.htmlAttributes) {
|
|
11207
|
+
html = html.replace(
|
|
11208
|
+
/<html\b([^>]*)>/i,
|
|
11209
|
+
(_match, attrs) => `<html${attrs}${assets.htmlAttributes}>`
|
|
11210
|
+
);
|
|
11211
|
+
}
|
|
11212
|
+
if (!/\sid=["']root["']/i.test(html)) {
|
|
11213
|
+
html = html.replace(/<body\b([^>]*)>/i, '<body$1><div id="root">').replace(/<\/body>/i, "</div></body>");
|
|
11214
|
+
}
|
|
11215
|
+
if (assets.headAssets) {
|
|
11216
|
+
html = html.replace(/<\/head>/i, () => ` ${assets.headAssets}
|
|
11217
|
+
</head>`);
|
|
11218
|
+
}
|
|
11219
|
+
if (assets.bodyFooter) {
|
|
11220
|
+
html = html.replace(/<\/body>/i, () => ` ${assets.bodyFooter}
|
|
11221
|
+
</body>`);
|
|
11222
|
+
}
|
|
11223
|
+
return /^\s*<!doctype/i.test(html) ? html : `<!DOCTYPE html>
|
|
11224
|
+
${html}`;
|
|
11225
|
+
}
|
|
11226
|
+
var init_full_document = __esm({
|
|
11227
|
+
"src/server/full-document.ts"() {
|
|
11228
|
+
"use strict";
|
|
11229
|
+
__name(stripContentsWrappers, "stripContentsWrappers");
|
|
11230
|
+
__name(extractFarmFullDocument, "extractFarmFullDocument");
|
|
11231
|
+
__name(opensFarmFullDocument, "opensFarmFullDocument");
|
|
11232
|
+
__name(composeFarmFullDocument, "composeFarmFullDocument");
|
|
11233
|
+
}
|
|
11234
|
+
});
|
|
11235
|
+
|
|
11175
11236
|
// src/middleware/server.ts
|
|
11176
11237
|
function getGlobalMiddlewareStore(key) {
|
|
11177
11238
|
const state = globalThis;
|
|
@@ -15188,7 +15249,7 @@ var init_server3 = __esm({
|
|
|
15188
15249
|
var version;
|
|
15189
15250
|
var init_package = __esm({
|
|
15190
15251
|
"package.json"() {
|
|
15191
|
-
version = "0.1.0-beta.
|
|
15252
|
+
version = "0.1.0-beta.47";
|
|
15192
15253
|
}
|
|
15193
15254
|
});
|
|
15194
15255
|
|
|
@@ -15360,6 +15421,13 @@ function warnSuppressedAsyncHydrationOnce(modulePath) {
|
|
|
15360
15421
|
`${modulePath} is an async server component that imports client components. React cannot hydrate async components in the browser, so this route stays server-rendered and its client imports are not interactive. Move the interactive UI into a "use client" child rendered by a synchronous page, or enable experimental server components support.`
|
|
15361
15422
|
);
|
|
15362
15423
|
}
|
|
15424
|
+
function warnFarmFullDocumentLayout() {
|
|
15425
|
+
if (warnedFullDocumentLayout) return;
|
|
15426
|
+
warnedFullDocumentLayout = true;
|
|
15427
|
+
logger.warn(
|
|
15428
|
+
`A root layout returned a full <html> document. Farm.js owns the document shell, so a layout should return a fragment (its children) \u2014 like the docs example \u2014 and let the framework provide <html>/<head>/<body>. The document has been composed into the response, but returning a fragment avoids the ambiguity and keeps dev and production identical.`
|
|
15429
|
+
);
|
|
15430
|
+
}
|
|
15363
15431
|
function hasRequestHeader(req, name2) {
|
|
15364
15432
|
const value = req.headers[name2.toLowerCase()];
|
|
15365
15433
|
return Array.isArray(value) ? value.length > 0 : Boolean(value);
|
|
@@ -15498,13 +15566,14 @@ function createRouteStateProps(input) {
|
|
|
15498
15566
|
context: input.pluginExposedContext.size > 0 ? { data: input.pluginExposedContext } : void 0
|
|
15499
15567
|
};
|
|
15500
15568
|
}
|
|
15501
|
-
var fs3, path11, import_stream, import_node_url5, cachedClerkProvider, importRuntimeModule, warnedSuppressedAsyncHydrationModules, _ServerRenderer, ServerRenderer;
|
|
15569
|
+
var fs3, path11, import_stream, import_node_url5, cachedClerkProvider, importRuntimeModule, warnedSuppressedAsyncHydrationModules, fullDocumentRoutes, warnedFullDocumentLayout, _ServerRenderer, ServerRenderer;
|
|
15502
15570
|
var init_renderer2 = __esm({
|
|
15503
15571
|
"src/server/renderer.ts"() {
|
|
15504
15572
|
"use strict";
|
|
15505
15573
|
fs3 = __toESM(require("fs"));
|
|
15506
15574
|
path11 = __toESM(require("path"));
|
|
15507
15575
|
init_utils();
|
|
15576
|
+
init_full_document();
|
|
15508
15577
|
init_client_component();
|
|
15509
15578
|
import_stream = require("stream");
|
|
15510
15579
|
init_server();
|
|
@@ -15539,6 +15608,9 @@ var init_renderer2 = __esm({
|
|
|
15539
15608
|
importRuntimeModule = new Function("specifier", "return import(specifier);");
|
|
15540
15609
|
warnedSuppressedAsyncHydrationModules = /* @__PURE__ */ new Set();
|
|
15541
15610
|
__name(warnSuppressedAsyncHydrationOnce, "warnSuppressedAsyncHydrationOnce");
|
|
15611
|
+
fullDocumentRoutes = /* @__PURE__ */ new Set();
|
|
15612
|
+
warnedFullDocumentLayout = false;
|
|
15613
|
+
__name(warnFarmFullDocumentLayout, "warnFarmFullDocumentLayout");
|
|
15542
15614
|
__name(hasRequestHeader, "hasRequestHeader");
|
|
15543
15615
|
__name(serializeInlineValue2, "serializeInlineValue");
|
|
15544
15616
|
__name(escapeHtmlAttribute2, "escapeHtmlAttribute");
|
|
@@ -16236,7 +16308,7 @@ var init_renderer2 = __esm({
|
|
|
16236
16308
|
);
|
|
16237
16309
|
const clientLayouts = layouts.map((layout2, index) => ({
|
|
16238
16310
|
pattern: layout2.pattern,
|
|
16239
|
-
modulePath: layout2.modulePath
|
|
16311
|
+
modulePath: toRootRelativeUrlPath(layout2.modulePath, this.config.root) ?? layout2.modulePath,
|
|
16240
16312
|
shouldHydrate: layoutHydrationMetadata[index]?.shouldHydrate === true,
|
|
16241
16313
|
islandStrategy: layoutHydrationMetadata[index]?.islandStrategy ?? null
|
|
16242
16314
|
}));
|
|
@@ -16812,7 +16884,7 @@ var init_renderer2 = __esm({
|
|
|
16812
16884
|
const routeSlots = (req.__FARM_ROUTE_SLOTS__ || []).map(
|
|
16813
16885
|
(slot) => ({
|
|
16814
16886
|
...slot,
|
|
16815
|
-
modulePath: typeof slot.modulePath === "string"
|
|
16887
|
+
modulePath: typeof slot.modulePath === "string" ? toRootRelativeUrlPath(slot.modulePath, this.config.root) ?? slot.modulePath : slot.modulePath
|
|
16816
16888
|
})
|
|
16817
16889
|
);
|
|
16818
16890
|
const deferredProps = prepareDeferredData({
|
|
@@ -16820,7 +16892,7 @@ var init_renderer2 = __esm({
|
|
|
16820
16892
|
slots: routeSlots
|
|
16821
16893
|
});
|
|
16822
16894
|
const pagePath = req.__FARM_PAGE_PATH__;
|
|
16823
|
-
const relativePath2 = pagePath ? pagePath
|
|
16895
|
+
const relativePath2 = pagePath ? toRootRelativeUrlPath(pagePath, this.config.root) ?? pagePath : "/src/app/page.tsx";
|
|
16824
16896
|
const deploymentId = this.getDeploymentId();
|
|
16825
16897
|
const bootstrapScript = `<script>
|
|
16826
16898
|
window.__FARM_PROPS__ = ${serializeInlineValue2(deferredProps.data.page)};
|
|
@@ -16854,7 +16926,27 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
16854
16926
|
this.config.basePath,
|
|
16855
16927
|
getTheme()
|
|
16856
16928
|
);
|
|
16857
|
-
const
|
|
16929
|
+
const fullDocument = extractFarmFullDocument(content);
|
|
16930
|
+
let html;
|
|
16931
|
+
if (fullDocument) {
|
|
16932
|
+
warnFarmFullDocumentLayout();
|
|
16933
|
+
html = composeFarmFullDocument(fullDocument, {
|
|
16934
|
+
htmlAttributes: `${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}`,
|
|
16935
|
+
headAssets: [
|
|
16936
|
+
themeDocument.head,
|
|
16937
|
+
`<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(deploymentId)}">`,
|
|
16938
|
+
metaTags,
|
|
16939
|
+
alternateTags,
|
|
16940
|
+
renderFarmFontDevHead(this.config.root || process.cwd()),
|
|
16941
|
+
`<link rel="stylesheet" href="/src/app/globals.css">`,
|
|
16942
|
+
`<script type="module" src="/@vite/client"></script>`,
|
|
16943
|
+
rendererHydrationScript,
|
|
16944
|
+
bootstrapScript
|
|
16945
|
+
].filter(Boolean).join("\n "),
|
|
16946
|
+
bodyFooter: [deferredScript, `<script type="module" src="/@farm/client.js"></script>`].filter(Boolean).join("\n ")
|
|
16947
|
+
});
|
|
16948
|
+
} else {
|
|
16949
|
+
html = `<!DOCTYPE html>
|
|
16858
16950
|
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
|
|
16859
16951
|
<head>
|
|
16860
16952
|
${themeDocument.head}
|
|
@@ -16875,6 +16967,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
16875
16967
|
<script type="module" src="/@farm/client.js"></script>
|
|
16876
16968
|
</body>
|
|
16877
16969
|
</html>`;
|
|
16970
|
+
}
|
|
16878
16971
|
emitFarmEvent({
|
|
16879
16972
|
type: "render.stream.shellReady",
|
|
16880
16973
|
route: route2,
|
|
@@ -16897,7 +16990,8 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
16897
16990
|
}
|
|
16898
16991
|
async renderWithSSR(element, req, res, clearMiddlewareData, options = {}) {
|
|
16899
16992
|
const renderToPipeableStream2 = this.rendererRuntime.renderToPipeableStream;
|
|
16900
|
-
|
|
16993
|
+
const fullDocumentRouteKey = options.observabilityRoute || req.__FARM_ROUTE__ || req.url || "/";
|
|
16994
|
+
if (!renderToPipeableStream2 || fullDocumentRoutes.has(fullDocumentRouteKey)) {
|
|
16901
16995
|
return this.renderBufferedSSR(element, req, res, clearMiddlewareData, options);
|
|
16902
16996
|
}
|
|
16903
16997
|
return new Promise((resolve8, reject) => {
|
|
@@ -16916,7 +17010,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
16916
17010
|
let didError = false;
|
|
16917
17011
|
const pagePath = req.__FARM_PAGE_PATH__;
|
|
16918
17012
|
const isClientComponent = req.__FARM_IS_CLIENT_COMPONENT__ === true;
|
|
16919
|
-
const relativePath2 = pagePath ? pagePath
|
|
17013
|
+
const relativePath2 = pagePath ? toRootRelativeUrlPath(pagePath, this.config.root) ?? pagePath : "/src/app/page.tsx";
|
|
16920
17014
|
const manifest = options.routeManifest ?? this.routeManager.generateClientManifest(this.config.root);
|
|
16921
17015
|
const clientManifest = {
|
|
16922
17016
|
clientEntry: "/@farm/client.js",
|
|
@@ -16964,7 +17058,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
16964
17058
|
const routeSlotPayload = (req.__FARM_ROUTE_SLOTS__ || []).map(
|
|
16965
17059
|
(slot) => ({
|
|
16966
17060
|
...slot,
|
|
16967
|
-
modulePath: typeof slot.modulePath === "string"
|
|
17061
|
+
modulePath: typeof slot.modulePath === "string" ? toRootRelativeUrlPath(slot.modulePath, this.config.root) ?? slot.modulePath : slot.modulePath
|
|
16968
17062
|
})
|
|
16969
17063
|
);
|
|
16970
17064
|
const deferredProps = prepareDeferredData({
|
|
@@ -17044,6 +17138,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
17044
17138
|
htmlParts.push(shell);
|
|
17045
17139
|
staticShellParts?.push(shell);
|
|
17046
17140
|
let firstChunk = true;
|
|
17141
|
+
let checkedFullDocument = false;
|
|
17047
17142
|
const writableStream = new import_stream.Writable({
|
|
17048
17143
|
write(chunk, encoding, callback) {
|
|
17049
17144
|
if (firstChunk && process.env.FARM_VERBOSE) {
|
|
@@ -17051,6 +17146,13 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
17051
17146
|
firstChunk = false;
|
|
17052
17147
|
}
|
|
17053
17148
|
const chunkText = Buffer.isBuffer(chunk) ? chunk.toString() : String(chunk);
|
|
17149
|
+
if (!checkedFullDocument) {
|
|
17150
|
+
checkedFullDocument = true;
|
|
17151
|
+
if (opensFarmFullDocument(chunkText)) {
|
|
17152
|
+
fullDocumentRoutes.add(fullDocumentRouteKey);
|
|
17153
|
+
warnFarmFullDocumentLayout();
|
|
17154
|
+
}
|
|
17155
|
+
}
|
|
17054
17156
|
htmlParts.push(chunkText);
|
|
17055
17157
|
if (staticShellParts && !staticShellClosed) {
|
|
17056
17158
|
const dynamicIndex = findPPRDynamicChunkIndex(chunkText);
|
|
@@ -17249,6 +17351,24 @@ ${i18nSnapshot ? `window.__FARM_I18N__ = ${serializeInlineValue2(i18nSnapshot)};
|
|
|
17249
17351
|
getTheme()
|
|
17250
17352
|
);
|
|
17251
17353
|
const rendererHydrationScript = this.rendererRuntime.generateHydrationScript?.() || "";
|
|
17354
|
+
const fullDocument = extractFarmFullDocument(content);
|
|
17355
|
+
if (fullDocument) {
|
|
17356
|
+
warnFarmFullDocumentLayout();
|
|
17357
|
+
return composeFarmFullDocument(fullDocument, {
|
|
17358
|
+
htmlAttributes: `${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}`,
|
|
17359
|
+
headAssets: [
|
|
17360
|
+
themeDocument.head,
|
|
17361
|
+
`<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(this.getDeploymentId())}">`,
|
|
17362
|
+
alternateLinks,
|
|
17363
|
+
fontHead,
|
|
17364
|
+
`<link rel="stylesheet" href="/src/app/globals.css" />`,
|
|
17365
|
+
`<script type="module" src="/@vite/client"></script>`,
|
|
17366
|
+
rendererHydrationScript,
|
|
17367
|
+
integrationManifestScript
|
|
17368
|
+
].filter(Boolean).join("\n "),
|
|
17369
|
+
bodyFooter: clientScript.trim()
|
|
17370
|
+
});
|
|
17371
|
+
}
|
|
17252
17372
|
return `<!DOCTYPE html>
|
|
17253
17373
|
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
|
|
17254
17374
|
<head>
|
|
@@ -34212,6 +34332,7 @@ __export(src_exports, {
|
|
|
34212
34332
|
storageCacheAdapter: () => storageCacheAdapter,
|
|
34213
34333
|
titleFromMarkdown: () => titleFromMarkdown,
|
|
34214
34334
|
toFormData: () => toFormData,
|
|
34335
|
+
toRootRelativeUrlPath: () => toRootRelativeUrlPath,
|
|
34215
34336
|
toViteModuleId: () => toViteModuleId,
|
|
34216
34337
|
toggleTheme: () => toggleTheme,
|
|
34217
34338
|
unstable_cache: () => unstable_cache,
|
|
@@ -50297,6 +50418,7 @@ __name(decodeCookiePart, "decodeCookiePart");
|
|
|
50297
50418
|
storageCacheAdapter,
|
|
50298
50419
|
titleFromMarkdown,
|
|
50299
50420
|
toFormData,
|
|
50421
|
+
toRootRelativeUrlPath,
|
|
50300
50422
|
toViteModuleId,
|
|
50301
50423
|
toggleTheme,
|
|
50302
50424
|
unstable_cache,
|