@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
package/dist/plugin.cjs
CHANGED
|
@@ -4152,6 +4152,52 @@ var init_config = __esm({
|
|
|
4152
4152
|
}
|
|
4153
4153
|
});
|
|
4154
4154
|
|
|
4155
|
+
// src/theme/config.ts
|
|
4156
|
+
function resolveFarmThemeConfig(config, basePath = "/") {
|
|
4157
|
+
if (config && "enabled" in config) {
|
|
4158
|
+
return config;
|
|
4159
|
+
}
|
|
4160
|
+
if (!config) {
|
|
4161
|
+
return {
|
|
4162
|
+
enabled: false,
|
|
4163
|
+
default: "system",
|
|
4164
|
+
storageKey: DEFAULT_FARM_THEME_STORAGE_KEY,
|
|
4165
|
+
cookiePath: normalizeCookiePath(basePath)
|
|
4166
|
+
};
|
|
4167
|
+
}
|
|
4168
|
+
const storageKey = config.storageKey?.trim() || DEFAULT_FARM_THEME_STORAGE_KEY;
|
|
4169
|
+
if (!STORAGE_KEY_PATTERN.test(storageKey)) {
|
|
4170
|
+
throw new Error(
|
|
4171
|
+
"theme.storageKey may only contain letters, numbers, dots, underscores, and hyphens."
|
|
4172
|
+
);
|
|
4173
|
+
}
|
|
4174
|
+
const defaultTheme = config.default ?? "system";
|
|
4175
|
+
if (defaultTheme !== "light" && defaultTheme !== "dark" && defaultTheme !== "system") {
|
|
4176
|
+
throw new Error('theme.default must be "light", "dark", or "system".');
|
|
4177
|
+
}
|
|
4178
|
+
return {
|
|
4179
|
+
enabled: true,
|
|
4180
|
+
default: defaultTheme,
|
|
4181
|
+
storageKey,
|
|
4182
|
+
cookiePath: normalizeCookiePath(basePath)
|
|
4183
|
+
};
|
|
4184
|
+
}
|
|
4185
|
+
function normalizeCookiePath(basePath) {
|
|
4186
|
+
const normalized = `/${basePath}`.replace(/\/{2,}/g, "/");
|
|
4187
|
+
if (normalized === "/") return normalized;
|
|
4188
|
+
return normalized.replace(/\/$/, "");
|
|
4189
|
+
}
|
|
4190
|
+
var DEFAULT_FARM_THEME_STORAGE_KEY, STORAGE_KEY_PATTERN;
|
|
4191
|
+
var init_config2 = __esm({
|
|
4192
|
+
"src/theme/config.ts"() {
|
|
4193
|
+
"use strict";
|
|
4194
|
+
DEFAULT_FARM_THEME_STORAGE_KEY = "farm-theme";
|
|
4195
|
+
STORAGE_KEY_PATTERN = /^[A-Za-z0-9._-]+$/;
|
|
4196
|
+
__name(resolveFarmThemeConfig, "resolveFarmThemeConfig");
|
|
4197
|
+
__name(normalizeCookiePath, "normalizeCookiePath");
|
|
4198
|
+
}
|
|
4199
|
+
});
|
|
4200
|
+
|
|
4155
4201
|
// src/devtools-config.ts
|
|
4156
4202
|
function resolveFarmDevtoolsConfig(config, mode = "development") {
|
|
4157
4203
|
if (mode !== "development" || config === false) {
|
|
@@ -8934,7 +8980,7 @@ async function resolveDocsConfig(userDocs, options = {}) {
|
|
|
8934
8980
|
};
|
|
8935
8981
|
}
|
|
8936
8982
|
var import_path9, DOCS_CONFIG_FILENAMES;
|
|
8937
|
-
var
|
|
8983
|
+
var init_config3 = __esm({
|
|
8938
8984
|
"src/config.ts"() {
|
|
8939
8985
|
"use strict";
|
|
8940
8986
|
init_integrations();
|
|
@@ -8955,6 +9001,7 @@ var init_config2 = __esm({
|
|
|
8955
9001
|
init_auth_config();
|
|
8956
9002
|
init_preload();
|
|
8957
9003
|
init_security();
|
|
9004
|
+
init_config2();
|
|
8958
9005
|
init_config_entry();
|
|
8959
9006
|
__name(getDeployTargetForPreset, "getDeployTargetForPreset");
|
|
8960
9007
|
DOCS_CONFIG_FILENAMES = [
|
|
@@ -9449,7 +9496,7 @@ var init_api = __esm({
|
|
|
9449
9496
|
"src/docs/api.ts"() {
|
|
9450
9497
|
"use strict";
|
|
9451
9498
|
import_docs2 = require("@farming-labs/docs");
|
|
9452
|
-
|
|
9499
|
+
init_config3();
|
|
9453
9500
|
init_handler();
|
|
9454
9501
|
__name(isRecord4, "isRecord");
|
|
9455
9502
|
__name(isResolvedDocsConfig2, "isResolvedDocsConfig");
|
|
@@ -10434,7 +10481,7 @@ var init_devtools = __esm({
|
|
|
10434
10481
|
"src/devtools.ts"() {
|
|
10435
10482
|
"use strict";
|
|
10436
10483
|
import_node_path14 = __toESM(require("path"));
|
|
10437
|
-
|
|
10484
|
+
init_config3();
|
|
10438
10485
|
init_cron();
|
|
10439
10486
|
init_route_runtime();
|
|
10440
10487
|
__name(normalizePath, "normalizePath");
|
|
@@ -16105,6 +16152,16 @@ async function _runWithCurrentRequest(request, fn) {
|
|
|
16105
16152
|
return requestStore.run(request, fn);
|
|
16106
16153
|
}
|
|
16107
16154
|
__name(_runWithCurrentRequest, "_runWithCurrentRequest");
|
|
16155
|
+
function getCurrentRequest() {
|
|
16156
|
+
const request = requestStore.getStore();
|
|
16157
|
+
if (!request) {
|
|
16158
|
+
throw new Error(
|
|
16159
|
+
"No current request is available. getCurrentRequest() can only be used during server rendering."
|
|
16160
|
+
);
|
|
16161
|
+
}
|
|
16162
|
+
return request;
|
|
16163
|
+
}
|
|
16164
|
+
__name(getCurrentRequest, "getCurrentRequest");
|
|
16108
16165
|
|
|
16109
16166
|
// src/client/router.ts
|
|
16110
16167
|
var import_react3 = require("react");
|
|
@@ -18511,6 +18568,125 @@ function DefaultNotFoundPage(_props) {
|
|
|
18511
18568
|
}
|
|
18512
18569
|
__name(DefaultNotFoundPage, "DefaultNotFoundPage");
|
|
18513
18570
|
|
|
18571
|
+
// src/theme/server-runtime.ts
|
|
18572
|
+
init_config2();
|
|
18573
|
+
var THEME_SCRIPT_ID = "farm-theme-script";
|
|
18574
|
+
var THEME_STYLE_ID = "farm-theme-style";
|
|
18575
|
+
function createFarmThemeDocumentParts(input, basePath = "/", serverTheme) {
|
|
18576
|
+
const config = resolveFarmThemeConfig(input, basePath);
|
|
18577
|
+
if (!config.enabled) return { attributes: "", head: "" };
|
|
18578
|
+
const hydrationTheme = serverTheme ?? config.default;
|
|
18579
|
+
const initialTheme = hydrationTheme === "system" ? "light" : hydrationTheme;
|
|
18580
|
+
const script = createFarmThemeBootstrapScript(config, hydrationTheme);
|
|
18581
|
+
return {
|
|
18582
|
+
attributes: ` data-theme="${initialTheme}"`,
|
|
18583
|
+
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>`
|
|
18584
|
+
};
|
|
18585
|
+
}
|
|
18586
|
+
__name(createFarmThemeDocumentParts, "createFarmThemeDocumentParts");
|
|
18587
|
+
function createFarmThemeBootstrapScript(config, serverTheme = config.default) {
|
|
18588
|
+
return `(function(config,serverTheme){
|
|
18589
|
+
var isTheme=function(value){return value==="light"||value==="dark"||value==="system";};
|
|
18590
|
+
var decode=function(value){try{return decodeURIComponent(value);}catch(_error){return value;}};
|
|
18591
|
+
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());}};
|
|
18592
|
+
var media=window.matchMedia("(prefers-color-scheme: dark)");
|
|
18593
|
+
var resolveTheme=function(theme){return theme==="system"?(media.matches?"dark":"light"):theme;};
|
|
18594
|
+
var storedTheme=readCookie();
|
|
18595
|
+
var preference=isTheme(storedTheme)?storedTheme:config.default;
|
|
18596
|
+
var serverSnapshot={theme:serverTheme,resolvedTheme:serverTheme==="system"?undefined:serverTheme,mounted:false};
|
|
18597
|
+
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;};
|
|
18598
|
+
var emit=function(){var snapshot=apply();window.dispatchEvent(new CustomEvent("farm:themechange",{detail:snapshot}));};
|
|
18599
|
+
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){}};
|
|
18600
|
+
var setTheme=function(theme){if(!isTheme(theme))throw new TypeError("Unknown FARMJS theme: "+String(theme));preference=theme;persist(theme);emit();};
|
|
18601
|
+
var initialSnapshot={theme:preference,resolvedTheme:resolveTheme(preference),mounted:true};
|
|
18602
|
+
window.__FARM_THEME__={config:config,serverSnapshot:serverSnapshot,snapshot:initialSnapshot,setTheme:setTheme};
|
|
18603
|
+
document.documentElement.dataset.theme=initialSnapshot.resolvedTheme;
|
|
18604
|
+
var handleSystemChange=function(){if(preference==="system")emit();};
|
|
18605
|
+
if(typeof media.addEventListener==="function")media.addEventListener("change",handleSystemChange);else if(typeof media.addListener==="function")media.addListener(handleSystemChange);
|
|
18606
|
+
window.addEventListener("storage",function(event){if(event.key!==config.storageKey||!isTheme(event.newValue))return;preference=event.newValue;persist(preference);emit();});
|
|
18607
|
+
})(${serializeInlineValue(config)},${serializeInlineValue(serverTheme)});`;
|
|
18608
|
+
}
|
|
18609
|
+
__name(createFarmThemeBootstrapScript, "createFarmThemeBootstrapScript");
|
|
18610
|
+
function serializeInlineValue(value) {
|
|
18611
|
+
return JSON.stringify(value).replace(/</g, "\\u003c").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
18612
|
+
}
|
|
18613
|
+
__name(serializeInlineValue, "serializeInlineValue");
|
|
18614
|
+
|
|
18615
|
+
// src/theme/bridge.ts
|
|
18616
|
+
var FALLBACK_SERVER_SNAPSHOT = Object.freeze({
|
|
18617
|
+
theme: "system",
|
|
18618
|
+
resolvedTheme: void 0,
|
|
18619
|
+
mounted: false
|
|
18620
|
+
});
|
|
18621
|
+
var FARM_THEME_SERVER_SNAPSHOT_RESOLVER = /* @__PURE__ */ Symbol.for("farm.js.theme.server-snapshot-resolver");
|
|
18622
|
+
function _setFarmThemeServerSnapshotResolver(resolver) {
|
|
18623
|
+
globalThis[FARM_THEME_SERVER_SNAPSHOT_RESOLVER] = resolver;
|
|
18624
|
+
}
|
|
18625
|
+
__name(_setFarmThemeServerSnapshotResolver, "_setFarmThemeServerSnapshotResolver");
|
|
18626
|
+
|
|
18627
|
+
// src/theme/server.ts
|
|
18628
|
+
init_config2();
|
|
18629
|
+
var defaultThemeConfig = resolveFarmThemeConfig(void 0);
|
|
18630
|
+
function _setDefaultFarmThemeConfig(config, basePath = "/") {
|
|
18631
|
+
defaultThemeConfig = resolveFarmThemeConfig(config, basePath);
|
|
18632
|
+
}
|
|
18633
|
+
__name(_setDefaultFarmThemeConfig, "_setDefaultFarmThemeConfig");
|
|
18634
|
+
function getTheme(request = getCurrentRequest()) {
|
|
18635
|
+
return readFarmThemePreference(request, defaultThemeConfig);
|
|
18636
|
+
}
|
|
18637
|
+
__name(getTheme, "getTheme");
|
|
18638
|
+
function getThemeSnapshot(request = getCurrentRequest()) {
|
|
18639
|
+
const theme = readFarmThemePreference(request, defaultThemeConfig);
|
|
18640
|
+
return {
|
|
18641
|
+
theme,
|
|
18642
|
+
resolvedTheme: theme === "system" ? void 0 : theme,
|
|
18643
|
+
mounted: false
|
|
18644
|
+
};
|
|
18645
|
+
}
|
|
18646
|
+
__name(getThemeSnapshot, "getThemeSnapshot");
|
|
18647
|
+
function readFarmThemePreference(request, config) {
|
|
18648
|
+
if (!config.enabled) return config.default;
|
|
18649
|
+
const stored = readCookie3(request.headers.get("cookie"), config.storageKey);
|
|
18650
|
+
return isFarmThemePreference(stored) ? stored : config.default;
|
|
18651
|
+
}
|
|
18652
|
+
__name(readFarmThemePreference, "readFarmThemePreference");
|
|
18653
|
+
function readCookie3(cookieHeader, name) {
|
|
18654
|
+
if (!cookieHeader) return void 0;
|
|
18655
|
+
for (const entry of cookieHeader.split(";")) {
|
|
18656
|
+
const separator = entry.indexOf("=");
|
|
18657
|
+
if (separator < 0) continue;
|
|
18658
|
+
const key = decodeCookieValue(entry.slice(0, separator).trim());
|
|
18659
|
+
if (key !== name) continue;
|
|
18660
|
+
return decodeCookieValue(entry.slice(separator + 1).trim());
|
|
18661
|
+
}
|
|
18662
|
+
return void 0;
|
|
18663
|
+
}
|
|
18664
|
+
__name(readCookie3, "readCookie");
|
|
18665
|
+
function decodeCookieValue(value) {
|
|
18666
|
+
try {
|
|
18667
|
+
return decodeURIComponent(value);
|
|
18668
|
+
} catch {
|
|
18669
|
+
return value;
|
|
18670
|
+
}
|
|
18671
|
+
}
|
|
18672
|
+
__name(decodeCookieValue, "decodeCookieValue");
|
|
18673
|
+
function isFarmThemePreference(value) {
|
|
18674
|
+
return value === "light" || value === "dark" || value === "system";
|
|
18675
|
+
}
|
|
18676
|
+
__name(isFarmThemePreference, "isFarmThemePreference");
|
|
18677
|
+
_setFarmThemeServerSnapshotResolver(() => {
|
|
18678
|
+
try {
|
|
18679
|
+
return getThemeSnapshot();
|
|
18680
|
+
} catch {
|
|
18681
|
+
const theme = defaultThemeConfig.default;
|
|
18682
|
+
return {
|
|
18683
|
+
theme,
|
|
18684
|
+
resolvedTheme: theme === "system" ? void 0 : theme,
|
|
18685
|
+
mounted: false
|
|
18686
|
+
};
|
|
18687
|
+
}
|
|
18688
|
+
});
|
|
18689
|
+
|
|
18514
18690
|
// src/server/renderer.ts
|
|
18515
18691
|
var cachedClerkProvider = null;
|
|
18516
18692
|
var importRuntimeModule = new Function("specifier", "return import(specifier);");
|
|
@@ -18519,10 +18695,10 @@ function hasRequestHeader(req, name) {
|
|
|
18519
18695
|
return Array.isArray(value) ? value.length > 0 : Boolean(value);
|
|
18520
18696
|
}
|
|
18521
18697
|
__name(hasRequestHeader, "hasRequestHeader");
|
|
18522
|
-
function
|
|
18698
|
+
function serializeInlineValue2(value) {
|
|
18523
18699
|
return JSON.stringify(value).replace(/</g, "\\u003c").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
18524
18700
|
}
|
|
18525
|
-
__name(
|
|
18701
|
+
__name(serializeInlineValue2, "serializeInlineValue");
|
|
18526
18702
|
function escapeHtmlAttribute2(value) {
|
|
18527
18703
|
return value.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
18528
18704
|
}
|
|
@@ -18616,7 +18792,7 @@ function createDocumentFooter(options) {
|
|
|
18616
18792
|
__name(createDocumentFooter, "createDocumentFooter");
|
|
18617
18793
|
function createDeferredHydrationScript(records) {
|
|
18618
18794
|
if (records.length === 0) return "";
|
|
18619
|
-
return `<script>window.__FARM_DEFERRED_DATA__=${
|
|
18795
|
+
return `<script>window.__FARM_DEFERRED_DATA__=${serializeInlineValue2(
|
|
18620
18796
|
snapshotDeferredData(records)
|
|
18621
18797
|
)};</script>`;
|
|
18622
18798
|
}
|
|
@@ -19757,9 +19933,9 @@ var _ServerRenderer = class _ServerRenderer {
|
|
|
19757
19933
|
slots: routeSlotPayload
|
|
19758
19934
|
});
|
|
19759
19935
|
const propsScript = `<script>
|
|
19760
|
-
window.__FARM_PROPS__ = ${
|
|
19761
|
-
window.__FARM_ROUTE_SLOTS__ = ${
|
|
19762
|
-
window.__FARM_DEPLOYMENT_ID__ = ${
|
|
19936
|
+
window.__FARM_PROPS__ = ${serializeInlineValue2(deferredProps.data.page)};
|
|
19937
|
+
window.__FARM_ROUTE_SLOTS__ = ${serializeInlineValue2(deferredProps.data.slots)};
|
|
19938
|
+
window.__FARM_DEPLOYMENT_ID__ = ${serializeInlineValue2(deploymentId)};
|
|
19763
19939
|
window.__FARM_PATH__ = ${JSON.stringify(req.__FARM_ROUTE__ || req.url || "/")};
|
|
19764
19940
|
window.__FARM_IS_CLIENT__ = ${JSON.stringify(isClientComponent)};
|
|
19765
19941
|
window.__FARM_PAGE_SHOULD_HYDRATE__ = ${JSON.stringify(
|
|
@@ -19777,7 +19953,7 @@ window.__FARM_LOADING_MODULE__ = ${JSON.stringify(
|
|
|
19777
19953
|
)};
|
|
19778
19954
|
window.__FARM_MANIFEST__ = ${JSON.stringify(clientManifest)};
|
|
19779
19955
|
window.__FARM_INTEGRATION_API_MANIFEST__ = ${JSON.stringify(getRegisteredIntegrationAPIManifest())};
|
|
19780
|
-
${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${
|
|
19956
|
+
${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(getFarmI18nClientSnapshot())};` : ""}
|
|
19781
19957
|
</script>`;
|
|
19782
19958
|
const hydrationClickQueueScript = isClientComponent || req.__FARM_SHOULD_HYDRATE__ === true || req.__FARM_HAS_HYDRATABLE_ROUTE_SLOTS__ === true ? createPreHydrationClickQueueScript() : "";
|
|
19783
19959
|
const {
|
|
@@ -19788,6 +19964,11 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
|
|
|
19788
19964
|
const i18nSnapshot = getFarmI18nClientSnapshot();
|
|
19789
19965
|
const i18nAlternateTags = i18nSnapshot ? renderI18nAlternateLinks(req.__FARM_ROUTE__ || req.url || "/", i18nSnapshot) : "";
|
|
19790
19966
|
const fontHead = renderFarmFontDevHead(this.config.root || process.cwd());
|
|
19967
|
+
const themeDocument = createFarmThemeDocumentParts(
|
|
19968
|
+
this.config.theme,
|
|
19969
|
+
this.config.basePath,
|
|
19970
|
+
getTheme()
|
|
19971
|
+
);
|
|
19791
19972
|
const streamRoot = import_react5.default.createElement("div", { style: { display: "contents" } }, element);
|
|
19792
19973
|
const { pipe } = (0, import_server2.renderToPipeableStream)(streamRoot, {
|
|
19793
19974
|
onShellReady() {
|
|
@@ -19801,8 +19982,9 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
|
|
|
19801
19982
|
console.log(`[FARM STREAM] onShellReady at ${shellReadyMs}ms`);
|
|
19802
19983
|
}
|
|
19803
19984
|
const shell = `<!DOCTYPE html>
|
|
19804
|
-
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}>
|
|
19985
|
+
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
|
|
19805
19986
|
<head>
|
|
19987
|
+
${themeDocument.head}
|
|
19806
19988
|
<meta charset="utf-8">
|
|
19807
19989
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
19808
19990
|
<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(deploymentId)}">
|
|
@@ -20004,15 +20186,21 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
|
|
|
20004
20186
|
const i18nSnapshot = getFarmI18nClientSnapshot();
|
|
20005
20187
|
const clientScript = isClientComponent ? ` <script type="module" src="/@farm/client.js"></script>` : "";
|
|
20006
20188
|
const integrationManifestScript = `<script>
|
|
20007
|
-
window.__FARM_DEPLOYMENT_ID__ = ${
|
|
20189
|
+
window.__FARM_DEPLOYMENT_ID__ = ${serializeInlineValue2(this.getDeploymentId())};
|
|
20008
20190
|
window.__FARM_INTEGRATION_API_MANIFEST__ = ${JSON.stringify(getRegisteredIntegrationAPIManifest())};
|
|
20009
|
-
${i18nSnapshot ? `window.__FARM_I18N__ = ${
|
|
20191
|
+
${i18nSnapshot ? `window.__FARM_I18N__ = ${serializeInlineValue2(i18nSnapshot)};` : ""}
|
|
20010
20192
|
</script>`;
|
|
20011
20193
|
const alternateLinks = i18nSnapshot ? renderI18nAlternateLinks(requestPath, i18nSnapshot) : "";
|
|
20012
20194
|
const fontHead = renderFarmFontDevHead(this.config.root || process.cwd());
|
|
20195
|
+
const themeDocument = createFarmThemeDocumentParts(
|
|
20196
|
+
this.config.theme,
|
|
20197
|
+
this.config.basePath,
|
|
20198
|
+
getTheme()
|
|
20199
|
+
);
|
|
20013
20200
|
return `<!DOCTYPE html>
|
|
20014
|
-
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}>
|
|
20201
|
+
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
|
|
20015
20202
|
<head>
|
|
20203
|
+
${themeDocument.head}
|
|
20016
20204
|
<meta charset="utf-8">
|
|
20017
20205
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
20018
20206
|
<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(this.getDeploymentId())}">
|
|
@@ -20059,6 +20247,7 @@ init_config();
|
|
|
20059
20247
|
init_auth_config();
|
|
20060
20248
|
init_preload();
|
|
20061
20249
|
init_security();
|
|
20250
|
+
init_config2();
|
|
20062
20251
|
var defaultDocsConfig = {
|
|
20063
20252
|
enabled: false,
|
|
20064
20253
|
entry: "/docs",
|
|
@@ -20072,6 +20261,7 @@ var _FarmApp = class _FarmApp {
|
|
|
20072
20261
|
constructor(config = {}, viteServer) {
|
|
20073
20262
|
this.config = this.normalizeConfig(config);
|
|
20074
20263
|
configureFarmObservability(this.config.observability);
|
|
20264
|
+
_setDefaultFarmThemeConfig(this.config.theme);
|
|
20075
20265
|
this.i18nRuntime = createFarmI18nRuntime(this.config.i18n);
|
|
20076
20266
|
_setDefaultFarmI18nRuntime(this.i18nRuntime);
|
|
20077
20267
|
this.viteServer = viteServer;
|
|
@@ -20130,6 +20320,7 @@ var _FarmApp = class _FarmApp {
|
|
|
20130
20320
|
security: resolveFarmSecurityConfig(config.security),
|
|
20131
20321
|
images: resolveFarmImageConfig(config.images),
|
|
20132
20322
|
performance: resolveFarmPerformanceConfig(config.performance),
|
|
20323
|
+
theme: resolveFarmThemeConfig(config.theme, config.basePath || "/"),
|
|
20133
20324
|
i18n: isResolvedI18nConfig(config.i18n) ? config.i18n : resolveFarmI18nConfig(config.i18n, {
|
|
20134
20325
|
root,
|
|
20135
20326
|
mode: process.env.NODE_ENV === "production" ? "production" : "development"
|
|
@@ -22590,6 +22781,11 @@ var import_node_path9 = __toESM(require("path"));
|
|
|
22590
22781
|
// src/vite.ts
|
|
22591
22782
|
init_fonts();
|
|
22592
22783
|
init_server_http();
|
|
22784
|
+
|
|
22785
|
+
// src/theme/vite.ts
|
|
22786
|
+
init_config2();
|
|
22787
|
+
|
|
22788
|
+
// src/vite.ts
|
|
22593
22789
|
var ALL_TYPE_ARTIFACTS = {
|
|
22594
22790
|
routes: true,
|
|
22595
22791
|
api: true,
|
|
@@ -25958,14 +26154,22 @@ async function renderPage(pageData) {
|
|
|
25958
26154
|
if (!doc.documentElement || !doc.body) return false;
|
|
25959
26155
|
|
|
25960
26156
|
resetReactRoots();
|
|
26157
|
+
const activeFarmTheme =
|
|
26158
|
+
window.__FARM_THEME__?.snapshot?.resolvedTheme ||
|
|
26159
|
+
document.documentElement.getAttribute('data-theme');
|
|
25961
26160
|
Array.from(document.documentElement.attributes).forEach(function(attr) {
|
|
26161
|
+
if (attr.name === 'data-theme') return;
|
|
25962
26162
|
if (!doc.documentElement.hasAttribute(attr.name)) {
|
|
25963
26163
|
document.documentElement.removeAttribute(attr.name);
|
|
25964
26164
|
}
|
|
25965
26165
|
});
|
|
25966
26166
|
Array.from(doc.documentElement.attributes).forEach(function(attr) {
|
|
26167
|
+
if (attr.name === 'data-theme') return;
|
|
25967
26168
|
document.documentElement.setAttribute(attr.name, attr.value);
|
|
25968
26169
|
});
|
|
26170
|
+
if (activeFarmTheme) {
|
|
26171
|
+
document.documentElement.setAttribute('data-theme', activeFarmTheme);
|
|
26172
|
+
}
|
|
25969
26173
|
|
|
25970
26174
|
document.head.innerHTML = doc.head ? doc.head.innerHTML : '';
|
|
25971
26175
|
document.body.innerHTML = doc.body.innerHTML;
|
|
@@ -25974,6 +26178,7 @@ async function renderPage(pageData) {
|
|
|
25974
26178
|
|
|
25975
26179
|
setTimeout(function() {
|
|
25976
26180
|
Array.from(document.querySelectorAll('script')).forEach(function(script) {
|
|
26181
|
+
if (script.id === 'farm-theme-script') return;
|
|
25977
26182
|
const freshScript = document.createElement('script');
|
|
25978
26183
|
Array.from(script.attributes).forEach(function(attr) {
|
|
25979
26184
|
freshScript.setAttribute(attr.name, attr.value);
|