@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/plugin.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import "./chunk-RQ633A5I.mjs";
|
|
7
7
|
import {
|
|
8
8
|
farmPlugin
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-MWYVMV3T.mjs";
|
|
10
10
|
import "./chunk-XJTDE4L4.mjs";
|
|
11
11
|
import "./chunk-CAUVJN4X.mjs";
|
|
12
12
|
import "./chunk-AMZZCRQ7.mjs";
|
|
@@ -36,15 +36,15 @@ import "./chunk-H53KVQUU.mjs";
|
|
|
36
36
|
import "./chunk-QKVUNGAH.mjs";
|
|
37
37
|
import "./chunk-HFQ2I2EA.mjs";
|
|
38
38
|
import "./chunk-T4QJQK76.mjs";
|
|
39
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-TIESOJ7Z.mjs";
|
|
40
40
|
import "./chunk-P7QDS5AT.mjs";
|
|
41
41
|
import "./chunk-E6EPN5BT.mjs";
|
|
42
|
-
import "./chunk-
|
|
42
|
+
import "./chunk-MP2SDRRB.mjs";
|
|
43
43
|
import "./chunk-XJ65E7MB.mjs";
|
|
44
44
|
import "./chunk-FQYDHKKU.mjs";
|
|
45
45
|
import "./chunk-SXWF4QRU.mjs";
|
|
46
46
|
import "./chunk-GIELMNBG.mjs";
|
|
47
|
-
import "./chunk-
|
|
47
|
+
import "./chunk-U5SPS2HR.mjs";
|
|
48
48
|
import "./chunk-QGOHVJ6J.mjs";
|
|
49
49
|
import "./chunk-5B33VWGX.mjs";
|
|
50
50
|
import "./chunk-YTMDIHQN.mjs";
|
|
@@ -63,7 +63,7 @@ import "./chunk-RBRLLZL5.mjs";
|
|
|
63
63
|
import "./chunk-WZ5QFROO.mjs";
|
|
64
64
|
import "./chunk-7ZMKVETU.mjs";
|
|
65
65
|
import "./chunk-FXG2PS27.mjs";
|
|
66
|
-
import "./chunk-
|
|
66
|
+
import "./chunk-KTV3UWGE.mjs";
|
|
67
67
|
import "./chunk-CGILA3WO.mjs";
|
|
68
68
|
export {
|
|
69
69
|
FarmRuntimeShutdownError,
|
package/dist/server.cjs
CHANGED
|
@@ -14828,6 +14828,7 @@ __export(server_exports2, {
|
|
|
14828
14828
|
sqliteStorage: () => sqliteStorage,
|
|
14829
14829
|
startDevServer: () => startDevServer,
|
|
14830
14830
|
storageCacheAdapter: () => storageCacheAdapter,
|
|
14831
|
+
toRootRelativeUrlPath: () => toRootRelativeUrlPath,
|
|
14831
14832
|
toViteModuleId: () => toViteModuleId,
|
|
14832
14833
|
unstable_cache: () => unstable_cache,
|
|
14833
14834
|
updateTag: () => updateTag,
|
|
@@ -14957,6 +14958,14 @@ function resolveAppPath(root, ...paths) {
|
|
|
14957
14958
|
return import_path.default.resolve(root, ...paths);
|
|
14958
14959
|
}
|
|
14959
14960
|
__name(resolveAppPath, "resolveAppPath");
|
|
14961
|
+
function toRootRelativeUrlPath(absolutePath, projectRoot) {
|
|
14962
|
+
if (absolutePath === projectRoot) return "";
|
|
14963
|
+
if (absolutePath.startsWith(`${projectRoot}/`) || absolutePath.startsWith(`${projectRoot}\\`)) {
|
|
14964
|
+
return absolutePath.slice(projectRoot.length).replace(/\\/g, "/");
|
|
14965
|
+
}
|
|
14966
|
+
return void 0;
|
|
14967
|
+
}
|
|
14968
|
+
__name(toRootRelativeUrlPath, "toRootRelativeUrlPath");
|
|
14960
14969
|
function toViteModuleId(filePath, root) {
|
|
14961
14970
|
if (!import_path.default.isAbsolute(filePath)) return filePath;
|
|
14962
14971
|
const relativePath2 = import_path.default.relative(root, filePath);
|
|
@@ -17123,9 +17132,8 @@ var _RouteManager = class _RouteManager {
|
|
|
17123
17132
|
return this.clientManifestCache.manifest;
|
|
17124
17133
|
}
|
|
17125
17134
|
const toUrlPath = /* @__PURE__ */ __name((absolutePath) => {
|
|
17126
|
-
|
|
17127
|
-
|
|
17128
|
-
}
|
|
17135
|
+
const rootRelative = toRootRelativeUrlPath(absolutePath, normalizedProjectRoot);
|
|
17136
|
+
if (rootRelative !== void 0) return rootRelative;
|
|
17129
17137
|
if (import_path5.default.isAbsolute(absolutePath)) {
|
|
17130
17138
|
const normalized = absolutePath.replace(/\\/g, "/");
|
|
17131
17139
|
return normalized.startsWith("/") ? `/@fs${normalized}` : `/@fs/${normalized}`;
|
|
@@ -17821,6 +17829,57 @@ __name(safeGlobFiles, "safeGlobFiles");
|
|
|
17821
17829
|
// src/server/renderer.ts
|
|
17822
17830
|
var fs3 = __toESM(require("fs"));
|
|
17823
17831
|
var path11 = __toESM(require("path"));
|
|
17832
|
+
|
|
17833
|
+
// src/server/full-document.ts
|
|
17834
|
+
function stripContentsWrappers(markup) {
|
|
17835
|
+
let out = markup.replace(/^\s+/, "");
|
|
17836
|
+
const opener = /^<div\b[^>]*style="display\s*:\s*contents"[^>]*>/i;
|
|
17837
|
+
let match;
|
|
17838
|
+
while (match = opener.exec(out)) {
|
|
17839
|
+
out = out.slice(match[0].length).replace(/^\s+/, "");
|
|
17840
|
+
}
|
|
17841
|
+
return out;
|
|
17842
|
+
}
|
|
17843
|
+
__name(stripContentsWrappers, "stripContentsWrappers");
|
|
17844
|
+
function extractFarmFullDocument(markup) {
|
|
17845
|
+
const inner = stripContentsWrappers(markup);
|
|
17846
|
+
if (!/^<!doctype/i.test(inner) && !/^<html[\s>]/i.test(inner)) return null;
|
|
17847
|
+
const start = markup.search(/<!doctype|<html[\s>]/i);
|
|
17848
|
+
const closeIndex = markup.toLowerCase().lastIndexOf("</html>");
|
|
17849
|
+
if (start < 0 || closeIndex < 0) return null;
|
|
17850
|
+
return markup.slice(start, closeIndex + "</html>".length);
|
|
17851
|
+
}
|
|
17852
|
+
__name(extractFarmFullDocument, "extractFarmFullDocument");
|
|
17853
|
+
function opensFarmFullDocument(markup) {
|
|
17854
|
+
const inner = stripContentsWrappers(markup);
|
|
17855
|
+
return /^<!doctype/i.test(inner) || /^<html[\s>]/i.test(inner);
|
|
17856
|
+
}
|
|
17857
|
+
__name(opensFarmFullDocument, "opensFarmFullDocument");
|
|
17858
|
+
function composeFarmFullDocument(documentHtml, assets) {
|
|
17859
|
+
let html = documentHtml;
|
|
17860
|
+
if (assets.htmlAttributes) {
|
|
17861
|
+
html = html.replace(
|
|
17862
|
+
/<html\b([^>]*)>/i,
|
|
17863
|
+
(_match, attrs) => `<html${attrs}${assets.htmlAttributes}>`
|
|
17864
|
+
);
|
|
17865
|
+
}
|
|
17866
|
+
if (!/\sid=["']root["']/i.test(html)) {
|
|
17867
|
+
html = html.replace(/<body\b([^>]*)>/i, '<body$1><div id="root">').replace(/<\/body>/i, "</div></body>");
|
|
17868
|
+
}
|
|
17869
|
+
if (assets.headAssets) {
|
|
17870
|
+
html = html.replace(/<\/head>/i, () => ` ${assets.headAssets}
|
|
17871
|
+
</head>`);
|
|
17872
|
+
}
|
|
17873
|
+
if (assets.bodyFooter) {
|
|
17874
|
+
html = html.replace(/<\/body>/i, () => ` ${assets.bodyFooter}
|
|
17875
|
+
</body>`);
|
|
17876
|
+
}
|
|
17877
|
+
return /^\s*<!doctype/i.test(html) ? html : `<!DOCTYPE html>
|
|
17878
|
+
${html}`;
|
|
17879
|
+
}
|
|
17880
|
+
__name(composeFarmFullDocument, "composeFarmFullDocument");
|
|
17881
|
+
|
|
17882
|
+
// src/server/renderer.ts
|
|
17824
17883
|
var import_stream = require("stream");
|
|
17825
17884
|
|
|
17826
17885
|
// src/middleware/server.ts
|
|
@@ -21175,7 +21234,7 @@ _setFarmThemeServerSnapshotResolver(() => {
|
|
|
21175
21234
|
});
|
|
21176
21235
|
|
|
21177
21236
|
// package.json
|
|
21178
|
-
var version = "0.1.0-beta.
|
|
21237
|
+
var version = "0.1.0-beta.47";
|
|
21179
21238
|
|
|
21180
21239
|
// src/version.ts
|
|
21181
21240
|
var FARM_VERSION = version;
|
|
@@ -21284,6 +21343,16 @@ function warnSuppressedAsyncHydrationOnce(modulePath) {
|
|
|
21284
21343
|
);
|
|
21285
21344
|
}
|
|
21286
21345
|
__name(warnSuppressedAsyncHydrationOnce, "warnSuppressedAsyncHydrationOnce");
|
|
21346
|
+
var fullDocumentRoutes = /* @__PURE__ */ new Set();
|
|
21347
|
+
var warnedFullDocumentLayout = false;
|
|
21348
|
+
function warnFarmFullDocumentLayout() {
|
|
21349
|
+
if (warnedFullDocumentLayout) return;
|
|
21350
|
+
warnedFullDocumentLayout = true;
|
|
21351
|
+
logger.warn(
|
|
21352
|
+
`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.`
|
|
21353
|
+
);
|
|
21354
|
+
}
|
|
21355
|
+
__name(warnFarmFullDocumentLayout, "warnFarmFullDocumentLayout");
|
|
21287
21356
|
function hasRequestHeader(req, name2) {
|
|
21288
21357
|
const value = req.headers[name2.toLowerCase()];
|
|
21289
21358
|
return Array.isArray(value) ? value.length > 0 : Boolean(value);
|
|
@@ -22119,7 +22188,7 @@ var _ServerRenderer = class _ServerRenderer {
|
|
|
22119
22188
|
);
|
|
22120
22189
|
const clientLayouts = layouts.map((layout2, index) => ({
|
|
22121
22190
|
pattern: layout2.pattern,
|
|
22122
|
-
modulePath: layout2.modulePath
|
|
22191
|
+
modulePath: toRootRelativeUrlPath(layout2.modulePath, this.config.root) ?? layout2.modulePath,
|
|
22123
22192
|
shouldHydrate: layoutHydrationMetadata[index]?.shouldHydrate === true,
|
|
22124
22193
|
islandStrategy: layoutHydrationMetadata[index]?.islandStrategy ?? null
|
|
22125
22194
|
}));
|
|
@@ -22695,7 +22764,7 @@ var _ServerRenderer = class _ServerRenderer {
|
|
|
22695
22764
|
const routeSlots = (req.__FARM_ROUTE_SLOTS__ || []).map(
|
|
22696
22765
|
(slot) => ({
|
|
22697
22766
|
...slot,
|
|
22698
|
-
modulePath: typeof slot.modulePath === "string"
|
|
22767
|
+
modulePath: typeof slot.modulePath === "string" ? toRootRelativeUrlPath(slot.modulePath, this.config.root) ?? slot.modulePath : slot.modulePath
|
|
22699
22768
|
})
|
|
22700
22769
|
);
|
|
22701
22770
|
const deferredProps = prepareDeferredData({
|
|
@@ -22703,7 +22772,7 @@ var _ServerRenderer = class _ServerRenderer {
|
|
|
22703
22772
|
slots: routeSlots
|
|
22704
22773
|
});
|
|
22705
22774
|
const pagePath = req.__FARM_PAGE_PATH__;
|
|
22706
|
-
const relativePath2 = pagePath ? pagePath
|
|
22775
|
+
const relativePath2 = pagePath ? toRootRelativeUrlPath(pagePath, this.config.root) ?? pagePath : "/src/app/page.tsx";
|
|
22707
22776
|
const deploymentId = this.getDeploymentId();
|
|
22708
22777
|
const bootstrapScript = `<script>
|
|
22709
22778
|
window.__FARM_PROPS__ = ${serializeInlineValue2(deferredProps.data.page)};
|
|
@@ -22737,7 +22806,27 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
22737
22806
|
this.config.basePath,
|
|
22738
22807
|
getTheme()
|
|
22739
22808
|
);
|
|
22740
|
-
const
|
|
22809
|
+
const fullDocument = extractFarmFullDocument(content);
|
|
22810
|
+
let html;
|
|
22811
|
+
if (fullDocument) {
|
|
22812
|
+
warnFarmFullDocumentLayout();
|
|
22813
|
+
html = composeFarmFullDocument(fullDocument, {
|
|
22814
|
+
htmlAttributes: `${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}`,
|
|
22815
|
+
headAssets: [
|
|
22816
|
+
themeDocument.head,
|
|
22817
|
+
`<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(deploymentId)}">`,
|
|
22818
|
+
metaTags,
|
|
22819
|
+
alternateTags,
|
|
22820
|
+
renderFarmFontDevHead(this.config.root || process.cwd()),
|
|
22821
|
+
`<link rel="stylesheet" href="/src/app/globals.css">`,
|
|
22822
|
+
`<script type="module" src="/@vite/client"></script>`,
|
|
22823
|
+
rendererHydrationScript,
|
|
22824
|
+
bootstrapScript
|
|
22825
|
+
].filter(Boolean).join("\n "),
|
|
22826
|
+
bodyFooter: [deferredScript, `<script type="module" src="/@farm/client.js"></script>`].filter(Boolean).join("\n ")
|
|
22827
|
+
});
|
|
22828
|
+
} else {
|
|
22829
|
+
html = `<!DOCTYPE html>
|
|
22741
22830
|
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
|
|
22742
22831
|
<head>
|
|
22743
22832
|
${themeDocument.head}
|
|
@@ -22758,6 +22847,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
22758
22847
|
<script type="module" src="/@farm/client.js"></script>
|
|
22759
22848
|
</body>
|
|
22760
22849
|
</html>`;
|
|
22850
|
+
}
|
|
22761
22851
|
emitFarmEvent({
|
|
22762
22852
|
type: "render.stream.shellReady",
|
|
22763
22853
|
route,
|
|
@@ -22780,7 +22870,8 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
22780
22870
|
}
|
|
22781
22871
|
async renderWithSSR(element, req, res, clearMiddlewareData, options = {}) {
|
|
22782
22872
|
const renderToPipeableStream2 = this.rendererRuntime.renderToPipeableStream;
|
|
22783
|
-
|
|
22873
|
+
const fullDocumentRouteKey = options.observabilityRoute || req.__FARM_ROUTE__ || req.url || "/";
|
|
22874
|
+
if (!renderToPipeableStream2 || fullDocumentRoutes.has(fullDocumentRouteKey)) {
|
|
22784
22875
|
return this.renderBufferedSSR(element, req, res, clearMiddlewareData, options);
|
|
22785
22876
|
}
|
|
22786
22877
|
return new Promise((resolve8, reject) => {
|
|
@@ -22799,7 +22890,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
22799
22890
|
let didError = false;
|
|
22800
22891
|
const pagePath = req.__FARM_PAGE_PATH__;
|
|
22801
22892
|
const isClientComponent = req.__FARM_IS_CLIENT_COMPONENT__ === true;
|
|
22802
|
-
const relativePath2 = pagePath ? pagePath
|
|
22893
|
+
const relativePath2 = pagePath ? toRootRelativeUrlPath(pagePath, this.config.root) ?? pagePath : "/src/app/page.tsx";
|
|
22803
22894
|
const manifest = options.routeManifest ?? this.routeManager.generateClientManifest(this.config.root);
|
|
22804
22895
|
const clientManifest = {
|
|
22805
22896
|
clientEntry: "/@farm/client.js",
|
|
@@ -22847,7 +22938,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
22847
22938
|
const routeSlotPayload = (req.__FARM_ROUTE_SLOTS__ || []).map(
|
|
22848
22939
|
(slot) => ({
|
|
22849
22940
|
...slot,
|
|
22850
|
-
modulePath: typeof slot.modulePath === "string"
|
|
22941
|
+
modulePath: typeof slot.modulePath === "string" ? toRootRelativeUrlPath(slot.modulePath, this.config.root) ?? slot.modulePath : slot.modulePath
|
|
22851
22942
|
})
|
|
22852
22943
|
);
|
|
22853
22944
|
const deferredProps = prepareDeferredData({
|
|
@@ -22927,6 +23018,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
22927
23018
|
htmlParts.push(shell);
|
|
22928
23019
|
staticShellParts?.push(shell);
|
|
22929
23020
|
let firstChunk = true;
|
|
23021
|
+
let checkedFullDocument = false;
|
|
22930
23022
|
const writableStream = new import_stream.Writable({
|
|
22931
23023
|
write(chunk, encoding, callback) {
|
|
22932
23024
|
if (firstChunk && process.env.FARM_VERBOSE) {
|
|
@@ -22934,6 +23026,13 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
22934
23026
|
firstChunk = false;
|
|
22935
23027
|
}
|
|
22936
23028
|
const chunkText = Buffer.isBuffer(chunk) ? chunk.toString() : String(chunk);
|
|
23029
|
+
if (!checkedFullDocument) {
|
|
23030
|
+
checkedFullDocument = true;
|
|
23031
|
+
if (opensFarmFullDocument(chunkText)) {
|
|
23032
|
+
fullDocumentRoutes.add(fullDocumentRouteKey);
|
|
23033
|
+
warnFarmFullDocumentLayout();
|
|
23034
|
+
}
|
|
23035
|
+
}
|
|
22937
23036
|
htmlParts.push(chunkText);
|
|
22938
23037
|
if (staticShellParts && !staticShellClosed) {
|
|
22939
23038
|
const dynamicIndex = findPPRDynamicChunkIndex(chunkText);
|
|
@@ -23132,6 +23231,24 @@ ${i18nSnapshot ? `window.__FARM_I18N__ = ${serializeInlineValue2(i18nSnapshot)};
|
|
|
23132
23231
|
getTheme()
|
|
23133
23232
|
);
|
|
23134
23233
|
const rendererHydrationScript = this.rendererRuntime.generateHydrationScript?.() || "";
|
|
23234
|
+
const fullDocument = extractFarmFullDocument(content);
|
|
23235
|
+
if (fullDocument) {
|
|
23236
|
+
warnFarmFullDocumentLayout();
|
|
23237
|
+
return composeFarmFullDocument(fullDocument, {
|
|
23238
|
+
htmlAttributes: `${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}`,
|
|
23239
|
+
headAssets: [
|
|
23240
|
+
themeDocument.head,
|
|
23241
|
+
`<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(this.getDeploymentId())}">`,
|
|
23242
|
+
alternateLinks,
|
|
23243
|
+
fontHead,
|
|
23244
|
+
`<link rel="stylesheet" href="/src/app/globals.css" />`,
|
|
23245
|
+
`<script type="module" src="/@vite/client"></script>`,
|
|
23246
|
+
rendererHydrationScript,
|
|
23247
|
+
integrationManifestScript
|
|
23248
|
+
].filter(Boolean).join("\n "),
|
|
23249
|
+
bodyFooter: clientScript.trim()
|
|
23250
|
+
});
|
|
23251
|
+
}
|
|
23135
23252
|
return `<!DOCTYPE html>
|
|
23136
23253
|
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
|
|
23137
23254
|
<head>
|
|
@@ -32372,6 +32489,7 @@ __name(assertFunction, "assertFunction");
|
|
|
32372
32489
|
sqliteStorage,
|
|
32373
32490
|
startDevServer,
|
|
32374
32491
|
storageCacheAdapter,
|
|
32492
|
+
toRootRelativeUrlPath,
|
|
32375
32493
|
toViteModuleId,
|
|
32376
32494
|
unstable_cache,
|
|
32377
32495
|
updateTag,
|