@farm.js/core 0.1.0-beta.22 → 0.1.0-beta.23
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/agent-runtime.d.mts +2 -1
- package/dist/agent-runtime.d.ts +2 -1
- package/dist/{app-BB8GCH1g.d.ts → app-CTFnOJaI.d.ts} +5 -3
- package/dist/{app-DwsTpyNZ.d.mts → app-DA6ospIq.d.mts} +5 -3
- package/dist/app-markdown.d.mts +2 -1
- package/dist/app-markdown.d.ts +2 -1
- package/dist/chunk-4IVNW5QD.mjs +82 -0
- package/dist/chunk-4IVNW5QD.mjs.map +1 -0
- package/dist/{chunk-DAUR3WUZ.mjs → chunk-5NOVWCFL.mjs} +2 -2
- package/dist/chunk-5NOVWCFL.mjs.map +1 -0
- package/dist/chunk-D42BNPZH.mjs +79 -0
- package/dist/chunk-D42BNPZH.mjs.map +1 -0
- package/dist/{chunk-LLPN5SEZ.mjs → chunk-DVPRBMU2.mjs} +2 -2
- package/dist/{chunk-ZP73P4VR.mjs → chunk-FJGTYLCO.mjs} +67 -20
- package/dist/chunk-FJGTYLCO.mjs.map +1 -0
- package/dist/chunk-GQVQESLY.mjs +25 -0
- package/dist/chunk-GQVQESLY.mjs.map +1 -0
- package/dist/chunk-H53KVQUU.mjs +48 -0
- package/dist/chunk-H53KVQUU.mjs.map +1 -0
- package/dist/chunk-HCGQYYHI.mjs +1 -0
- package/dist/chunk-HCGQYYHI.mjs.map +1 -0
- package/dist/{chunk-UCYWGN2P.mjs → chunk-OHNSROHS.mjs} +1 -1
- package/dist/{chunk-FRPWCMMG.mjs → chunk-SBWOTAX4.mjs} +63 -2
- package/dist/chunk-SBWOTAX4.mjs.map +1 -0
- package/dist/{chunk-XBKXKJX5.mjs → chunk-TX54PXAJ.mjs} +81 -25
- package/dist/chunk-TX54PXAJ.mjs.map +1 -0
- package/dist/{chunk-CEVMYGDL.mjs → chunk-YD5IRKVS.mjs} +13 -9
- package/dist/chunk-YD5IRKVS.mjs.map +1 -0
- package/dist/{client-plugins-QQntVkrv.d.mts → client-plugins-CCilIb_G.d.mts} +6 -2
- package/dist/{client-plugins-CbRum1fj.d.ts → client-plugins-DuuleQKk.d.ts} +6 -2
- package/dist/client-plugins.d.mts +2 -1
- package/dist/client-plugins.d.ts +2 -1
- package/dist/client.cjs +122 -35
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.mts +2 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.mjs +13 -2
- package/dist/config.d.mts +2 -1
- package/dist/config.d.ts +2 -1
- package/dist/{devtools-52FYXIEK.mjs → devtools-326RBQCN.mjs} +7 -6
- package/dist/{devtools-52FYXIEK.mjs.map → devtools-326RBQCN.mjs.map} +1 -1
- package/dist/docs.cjs.map +1 -1
- package/dist/docs.mjs +6 -5
- package/dist/index.cjs +431 -55
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +10 -7
- package/dist/index.d.ts +10 -7
- package/dist/index.mjs +66 -49
- package/dist/index.mjs.map +1 -1
- package/dist/integrations.d.mts +2 -1
- package/dist/integrations.d.ts +2 -1
- package/dist/internal/build-runtime.cjs +337 -34
- package/dist/internal/build-runtime.cjs.map +1 -1
- package/dist/internal/build-runtime.d.mts +4 -3
- package/dist/internal/build-runtime.d.ts +4 -3
- package/dist/internal/build-runtime.mjs +15 -12
- package/dist/internal/config-runtime.cjs +41 -0
- package/dist/internal/config-runtime.cjs.map +1 -1
- package/dist/internal/config-runtime.d.mts +3 -2
- package/dist/internal/config-runtime.d.ts +3 -2
- package/dist/internal/config-runtime.mjs +5 -4
- package/dist/internal/production-runtime.cjs +178 -0
- package/dist/internal/production-runtime.cjs.map +1 -1
- package/dist/internal/production-runtime.d.mts +20 -6
- package/dist/internal/production-runtime.d.ts +20 -6
- package/dist/internal/production-runtime.mjs +13 -1
- package/dist/internal/production-runtime.mjs.map +1 -1
- package/dist/{metadata-B5jBJHq1.d.ts → metadata-DyPRG0wX.d.ts} +1 -1
- package/dist/{metadata-BxOJ4FJl.d.mts → metadata-_GHcAySx.d.mts} +1 -1
- package/dist/middleware.d.mts +4 -3
- package/dist/middleware.d.ts +4 -3
- package/dist/plugin.cjs +219 -14
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.mts +2 -1
- package/dist/plugin.d.ts +2 -1
- package/dist/plugin.mjs +11 -8
- package/dist/{production-runtime-Bxua86uR.d.mts → production-runtime-C4cO3esK.d.mts} +1 -1
- package/dist/{production-runtime-CZqXjRVi.d.ts → production-runtime-DrEy8kBO.d.ts} +1 -1
- package/dist/{request-7V0GaZK_.d.mts → request-B2PpOxYK.d.mts} +1 -1
- package/dist/{request-B5XYBv5a.d.ts → request-D40lt6aN.d.ts} +1 -1
- package/dist/request.d.mts +3 -2
- package/dist/request.d.ts +3 -2
- package/dist/routes.d.mts +2 -1
- package/dist/routes.d.ts +2 -1
- package/dist/server-plugins.d.mts +3 -2
- package/dist/server-plugins.d.ts +3 -2
- package/dist/server.cjs +241 -19
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.mts +8 -6
- package/dist/server.d.ts +8 -6
- package/dist/server.mjs +20 -11
- package/dist/server.mjs.map +1 -1
- package/dist/testing.d.mts +2 -1
- package/dist/testing.d.ts +2 -1
- package/dist/theme/client.cjs +115 -0
- package/dist/theme/client.cjs.map +1 -0
- package/dist/theme/client.d.mts +17 -0
- package/dist/theme/client.d.ts +17 -0
- package/dist/theme/client.mjs +16 -0
- package/dist/theme/client.mjs.map +1 -0
- package/dist/theme/index.cjs +71 -0
- package/dist/theme/index.cjs.map +1 -0
- package/dist/theme/index.d.mts +6 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.mjs +9 -0
- package/dist/theme/index.mjs.map +1 -0
- package/dist/theme/server.cjs +191 -0
- package/dist/theme/server.cjs.map +1 -0
- package/dist/theme/server.d.mts +8 -0
- package/dist/theme/server.d.ts +8 -0
- package/dist/theme/server.mjs +18 -0
- package/dist/theme/server.mjs.map +1 -0
- package/dist/types-CsR8fpgF.d.mts +30 -0
- package/dist/types-CsR8fpgF.d.ts +30 -0
- package/dist/{utils-xTFxzu47.d.ts → utils-3sQgfkya.d.ts} +1 -1
- package/dist/{utils-s9pN0Yep.d.mts → utils-Bop7bly-.d.mts} +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +242 -15
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.d.mts +2 -1
- package/dist/vite.d.ts +2 -1
- package/dist/vite.mjs +11 -8
- package/package.json +25 -1
- package/dist/chunk-CEVMYGDL.mjs.map +0 -1
- package/dist/chunk-DAUR3WUZ.mjs.map +0 -1
- package/dist/chunk-FRPWCMMG.mjs.map +0 -1
- package/dist/chunk-XBKXKJX5.mjs.map +0 -1
- package/dist/chunk-ZP73P4VR.mjs.map +0 -1
- /package/dist/{chunk-LLPN5SEZ.mjs.map → chunk-DVPRBMU2.mjs.map} +0 -0
- /package/dist/{chunk-UCYWGN2P.mjs.map → chunk-OHNSROHS.mjs.map} +0 -0
|
@@ -5920,6 +5920,52 @@ var init_security = __esm({
|
|
|
5920
5920
|
}
|
|
5921
5921
|
});
|
|
5922
5922
|
|
|
5923
|
+
// src/theme/config.ts
|
|
5924
|
+
function resolveFarmThemeConfig(config, basePath = "/") {
|
|
5925
|
+
if (config && "enabled" in config) {
|
|
5926
|
+
return config;
|
|
5927
|
+
}
|
|
5928
|
+
if (!config) {
|
|
5929
|
+
return {
|
|
5930
|
+
enabled: false,
|
|
5931
|
+
default: "system",
|
|
5932
|
+
storageKey: DEFAULT_FARM_THEME_STORAGE_KEY,
|
|
5933
|
+
cookiePath: normalizeCookiePath(basePath)
|
|
5934
|
+
};
|
|
5935
|
+
}
|
|
5936
|
+
const storageKey = config.storageKey?.trim() || DEFAULT_FARM_THEME_STORAGE_KEY;
|
|
5937
|
+
if (!STORAGE_KEY_PATTERN.test(storageKey)) {
|
|
5938
|
+
throw new Error(
|
|
5939
|
+
"theme.storageKey may only contain letters, numbers, dots, underscores, and hyphens."
|
|
5940
|
+
);
|
|
5941
|
+
}
|
|
5942
|
+
const defaultTheme = config.default ?? "system";
|
|
5943
|
+
if (defaultTheme !== "light" && defaultTheme !== "dark" && defaultTheme !== "system") {
|
|
5944
|
+
throw new Error('theme.default must be "light", "dark", or "system".');
|
|
5945
|
+
}
|
|
5946
|
+
return {
|
|
5947
|
+
enabled: true,
|
|
5948
|
+
default: defaultTheme,
|
|
5949
|
+
storageKey,
|
|
5950
|
+
cookiePath: normalizeCookiePath(basePath)
|
|
5951
|
+
};
|
|
5952
|
+
}
|
|
5953
|
+
function normalizeCookiePath(basePath) {
|
|
5954
|
+
const normalized = `/${basePath}`.replace(/\/{2,}/g, "/");
|
|
5955
|
+
if (normalized === "/") return normalized;
|
|
5956
|
+
return normalized.replace(/\/$/, "");
|
|
5957
|
+
}
|
|
5958
|
+
var DEFAULT_FARM_THEME_STORAGE_KEY, STORAGE_KEY_PATTERN;
|
|
5959
|
+
var init_config2 = __esm({
|
|
5960
|
+
"src/theme/config.ts"() {
|
|
5961
|
+
"use strict";
|
|
5962
|
+
DEFAULT_FARM_THEME_STORAGE_KEY = "farm-theme";
|
|
5963
|
+
STORAGE_KEY_PATTERN = /^[A-Za-z0-9._-]+$/;
|
|
5964
|
+
__name(resolveFarmThemeConfig, "resolveFarmThemeConfig");
|
|
5965
|
+
__name(normalizeCookiePath, "normalizeCookiePath");
|
|
5966
|
+
}
|
|
5967
|
+
});
|
|
5968
|
+
|
|
5923
5969
|
// src/config-entry.ts
|
|
5924
5970
|
var init_config_entry = __esm({
|
|
5925
5971
|
"src/config-entry.ts"() {
|
|
@@ -6246,6 +6292,7 @@ async function resolveConfig(userConfig, mode) {
|
|
|
6246
6292
|
routeRules,
|
|
6247
6293
|
images: resolveFarmImageConfig(userConfig.images),
|
|
6248
6294
|
performance: resolveFarmPerformanceConfig(userConfig.performance),
|
|
6295
|
+
theme: resolveFarmThemeConfig(userConfig.theme, userConfig.basePath || "/"),
|
|
6249
6296
|
publicDir: userConfig.publicDir || "public",
|
|
6250
6297
|
i18n: resolveFarmI18nConfig(userConfig.i18n, { root, mode }),
|
|
6251
6298
|
openapi: {
|
|
@@ -6323,7 +6370,7 @@ async function loadConfig(rootDir, configPath, mode = process.env.NODE_ENV === "
|
|
|
6323
6370
|
return void 0;
|
|
6324
6371
|
}
|
|
6325
6372
|
var import_path2, FARM_RESOLVED_CUSTOM_CONTEXT, DOCS_CONFIG_FILENAMES;
|
|
6326
|
-
var
|
|
6373
|
+
var init_config3 = __esm({
|
|
6327
6374
|
"src/config.ts"() {
|
|
6328
6375
|
"use strict";
|
|
6329
6376
|
init_integrations();
|
|
@@ -6344,6 +6391,7 @@ var init_config2 = __esm({
|
|
|
6344
6391
|
init_auth_config();
|
|
6345
6392
|
init_preload();
|
|
6346
6393
|
init_security();
|
|
6394
|
+
init_config2();
|
|
6347
6395
|
init_config_entry();
|
|
6348
6396
|
FARM_RESOLVED_CUSTOM_CONTEXT = /* @__PURE__ */ Symbol.for("farm.resolvedCustomContext");
|
|
6349
6397
|
__name(hasCustomFarmRouteContext, "hasCustomFarmRouteContext");
|
|
@@ -10442,6 +10490,15 @@ function createWebRequestFromFarmRequest(req) {
|
|
|
10442
10490
|
async function _runWithCurrentRequest(request, fn) {
|
|
10443
10491
|
return requestStore.run(request, fn);
|
|
10444
10492
|
}
|
|
10493
|
+
function getCurrentRequest() {
|
|
10494
|
+
const request = requestStore.getStore();
|
|
10495
|
+
if (!request) {
|
|
10496
|
+
throw new Error(
|
|
10497
|
+
"No current request is available. getCurrentRequest() can only be used during server rendering."
|
|
10498
|
+
);
|
|
10499
|
+
}
|
|
10500
|
+
return request;
|
|
10501
|
+
}
|
|
10445
10502
|
var import_node_async_hooks2, REQUEST_STORAGE_KEY, requestStore;
|
|
10446
10503
|
var init_request = __esm({
|
|
10447
10504
|
"src/server/request.ts"() {
|
|
@@ -10454,6 +10511,7 @@ var init_request = __esm({
|
|
|
10454
10511
|
_setCurrentRequestResolver(() => requestStore.getStore());
|
|
10455
10512
|
__name(createWebRequestFromFarmRequest, "createWebRequestFromFarmRequest");
|
|
10456
10513
|
__name(_runWithCurrentRequest, "_runWithCurrentRequest");
|
|
10514
|
+
__name(getCurrentRequest, "getCurrentRequest");
|
|
10457
10515
|
}
|
|
10458
10516
|
});
|
|
10459
10517
|
|
|
@@ -12961,12 +13019,151 @@ body {
|
|
|
12961
13019
|
}
|
|
12962
13020
|
});
|
|
12963
13021
|
|
|
13022
|
+
// src/theme/server-runtime.ts
|
|
13023
|
+
function createFarmThemeDocumentParts(input, basePath = "/", serverTheme) {
|
|
13024
|
+
const config = resolveFarmThemeConfig(input, basePath);
|
|
13025
|
+
if (!config.enabled) return { attributes: "", head: "" };
|
|
13026
|
+
const hydrationTheme = serverTheme ?? config.default;
|
|
13027
|
+
const initialTheme = hydrationTheme === "system" ? "light" : hydrationTheme;
|
|
13028
|
+
const script = createFarmThemeBootstrapScript(config, hydrationTheme);
|
|
13029
|
+
return {
|
|
13030
|
+
attributes: ` data-theme="${initialTheme}"`,
|
|
13031
|
+
head: `<style id="${THEME_STYLE_ID}">:root[data-theme="light"]{color-scheme:light}:root[data-theme="dark"]{color-scheme:dark}</style><script id="${THEME_SCRIPT_ID}">${script}</script>`
|
|
13032
|
+
};
|
|
13033
|
+
}
|
|
13034
|
+
function createFarmThemeBootstrapScript(config, serverTheme = config.default) {
|
|
13035
|
+
return `(function(config,serverTheme){
|
|
13036
|
+
var isTheme=function(value){return value==="light"||value==="dark"||value==="system";};
|
|
13037
|
+
var decode=function(value){try{return decodeURIComponent(value);}catch(_error){return value;}};
|
|
13038
|
+
var readCookie=function(){var entries=document.cookie.split(";");for(var index=0;index<entries.length;index++){var entry=entries[index];var separator=entry.indexOf("=");if(separator<0)continue;if(decode(entry.slice(0,separator).trim())===config.storageKey)return decode(entry.slice(separator+1).trim());}};
|
|
13039
|
+
var media=window.matchMedia("(prefers-color-scheme: dark)");
|
|
13040
|
+
var resolveTheme=function(theme){return theme==="system"?(media.matches?"dark":"light"):theme;};
|
|
13041
|
+
var storedTheme=readCookie();
|
|
13042
|
+
var preference=isTheme(storedTheme)?storedTheme:config.default;
|
|
13043
|
+
var serverSnapshot={theme:serverTheme,resolvedTheme:serverTheme==="system"?undefined:serverTheme,mounted:false};
|
|
13044
|
+
var apply=function(){var resolvedTheme=resolveTheme(preference);document.documentElement.dataset.theme=resolvedTheme;var snapshot={theme:preference,resolvedTheme:resolvedTheme,mounted:true};if(window.__FARM_THEME__)window.__FARM_THEME__.snapshot=snapshot;return snapshot;};
|
|
13045
|
+
var emit=function(){var snapshot=apply();window.dispatchEvent(new CustomEvent("farm:themechange",{detail:snapshot}));};
|
|
13046
|
+
var persist=function(theme){var secure=window.location.protocol==="https:"?"; Secure":"";document.cookie=encodeURIComponent(config.storageKey)+"="+encodeURIComponent(theme)+"; Path="+config.cookiePath+"; Max-Age=31536000; SameSite=Lax"+secure;try{localStorage.setItem(config.storageKey,theme);}catch(_error){}};
|
|
13047
|
+
var setTheme=function(theme){if(!isTheme(theme))throw new TypeError("Unknown FARMJS theme: "+String(theme));preference=theme;persist(theme);emit();};
|
|
13048
|
+
var initialSnapshot={theme:preference,resolvedTheme:resolveTheme(preference),mounted:true};
|
|
13049
|
+
window.__FARM_THEME__={config:config,serverSnapshot:serverSnapshot,snapshot:initialSnapshot,setTheme:setTheme};
|
|
13050
|
+
document.documentElement.dataset.theme=initialSnapshot.resolvedTheme;
|
|
13051
|
+
var handleSystemChange=function(){if(preference==="system")emit();};
|
|
13052
|
+
if(typeof media.addEventListener==="function")media.addEventListener("change",handleSystemChange);else if(typeof media.addListener==="function")media.addListener(handleSystemChange);
|
|
13053
|
+
window.addEventListener("storage",function(event){if(event.key!==config.storageKey||!isTheme(event.newValue))return;preference=event.newValue;persist(preference);emit();});
|
|
13054
|
+
})(${serializeInlineValue(config)},${serializeInlineValue(serverTheme)});`;
|
|
13055
|
+
}
|
|
13056
|
+
function serializeInlineValue(value) {
|
|
13057
|
+
return JSON.stringify(value).replace(/</g, "\\u003c").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
13058
|
+
}
|
|
13059
|
+
var THEME_SCRIPT_ID, THEME_STYLE_ID;
|
|
13060
|
+
var init_server_runtime = __esm({
|
|
13061
|
+
"src/theme/server-runtime.ts"() {
|
|
13062
|
+
"use strict";
|
|
13063
|
+
init_config2();
|
|
13064
|
+
THEME_SCRIPT_ID = "farm-theme-script";
|
|
13065
|
+
THEME_STYLE_ID = "farm-theme-style";
|
|
13066
|
+
__name(createFarmThemeDocumentParts, "createFarmThemeDocumentParts");
|
|
13067
|
+
__name(createFarmThemeBootstrapScript, "createFarmThemeBootstrapScript");
|
|
13068
|
+
__name(serializeInlineValue, "serializeInlineValue");
|
|
13069
|
+
}
|
|
13070
|
+
});
|
|
13071
|
+
|
|
13072
|
+
// src/theme/bridge.ts
|
|
13073
|
+
function _setFarmThemeServerSnapshotResolver(resolver) {
|
|
13074
|
+
globalThis[FARM_THEME_SERVER_SNAPSHOT_RESOLVER] = resolver;
|
|
13075
|
+
}
|
|
13076
|
+
var FALLBACK_SERVER_SNAPSHOT, FARM_THEME_SERVER_SNAPSHOT_RESOLVER;
|
|
13077
|
+
var init_bridge2 = __esm({
|
|
13078
|
+
"src/theme/bridge.ts"() {
|
|
13079
|
+
"use strict";
|
|
13080
|
+
FALLBACK_SERVER_SNAPSHOT = Object.freeze({
|
|
13081
|
+
theme: "system",
|
|
13082
|
+
resolvedTheme: void 0,
|
|
13083
|
+
mounted: false
|
|
13084
|
+
});
|
|
13085
|
+
FARM_THEME_SERVER_SNAPSHOT_RESOLVER = /* @__PURE__ */ Symbol.for("farm.js.theme.server-snapshot-resolver");
|
|
13086
|
+
__name(_setFarmThemeServerSnapshotResolver, "_setFarmThemeServerSnapshotResolver");
|
|
13087
|
+
}
|
|
13088
|
+
});
|
|
13089
|
+
|
|
13090
|
+
// src/theme/server.ts
|
|
13091
|
+
function _setDefaultFarmThemeConfig(config, basePath = "/") {
|
|
13092
|
+
defaultThemeConfig = resolveFarmThemeConfig(config, basePath);
|
|
13093
|
+
}
|
|
13094
|
+
function getTheme(request = getCurrentRequest()) {
|
|
13095
|
+
return readFarmThemePreference(request, defaultThemeConfig);
|
|
13096
|
+
}
|
|
13097
|
+
function getThemeSnapshot(request = getCurrentRequest()) {
|
|
13098
|
+
const theme = readFarmThemePreference(request, defaultThemeConfig);
|
|
13099
|
+
return {
|
|
13100
|
+
theme,
|
|
13101
|
+
resolvedTheme: theme === "system" ? void 0 : theme,
|
|
13102
|
+
mounted: false
|
|
13103
|
+
};
|
|
13104
|
+
}
|
|
13105
|
+
function readFarmThemePreference(request, config) {
|
|
13106
|
+
if (!config.enabled) return config.default;
|
|
13107
|
+
const stored = readCookie3(request.headers.get("cookie"), config.storageKey);
|
|
13108
|
+
return isFarmThemePreference(stored) ? stored : config.default;
|
|
13109
|
+
}
|
|
13110
|
+
function readCookie3(cookieHeader, name) {
|
|
13111
|
+
if (!cookieHeader) return void 0;
|
|
13112
|
+
for (const entry of cookieHeader.split(";")) {
|
|
13113
|
+
const separator = entry.indexOf("=");
|
|
13114
|
+
if (separator < 0) continue;
|
|
13115
|
+
const key = decodeCookieValue(entry.slice(0, separator).trim());
|
|
13116
|
+
if (key !== name) continue;
|
|
13117
|
+
return decodeCookieValue(entry.slice(separator + 1).trim());
|
|
13118
|
+
}
|
|
13119
|
+
return void 0;
|
|
13120
|
+
}
|
|
13121
|
+
function decodeCookieValue(value) {
|
|
13122
|
+
try {
|
|
13123
|
+
return decodeURIComponent(value);
|
|
13124
|
+
} catch {
|
|
13125
|
+
return value;
|
|
13126
|
+
}
|
|
13127
|
+
}
|
|
13128
|
+
function isFarmThemePreference(value) {
|
|
13129
|
+
return value === "light" || value === "dark" || value === "system";
|
|
13130
|
+
}
|
|
13131
|
+
var defaultThemeConfig;
|
|
13132
|
+
var init_server3 = __esm({
|
|
13133
|
+
"src/theme/server.ts"() {
|
|
13134
|
+
"use strict";
|
|
13135
|
+
init_request();
|
|
13136
|
+
init_bridge2();
|
|
13137
|
+
init_config2();
|
|
13138
|
+
defaultThemeConfig = resolveFarmThemeConfig(void 0);
|
|
13139
|
+
__name(_setDefaultFarmThemeConfig, "_setDefaultFarmThemeConfig");
|
|
13140
|
+
__name(getTheme, "getTheme");
|
|
13141
|
+
__name(getThemeSnapshot, "getThemeSnapshot");
|
|
13142
|
+
__name(readFarmThemePreference, "readFarmThemePreference");
|
|
13143
|
+
__name(readCookie3, "readCookie");
|
|
13144
|
+
__name(decodeCookieValue, "decodeCookieValue");
|
|
13145
|
+
__name(isFarmThemePreference, "isFarmThemePreference");
|
|
13146
|
+
_setFarmThemeServerSnapshotResolver(() => {
|
|
13147
|
+
try {
|
|
13148
|
+
return getThemeSnapshot();
|
|
13149
|
+
} catch {
|
|
13150
|
+
const theme = defaultThemeConfig.default;
|
|
13151
|
+
return {
|
|
13152
|
+
theme,
|
|
13153
|
+
resolvedTheme: theme === "system" ? void 0 : theme,
|
|
13154
|
+
mounted: false
|
|
13155
|
+
};
|
|
13156
|
+
}
|
|
13157
|
+
});
|
|
13158
|
+
}
|
|
13159
|
+
});
|
|
13160
|
+
|
|
12964
13161
|
// src/server/renderer.ts
|
|
12965
13162
|
function hasRequestHeader(req, name) {
|
|
12966
13163
|
const value = req.headers[name.toLowerCase()];
|
|
12967
13164
|
return Array.isArray(value) ? value.length > 0 : Boolean(value);
|
|
12968
13165
|
}
|
|
12969
|
-
function
|
|
13166
|
+
function serializeInlineValue2(value) {
|
|
12970
13167
|
return JSON.stringify(value).replace(/</g, "\\u003c").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
12971
13168
|
}
|
|
12972
13169
|
function escapeHtmlAttribute2(value) {
|
|
@@ -13053,7 +13250,7 @@ function createDocumentFooter(options) {
|
|
|
13053
13250
|
}
|
|
13054
13251
|
function createDeferredHydrationScript(records) {
|
|
13055
13252
|
if (records.length === 0) return "";
|
|
13056
|
-
return `<script>window.__FARM_DEFERRED_DATA__=${
|
|
13253
|
+
return `<script>window.__FARM_DEFERRED_DATA__=${serializeInlineValue2(
|
|
13057
13254
|
snapshotDeferredData(records)
|
|
13058
13255
|
)};</script>`;
|
|
13059
13256
|
}
|
|
@@ -13146,10 +13343,12 @@ var init_renderer = __esm({
|
|
|
13146
13343
|
init_font_vite();
|
|
13147
13344
|
init_metadata_image();
|
|
13148
13345
|
init_not_found();
|
|
13346
|
+
init_server_runtime();
|
|
13347
|
+
init_server3();
|
|
13149
13348
|
cachedClerkProvider = null;
|
|
13150
13349
|
importRuntimeModule = new Function("specifier", "return import(specifier);");
|
|
13151
13350
|
__name(hasRequestHeader, "hasRequestHeader");
|
|
13152
|
-
__name(
|
|
13351
|
+
__name(serializeInlineValue2, "serializeInlineValue");
|
|
13153
13352
|
__name(escapeHtmlAttribute2, "escapeHtmlAttribute");
|
|
13154
13353
|
__name(appendResponseHeader, "appendResponseHeader");
|
|
13155
13354
|
__name(appendResponseVary, "appendResponseVary");
|
|
@@ -14237,9 +14436,9 @@ var init_renderer = __esm({
|
|
|
14237
14436
|
slots: routeSlotPayload
|
|
14238
14437
|
});
|
|
14239
14438
|
const propsScript = `<script>
|
|
14240
|
-
window.__FARM_PROPS__ = ${
|
|
14241
|
-
window.__FARM_ROUTE_SLOTS__ = ${
|
|
14242
|
-
window.__FARM_DEPLOYMENT_ID__ = ${
|
|
14439
|
+
window.__FARM_PROPS__ = ${serializeInlineValue2(deferredProps.data.page)};
|
|
14440
|
+
window.__FARM_ROUTE_SLOTS__ = ${serializeInlineValue2(deferredProps.data.slots)};
|
|
14441
|
+
window.__FARM_DEPLOYMENT_ID__ = ${serializeInlineValue2(deploymentId)};
|
|
14243
14442
|
window.__FARM_PATH__ = ${JSON.stringify(req.__FARM_ROUTE__ || req.url || "/")};
|
|
14244
14443
|
window.__FARM_IS_CLIENT__ = ${JSON.stringify(isClientComponent)};
|
|
14245
14444
|
window.__FARM_PAGE_SHOULD_HYDRATE__ = ${JSON.stringify(
|
|
@@ -14257,7 +14456,7 @@ window.__FARM_LOADING_MODULE__ = ${JSON.stringify(
|
|
|
14257
14456
|
)};
|
|
14258
14457
|
window.__FARM_MANIFEST__ = ${JSON.stringify(clientManifest)};
|
|
14259
14458
|
window.__FARM_INTEGRATION_API_MANIFEST__ = ${JSON.stringify(getRegisteredIntegrationAPIManifest())};
|
|
14260
|
-
${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${
|
|
14459
|
+
${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(getFarmI18nClientSnapshot())};` : ""}
|
|
14261
14460
|
</script>`;
|
|
14262
14461
|
const hydrationClickQueueScript = isClientComponent || req.__FARM_SHOULD_HYDRATE__ === true || req.__FARM_HAS_HYDRATABLE_ROUTE_SLOTS__ === true ? createPreHydrationClickQueueScript() : "";
|
|
14263
14462
|
const {
|
|
@@ -14268,6 +14467,11 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
|
|
|
14268
14467
|
const i18nSnapshot = getFarmI18nClientSnapshot();
|
|
14269
14468
|
const i18nAlternateTags = i18nSnapshot ? renderI18nAlternateLinks(req.__FARM_ROUTE__ || req.url || "/", i18nSnapshot) : "";
|
|
14270
14469
|
const fontHead = renderFarmFontDevHead(this.config.root || process.cwd());
|
|
14470
|
+
const themeDocument = createFarmThemeDocumentParts(
|
|
14471
|
+
this.config.theme,
|
|
14472
|
+
this.config.basePath,
|
|
14473
|
+
getTheme()
|
|
14474
|
+
);
|
|
14271
14475
|
const streamRoot = import_react5.default.createElement("div", { style: { display: "contents" } }, element);
|
|
14272
14476
|
const { pipe } = (0, import_server2.renderToPipeableStream)(streamRoot, {
|
|
14273
14477
|
onShellReady() {
|
|
@@ -14281,8 +14485,9 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
|
|
|
14281
14485
|
console.log(`[FARM STREAM] onShellReady at ${shellReadyMs}ms`);
|
|
14282
14486
|
}
|
|
14283
14487
|
const shell = `<!DOCTYPE html>
|
|
14284
|
-
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}>
|
|
14488
|
+
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
|
|
14285
14489
|
<head>
|
|
14490
|
+
${themeDocument.head}
|
|
14286
14491
|
<meta charset="utf-8">
|
|
14287
14492
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
14288
14493
|
<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(deploymentId)}">
|
|
@@ -14484,15 +14689,21 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
|
|
|
14484
14689
|
const i18nSnapshot = getFarmI18nClientSnapshot();
|
|
14485
14690
|
const clientScript = isClientComponent ? ` <script type="module" src="/@farm/client.js"></script>` : "";
|
|
14486
14691
|
const integrationManifestScript = `<script>
|
|
14487
|
-
window.__FARM_DEPLOYMENT_ID__ = ${
|
|
14692
|
+
window.__FARM_DEPLOYMENT_ID__ = ${serializeInlineValue2(this.getDeploymentId())};
|
|
14488
14693
|
window.__FARM_INTEGRATION_API_MANIFEST__ = ${JSON.stringify(getRegisteredIntegrationAPIManifest())};
|
|
14489
|
-
${i18nSnapshot ? `window.__FARM_I18N__ = ${
|
|
14694
|
+
${i18nSnapshot ? `window.__FARM_I18N__ = ${serializeInlineValue2(i18nSnapshot)};` : ""}
|
|
14490
14695
|
</script>`;
|
|
14491
14696
|
const alternateLinks = i18nSnapshot ? renderI18nAlternateLinks(requestPath, i18nSnapshot) : "";
|
|
14492
14697
|
const fontHead = renderFarmFontDevHead(this.config.root || process.cwd());
|
|
14698
|
+
const themeDocument = createFarmThemeDocumentParts(
|
|
14699
|
+
this.config.theme,
|
|
14700
|
+
this.config.basePath,
|
|
14701
|
+
getTheme()
|
|
14702
|
+
);
|
|
14493
14703
|
return `<!DOCTYPE html>
|
|
14494
|
-
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}>
|
|
14704
|
+
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
|
|
14495
14705
|
<head>
|
|
14706
|
+
${themeDocument.head}
|
|
14496
14707
|
<meta charset="utf-8">
|
|
14497
14708
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
14498
14709
|
<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(this.getDeploymentId())}">
|
|
@@ -14576,6 +14787,8 @@ var init_app = __esm({
|
|
|
14576
14787
|
init_auth_config();
|
|
14577
14788
|
init_preload();
|
|
14578
14789
|
init_security();
|
|
14790
|
+
init_config2();
|
|
14791
|
+
init_server3();
|
|
14579
14792
|
defaultDocsConfig = {
|
|
14580
14793
|
enabled: false,
|
|
14581
14794
|
entry: "/docs",
|
|
@@ -14586,6 +14799,7 @@ var init_app = __esm({
|
|
|
14586
14799
|
constructor(config = {}, viteServer) {
|
|
14587
14800
|
this.config = this.normalizeConfig(config);
|
|
14588
14801
|
configureFarmObservability(this.config.observability);
|
|
14802
|
+
_setDefaultFarmThemeConfig(this.config.theme);
|
|
14589
14803
|
this.i18nRuntime = createFarmI18nRuntime(this.config.i18n);
|
|
14590
14804
|
_setDefaultFarmI18nRuntime(this.i18nRuntime);
|
|
14591
14805
|
this.viteServer = viteServer;
|
|
@@ -14644,6 +14858,7 @@ var init_app = __esm({
|
|
|
14644
14858
|
security: resolveFarmSecurityConfig(config.security),
|
|
14645
14859
|
images: resolveFarmImageConfig(config.images),
|
|
14646
14860
|
performance: resolveFarmPerformanceConfig(config.performance),
|
|
14861
|
+
theme: resolveFarmThemeConfig(config.theme, config.basePath || "/"),
|
|
14647
14862
|
i18n: isResolvedI18nConfig(config.i18n) ? config.i18n : resolveFarmI18nConfig(config.i18n, {
|
|
14648
14863
|
root,
|
|
14649
14864
|
mode: process.env.NODE_ENV === "production" ? "production" : "development"
|
|
@@ -16409,6 +16624,36 @@ var init_vite_config = __esm({
|
|
|
16409
16624
|
}
|
|
16410
16625
|
});
|
|
16411
16626
|
|
|
16627
|
+
// src/theme/vite.ts
|
|
16628
|
+
function createFarmThemeCssPlugin(input, basePath = "/") {
|
|
16629
|
+
const config = resolveFarmThemeConfig(input, basePath);
|
|
16630
|
+
return {
|
|
16631
|
+
name: "farm:theme-css",
|
|
16632
|
+
enforce: "pre",
|
|
16633
|
+
transform(code, id) {
|
|
16634
|
+
if (!config.enabled || !/\.css(?:\?.*)?$/.test(id) || !/@import\s+["']tailwindcss["']/.test(code) || /@custom-variant\s+dark\b/.test(code)) {
|
|
16635
|
+
return null;
|
|
16636
|
+
}
|
|
16637
|
+
return {
|
|
16638
|
+
code: `${code.trimEnd()}
|
|
16639
|
+
|
|
16640
|
+
${FARM_DARK_VARIANT}
|
|
16641
|
+
`,
|
|
16642
|
+
map: null
|
|
16643
|
+
};
|
|
16644
|
+
}
|
|
16645
|
+
};
|
|
16646
|
+
}
|
|
16647
|
+
var FARM_DARK_VARIANT;
|
|
16648
|
+
var init_vite = __esm({
|
|
16649
|
+
"src/theme/vite.ts"() {
|
|
16650
|
+
"use strict";
|
|
16651
|
+
init_config2();
|
|
16652
|
+
FARM_DARK_VARIANT = '@custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));';
|
|
16653
|
+
__name(createFarmThemeCssPlugin, "createFarmThemeCssPlugin");
|
|
16654
|
+
}
|
|
16655
|
+
});
|
|
16656
|
+
|
|
16412
16657
|
// src/default-styles.ts
|
|
16413
16658
|
var defaultGlobalCSS;
|
|
16414
16659
|
var init_default_styles = __esm({
|
|
@@ -18081,7 +18326,7 @@ var init_type_artifacts = __esm({
|
|
|
18081
18326
|
var version;
|
|
18082
18327
|
var init_package = __esm({
|
|
18083
18328
|
"package.json"() {
|
|
18084
|
-
version = "0.1.0-beta.
|
|
18329
|
+
version = "0.1.0-beta.23";
|
|
18085
18330
|
}
|
|
18086
18331
|
});
|
|
18087
18332
|
|
|
@@ -22495,7 +22740,7 @@ var init_api = __esm({
|
|
|
22495
22740
|
"src/docs/api.ts"() {
|
|
22496
22741
|
"use strict";
|
|
22497
22742
|
import_docs2 = require("@farming-labs/docs");
|
|
22498
|
-
|
|
22743
|
+
init_config3();
|
|
22499
22744
|
init_handler();
|
|
22500
22745
|
__name(isRecord4, "isRecord");
|
|
22501
22746
|
__name(isResolvedDocsConfig2, "isResolvedDocsConfig");
|
|
@@ -23480,7 +23725,7 @@ var init_devtools = __esm({
|
|
|
23480
23725
|
"src/devtools.ts"() {
|
|
23481
23726
|
"use strict";
|
|
23482
23727
|
import_node_path14 = __toESM(require("path"));
|
|
23483
|
-
|
|
23728
|
+
init_config3();
|
|
23484
23729
|
init_cron();
|
|
23485
23730
|
init_route_runtime();
|
|
23486
23731
|
__name(normalizePath, "normalizePath");
|
|
@@ -28458,14 +28703,22 @@ async function renderPage(pageData) {
|
|
|
28458
28703
|
if (!doc.documentElement || !doc.body) return false;
|
|
28459
28704
|
|
|
28460
28705
|
resetReactRoots();
|
|
28706
|
+
const activeFarmTheme =
|
|
28707
|
+
window.__FARM_THEME__?.snapshot?.resolvedTheme ||
|
|
28708
|
+
document.documentElement.getAttribute('data-theme');
|
|
28461
28709
|
Array.from(document.documentElement.attributes).forEach(function(attr) {
|
|
28710
|
+
if (attr.name === 'data-theme') return;
|
|
28462
28711
|
if (!doc.documentElement.hasAttribute(attr.name)) {
|
|
28463
28712
|
document.documentElement.removeAttribute(attr.name);
|
|
28464
28713
|
}
|
|
28465
28714
|
});
|
|
28466
28715
|
Array.from(doc.documentElement.attributes).forEach(function(attr) {
|
|
28716
|
+
if (attr.name === 'data-theme') return;
|
|
28467
28717
|
document.documentElement.setAttribute(attr.name, attr.value);
|
|
28468
28718
|
});
|
|
28719
|
+
if (activeFarmTheme) {
|
|
28720
|
+
document.documentElement.setAttribute('data-theme', activeFarmTheme);
|
|
28721
|
+
}
|
|
28469
28722
|
|
|
28470
28723
|
document.head.innerHTML = doc.head ? doc.head.innerHTML : '';
|
|
28471
28724
|
document.body.innerHTML = doc.body.innerHTML;
|
|
@@ -28474,6 +28727,7 @@ async function renderPage(pageData) {
|
|
|
28474
28727
|
|
|
28475
28728
|
setTimeout(function() {
|
|
28476
28729
|
Array.from(document.querySelectorAll('script')).forEach(function(script) {
|
|
28730
|
+
if (script.id === 'farm-theme-script') return;
|
|
28477
28731
|
const freshScript = document.createElement('script');
|
|
28478
28732
|
Array.from(script.attributes).forEach(function(attr) {
|
|
28479
28733
|
freshScript.setAttribute(attr.name, attr.value);
|
|
@@ -28968,6 +29222,7 @@ async function defineConfig2(config = {}) {
|
|
|
28968
29222
|
};
|
|
28969
29223
|
return {
|
|
28970
29224
|
plugins: [
|
|
29225
|
+
createFarmThemeCssPlugin(config.theme, config.basePath),
|
|
28971
29226
|
tailwindcss(),
|
|
28972
29227
|
viteBrowserExternalPlugin,
|
|
28973
29228
|
farmI18nClientBridgePlugin(),
|
|
@@ -29040,7 +29295,7 @@ async function defineConfig2(config = {}) {
|
|
|
29040
29295
|
};
|
|
29041
29296
|
}
|
|
29042
29297
|
var fs7, path27, ALL_TYPE_ARTIFACTS, createEmptyTypeArtifactSelection, FARM_I18N_CLIENT_BRIDGE_ID, EMPTY_FARM_DOCS_SEARCH_CLIENT_RUNTIME, FARM_CONFIG_FILENAMES;
|
|
29043
|
-
var
|
|
29298
|
+
var init_vite2 = __esm({
|
|
29044
29299
|
"src/vite.ts"() {
|
|
29045
29300
|
"use strict";
|
|
29046
29301
|
init_app();
|
|
@@ -29077,6 +29332,7 @@ var init_vite = __esm({
|
|
|
29077
29332
|
init_fonts();
|
|
29078
29333
|
init_server_http();
|
|
29079
29334
|
init_cli_colors();
|
|
29335
|
+
init_vite();
|
|
29080
29336
|
ALL_TYPE_ARTIFACTS = {
|
|
29081
29337
|
routes: true,
|
|
29082
29338
|
api: true,
|
|
@@ -29176,7 +29432,7 @@ var init_plugin = __esm({
|
|
|
29176
29432
|
init_env();
|
|
29177
29433
|
init_request_context();
|
|
29178
29434
|
init_plugin_integration_context();
|
|
29179
|
-
|
|
29435
|
+
init_vite2();
|
|
29180
29436
|
_FarmRuntimeShutdownError = class _FarmRuntimeShutdownError extends Error {
|
|
29181
29437
|
constructor(message, errors) {
|
|
29182
29438
|
super(message);
|
|
@@ -30521,7 +30777,7 @@ __export(build_runtime_exports, {
|
|
|
30521
30777
|
module.exports = __toCommonJS(build_runtime_exports);
|
|
30522
30778
|
|
|
30523
30779
|
// src/build/index.ts
|
|
30524
|
-
|
|
30780
|
+
init_config3();
|
|
30525
30781
|
var import_path14 = __toESM(require("path"));
|
|
30526
30782
|
init_utils();
|
|
30527
30783
|
init_app();
|
|
@@ -30529,7 +30785,7 @@ init_route_manager2();
|
|
|
30529
30785
|
init_layers();
|
|
30530
30786
|
|
|
30531
30787
|
// src/nitro/universal-build.ts
|
|
30532
|
-
|
|
30788
|
+
init_config3();
|
|
30533
30789
|
init_client_plugin_build();
|
|
30534
30790
|
var import_os = __toESM(require("os"));
|
|
30535
30791
|
var import_path12 = __toESM(require("path"));
|
|
@@ -31065,6 +31321,7 @@ __name(withVite5TransformContext, "withVite5TransformContext");
|
|
|
31065
31321
|
init_font_vite();
|
|
31066
31322
|
init_vite_config();
|
|
31067
31323
|
init_not_found();
|
|
31324
|
+
init_vite();
|
|
31068
31325
|
var import_meta = {};
|
|
31069
31326
|
function preloadFarmNitroRuntime() {
|
|
31070
31327
|
return import("nitro").then(
|
|
@@ -31737,7 +31994,7 @@ async function validateClientBuildOutput(root, srcDir, outputDir) {
|
|
|
31737
31994
|
__name(validateClientBuildOutput, "validateClientBuildOutput");
|
|
31738
31995
|
async function buildClient(productionVite, config, root, srcDir, outputDir, pageRoutes, layoutRoutes = [], routeSlots = []) {
|
|
31739
31996
|
const viteBuild = productionVite.build;
|
|
31740
|
-
const { farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (
|
|
31997
|
+
const { farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (init_vite2(), vite_exports));
|
|
31741
31998
|
const { PluginManager: PluginManager2 } = await Promise.resolve().then(() => (init_plugin(), plugin_exports));
|
|
31742
31999
|
const fs8 = await import("fs/promises");
|
|
31743
32000
|
const pluginManager = new PluginManager2({
|
|
@@ -31929,6 +32186,7 @@ async function buildClient(productionVite, config, root, srcDir, outputDir, page
|
|
|
31929
32186
|
}
|
|
31930
32187
|
},
|
|
31931
32188
|
plugins: [
|
|
32189
|
+
createFarmThemeCssPlugin(config.theme, config.basePath),
|
|
31932
32190
|
...tailwindVitePlugin ? [tailwindVitePlugin] : [],
|
|
31933
32191
|
// Plugin to redirect @farm.js/core imports to client-only exports
|
|
31934
32192
|
{
|
|
@@ -33306,7 +33564,7 @@ void hydrate();
|
|
|
33306
33564
|
__name(generateClientHydrationEntry, "generateClientHydrationEntry");
|
|
33307
33565
|
async function buildSSRInMemory(productionVite, config, root, routeManager, apiRouteManager, serverRenderer, preset, collectedPageRoutes, collectedLayoutRoutes, collectedRouteSlots) {
|
|
33308
33566
|
const viteBuild = productionVite.build;
|
|
33309
|
-
const { farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (
|
|
33567
|
+
const { farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (init_vite2(), vite_exports));
|
|
33310
33568
|
const { PluginManager: PluginManager2 } = await Promise.resolve().then(() => (init_plugin(), plugin_exports));
|
|
33311
33569
|
const fs8 = await import("fs/promises");
|
|
33312
33570
|
const pluginManager = new PluginManager2({
|
|
@@ -33547,6 +33805,7 @@ async function buildSSRInMemory(productionVite, config, root, routeManager, apiR
|
|
|
33547
33805
|
__FARM_PUBLIC_ENV__: JSON.stringify(config.env?.public || {})
|
|
33548
33806
|
},
|
|
33549
33807
|
plugins: [
|
|
33808
|
+
createFarmThemeCssPlugin(config.theme, config.basePath),
|
|
33550
33809
|
...tailwindVitePlugin ? [tailwindVitePlugin] : [],
|
|
33551
33810
|
...!useExternalMetadataImageRuntime && metadataImageRoutes.some((image) => image.sourceType === "module") ? [createMetadataImageWasmPlugin()] : [],
|
|
33552
33811
|
{
|
|
@@ -33760,15 +34019,19 @@ function generateVirtualEntryCode(apiRoutes, pageRoutes, layoutRoutes, routeSlot
|
|
|
33760
34019
|
_runWithCurrentRequest,
|
|
33761
34020
|
_runWithMiddlewareContext,
|
|
33762
34021
|
_runWithMiddlewareData,
|
|
34022
|
+
_setDefaultFarmThemeConfig,
|
|
33763
34023
|
addMetadataImageReference,
|
|
34024
|
+
applyFarmThemeDocument,
|
|
33764
34025
|
appendFarmLinkHeader,
|
|
33765
34026
|
applyProductionMiddlewareHeaders,
|
|
33766
34027
|
configureFarmCache,
|
|
33767
34028
|
configureFarmObservability,
|
|
33768
34029
|
createFarmCacheKey,
|
|
34030
|
+
createFarmThemeDocumentParts,
|
|
33769
34031
|
createFarmLocaleCookie,
|
|
33770
34032
|
createFarmProductionLifecycle,
|
|
33771
34033
|
createProductionMiddlewareRunner,
|
|
34034
|
+
getTheme as getFarmTheme,
|
|
33772
34035
|
emitFarmEvent,
|
|
33773
34036
|
getFarmDataCache,
|
|
33774
34037
|
getFarmLocaleVaryHeaders,
|
|
@@ -33963,6 +34226,8 @@ configureFarmObservability(farmObservabilityConfig);
|
|
|
33963
34226
|
configureFarmCache(farmResolvedRuntimeConfig.cache);
|
|
33964
34227
|
const farmI18nConfig = ${JSON.stringify(config.i18n)};
|
|
33965
34228
|
const farmServerConfig = ${JSON.stringify(config.server)};
|
|
34229
|
+
const farmThemeConfig = ${JSON.stringify(config.theme)};
|
|
34230
|
+
_setDefaultFarmThemeConfig(farmThemeConfig);
|
|
33966
34231
|
export const farmProductionLifecycle = createFarmProductionLifecycle({
|
|
33967
34232
|
server: farmServerConfig,
|
|
33968
34233
|
start: () => farmPluginRuntime?.startRuntime(),
|
|
@@ -35799,7 +36064,13 @@ async function handleFarmRequestInContext(
|
|
|
35799
36064
|
!farmI18nSnapshot &&
|
|
35800
36065
|
!pprCacheKey
|
|
35801
36066
|
) {
|
|
36067
|
+
const farmThemeDocument = createFarmThemeDocumentParts(
|
|
36068
|
+
farmThemeConfig,
|
|
36069
|
+
farmResolvedRuntimeConfig.basePath,
|
|
36070
|
+
getFarmTheme(request)
|
|
36071
|
+
);
|
|
35802
36072
|
const streamPrefix = '<!DOCTYPE html>\\n<html lang="en">\\n<head>\\n' +
|
|
36073
|
+
farmThemeDocument.head + '\\n' +
|
|
35803
36074
|
' <meta charset="utf-8">\\n' +
|
|
35804
36075
|
' <meta name="viewport" content="width=device-width, initial-scale=1">\\n' +
|
|
35805
36076
|
(hasFavicon ? '' : ' <link rel="icon" href="data:,">\\n') +
|
|
@@ -35815,9 +36086,13 @@ async function handleFarmRequestInContext(
|
|
|
35815
36086
|
) + '\\n' +
|
|
35816
36087
|
' <script type="module" src="/farm-client.js"></script>\\n' +
|
|
35817
36088
|
'</body>\\n</html>';
|
|
36089
|
+
const themedStreamPrefix = streamPrefix.replace(
|
|
36090
|
+
'<html lang="en">',
|
|
36091
|
+
'<html lang="en"' + farmThemeDocument.attributes + '>'
|
|
36092
|
+
);
|
|
35818
36093
|
const streamedDocument = createFarmDocumentStream(
|
|
35819
36094
|
renderedPage.stream,
|
|
35820
|
-
|
|
36095
|
+
themedStreamPrefix,
|
|
35821
36096
|
streamSuffix,
|
|
35822
36097
|
function() {
|
|
35823
36098
|
if (pprBypassReason === "refresh") {
|
|
@@ -35900,6 +36175,12 @@ async function handleFarmRequestInContext(
|
|
|
35900
36175
|
</html>\`;
|
|
35901
36176
|
}
|
|
35902
36177
|
fullHtml = applyFarmI18nDocument(fullHtml, pathname, farmI18nSnapshot);
|
|
36178
|
+
fullHtml = applyFarmThemeDocument(
|
|
36179
|
+
fullHtml,
|
|
36180
|
+
farmThemeConfig,
|
|
36181
|
+
farmResolvedRuntimeConfig.basePath,
|
|
36182
|
+
getFarmTheme(request)
|
|
36183
|
+
);
|
|
35903
36184
|
|
|
35904
36185
|
if (pageStatus === 200 && pprCacheKey && request.method.toUpperCase() !== "HEAD") {
|
|
35905
36186
|
await pprShellCache.setAsync(
|
|
@@ -36026,10 +36307,15 @@ async function handleFarmRequestInContext(
|
|
|
36026
36307
|
const errorHtml = ${hasMiddlewareRuntime ? `await _runWithMiddlewareData(middlewareData, () =>
|
|
36027
36308
|
_runWithMiddlewareContext(middlewareContext, renderErrorElement)
|
|
36028
36309
|
)` : "await renderErrorElement()"};
|
|
36029
|
-
const errorDocument =
|
|
36030
|
-
|
|
36031
|
-
|
|
36032
|
-
|
|
36310
|
+
const errorDocument = applyFarmThemeDocument(
|
|
36311
|
+
applyFarmI18nDocument(
|
|
36312
|
+
createFarmErrorDocument(errorHtml, "Application Error"),
|
|
36313
|
+
pathname,
|
|
36314
|
+
getFarmI18nSnapshot()
|
|
36315
|
+
),
|
|
36316
|
+
farmThemeConfig,
|
|
36317
|
+
farmResolvedRuntimeConfig.basePath,
|
|
36318
|
+
getFarmTheme(request)
|
|
36033
36319
|
);
|
|
36034
36320
|
emitFarmEvent({
|
|
36035
36321
|
type: "render.complete",
|
|
@@ -36054,10 +36340,15 @@ async function handleFarmRequestInContext(
|
|
|
36054
36340
|
const errorMessage = "Internal Server Error";
|
|
36055
36341
|
const fallbackHtml = '<main><h1>Application Error</h1><p>' +
|
|
36056
36342
|
escapeFarmHtmlAttribute(errorMessage) + '</p></main>';
|
|
36057
|
-
const fallbackDocument =
|
|
36058
|
-
|
|
36059
|
-
|
|
36060
|
-
|
|
36343
|
+
const fallbackDocument = applyFarmThemeDocument(
|
|
36344
|
+
applyFarmI18nDocument(
|
|
36345
|
+
createFarmErrorDocument(fallbackHtml, "Application Error"),
|
|
36346
|
+
pathname,
|
|
36347
|
+
getFarmI18nSnapshot()
|
|
36348
|
+
),
|
|
36349
|
+
farmThemeConfig,
|
|
36350
|
+
farmResolvedRuntimeConfig.basePath,
|
|
36351
|
+
getFarmTheme(request)
|
|
36061
36352
|
);
|
|
36062
36353
|
return applyProductionMiddlewareHeaders(new Response(
|
|
36063
36354
|
fallbackDocument,
|
|
@@ -36155,6 +36446,12 @@ async function handleFarmRequestInContext(
|
|
|
36155
36446
|
</html>\`;
|
|
36156
36447
|
}
|
|
36157
36448
|
fullHtml = applyFarmI18nDocument(fullHtml, pathname, getFarmI18nSnapshot());
|
|
36449
|
+
fullHtml = applyFarmThemeDocument(
|
|
36450
|
+
fullHtml,
|
|
36451
|
+
farmThemeConfig,
|
|
36452
|
+
farmResolvedRuntimeConfig.basePath,
|
|
36453
|
+
getFarmTheme(request)
|
|
36454
|
+
);
|
|
36158
36455
|
|
|
36159
36456
|
emitFarmEvent({
|
|
36160
36457
|
type: "render.complete",
|
|
@@ -36173,8 +36470,14 @@ async function handleFarmRequestInContext(
|
|
|
36173
36470
|
}), middlewareHeaders);
|
|
36174
36471
|
} catch (error) {
|
|
36175
36472
|
console.error("404 render error:", error);
|
|
36176
|
-
|
|
36473
|
+
const fallbackDocument = applyFarmThemeDocument(
|
|
36177
36474
|
\`<!DOCTYPE html><html><head><title>404</title></head><body><h1>404 - Page Not Found</h1><p>The page \${pathname} doesn't exist.</p><a href="/">Go Home</a></body></html>\`,
|
|
36475
|
+
farmThemeConfig,
|
|
36476
|
+
farmResolvedRuntimeConfig.basePath,
|
|
36477
|
+
getFarmTheme(request)
|
|
36478
|
+
);
|
|
36479
|
+
return applyProductionMiddlewareHeaders(new Response(
|
|
36480
|
+
fallbackDocument,
|
|
36178
36481
|
{
|
|
36179
36482
|
status: 404,
|
|
36180
36483
|
headers: { "Content-Type": "text/html", "x-farm-preload-buffered": "1" },
|
|
@@ -37401,7 +37704,7 @@ async function createProjectModuleServer(createViteServer, config, root) {
|
|
|
37401
37704
|
}
|
|
37402
37705
|
__name(createProjectModuleServer, "createProjectModuleServer");
|
|
37403
37706
|
async function buildClient2(viteBuild, config, root, srcDir, outputDir) {
|
|
37404
|
-
const { farmI18nClientBridgePlugin: farmI18nClientBridgePlugin2, farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (
|
|
37707
|
+
const { farmI18nClientBridgePlugin: farmI18nClientBridgePlugin2, farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (init_vite2(), vite_exports));
|
|
37405
37708
|
const { PluginManager: PluginManager2 } = await Promise.resolve().then(() => (init_plugin(), plugin_exports));
|
|
37406
37709
|
const pluginManager = new PluginManager2({
|
|
37407
37710
|
config,
|
|
@@ -37428,7 +37731,7 @@ async function buildClient2(viteBuild, config, root, srcDir, outputDir) {
|
|
|
37428
37731
|
}
|
|
37429
37732
|
__name(buildClient2, "buildClient");
|
|
37430
37733
|
async function buildSSR(viteBuild, config, root, srcDir, outputDir) {
|
|
37431
|
-
const { farmI18nClientBridgePlugin: farmI18nClientBridgePlugin2, farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (
|
|
37734
|
+
const { farmI18nClientBridgePlugin: farmI18nClientBridgePlugin2, farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (init_vite2(), vite_exports));
|
|
37432
37735
|
const { PluginManager: PluginManager2 } = await Promise.resolve().then(() => (init_plugin(), plugin_exports));
|
|
37433
37736
|
const pluginManager = new PluginManager2({
|
|
37434
37737
|
config,
|
|
@@ -37553,7 +37856,7 @@ async function buildNitro(config, routeManager, apiRouteManager, serverRenderer,
|
|
|
37553
37856
|
__name(buildNitro, "buildNitro");
|
|
37554
37857
|
|
|
37555
37858
|
// src/nitro/build-runtime.ts
|
|
37556
|
-
|
|
37859
|
+
init_config3();
|
|
37557
37860
|
init_utils();
|
|
37558
37861
|
// Annotate the CommonJS export names for ESM import in node:
|
|
37559
37862
|
0 && (module.exports = {
|