@farm.js/core 0.1.0-beta.21 → 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/after.d.mts +25 -0
- package/dist/after.d.ts +25 -0
- package/dist/agent-runtime.d.mts +97 -0
- package/dist/agent-runtime.d.ts +97 -0
- package/dist/api/route-manager.d.mts +68 -0
- package/dist/api/route-manager.d.ts +68 -0
- package/dist/api/runtime.d.mts +3 -0
- package/dist/api/runtime.d.ts +3 -0
- package/dist/api.cjs +22 -19
- package/dist/api.cjs.map +1 -1
- package/dist/api.d.mts +50 -0
- package/dist/api.d.ts +50 -0
- package/dist/api.mjs +2 -1
- package/dist/app-CTFnOJaI.d.ts +308 -0
- package/dist/app-DA6ospIq.d.mts +308 -0
- package/dist/app-markdown.d.mts +25 -0
- package/dist/app-markdown.d.ts +25 -0
- package/dist/cache.d.mts +192 -0
- package/dist/cache.d.ts +192 -0
- package/dist/{chunk-MIUW47JX.mjs → chunk-2PEJGY5V.mjs} +15 -20
- package/dist/chunk-2PEJGY5V.mjs.map +1 -0
- package/dist/{chunk-RIXKJPGI.mjs → chunk-42325TLU.mjs} +2 -2
- package/dist/chunk-4IVNW5QD.mjs +82 -0
- package/dist/chunk-4IVNW5QD.mjs.map +1 -0
- package/dist/{chunk-I3UWA2P2.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-VIC7NJ77.mjs → chunk-FJGTYLCO.mjs} +67 -20
- package/dist/chunk-FJGTYLCO.mjs.map +1 -0
- package/dist/chunk-GIELMNBG.mjs +15 -0
- package/dist/chunk-GIELMNBG.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-4EATUJFO.mjs → chunk-ICTGDDV4.mjs} +20 -22
- package/dist/chunk-ICTGDDV4.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-FKKM7HVF.mjs → chunk-TX54PXAJ.mjs} +109 -58
- 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/chunk-recovery-lnQFzcQP.d.mts +26 -0
- package/dist/chunk-recovery-lnQFzcQP.d.ts +26 -0
- package/dist/client-BT1mFQas.d.mts +447 -0
- package/dist/client-Nn0q4eO4.d.ts +447 -0
- package/dist/client-cache-CIlyBlmx.d.ts +6 -0
- package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
- package/dist/client-plugins-CCilIb_G.d.mts +2092 -0
- package/dist/client-plugins-DuuleQKk.d.ts +2092 -0
- package/dist/client-plugins.d.mts +25 -0
- package/dist/client-plugins.d.ts +25 -0
- package/dist/client.cjs +122 -35
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.mts +454 -0
- package/dist/client.d.ts +454 -0
- package/dist/client.mjs +13 -2
- package/dist/config.d.mts +32 -0
- package/dist/config.d.ts +32 -0
- package/dist/cron.d.mts +78 -0
- package/dist/cron.d.ts +78 -0
- package/dist/deferred.d.mts +42 -0
- package/dist/deferred.d.ts +42 -0
- package/dist/deployment.d.mts +36 -0
- package/dist/deployment.d.ts +36 -0
- 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.d.mts +80 -0
- package/dist/docs.d.ts +80 -0
- package/dist/docs.mjs +6 -5
- package/dist/env-types.d.mts +12 -0
- package/dist/env-types.d.ts +12 -0
- package/dist/env.d.mts +45 -0
- package/dist/env.d.ts +45 -0
- package/dist/environment/vite.d.mts +22 -0
- package/dist/environment/vite.d.ts +22 -0
- package/dist/environment.d.mts +18 -0
- package/dist/environment.d.ts +18 -0
- package/dist/font.d.mts +95 -0
- package/dist/font.d.ts +95 -0
- package/dist/headers.d.mts +22 -0
- package/dist/headers.d.ts +22 -0
- package/dist/i18n/client.d.mts +32 -0
- package/dist/i18n/client.d.ts +32 -0
- package/dist/i18n/index.d.mts +20 -0
- package/dist/i18n/index.d.ts +20 -0
- package/dist/i18n/server.d.mts +30 -0
- package/dist/i18n/server.d.ts +30 -0
- package/dist/image/server.d.mts +37 -0
- package/dist/image/server.d.ts +37 -0
- package/dist/image/sharp.d.mts +7 -0
- package/dist/image/sharp.d.ts +7 -0
- package/dist/image-config-Duob7wER.d.mts +50 -0
- package/dist/image-config-Duob7wER.d.ts +50 -0
- package/dist/image.d.mts +39 -0
- package/dist/image.d.ts +39 -0
- package/dist/index.cjs +496 -123
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +480 -0
- package/dist/index.d.ts +480 -0
- package/dist/index.mjs +70 -52
- package/dist/index.mjs.map +1 -1
- package/dist/integration-api-CHT2OKAf.d.mts +93 -0
- package/dist/integration-api-CHT2OKAf.d.ts +93 -0
- package/dist/integrations.d.mts +25 -0
- package/dist/integrations.d.ts +25 -0
- package/dist/internal/build-runtime.cjs +386 -83
- package/dist/internal/build-runtime.cjs.map +1 -1
- package/dist/internal/build-runtime.d.mts +42 -0
- package/dist/internal/build-runtime.d.ts +42 -0
- package/dist/internal/build-runtime.mjs +17 -13
- package/dist/internal/client-runtime.d.mts +17 -0
- package/dist/internal/client-runtime.d.ts +17 -0
- package/dist/internal/config-runtime.cjs +41 -0
- package/dist/internal/config-runtime.cjs.map +1 -1
- package/dist/internal/config-runtime.d.mts +42 -0
- package/dist/internal/config-runtime.d.ts +42 -0
- package/dist/internal/config-runtime.mjs +5 -4
- package/dist/internal/metadata-image-runtime.d.mts +25 -0
- package/dist/internal/metadata-image-runtime.d.ts +25 -0
- package/dist/internal/production-node-env.d.mts +12 -0
- package/dist/internal/production-node-env.d.ts +12 -0
- package/dist/internal/production-runtime.cjs +178 -0
- package/dist/internal/production-runtime.cjs.map +1 -1
- package/dist/internal/production-runtime.d.mts +80 -0
- package/dist/internal/production-runtime.d.ts +80 -0
- package/dist/internal/production-runtime.mjs +13 -1
- package/dist/internal/production-runtime.mjs.map +1 -1
- package/dist/island-CfGru1MO.d.mts +9 -0
- package/dist/island-CfGru1MO.d.ts +9 -0
- package/dist/markdown.d.mts +60 -0
- package/dist/markdown.d.ts +60 -0
- package/dist/metadata-DyPRG0wX.d.ts +22 -0
- package/dist/metadata-_GHcAySx.d.mts +22 -0
- package/dist/middleware.cjs +17 -17
- package/dist/middleware.cjs.map +1 -1
- package/dist/middleware.d.mts +172 -0
- package/dist/middleware.d.ts +172 -0
- package/dist/middleware.mjs +3 -2
- package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
- package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
- package/dist/navigation.d.mts +14 -0
- package/dist/navigation.d.ts +14 -0
- package/dist/observability.d.mts +335 -0
- package/dist/observability.d.ts +335 -0
- package/dist/params-BALtrRim.d.ts +15 -0
- package/dist/params-ry-lxqmy.d.mts +15 -0
- package/dist/plugin-BJDf43dc.d.mts +165 -0
- package/dist/plugin-BJDf43dc.d.ts +165 -0
- package/dist/plugin.cjs +261 -62
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.mts +25 -0
- package/dist/plugin.d.ts +25 -0
- package/dist/plugin.mjs +13 -9
- package/dist/production-runtime-C4cO3esK.d.mts +81 -0
- package/dist/production-runtime-DrEy8kBO.d.ts +81 -0
- package/dist/query/client.d.mts +61 -0
- package/dist/query/client.d.ts +61 -0
- package/dist/query/index.d.mts +90 -0
- package/dist/query/index.d.ts +90 -0
- package/dist/query/parsers.d.mts +25 -0
- package/dist/query/parsers.d.ts +25 -0
- package/dist/query/server.d.mts +55 -0
- package/dist/query/server.d.ts +55 -0
- package/dist/request-B2PpOxYK.d.mts +6 -0
- package/dist/request-D40lt6aN.d.ts +6 -0
- package/dist/request.d.mts +26 -0
- package/dist/request.d.ts +26 -0
- package/dist/resolver-DJqjLMg_.d.mts +14 -0
- package/dist/resolver-IH4RmPEl.d.ts +14 -0
- package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
- package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
- package/dist/router.d.mts +36 -0
- package/dist/router.d.ts +36 -0
- package/dist/routes.d.mts +227 -0
- package/dist/routes.d.ts +227 -0
- package/dist/runtime-Bpp-c28k.d.ts +231 -0
- package/dist/runtime-Cxpq6xZN.d.mts +27 -0
- package/dist/runtime-Q3u74Nbq.d.mts +231 -0
- package/dist/runtime-bv63eUiO.d.ts +27 -0
- package/dist/server-action-security.d.mts +45 -0
- package/dist/server-action-security.d.ts +45 -0
- package/dist/server-fn-client.d.mts +33 -0
- package/dist/server-fn-client.d.ts +33 -0
- package/dist/server-fn-error-DDh14a0V.d.mts +26 -0
- package/dist/server-fn-error-DDh14a0V.d.ts +26 -0
- package/dist/server-fn.d.mts +121 -0
- package/dist/server-fn.d.ts +121 -0
- package/dist/server-plugins.d.mts +58 -0
- package/dist/server-plugins.d.ts +58 -0
- package/dist/server-query-client.d.mts +51 -0
- package/dist/server-query-client.d.ts +51 -0
- package/dist/server-query.d.mts +37 -0
- package/dist/server-query.d.ts +37 -0
- package/dist/server.cjs +285 -85
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.mts +53 -0
- package/dist/server.d.ts +53 -0
- package/dist/server.mjs +26 -31
- package/dist/server.mjs.map +1 -1
- package/dist/storage.d.mts +52 -0
- package/dist/storage.d.ts +52 -0
- package/dist/testing.d.mts +104 -0
- package/dist/testing.d.ts +104 -0
- 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/transport-BmbGTXA5.d.mts +49 -0
- package/dist/transport-BmbGTXA5.d.ts +49 -0
- package/dist/types-BMxWr97v.d.mts +81 -0
- package/dist/types-BMxWr97v.d.ts +81 -0
- package/dist/types-CsR8fpgF.d.mts +30 -0
- package/dist/types-CsR8fpgF.d.ts +30 -0
- package/dist/types-D1A6-XvH.d.mts +73 -0
- package/dist/types-D1A6-XvH.d.ts +73 -0
- package/dist/types-DTzm4TCl.d.mts +78 -0
- package/dist/types-DTzm4TCl.d.ts +78 -0
- package/dist/utils-3sQgfkya.d.ts +23 -0
- package/dist/utils-Bop7bly-.d.mts +23 -0
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.mts +3 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +285 -64
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.d.mts +25 -0
- package/dist/vite.d.ts +25 -0
- package/dist/vite.mjs +13 -9
- package/dist/workflows-CusFV6mn.d.mts +153 -0
- package/dist/workflows-CusFV6mn.d.ts +153 -0
- package/dist/workflows.d.mts +1 -0
- package/dist/workflows.d.ts +1 -0
- package/package.json +25 -1
- package/dist/chunk-4EATUJFO.mjs.map +0 -1
- package/dist/chunk-CEVMYGDL.mjs.map +0 -1
- package/dist/chunk-FKKM7HVF.mjs.map +0 -1
- package/dist/chunk-FRPWCMMG.mjs.map +0 -1
- package/dist/chunk-I3UWA2P2.mjs.map +0 -1
- package/dist/chunk-MIUW47JX.mjs.map +0 -1
- package/dist/chunk-VIC7NJ77.mjs.map +0 -1
- /package/dist/{chunk-RIXKJPGI.mjs.map → chunk-42325TLU.mjs.map} +0 -0
- /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/index.cjs
CHANGED
|
@@ -14325,12 +14325,201 @@ body {
|
|
|
14325
14325
|
}
|
|
14326
14326
|
});
|
|
14327
14327
|
|
|
14328
|
+
// src/theme/config.ts
|
|
14329
|
+
function resolveFarmThemeConfig(config, basePath = "/") {
|
|
14330
|
+
if (config && "enabled" in config) {
|
|
14331
|
+
return config;
|
|
14332
|
+
}
|
|
14333
|
+
if (!config) {
|
|
14334
|
+
return {
|
|
14335
|
+
enabled: false,
|
|
14336
|
+
default: "system",
|
|
14337
|
+
storageKey: DEFAULT_FARM_THEME_STORAGE_KEY,
|
|
14338
|
+
cookiePath: normalizeCookiePath(basePath)
|
|
14339
|
+
};
|
|
14340
|
+
}
|
|
14341
|
+
const storageKey = config.storageKey?.trim() || DEFAULT_FARM_THEME_STORAGE_KEY;
|
|
14342
|
+
if (!STORAGE_KEY_PATTERN.test(storageKey)) {
|
|
14343
|
+
throw new Error(
|
|
14344
|
+
"theme.storageKey may only contain letters, numbers, dots, underscores, and hyphens."
|
|
14345
|
+
);
|
|
14346
|
+
}
|
|
14347
|
+
const defaultTheme = config.default ?? "system";
|
|
14348
|
+
if (defaultTheme !== "light" && defaultTheme !== "dark" && defaultTheme !== "system") {
|
|
14349
|
+
throw new Error('theme.default must be "light", "dark", or "system".');
|
|
14350
|
+
}
|
|
14351
|
+
return {
|
|
14352
|
+
enabled: true,
|
|
14353
|
+
default: defaultTheme,
|
|
14354
|
+
storageKey,
|
|
14355
|
+
cookiePath: normalizeCookiePath(basePath)
|
|
14356
|
+
};
|
|
14357
|
+
}
|
|
14358
|
+
function normalizeCookiePath(basePath) {
|
|
14359
|
+
const normalized = `/${basePath}`.replace(/\/{2,}/g, "/");
|
|
14360
|
+
if (normalized === "/") return normalized;
|
|
14361
|
+
return normalized.replace(/\/$/, "");
|
|
14362
|
+
}
|
|
14363
|
+
var DEFAULT_FARM_THEME_STORAGE_KEY, STORAGE_KEY_PATTERN;
|
|
14364
|
+
var init_config2 = __esm({
|
|
14365
|
+
"src/theme/config.ts"() {
|
|
14366
|
+
"use strict";
|
|
14367
|
+
DEFAULT_FARM_THEME_STORAGE_KEY = "farm-theme";
|
|
14368
|
+
STORAGE_KEY_PATTERN = /^[A-Za-z0-9._-]+$/;
|
|
14369
|
+
__name(resolveFarmThemeConfig, "resolveFarmThemeConfig");
|
|
14370
|
+
__name(normalizeCookiePath, "normalizeCookiePath");
|
|
14371
|
+
}
|
|
14372
|
+
});
|
|
14373
|
+
|
|
14374
|
+
// src/theme/server-runtime.ts
|
|
14375
|
+
function createFarmThemeDocumentParts(input, basePath = "/", serverTheme) {
|
|
14376
|
+
const config = resolveFarmThemeConfig(input, basePath);
|
|
14377
|
+
if (!config.enabled) return { attributes: "", head: "" };
|
|
14378
|
+
const hydrationTheme = serverTheme ?? config.default;
|
|
14379
|
+
const initialTheme = hydrationTheme === "system" ? "light" : hydrationTheme;
|
|
14380
|
+
const script = createFarmThemeBootstrapScript(config, hydrationTheme);
|
|
14381
|
+
return {
|
|
14382
|
+
attributes: ` data-theme="${initialTheme}"`,
|
|
14383
|
+
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>`
|
|
14384
|
+
};
|
|
14385
|
+
}
|
|
14386
|
+
function createFarmThemeBootstrapScript(config, serverTheme = config.default) {
|
|
14387
|
+
return `(function(config,serverTheme){
|
|
14388
|
+
var isTheme=function(value){return value==="light"||value==="dark"||value==="system";};
|
|
14389
|
+
var decode=function(value){try{return decodeURIComponent(value);}catch(_error){return value;}};
|
|
14390
|
+
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());}};
|
|
14391
|
+
var media=window.matchMedia("(prefers-color-scheme: dark)");
|
|
14392
|
+
var resolveTheme=function(theme){return theme==="system"?(media.matches?"dark":"light"):theme;};
|
|
14393
|
+
var storedTheme=readCookie();
|
|
14394
|
+
var preference=isTheme(storedTheme)?storedTheme:config.default;
|
|
14395
|
+
var serverSnapshot={theme:serverTheme,resolvedTheme:serverTheme==="system"?undefined:serverTheme,mounted:false};
|
|
14396
|
+
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;};
|
|
14397
|
+
var emit=function(){var snapshot=apply();window.dispatchEvent(new CustomEvent("farm:themechange",{detail:snapshot}));};
|
|
14398
|
+
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){}};
|
|
14399
|
+
var setTheme=function(theme){if(!isTheme(theme))throw new TypeError("Unknown FARMJS theme: "+String(theme));preference=theme;persist(theme);emit();};
|
|
14400
|
+
var initialSnapshot={theme:preference,resolvedTheme:resolveTheme(preference),mounted:true};
|
|
14401
|
+
window.__FARM_THEME__={config:config,serverSnapshot:serverSnapshot,snapshot:initialSnapshot,setTheme:setTheme};
|
|
14402
|
+
document.documentElement.dataset.theme=initialSnapshot.resolvedTheme;
|
|
14403
|
+
var handleSystemChange=function(){if(preference==="system")emit();};
|
|
14404
|
+
if(typeof media.addEventListener==="function")media.addEventListener("change",handleSystemChange);else if(typeof media.addListener==="function")media.addListener(handleSystemChange);
|
|
14405
|
+
window.addEventListener("storage",function(event){if(event.key!==config.storageKey||!isTheme(event.newValue))return;preference=event.newValue;persist(preference);emit();});
|
|
14406
|
+
})(${serializeInlineValue(config)},${serializeInlineValue(serverTheme)});`;
|
|
14407
|
+
}
|
|
14408
|
+
function serializeInlineValue(value) {
|
|
14409
|
+
return JSON.stringify(value).replace(/</g, "\\u003c").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
14410
|
+
}
|
|
14411
|
+
var THEME_SCRIPT_ID, THEME_STYLE_ID;
|
|
14412
|
+
var init_server_runtime = __esm({
|
|
14413
|
+
"src/theme/server-runtime.ts"() {
|
|
14414
|
+
"use strict";
|
|
14415
|
+
init_config2();
|
|
14416
|
+
THEME_SCRIPT_ID = "farm-theme-script";
|
|
14417
|
+
THEME_STYLE_ID = "farm-theme-style";
|
|
14418
|
+
__name(createFarmThemeDocumentParts, "createFarmThemeDocumentParts");
|
|
14419
|
+
__name(createFarmThemeBootstrapScript, "createFarmThemeBootstrapScript");
|
|
14420
|
+
__name(serializeInlineValue, "serializeInlineValue");
|
|
14421
|
+
}
|
|
14422
|
+
});
|
|
14423
|
+
|
|
14424
|
+
// src/theme/bridge.ts
|
|
14425
|
+
function _setFarmThemeServerSnapshotResolver(resolver) {
|
|
14426
|
+
globalThis[FARM_THEME_SERVER_SNAPSHOT_RESOLVER] = resolver;
|
|
14427
|
+
}
|
|
14428
|
+
function getFarmThemeServerSnapshot() {
|
|
14429
|
+
return globalThis[FARM_THEME_SERVER_SNAPSHOT_RESOLVER]?.() ?? FALLBACK_SERVER_SNAPSHOT;
|
|
14430
|
+
}
|
|
14431
|
+
var FALLBACK_SERVER_SNAPSHOT, FARM_THEME_SERVER_SNAPSHOT_RESOLVER;
|
|
14432
|
+
var init_bridge2 = __esm({
|
|
14433
|
+
"src/theme/bridge.ts"() {
|
|
14434
|
+
"use strict";
|
|
14435
|
+
FALLBACK_SERVER_SNAPSHOT = Object.freeze({
|
|
14436
|
+
theme: "system",
|
|
14437
|
+
resolvedTheme: void 0,
|
|
14438
|
+
mounted: false
|
|
14439
|
+
});
|
|
14440
|
+
FARM_THEME_SERVER_SNAPSHOT_RESOLVER = /* @__PURE__ */ Symbol.for("farm.js.theme.server-snapshot-resolver");
|
|
14441
|
+
__name(_setFarmThemeServerSnapshotResolver, "_setFarmThemeServerSnapshotResolver");
|
|
14442
|
+
__name(getFarmThemeServerSnapshot, "getFarmThemeServerSnapshot");
|
|
14443
|
+
}
|
|
14444
|
+
});
|
|
14445
|
+
|
|
14446
|
+
// src/theme/server.ts
|
|
14447
|
+
function _setDefaultFarmThemeConfig(config, basePath = "/") {
|
|
14448
|
+
defaultThemeConfig = resolveFarmThemeConfig(config, basePath);
|
|
14449
|
+
}
|
|
14450
|
+
function getTheme(request = getCurrentRequest()) {
|
|
14451
|
+
return readFarmThemePreference(request, defaultThemeConfig);
|
|
14452
|
+
}
|
|
14453
|
+
function getThemeSnapshot(request = getCurrentRequest()) {
|
|
14454
|
+
const theme = readFarmThemePreference(request, defaultThemeConfig);
|
|
14455
|
+
return {
|
|
14456
|
+
theme,
|
|
14457
|
+
resolvedTheme: theme === "system" ? void 0 : theme,
|
|
14458
|
+
mounted: false
|
|
14459
|
+
};
|
|
14460
|
+
}
|
|
14461
|
+
function readFarmThemePreference(request, config) {
|
|
14462
|
+
if (!config.enabled) return config.default;
|
|
14463
|
+
const stored = readCookie3(request.headers.get("cookie"), config.storageKey);
|
|
14464
|
+
return isFarmThemePreference(stored) ? stored : config.default;
|
|
14465
|
+
}
|
|
14466
|
+
function readCookie3(cookieHeader, name) {
|
|
14467
|
+
if (!cookieHeader) return void 0;
|
|
14468
|
+
for (const entry of cookieHeader.split(";")) {
|
|
14469
|
+
const separator = entry.indexOf("=");
|
|
14470
|
+
if (separator < 0) continue;
|
|
14471
|
+
const key = decodeCookieValue(entry.slice(0, separator).trim());
|
|
14472
|
+
if (key !== name) continue;
|
|
14473
|
+
return decodeCookieValue(entry.slice(separator + 1).trim());
|
|
14474
|
+
}
|
|
14475
|
+
return void 0;
|
|
14476
|
+
}
|
|
14477
|
+
function decodeCookieValue(value) {
|
|
14478
|
+
try {
|
|
14479
|
+
return decodeURIComponent(value);
|
|
14480
|
+
} catch {
|
|
14481
|
+
return value;
|
|
14482
|
+
}
|
|
14483
|
+
}
|
|
14484
|
+
function isFarmThemePreference(value) {
|
|
14485
|
+
return value === "light" || value === "dark" || value === "system";
|
|
14486
|
+
}
|
|
14487
|
+
var defaultThemeConfig;
|
|
14488
|
+
var init_server3 = __esm({
|
|
14489
|
+
"src/theme/server.ts"() {
|
|
14490
|
+
"use strict";
|
|
14491
|
+
init_request();
|
|
14492
|
+
init_bridge2();
|
|
14493
|
+
init_config2();
|
|
14494
|
+
defaultThemeConfig = resolveFarmThemeConfig(void 0);
|
|
14495
|
+
__name(_setDefaultFarmThemeConfig, "_setDefaultFarmThemeConfig");
|
|
14496
|
+
__name(getTheme, "getTheme");
|
|
14497
|
+
__name(getThemeSnapshot, "getThemeSnapshot");
|
|
14498
|
+
__name(readFarmThemePreference, "readFarmThemePreference");
|
|
14499
|
+
__name(readCookie3, "readCookie");
|
|
14500
|
+
__name(decodeCookieValue, "decodeCookieValue");
|
|
14501
|
+
__name(isFarmThemePreference, "isFarmThemePreference");
|
|
14502
|
+
_setFarmThemeServerSnapshotResolver(() => {
|
|
14503
|
+
try {
|
|
14504
|
+
return getThemeSnapshot();
|
|
14505
|
+
} catch {
|
|
14506
|
+
const theme = defaultThemeConfig.default;
|
|
14507
|
+
return {
|
|
14508
|
+
theme,
|
|
14509
|
+
resolvedTheme: theme === "system" ? void 0 : theme,
|
|
14510
|
+
mounted: false
|
|
14511
|
+
};
|
|
14512
|
+
}
|
|
14513
|
+
});
|
|
14514
|
+
}
|
|
14515
|
+
});
|
|
14516
|
+
|
|
14328
14517
|
// src/server/renderer.ts
|
|
14329
14518
|
function hasRequestHeader(req, name) {
|
|
14330
14519
|
const value = req.headers[name.toLowerCase()];
|
|
14331
14520
|
return Array.isArray(value) ? value.length > 0 : Boolean(value);
|
|
14332
14521
|
}
|
|
14333
|
-
function
|
|
14522
|
+
function serializeInlineValue2(value) {
|
|
14334
14523
|
return JSON.stringify(value).replace(/</g, "\\u003c").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
14335
14524
|
}
|
|
14336
14525
|
function escapeHtmlAttribute2(value) {
|
|
@@ -14417,7 +14606,7 @@ function createDocumentFooter(options) {
|
|
|
14417
14606
|
}
|
|
14418
14607
|
function createDeferredHydrationScript(records) {
|
|
14419
14608
|
if (records.length === 0) return "";
|
|
14420
|
-
return `<script>window.__FARM_DEFERRED_DATA__=${
|
|
14609
|
+
return `<script>window.__FARM_DEFERRED_DATA__=${serializeInlineValue2(
|
|
14421
14610
|
snapshotDeferredData(records)
|
|
14422
14611
|
)};</script>`;
|
|
14423
14612
|
}
|
|
@@ -14510,10 +14699,12 @@ var init_renderer = __esm({
|
|
|
14510
14699
|
init_font_vite();
|
|
14511
14700
|
init_metadata_image();
|
|
14512
14701
|
init_not_found();
|
|
14702
|
+
init_server_runtime();
|
|
14703
|
+
init_server3();
|
|
14513
14704
|
cachedClerkProvider = null;
|
|
14514
14705
|
importRuntimeModule = new Function("specifier", "return import(specifier);");
|
|
14515
14706
|
__name(hasRequestHeader, "hasRequestHeader");
|
|
14516
|
-
__name(
|
|
14707
|
+
__name(serializeInlineValue2, "serializeInlineValue");
|
|
14517
14708
|
__name(escapeHtmlAttribute2, "escapeHtmlAttribute");
|
|
14518
14709
|
__name(appendResponseHeader, "appendResponseHeader");
|
|
14519
14710
|
__name(appendResponseVary, "appendResponseVary");
|
|
@@ -15601,9 +15792,9 @@ var init_renderer = __esm({
|
|
|
15601
15792
|
slots: routeSlotPayload
|
|
15602
15793
|
});
|
|
15603
15794
|
const propsScript = `<script>
|
|
15604
|
-
window.__FARM_PROPS__ = ${
|
|
15605
|
-
window.__FARM_ROUTE_SLOTS__ = ${
|
|
15606
|
-
window.__FARM_DEPLOYMENT_ID__ = ${
|
|
15795
|
+
window.__FARM_PROPS__ = ${serializeInlineValue2(deferredProps.data.page)};
|
|
15796
|
+
window.__FARM_ROUTE_SLOTS__ = ${serializeInlineValue2(deferredProps.data.slots)};
|
|
15797
|
+
window.__FARM_DEPLOYMENT_ID__ = ${serializeInlineValue2(deploymentId)};
|
|
15607
15798
|
window.__FARM_PATH__ = ${JSON.stringify(req.__FARM_ROUTE__ || req.url || "/")};
|
|
15608
15799
|
window.__FARM_IS_CLIENT__ = ${JSON.stringify(isClientComponent)};
|
|
15609
15800
|
window.__FARM_PAGE_SHOULD_HYDRATE__ = ${JSON.stringify(
|
|
@@ -15621,7 +15812,7 @@ window.__FARM_LOADING_MODULE__ = ${JSON.stringify(
|
|
|
15621
15812
|
)};
|
|
15622
15813
|
window.__FARM_MANIFEST__ = ${JSON.stringify(clientManifest)};
|
|
15623
15814
|
window.__FARM_INTEGRATION_API_MANIFEST__ = ${JSON.stringify(getRegisteredIntegrationAPIManifest())};
|
|
15624
|
-
${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${
|
|
15815
|
+
${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(getFarmI18nClientSnapshot())};` : ""}
|
|
15625
15816
|
</script>`;
|
|
15626
15817
|
const hydrationClickQueueScript = isClientComponent || req.__FARM_SHOULD_HYDRATE__ === true || req.__FARM_HAS_HYDRATABLE_ROUTE_SLOTS__ === true ? createPreHydrationClickQueueScript() : "";
|
|
15627
15818
|
const {
|
|
@@ -15632,6 +15823,11 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
|
|
|
15632
15823
|
const i18nSnapshot = getFarmI18nClientSnapshot();
|
|
15633
15824
|
const i18nAlternateTags = i18nSnapshot ? renderI18nAlternateLinks(req.__FARM_ROUTE__ || req.url || "/", i18nSnapshot) : "";
|
|
15634
15825
|
const fontHead = renderFarmFontDevHead(this.config.root || process.cwd());
|
|
15826
|
+
const themeDocument = createFarmThemeDocumentParts(
|
|
15827
|
+
this.config.theme,
|
|
15828
|
+
this.config.basePath,
|
|
15829
|
+
getTheme()
|
|
15830
|
+
);
|
|
15635
15831
|
const streamRoot = import_react5.default.createElement("div", { style: { display: "contents" } }, element);
|
|
15636
15832
|
const { pipe } = (0, import_server2.renderToPipeableStream)(streamRoot, {
|
|
15637
15833
|
onShellReady() {
|
|
@@ -15645,8 +15841,9 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
|
|
|
15645
15841
|
console.log(`[FARM STREAM] onShellReady at ${shellReadyMs}ms`);
|
|
15646
15842
|
}
|
|
15647
15843
|
const shell = `<!DOCTYPE html>
|
|
15648
|
-
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}>
|
|
15844
|
+
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
|
|
15649
15845
|
<head>
|
|
15846
|
+
${themeDocument.head}
|
|
15650
15847
|
<meta charset="utf-8">
|
|
15651
15848
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
15652
15849
|
<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(deploymentId)}">
|
|
@@ -15848,15 +16045,21 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
|
|
|
15848
16045
|
const i18nSnapshot = getFarmI18nClientSnapshot();
|
|
15849
16046
|
const clientScript = isClientComponent ? ` <script type="module" src="/@farm/client.js"></script>` : "";
|
|
15850
16047
|
const integrationManifestScript = `<script>
|
|
15851
|
-
window.__FARM_DEPLOYMENT_ID__ = ${
|
|
16048
|
+
window.__FARM_DEPLOYMENT_ID__ = ${serializeInlineValue2(this.getDeploymentId())};
|
|
15852
16049
|
window.__FARM_INTEGRATION_API_MANIFEST__ = ${JSON.stringify(getRegisteredIntegrationAPIManifest())};
|
|
15853
|
-
${i18nSnapshot ? `window.__FARM_I18N__ = ${
|
|
16050
|
+
${i18nSnapshot ? `window.__FARM_I18N__ = ${serializeInlineValue2(i18nSnapshot)};` : ""}
|
|
15854
16051
|
</script>`;
|
|
15855
16052
|
const alternateLinks = i18nSnapshot ? renderI18nAlternateLinks(requestPath, i18nSnapshot) : "";
|
|
15856
16053
|
const fontHead = renderFarmFontDevHead(this.config.root || process.cwd());
|
|
16054
|
+
const themeDocument = createFarmThemeDocumentParts(
|
|
16055
|
+
this.config.theme,
|
|
16056
|
+
this.config.basePath,
|
|
16057
|
+
getTheme()
|
|
16058
|
+
);
|
|
15857
16059
|
return `<!DOCTYPE html>
|
|
15858
|
-
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}>
|
|
16060
|
+
<html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
|
|
15859
16061
|
<head>
|
|
16062
|
+
${themeDocument.head}
|
|
15860
16063
|
<meta charset="utf-8">
|
|
15861
16064
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
15862
16065
|
<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(this.getDeploymentId())}">
|
|
@@ -16218,6 +16421,8 @@ var init_app = __esm({
|
|
|
16218
16421
|
init_auth_config();
|
|
16219
16422
|
init_preload();
|
|
16220
16423
|
init_security();
|
|
16424
|
+
init_config2();
|
|
16425
|
+
init_server3();
|
|
16221
16426
|
defaultDocsConfig = {
|
|
16222
16427
|
enabled: false,
|
|
16223
16428
|
entry: "/docs",
|
|
@@ -16228,6 +16433,7 @@ var init_app = __esm({
|
|
|
16228
16433
|
constructor(config = {}, viteServer) {
|
|
16229
16434
|
this.config = this.normalizeConfig(config);
|
|
16230
16435
|
configureFarmObservability(this.config.observability);
|
|
16436
|
+
_setDefaultFarmThemeConfig(this.config.theme);
|
|
16231
16437
|
this.i18nRuntime = createFarmI18nRuntime(this.config.i18n);
|
|
16232
16438
|
_setDefaultFarmI18nRuntime(this.i18nRuntime);
|
|
16233
16439
|
this.viteServer = viteServer;
|
|
@@ -16286,6 +16492,7 @@ var init_app = __esm({
|
|
|
16286
16492
|
security: resolveFarmSecurityConfig(config.security),
|
|
16287
16493
|
images: resolveFarmImageConfig(config.images),
|
|
16288
16494
|
performance: resolveFarmPerformanceConfig(config.performance),
|
|
16495
|
+
theme: resolveFarmThemeConfig(config.theme, config.basePath || "/"),
|
|
16289
16496
|
i18n: isResolvedI18nConfig(config.i18n) ? config.i18n : resolveFarmI18nConfig(config.i18n, {
|
|
16290
16497
|
root,
|
|
16291
16498
|
mode: process.env.NODE_ENV === "production" ? "production" : "development"
|
|
@@ -18150,6 +18357,19 @@ var init_module = __esm({
|
|
|
18150
18357
|
}
|
|
18151
18358
|
});
|
|
18152
18359
|
|
|
18360
|
+
// src/cli-colors.ts
|
|
18361
|
+
function createCliColors(interactive = process.stdout.isTTY === true) {
|
|
18362
|
+
return import_picocolors.default.createColors(interactive);
|
|
18363
|
+
}
|
|
18364
|
+
var import_picocolors;
|
|
18365
|
+
var init_cli_colors = __esm({
|
|
18366
|
+
"src/cli-colors.ts"() {
|
|
18367
|
+
"use strict";
|
|
18368
|
+
import_picocolors = __toESM(require("picocolors"));
|
|
18369
|
+
__name(createCliColors, "createCliColors");
|
|
18370
|
+
}
|
|
18371
|
+
});
|
|
18372
|
+
|
|
18153
18373
|
// src/middleware/manager.ts
|
|
18154
18374
|
function isMiddlewareResponse(value) {
|
|
18155
18375
|
return value instanceof Response;
|
|
@@ -18166,6 +18386,7 @@ var init_manager = __esm({
|
|
|
18166
18386
|
init_response();
|
|
18167
18387
|
init_observability();
|
|
18168
18388
|
init_routing();
|
|
18389
|
+
init_cli_colors();
|
|
18169
18390
|
__name(isMiddlewareResponse, "isMiddlewareResponse");
|
|
18170
18391
|
_MiddlewareManager = class _MiddlewareManager {
|
|
18171
18392
|
constructor(appDir, viteServer, config, i18n) {
|
|
@@ -18319,23 +18540,16 @@ var init_manager = __esm({
|
|
|
18319
18540
|
if (applicable.length === 0) {
|
|
18320
18541
|
return false;
|
|
18321
18542
|
}
|
|
18322
|
-
|
|
18323
|
-
|
|
18324
|
-
|
|
18325
|
-
|
|
18326
|
-
|
|
18327
|
-
|
|
18328
|
-
|
|
18329
|
-
|
|
18330
|
-
|
|
18331
|
-
|
|
18332
|
-
].join(" ");
|
|
18333
|
-
console.log(log);
|
|
18334
|
-
} catch {
|
|
18335
|
-
console.log(
|
|
18336
|
-
`[FARM] [MIDDLEWARE] [${method}] Executing ${pathname} (${applicable.length} middleware)`
|
|
18337
|
-
);
|
|
18338
|
-
}
|
|
18543
|
+
const pc = createCliColors();
|
|
18544
|
+
const log = [
|
|
18545
|
+
pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
|
|
18546
|
+
pc.dim("[") + pc.bold(pc.magenta("MIDDLEWARE")) + pc.dim("]"),
|
|
18547
|
+
pc.dim("[") + pc.bold(pc.white(method.padEnd(3))) + pc.dim("]"),
|
|
18548
|
+
pc.gray("Executing middleware: "),
|
|
18549
|
+
pc.gray(pathname),
|
|
18550
|
+
pc.dim(` (${(Date.now() - startTime).toFixed(2)}ms)`)
|
|
18551
|
+
].join(" ");
|
|
18552
|
+
console.log(log);
|
|
18339
18553
|
for (const entry of applicable) {
|
|
18340
18554
|
const { mw, routeMatch } = entry;
|
|
18341
18555
|
const configMatch = mw.config ? this.matchesConfig(routePathname, mw.config, ctx) : { matched: true };
|
|
@@ -19846,7 +20060,7 @@ var init_environment_vite = __esm({
|
|
|
19846
20060
|
var version;
|
|
19847
20061
|
var init_package = __esm({
|
|
19848
20062
|
"package.json"() {
|
|
19849
|
-
version = "0.1.0-beta.
|
|
20063
|
+
version = "0.1.0-beta.23";
|
|
19850
20064
|
}
|
|
19851
20065
|
});
|
|
19852
20066
|
|
|
@@ -20746,6 +20960,36 @@ var init_fonts = __esm({
|
|
|
20746
20960
|
}
|
|
20747
20961
|
});
|
|
20748
20962
|
|
|
20963
|
+
// src/theme/vite.ts
|
|
20964
|
+
function createFarmThemeCssPlugin(input, basePath = "/") {
|
|
20965
|
+
const config = resolveFarmThemeConfig(input, basePath);
|
|
20966
|
+
return {
|
|
20967
|
+
name: "farm:theme-css",
|
|
20968
|
+
enforce: "pre",
|
|
20969
|
+
transform(code, id) {
|
|
20970
|
+
if (!config.enabled || !/\.css(?:\?.*)?$/.test(id) || !/@import\s+["']tailwindcss["']/.test(code) || /@custom-variant\s+dark\b/.test(code)) {
|
|
20971
|
+
return null;
|
|
20972
|
+
}
|
|
20973
|
+
return {
|
|
20974
|
+
code: `${code.trimEnd()}
|
|
20975
|
+
|
|
20976
|
+
${FARM_DARK_VARIANT}
|
|
20977
|
+
`,
|
|
20978
|
+
map: null
|
|
20979
|
+
};
|
|
20980
|
+
}
|
|
20981
|
+
};
|
|
20982
|
+
}
|
|
20983
|
+
var FARM_DARK_VARIANT;
|
|
20984
|
+
var init_vite = __esm({
|
|
20985
|
+
"src/theme/vite.ts"() {
|
|
20986
|
+
"use strict";
|
|
20987
|
+
init_config2();
|
|
20988
|
+
FARM_DARK_VARIANT = '@custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));';
|
|
20989
|
+
__name(createFarmThemeCssPlugin, "createFarmThemeCssPlugin");
|
|
20990
|
+
}
|
|
20991
|
+
});
|
|
20992
|
+
|
|
20749
20993
|
// src/docs/last-modified.ts
|
|
20750
20994
|
function normalizeRelativePath(value) {
|
|
20751
20995
|
return value.replace(/\\/g, "/").replace(/^\.\/+/, "");
|
|
@@ -24723,6 +24967,7 @@ async function resolveConfig(userConfig, mode) {
|
|
|
24723
24967
|
routeRules,
|
|
24724
24968
|
images: resolveFarmImageConfig(userConfig.images),
|
|
24725
24969
|
performance: resolveFarmPerformanceConfig(userConfig.performance),
|
|
24970
|
+
theme: resolveFarmThemeConfig(userConfig.theme, userConfig.basePath || "/"),
|
|
24726
24971
|
publicDir: userConfig.publicDir || "public",
|
|
24727
24972
|
i18n: resolveFarmI18nConfig(userConfig.i18n, { root, mode }),
|
|
24728
24973
|
openapi: {
|
|
@@ -24800,7 +25045,7 @@ async function loadConfig(rootDir, configPath, mode = process.env.NODE_ENV === "
|
|
|
24800
25045
|
return void 0;
|
|
24801
25046
|
}
|
|
24802
25047
|
var import_path9, FARM_RESOLVED_CUSTOM_CONTEXT, DOCS_CONFIG_FILENAMES;
|
|
24803
|
-
var
|
|
25048
|
+
var init_config3 = __esm({
|
|
24804
25049
|
"src/config.ts"() {
|
|
24805
25050
|
"use strict";
|
|
24806
25051
|
init_integrations();
|
|
@@ -24821,6 +25066,7 @@ var init_config2 = __esm({
|
|
|
24821
25066
|
init_auth_config();
|
|
24822
25067
|
init_preload();
|
|
24823
25068
|
init_security();
|
|
25069
|
+
init_config2();
|
|
24824
25070
|
init_config_entry();
|
|
24825
25071
|
FARM_RESOLVED_CUSTOM_CONTEXT = /* @__PURE__ */ Symbol.for("farm.resolvedCustomContext");
|
|
24826
25072
|
__name(hasCustomFarmRouteContext, "hasCustomFarmRouteContext");
|
|
@@ -25325,7 +25571,7 @@ var init_api = __esm({
|
|
|
25325
25571
|
"src/docs/api.ts"() {
|
|
25326
25572
|
"use strict";
|
|
25327
25573
|
import_docs2 = require("@farming-labs/docs");
|
|
25328
|
-
|
|
25574
|
+
init_config3();
|
|
25329
25575
|
init_handler();
|
|
25330
25576
|
__name(isRecord4, "isRecord");
|
|
25331
25577
|
__name(isResolvedDocsConfig2, "isResolvedDocsConfig");
|
|
@@ -26310,7 +26556,7 @@ var init_devtools = __esm({
|
|
|
26310
26556
|
"src/devtools.ts"() {
|
|
26311
26557
|
"use strict";
|
|
26312
26558
|
import_node_path14 = __toESM(require("path"));
|
|
26313
|
-
|
|
26559
|
+
init_config3();
|
|
26314
26560
|
init_cron();
|
|
26315
26561
|
init_route_runtime();
|
|
26316
26562
|
__name(normalizePath, "normalizePath");
|
|
@@ -28212,18 +28458,14 @@ function farmPlugin(options = {}, initialPluginManager) {
|
|
|
28212
28458
|
let refreshRouteDiscovery = null;
|
|
28213
28459
|
let workflowHandler = null;
|
|
28214
28460
|
const logUpdate = /* @__PURE__ */ __name((tag, message) => {
|
|
28215
|
-
|
|
28216
|
-
|
|
28217
|
-
|
|
28218
|
-
|
|
28219
|
-
|
|
28220
|
-
|
|
28221
|
-
|
|
28222
|
-
|
|
28223
|
-
console.log(log);
|
|
28224
|
-
} catch {
|
|
28225
|
-
console.log(`[FARM] [${tag}] [UPDATE] ${message}`);
|
|
28226
|
-
}
|
|
28461
|
+
const pc = createCliColors();
|
|
28462
|
+
const log = [
|
|
28463
|
+
pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
|
|
28464
|
+
pc.dim("[") + pc.bold(pc.cyan(tag)) + pc.dim("]"),
|
|
28465
|
+
pc.dim("[") + pc.bold(pc.yellow("UPDATE")) + pc.dim("]"),
|
|
28466
|
+
pc.gray(message)
|
|
28467
|
+
].join(" ");
|
|
28468
|
+
console.log(log);
|
|
28227
28469
|
}, "logUpdate");
|
|
28228
28470
|
return {
|
|
28229
28471
|
name: "farm",
|
|
@@ -28664,25 +28906,21 @@ window.__FARM_MANIFEST__ = ${inlineValue({
|
|
|
28664
28906
|
return;
|
|
28665
28907
|
}
|
|
28666
28908
|
logResponse.__last = { key: dedupeKey, ts: now2 };
|
|
28667
|
-
|
|
28668
|
-
|
|
28669
|
-
|
|
28670
|
-
|
|
28671
|
-
|
|
28672
|
-
|
|
28673
|
-
|
|
28674
|
-
|
|
28675
|
-
|
|
28676
|
-
|
|
28677
|
-
|
|
28678
|
-
|
|
28679
|
-
|
|
28680
|
-
|
|
28681
|
-
|
|
28682
|
-
console.log(log);
|
|
28683
|
-
} catch {
|
|
28684
|
-
console.log(`[FARM] [${tag}] [${method}] ${urlPath} - ${status} (${duration}ms)`);
|
|
28685
|
-
}
|
|
28909
|
+
const pc = createCliColors();
|
|
28910
|
+
let statusColor = pc.green;
|
|
28911
|
+
if (status >= 500) statusColor = pc.red;
|
|
28912
|
+
else if (status >= 400) statusColor = pc.yellow;
|
|
28913
|
+
else if (status >= 300) statusColor = pc.cyan;
|
|
28914
|
+
const log = [
|
|
28915
|
+
pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
|
|
28916
|
+
pc.dim("[") + pc.bold(pc.cyan(tag)) + pc.dim("]"),
|
|
28917
|
+
pc.dim("[") + pc.bold(pc.white(method.padEnd(3))) + pc.dim("]"),
|
|
28918
|
+
pc.gray(urlPath),
|
|
28919
|
+
pc.dim("-"),
|
|
28920
|
+
statusColor(status.toString()),
|
|
28921
|
+
pc.dim(`(${duration}ms)`)
|
|
28922
|
+
].join(" ");
|
|
28923
|
+
console.log(log);
|
|
28686
28924
|
}, "logResponse");
|
|
28687
28925
|
server.middlewares.use(
|
|
28688
28926
|
_withAfterNodeMiddleware(async (req, res, next) => {
|
|
@@ -31296,14 +31534,22 @@ async function renderPage(pageData) {
|
|
|
31296
31534
|
if (!doc.documentElement || !doc.body) return false;
|
|
31297
31535
|
|
|
31298
31536
|
resetReactRoots();
|
|
31537
|
+
const activeFarmTheme =
|
|
31538
|
+
window.__FARM_THEME__?.snapshot?.resolvedTheme ||
|
|
31539
|
+
document.documentElement.getAttribute('data-theme');
|
|
31299
31540
|
Array.from(document.documentElement.attributes).forEach(function(attr) {
|
|
31541
|
+
if (attr.name === 'data-theme') return;
|
|
31300
31542
|
if (!doc.documentElement.hasAttribute(attr.name)) {
|
|
31301
31543
|
document.documentElement.removeAttribute(attr.name);
|
|
31302
31544
|
}
|
|
31303
31545
|
});
|
|
31304
31546
|
Array.from(doc.documentElement.attributes).forEach(function(attr) {
|
|
31547
|
+
if (attr.name === 'data-theme') return;
|
|
31305
31548
|
document.documentElement.setAttribute(attr.name, attr.value);
|
|
31306
31549
|
});
|
|
31550
|
+
if (activeFarmTheme) {
|
|
31551
|
+
document.documentElement.setAttribute('data-theme', activeFarmTheme);
|
|
31552
|
+
}
|
|
31307
31553
|
|
|
31308
31554
|
document.head.innerHTML = doc.head ? doc.head.innerHTML : '';
|
|
31309
31555
|
document.body.innerHTML = doc.body.innerHTML;
|
|
@@ -31312,6 +31558,7 @@ async function renderPage(pageData) {
|
|
|
31312
31558
|
|
|
31313
31559
|
setTimeout(function() {
|
|
31314
31560
|
Array.from(document.querySelectorAll('script')).forEach(function(script) {
|
|
31561
|
+
if (script.id === 'farm-theme-script') return;
|
|
31315
31562
|
const freshScript = document.createElement('script');
|
|
31316
31563
|
Array.from(script.attributes).forEach(function(attr) {
|
|
31317
31564
|
freshScript.setAttribute(attr.name, attr.value);
|
|
@@ -31739,7 +31986,7 @@ async function defineConfig2(config = {}) {
|
|
|
31739
31986
|
return null;
|
|
31740
31987
|
}
|
|
31741
31988
|
};
|
|
31742
|
-
const pc =
|
|
31989
|
+
const pc = createCliColors();
|
|
31743
31990
|
let serverStarted = false;
|
|
31744
31991
|
let startTime = Date.now();
|
|
31745
31992
|
const farmLogger = {
|
|
@@ -31806,6 +32053,7 @@ async function defineConfig2(config = {}) {
|
|
|
31806
32053
|
};
|
|
31807
32054
|
return {
|
|
31808
32055
|
plugins: [
|
|
32056
|
+
createFarmThemeCssPlugin(config.theme, config.basePath),
|
|
31809
32057
|
tailwindcss(),
|
|
31810
32058
|
viteBrowserExternalPlugin,
|
|
31811
32059
|
farmI18nClientBridgePlugin(),
|
|
@@ -31878,7 +32126,7 @@ async function defineConfig2(config = {}) {
|
|
|
31878
32126
|
};
|
|
31879
32127
|
}
|
|
31880
32128
|
var fs7, path25, ALL_TYPE_ARTIFACTS, createEmptyTypeArtifactSelection, FARM_I18N_CLIENT_BRIDGE_ID, EMPTY_FARM_DOCS_SEARCH_CLIENT_RUNTIME, FARM_CONFIG_FILENAMES;
|
|
31881
|
-
var
|
|
32129
|
+
var init_vite2 = __esm({
|
|
31882
32130
|
"src/vite.ts"() {
|
|
31883
32131
|
"use strict";
|
|
31884
32132
|
init_app();
|
|
@@ -31914,6 +32162,8 @@ var init_vite = __esm({
|
|
|
31914
32162
|
init_vite_config();
|
|
31915
32163
|
init_fonts();
|
|
31916
32164
|
init_server_http();
|
|
32165
|
+
init_cli_colors();
|
|
32166
|
+
init_vite();
|
|
31917
32167
|
ALL_TYPE_ARTIFACTS = {
|
|
31918
32168
|
routes: true,
|
|
31919
32169
|
api: true,
|
|
@@ -32013,7 +32263,7 @@ var init_plugin = __esm({
|
|
|
32013
32263
|
init_env();
|
|
32014
32264
|
init_request_context();
|
|
32015
32265
|
init_plugin_integration_context();
|
|
32016
|
-
|
|
32266
|
+
init_vite2();
|
|
32017
32267
|
_FarmRuntimeShutdownError = class _FarmRuntimeShutdownError extends Error {
|
|
32018
32268
|
constructor(message, errors) {
|
|
32019
32269
|
super(message);
|
|
@@ -33577,6 +33827,7 @@ __export(src_exports, {
|
|
|
33577
33827
|
getServerActionInvalidations: () => getServerActionInvalidations,
|
|
33578
33828
|
getServerActionSignal: () => getServerActionSignal,
|
|
33579
33829
|
getStorage: () => getStorage,
|
|
33830
|
+
getTheme: () => getTheme2,
|
|
33580
33831
|
globFiles: () => globFiles,
|
|
33581
33832
|
hasFarmRouteRuntimeControls: () => hasFarmRouteRuntimeControls,
|
|
33582
33833
|
hasISR: () => hasISR,
|
|
@@ -33693,6 +33944,7 @@ __export(src_exports, {
|
|
|
33693
33944
|
resolveFarmLayoutFonts: () => resolveFarmLayoutFonts,
|
|
33694
33945
|
resolveFarmRouteRuleRuntimeConfig: () => resolveFarmRouteRuleRuntimeConfig,
|
|
33695
33946
|
resolveFarmRouteRuntimeConfig: () => resolveFarmRouteRuntimeConfig,
|
|
33947
|
+
resolveFarmThemeConfig: () => resolveFarmThemeConfig,
|
|
33696
33948
|
resolveIntegrationOrmRuntimeClient: () => resolveIntegrationOrmRuntimeClient,
|
|
33697
33949
|
resolveIntegrationPlugins: () => resolveIntegrationPlugins,
|
|
33698
33950
|
resolveMarkdownConfig: () => resolveMarkdownConfig,
|
|
@@ -33719,12 +33971,14 @@ __export(src_exports, {
|
|
|
33719
33971
|
segmentsToPattern: () => segmentsToPattern,
|
|
33720
33972
|
serverEnv: () => serverEnv,
|
|
33721
33973
|
setEnv: () => setEnv,
|
|
33974
|
+
setTheme: () => setTheme,
|
|
33722
33975
|
snapshotDeferredData: () => snapshotDeferredData,
|
|
33723
33976
|
sqliteStorage: () => sqliteStorage,
|
|
33724
33977
|
storageCacheAdapter: () => storageCacheAdapter,
|
|
33725
33978
|
titleFromMarkdown: () => titleFromMarkdown,
|
|
33726
33979
|
toFormData: () => toFormData,
|
|
33727
33980
|
toViteModuleId: () => toViteModuleId,
|
|
33981
|
+
toggleTheme: () => toggleTheme,
|
|
33728
33982
|
unstable_cache: () => unstable_cache,
|
|
33729
33983
|
unwrapMiddleware: () => unwrapMiddleware,
|
|
33730
33984
|
updateTag: () => updateTag,
|
|
@@ -33740,6 +33994,7 @@ __export(src_exports, {
|
|
|
33740
33994
|
useSearchParams: () => useSearchParams,
|
|
33741
33995
|
useServerFn: () => useServerFn,
|
|
33742
33996
|
useServerQuery: () => useServerQuery,
|
|
33997
|
+
useTheme: () => useTheme,
|
|
33743
33998
|
validateServerActionRequest: () => validateServerActionRequest,
|
|
33744
33999
|
vercelBlobStorage: () => vercelBlobStorage,
|
|
33745
34000
|
vercelKVStorage: () => vercelKVStorage,
|
|
@@ -33769,7 +34024,7 @@ __name(FarmProvider, "FarmProvider");
|
|
|
33769
34024
|
// src/index.ts
|
|
33770
34025
|
init_request();
|
|
33771
34026
|
init_plugin();
|
|
33772
|
-
|
|
34027
|
+
init_config3();
|
|
33773
34028
|
init_layers();
|
|
33774
34029
|
|
|
33775
34030
|
// src/hmr.ts
|
|
@@ -35520,6 +35775,7 @@ init_routes();
|
|
|
35520
35775
|
init_routes_server();
|
|
35521
35776
|
init_utils();
|
|
35522
35777
|
init_server_http();
|
|
35778
|
+
init_cli_colors();
|
|
35523
35779
|
function farmApiPlugin(options = {}) {
|
|
35524
35780
|
const srcDir = options.srcDir ?? "src";
|
|
35525
35781
|
const debug = options.debug ?? false;
|
|
@@ -35533,25 +35789,21 @@ function farmApiPlugin(options = {}) {
|
|
|
35533
35789
|
const log = /* @__PURE__ */ __name((_message) => {
|
|
35534
35790
|
}, "log");
|
|
35535
35791
|
const logResponse = /* @__PURE__ */ __name((method, urlPath, status, duration) => {
|
|
35536
|
-
|
|
35537
|
-
|
|
35538
|
-
|
|
35539
|
-
|
|
35540
|
-
|
|
35541
|
-
|
|
35542
|
-
|
|
35543
|
-
|
|
35544
|
-
|
|
35545
|
-
|
|
35546
|
-
|
|
35547
|
-
|
|
35548
|
-
|
|
35549
|
-
|
|
35550
|
-
|
|
35551
|
-
console.log(logMsg);
|
|
35552
|
-
} catch {
|
|
35553
|
-
console.log(`[FARM] [API] [${method}] ${urlPath} - ${status} (${duration}ms)`);
|
|
35554
|
-
}
|
|
35792
|
+
const pc = createCliColors();
|
|
35793
|
+
let statusColor = pc.green;
|
|
35794
|
+
if (status >= 500) statusColor = pc.red;
|
|
35795
|
+
else if (status >= 400) statusColor = pc.yellow;
|
|
35796
|
+
else if (status >= 300) statusColor = pc.cyan;
|
|
35797
|
+
const logMsg = [
|
|
35798
|
+
pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
|
|
35799
|
+
pc.dim("[") + pc.bold(pc.cyan("API")) + pc.dim("]"),
|
|
35800
|
+
pc.dim("[") + pc.bold(pc.white(method.padEnd(3))) + pc.dim("]"),
|
|
35801
|
+
pc.gray(urlPath),
|
|
35802
|
+
pc.dim("-"),
|
|
35803
|
+
statusColor(status.toString()),
|
|
35804
|
+
pc.dim(`(${duration}ms)`)
|
|
35805
|
+
].join(" ");
|
|
35806
|
+
console.log(logMsg);
|
|
35555
35807
|
}, "logResponse");
|
|
35556
35808
|
const addEndpoint = /* @__PURE__ */ __name((routePath, filePath, method, endpoint2) => {
|
|
35557
35809
|
const normalizedMethod = method.toUpperCase();
|
|
@@ -37295,6 +37547,9 @@ init_cron();
|
|
|
37295
37547
|
init_env();
|
|
37296
37548
|
init_env_types();
|
|
37297
37549
|
|
|
37550
|
+
// src/theme/index.ts
|
|
37551
|
+
init_config2();
|
|
37552
|
+
|
|
37298
37553
|
// src/environment.ts
|
|
37299
37554
|
var _FarmEnvironmentError = class _FarmEnvironmentError extends Error {
|
|
37300
37555
|
constructor(api3, expected, actual) {
|
|
@@ -38003,12 +38258,12 @@ function useServerQuery(query, input, options = {}) {
|
|
|
38003
38258
|
const mountedKeyRef = (0, import_react9.useRef)(void 0);
|
|
38004
38259
|
inputRef.current = input;
|
|
38005
38260
|
optionsRef.current = options;
|
|
38006
|
-
const
|
|
38261
|
+
const subscribe2 = (0, import_react9.useCallback)(
|
|
38007
38262
|
(listener) => cache.subscribe(key, listener),
|
|
38008
38263
|
[cache, key]
|
|
38009
38264
|
);
|
|
38010
38265
|
const getSnapshot = (0, import_react9.useCallback)(() => cache.get(key), [cache, key]);
|
|
38011
|
-
const entry = (0, import_react9.useSyncExternalStore)(
|
|
38266
|
+
const entry = (0, import_react9.useSyncExternalStore)(subscribe2, getSnapshot, () => void 0);
|
|
38012
38267
|
const run = (0, import_react9.useCallback)(
|
|
38013
38268
|
(force = false) => fetchServerQuery(query, inputRef.current, {
|
|
38014
38269
|
...optionsRef.current,
|
|
@@ -38134,7 +38389,7 @@ init_deployment();
|
|
|
38134
38389
|
init_generate_route_types();
|
|
38135
38390
|
|
|
38136
38391
|
// src/build/index.ts
|
|
38137
|
-
|
|
38392
|
+
init_config3();
|
|
38138
38393
|
var import_path14 = __toESM(require("path"));
|
|
38139
38394
|
init_utils();
|
|
38140
38395
|
init_app();
|
|
@@ -38142,7 +38397,7 @@ init_route_manager2();
|
|
|
38142
38397
|
init_layers();
|
|
38143
38398
|
|
|
38144
38399
|
// src/nitro/universal-build.ts
|
|
38145
|
-
|
|
38400
|
+
init_config3();
|
|
38146
38401
|
init_client_plugin_build();
|
|
38147
38402
|
var import_os = __toESM(require("os"));
|
|
38148
38403
|
var import_path12 = __toESM(require("path"));
|
|
@@ -38678,6 +38933,7 @@ __name(withVite5TransformContext, "withVite5TransformContext");
|
|
|
38678
38933
|
init_font_vite();
|
|
38679
38934
|
init_vite_config();
|
|
38680
38935
|
init_not_found();
|
|
38936
|
+
init_vite();
|
|
38681
38937
|
var import_meta = {};
|
|
38682
38938
|
function preloadFarmNitroRuntime() {
|
|
38683
38939
|
return import("nitro").then(
|
|
@@ -39350,7 +39606,7 @@ async function validateClientBuildOutput(root, srcDir, outputDir) {
|
|
|
39350
39606
|
__name(validateClientBuildOutput, "validateClientBuildOutput");
|
|
39351
39607
|
async function buildClient(productionVite, config, root, srcDir, outputDir, pageRoutes, layoutRoutes = [], routeSlots = []) {
|
|
39352
39608
|
const viteBuild = productionVite.build;
|
|
39353
|
-
const { farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (
|
|
39609
|
+
const { farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (init_vite2(), vite_exports));
|
|
39354
39610
|
const { PluginManager: PluginManager2 } = await Promise.resolve().then(() => (init_plugin(), plugin_exports));
|
|
39355
39611
|
const fs9 = await import("fs/promises");
|
|
39356
39612
|
const pluginManager = new PluginManager2({
|
|
@@ -39542,6 +39798,7 @@ async function buildClient(productionVite, config, root, srcDir, outputDir, page
|
|
|
39542
39798
|
}
|
|
39543
39799
|
},
|
|
39544
39800
|
plugins: [
|
|
39801
|
+
createFarmThemeCssPlugin(config.theme, config.basePath),
|
|
39545
39802
|
...tailwindVitePlugin ? [tailwindVitePlugin] : [],
|
|
39546
39803
|
// Plugin to redirect @farm.js/core imports to client-only exports
|
|
39547
39804
|
{
|
|
@@ -40919,7 +41176,7 @@ void hydrate();
|
|
|
40919
41176
|
__name(generateClientHydrationEntry, "generateClientHydrationEntry");
|
|
40920
41177
|
async function buildSSRInMemory(productionVite, config, root, routeManager, apiRouteManager, serverRenderer, preset, collectedPageRoutes, collectedLayoutRoutes, collectedRouteSlots) {
|
|
40921
41178
|
const viteBuild = productionVite.build;
|
|
40922
|
-
const { farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (
|
|
41179
|
+
const { farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (init_vite2(), vite_exports));
|
|
40923
41180
|
const { PluginManager: PluginManager2 } = await Promise.resolve().then(() => (init_plugin(), plugin_exports));
|
|
40924
41181
|
const fs9 = await import("fs/promises");
|
|
40925
41182
|
const pluginManager = new PluginManager2({
|
|
@@ -41160,6 +41417,7 @@ async function buildSSRInMemory(productionVite, config, root, routeManager, apiR
|
|
|
41160
41417
|
__FARM_PUBLIC_ENV__: JSON.stringify(config.env?.public || {})
|
|
41161
41418
|
},
|
|
41162
41419
|
plugins: [
|
|
41420
|
+
createFarmThemeCssPlugin(config.theme, config.basePath),
|
|
41163
41421
|
...tailwindVitePlugin ? [tailwindVitePlugin] : [],
|
|
41164
41422
|
...!useExternalMetadataImageRuntime && metadataImageRoutes.some((image) => image.sourceType === "module") ? [createMetadataImageWasmPlugin()] : [],
|
|
41165
41423
|
{
|
|
@@ -41373,15 +41631,19 @@ function generateVirtualEntryCode(apiRoutes, pageRoutes, layoutRoutes, routeSlot
|
|
|
41373
41631
|
_runWithCurrentRequest,
|
|
41374
41632
|
_runWithMiddlewareContext,
|
|
41375
41633
|
_runWithMiddlewareData,
|
|
41634
|
+
_setDefaultFarmThemeConfig,
|
|
41376
41635
|
addMetadataImageReference,
|
|
41636
|
+
applyFarmThemeDocument,
|
|
41377
41637
|
appendFarmLinkHeader,
|
|
41378
41638
|
applyProductionMiddlewareHeaders,
|
|
41379
41639
|
configureFarmCache,
|
|
41380
41640
|
configureFarmObservability,
|
|
41381
41641
|
createFarmCacheKey,
|
|
41642
|
+
createFarmThemeDocumentParts,
|
|
41382
41643
|
createFarmLocaleCookie,
|
|
41383
41644
|
createFarmProductionLifecycle,
|
|
41384
41645
|
createProductionMiddlewareRunner,
|
|
41646
|
+
getTheme as getFarmTheme,
|
|
41385
41647
|
emitFarmEvent,
|
|
41386
41648
|
getFarmDataCache,
|
|
41387
41649
|
getFarmLocaleVaryHeaders,
|
|
@@ -41576,6 +41838,8 @@ configureFarmObservability(farmObservabilityConfig);
|
|
|
41576
41838
|
configureFarmCache(farmResolvedRuntimeConfig.cache);
|
|
41577
41839
|
const farmI18nConfig = ${JSON.stringify(config.i18n)};
|
|
41578
41840
|
const farmServerConfig = ${JSON.stringify(config.server)};
|
|
41841
|
+
const farmThemeConfig = ${JSON.stringify(config.theme)};
|
|
41842
|
+
_setDefaultFarmThemeConfig(farmThemeConfig);
|
|
41579
41843
|
export const farmProductionLifecycle = createFarmProductionLifecycle({
|
|
41580
41844
|
server: farmServerConfig,
|
|
41581
41845
|
start: () => farmPluginRuntime?.startRuntime(),
|
|
@@ -43412,7 +43676,13 @@ async function handleFarmRequestInContext(
|
|
|
43412
43676
|
!farmI18nSnapshot &&
|
|
43413
43677
|
!pprCacheKey
|
|
43414
43678
|
) {
|
|
43679
|
+
const farmThemeDocument = createFarmThemeDocumentParts(
|
|
43680
|
+
farmThemeConfig,
|
|
43681
|
+
farmResolvedRuntimeConfig.basePath,
|
|
43682
|
+
getFarmTheme(request)
|
|
43683
|
+
);
|
|
43415
43684
|
const streamPrefix = '<!DOCTYPE html>\\n<html lang="en">\\n<head>\\n' +
|
|
43685
|
+
farmThemeDocument.head + '\\n' +
|
|
43416
43686
|
' <meta charset="utf-8">\\n' +
|
|
43417
43687
|
' <meta name="viewport" content="width=device-width, initial-scale=1">\\n' +
|
|
43418
43688
|
(hasFavicon ? '' : ' <link rel="icon" href="data:,">\\n') +
|
|
@@ -43428,9 +43698,13 @@ async function handleFarmRequestInContext(
|
|
|
43428
43698
|
) + '\\n' +
|
|
43429
43699
|
' <script type="module" src="/farm-client.js"></script>\\n' +
|
|
43430
43700
|
'</body>\\n</html>';
|
|
43701
|
+
const themedStreamPrefix = streamPrefix.replace(
|
|
43702
|
+
'<html lang="en">',
|
|
43703
|
+
'<html lang="en"' + farmThemeDocument.attributes + '>'
|
|
43704
|
+
);
|
|
43431
43705
|
const streamedDocument = createFarmDocumentStream(
|
|
43432
43706
|
renderedPage.stream,
|
|
43433
|
-
|
|
43707
|
+
themedStreamPrefix,
|
|
43434
43708
|
streamSuffix,
|
|
43435
43709
|
function() {
|
|
43436
43710
|
if (pprBypassReason === "refresh") {
|
|
@@ -43513,6 +43787,12 @@ async function handleFarmRequestInContext(
|
|
|
43513
43787
|
</html>\`;
|
|
43514
43788
|
}
|
|
43515
43789
|
fullHtml = applyFarmI18nDocument(fullHtml, pathname, farmI18nSnapshot);
|
|
43790
|
+
fullHtml = applyFarmThemeDocument(
|
|
43791
|
+
fullHtml,
|
|
43792
|
+
farmThemeConfig,
|
|
43793
|
+
farmResolvedRuntimeConfig.basePath,
|
|
43794
|
+
getFarmTheme(request)
|
|
43795
|
+
);
|
|
43516
43796
|
|
|
43517
43797
|
if (pageStatus === 200 && pprCacheKey && request.method.toUpperCase() !== "HEAD") {
|
|
43518
43798
|
await pprShellCache.setAsync(
|
|
@@ -43639,10 +43919,15 @@ async function handleFarmRequestInContext(
|
|
|
43639
43919
|
const errorHtml = ${hasMiddlewareRuntime ? `await _runWithMiddlewareData(middlewareData, () =>
|
|
43640
43920
|
_runWithMiddlewareContext(middlewareContext, renderErrorElement)
|
|
43641
43921
|
)` : "await renderErrorElement()"};
|
|
43642
|
-
const errorDocument =
|
|
43643
|
-
|
|
43644
|
-
|
|
43645
|
-
|
|
43922
|
+
const errorDocument = applyFarmThemeDocument(
|
|
43923
|
+
applyFarmI18nDocument(
|
|
43924
|
+
createFarmErrorDocument(errorHtml, "Application Error"),
|
|
43925
|
+
pathname,
|
|
43926
|
+
getFarmI18nSnapshot()
|
|
43927
|
+
),
|
|
43928
|
+
farmThemeConfig,
|
|
43929
|
+
farmResolvedRuntimeConfig.basePath,
|
|
43930
|
+
getFarmTheme(request)
|
|
43646
43931
|
);
|
|
43647
43932
|
emitFarmEvent({
|
|
43648
43933
|
type: "render.complete",
|
|
@@ -43667,10 +43952,15 @@ async function handleFarmRequestInContext(
|
|
|
43667
43952
|
const errorMessage = "Internal Server Error";
|
|
43668
43953
|
const fallbackHtml = '<main><h1>Application Error</h1><p>' +
|
|
43669
43954
|
escapeFarmHtmlAttribute(errorMessage) + '</p></main>';
|
|
43670
|
-
const fallbackDocument =
|
|
43671
|
-
|
|
43672
|
-
|
|
43673
|
-
|
|
43955
|
+
const fallbackDocument = applyFarmThemeDocument(
|
|
43956
|
+
applyFarmI18nDocument(
|
|
43957
|
+
createFarmErrorDocument(fallbackHtml, "Application Error"),
|
|
43958
|
+
pathname,
|
|
43959
|
+
getFarmI18nSnapshot()
|
|
43960
|
+
),
|
|
43961
|
+
farmThemeConfig,
|
|
43962
|
+
farmResolvedRuntimeConfig.basePath,
|
|
43963
|
+
getFarmTheme(request)
|
|
43674
43964
|
);
|
|
43675
43965
|
return applyProductionMiddlewareHeaders(new Response(
|
|
43676
43966
|
fallbackDocument,
|
|
@@ -43768,6 +44058,12 @@ async function handleFarmRequestInContext(
|
|
|
43768
44058
|
</html>\`;
|
|
43769
44059
|
}
|
|
43770
44060
|
fullHtml = applyFarmI18nDocument(fullHtml, pathname, getFarmI18nSnapshot());
|
|
44061
|
+
fullHtml = applyFarmThemeDocument(
|
|
44062
|
+
fullHtml,
|
|
44063
|
+
farmThemeConfig,
|
|
44064
|
+
farmResolvedRuntimeConfig.basePath,
|
|
44065
|
+
getFarmTheme(request)
|
|
44066
|
+
);
|
|
43771
44067
|
|
|
43772
44068
|
emitFarmEvent({
|
|
43773
44069
|
type: "render.complete",
|
|
@@ -43786,8 +44082,14 @@ async function handleFarmRequestInContext(
|
|
|
43786
44082
|
}), middlewareHeaders);
|
|
43787
44083
|
} catch (error) {
|
|
43788
44084
|
console.error("404 render error:", error);
|
|
43789
|
-
|
|
44085
|
+
const fallbackDocument = applyFarmThemeDocument(
|
|
43790
44086
|
\`<!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>\`,
|
|
44087
|
+
farmThemeConfig,
|
|
44088
|
+
farmResolvedRuntimeConfig.basePath,
|
|
44089
|
+
getFarmTheme(request)
|
|
44090
|
+
);
|
|
44091
|
+
return applyProductionMiddlewareHeaders(new Response(
|
|
44092
|
+
fallbackDocument,
|
|
43791
44093
|
{
|
|
43792
44094
|
status: 404,
|
|
43793
44095
|
headers: { "Content-Type": "text/html", "x-farm-preload-buffered": "1" },
|
|
@@ -45014,7 +45316,7 @@ async function createProjectModuleServer(createViteServer, config, root) {
|
|
|
45014
45316
|
}
|
|
45015
45317
|
__name(createProjectModuleServer, "createProjectModuleServer");
|
|
45016
45318
|
async function buildClient2(viteBuild, config, root, srcDir, outputDir) {
|
|
45017
|
-
const { farmI18nClientBridgePlugin: farmI18nClientBridgePlugin2, farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (
|
|
45319
|
+
const { farmI18nClientBridgePlugin: farmI18nClientBridgePlugin2, farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (init_vite2(), vite_exports));
|
|
45018
45320
|
const { PluginManager: PluginManager2 } = await Promise.resolve().then(() => (init_plugin(), plugin_exports));
|
|
45019
45321
|
const pluginManager = new PluginManager2({
|
|
45020
45322
|
config,
|
|
@@ -45041,7 +45343,7 @@ async function buildClient2(viteBuild, config, root, srcDir, outputDir) {
|
|
|
45041
45343
|
}
|
|
45042
45344
|
__name(buildClient2, "buildClient");
|
|
45043
45345
|
async function buildSSR(viteBuild, config, root, srcDir, outputDir) {
|
|
45044
|
-
const { farmI18nClientBridgePlugin: farmI18nClientBridgePlugin2, farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (
|
|
45346
|
+
const { farmI18nClientBridgePlugin: farmI18nClientBridgePlugin2, farmPlugin: farmPlugin2 } = await Promise.resolve().then(() => (init_vite2(), vite_exports));
|
|
45045
45347
|
const { PluginManager: PluginManager2 } = await Promise.resolve().then(() => (init_plugin(), plugin_exports));
|
|
45046
45348
|
const pluginManager = new PluginManager2({
|
|
45047
45349
|
config,
|
|
@@ -45687,8 +45989,74 @@ function createStore(initialState, extend) {
|
|
|
45687
45989
|
}
|
|
45688
45990
|
__name(createStore, "createStore");
|
|
45689
45991
|
|
|
45690
|
-
// src/client
|
|
45992
|
+
// src/theme/client.tsx
|
|
45691
45993
|
var import_react13 = require("react");
|
|
45994
|
+
init_bridge2();
|
|
45995
|
+
var FALLBACK_CLIENT_SNAPSHOT = Object.freeze({
|
|
45996
|
+
theme: "system",
|
|
45997
|
+
resolvedTheme: "light",
|
|
45998
|
+
mounted: true
|
|
45999
|
+
});
|
|
46000
|
+
var cachedClientSnapshot = FALLBACK_CLIENT_SNAPSHOT;
|
|
46001
|
+
function snapshotsMatch(left, right) {
|
|
46002
|
+
return left.theme === right.theme && left.resolvedTheme === right.resolvedTheme && left.mounted === right.mounted;
|
|
46003
|
+
}
|
|
46004
|
+
__name(snapshotsMatch, "snapshotsMatch");
|
|
46005
|
+
function getClientSnapshot() {
|
|
46006
|
+
const next = typeof window === "undefined" ? FALLBACK_CLIENT_SNAPSHOT : window.__FARM_THEME__?.snapshot;
|
|
46007
|
+
if (!next) return cachedClientSnapshot;
|
|
46008
|
+
if (!snapshotsMatch(cachedClientSnapshot, next)) cachedClientSnapshot = next;
|
|
46009
|
+
return cachedClientSnapshot;
|
|
46010
|
+
}
|
|
46011
|
+
__name(getClientSnapshot, "getClientSnapshot");
|
|
46012
|
+
function getHydrationSnapshot() {
|
|
46013
|
+
if (typeof window !== "undefined" && window.__FARM_THEME__?.serverSnapshot) {
|
|
46014
|
+
return window.__FARM_THEME__.serverSnapshot;
|
|
46015
|
+
}
|
|
46016
|
+
return getFarmThemeServerSnapshot();
|
|
46017
|
+
}
|
|
46018
|
+
__name(getHydrationSnapshot, "getHydrationSnapshot");
|
|
46019
|
+
function subscribe(listener) {
|
|
46020
|
+
if (typeof window === "undefined") return () => {
|
|
46021
|
+
};
|
|
46022
|
+
const handleThemeChange = /* @__PURE__ */ __name(() => {
|
|
46023
|
+
getClientSnapshot();
|
|
46024
|
+
listener();
|
|
46025
|
+
}, "handleThemeChange");
|
|
46026
|
+
window.addEventListener("farm:themechange", handleThemeChange);
|
|
46027
|
+
return () => window.removeEventListener("farm:themechange", handleThemeChange);
|
|
46028
|
+
}
|
|
46029
|
+
__name(subscribe, "subscribe");
|
|
46030
|
+
function getTheme2() {
|
|
46031
|
+
return getClientSnapshot();
|
|
46032
|
+
}
|
|
46033
|
+
__name(getTheme2, "getTheme");
|
|
46034
|
+
function setTheme(theme) {
|
|
46035
|
+
const runtime = typeof window === "undefined" ? void 0 : window.__FARM_THEME__;
|
|
46036
|
+
if (!runtime) {
|
|
46037
|
+
throw new Error("The FARMJS theme runtime is not enabled. Add `theme` to farm.config.ts.");
|
|
46038
|
+
}
|
|
46039
|
+
runtime.setTheme(theme);
|
|
46040
|
+
}
|
|
46041
|
+
__name(setTheme, "setTheme");
|
|
46042
|
+
function toggleTheme() {
|
|
46043
|
+
const next = getClientSnapshot().resolvedTheme === "dark" ? "light" : "dark";
|
|
46044
|
+
setTheme(next);
|
|
46045
|
+
return next;
|
|
46046
|
+
}
|
|
46047
|
+
__name(toggleTheme, "toggleTheme");
|
|
46048
|
+
function useTheme() {
|
|
46049
|
+
const snapshot = (0, import_react13.useSyncExternalStore)(subscribe, getClientSnapshot, getHydrationSnapshot);
|
|
46050
|
+
return {
|
|
46051
|
+
...snapshot,
|
|
46052
|
+
setTheme,
|
|
46053
|
+
toggleTheme
|
|
46054
|
+
};
|
|
46055
|
+
}
|
|
46056
|
+
__name(useTheme, "useTheme");
|
|
46057
|
+
|
|
46058
|
+
// src/client/link.tsx
|
|
46059
|
+
var import_react14 = require("react");
|
|
45692
46060
|
init_router();
|
|
45693
46061
|
init_client_runtime();
|
|
45694
46062
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
@@ -45750,9 +46118,9 @@ function LinkInner({
|
|
|
45750
46118
|
onTouchStart,
|
|
45751
46119
|
...props
|
|
45752
46120
|
}, ref) {
|
|
45753
|
-
const elementRef = (0,
|
|
45754
|
-
const intentTimeoutRef = (0,
|
|
45755
|
-
const hasPrefetched = (0,
|
|
46121
|
+
const elementRef = (0, import_react14.useRef)(null);
|
|
46122
|
+
const intentTimeoutRef = (0, import_react14.useRef)(null);
|
|
46123
|
+
const hasPrefetched = (0, import_react14.useRef)(false);
|
|
45756
46124
|
const { intent, viewport, render } = normalizePrefetch(prefetch2);
|
|
45757
46125
|
const baseHref = resolveLinkHref(href, params, {
|
|
45758
46126
|
query,
|
|
@@ -45761,17 +46129,17 @@ function LinkInner({
|
|
|
45761
46129
|
});
|
|
45762
46130
|
const resolvedHref = localizeActiveFarmHref(baseHref, locale);
|
|
45763
46131
|
const isExternal = isExternalUrl(resolvedHref);
|
|
45764
|
-
const doPrefetch = (0,
|
|
46132
|
+
const doPrefetch = (0, import_react14.useCallback)(() => {
|
|
45765
46133
|
if (isExternal || hasPrefetched.current) return;
|
|
45766
46134
|
const router = getRouter2();
|
|
45767
46135
|
if (!router) return;
|
|
45768
46136
|
hasPrefetched.current = true;
|
|
45769
46137
|
router.prefetch(resolvedHref);
|
|
45770
46138
|
}, [resolvedHref, isExternal]);
|
|
45771
|
-
(0,
|
|
46139
|
+
(0, import_react14.useEffect)(() => {
|
|
45772
46140
|
hasPrefetched.current = false;
|
|
45773
46141
|
}, [resolvedHref]);
|
|
45774
|
-
(0,
|
|
46142
|
+
(0, import_react14.useEffect)(() => {
|
|
45775
46143
|
const element = elementRef.current;
|
|
45776
46144
|
if (!element || isExternal) return;
|
|
45777
46145
|
const router = getRouter2();
|
|
@@ -45781,7 +46149,7 @@ function LinkInner({
|
|
|
45781
46149
|
return () => router.unobserveForPrefetch(element);
|
|
45782
46150
|
}
|
|
45783
46151
|
}, [resolvedHref, viewport, isExternal]);
|
|
45784
|
-
(0,
|
|
46152
|
+
(0, import_react14.useEffect)(() => {
|
|
45785
46153
|
if (!render || isExternal) return;
|
|
45786
46154
|
let cancelled = false;
|
|
45787
46155
|
let timeoutId = null;
|
|
@@ -45803,7 +46171,7 @@ function LinkInner({
|
|
|
45803
46171
|
}
|
|
45804
46172
|
};
|
|
45805
46173
|
}, [render, isExternal, resolvedHref]);
|
|
45806
|
-
(0,
|
|
46174
|
+
(0, import_react14.useEffect)(() => {
|
|
45807
46175
|
return () => {
|
|
45808
46176
|
if (intentTimeoutRef.current) {
|
|
45809
46177
|
clearTimeout(intentTimeoutRef.current);
|
|
@@ -45811,13 +46179,13 @@ function LinkInner({
|
|
|
45811
46179
|
}
|
|
45812
46180
|
};
|
|
45813
46181
|
}, []);
|
|
45814
|
-
const cancelIntent = (0,
|
|
46182
|
+
const cancelIntent = (0, import_react14.useCallback)(() => {
|
|
45815
46183
|
if (intentTimeoutRef.current) {
|
|
45816
46184
|
clearTimeout(intentTimeoutRef.current);
|
|
45817
46185
|
intentTimeoutRef.current = null;
|
|
45818
46186
|
}
|
|
45819
46187
|
}, []);
|
|
45820
|
-
const scheduleIntentPrefetch = (0,
|
|
46188
|
+
const scheduleIntentPrefetch = (0, import_react14.useCallback)(() => {
|
|
45821
46189
|
if (isExternal || !intent || hasPrefetched.current) return;
|
|
45822
46190
|
cancelIntent();
|
|
45823
46191
|
intentTimeoutRef.current = setTimeout(() => {
|
|
@@ -45825,42 +46193,42 @@ function LinkInner({
|
|
|
45825
46193
|
doPrefetch();
|
|
45826
46194
|
}, prefetchDelay);
|
|
45827
46195
|
}, [intent, isExternal, prefetchDelay, doPrefetch, cancelIntent]);
|
|
45828
|
-
const handleMouseEnter = (0,
|
|
46196
|
+
const handleMouseEnter = (0, import_react14.useCallback)(
|
|
45829
46197
|
(event) => {
|
|
45830
46198
|
onMouseEnter?.(event);
|
|
45831
46199
|
scheduleIntentPrefetch();
|
|
45832
46200
|
},
|
|
45833
46201
|
[onMouseEnter, scheduleIntentPrefetch]
|
|
45834
46202
|
);
|
|
45835
|
-
const handleMouseLeave = (0,
|
|
46203
|
+
const handleMouseLeave = (0, import_react14.useCallback)(
|
|
45836
46204
|
(event) => {
|
|
45837
46205
|
onMouseLeave?.(event);
|
|
45838
46206
|
cancelIntent();
|
|
45839
46207
|
},
|
|
45840
46208
|
[onMouseLeave, cancelIntent]
|
|
45841
46209
|
);
|
|
45842
|
-
const handleTouchStart = (0,
|
|
46210
|
+
const handleTouchStart = (0, import_react14.useCallback)(
|
|
45843
46211
|
(event) => {
|
|
45844
46212
|
onTouchStart?.(event);
|
|
45845
46213
|
scheduleIntentPrefetch();
|
|
45846
46214
|
},
|
|
45847
46215
|
[onTouchStart, scheduleIntentPrefetch]
|
|
45848
46216
|
);
|
|
45849
|
-
const handleFocus = (0,
|
|
46217
|
+
const handleFocus = (0, import_react14.useCallback)(
|
|
45850
46218
|
(event) => {
|
|
45851
46219
|
onFocus?.(event);
|
|
45852
46220
|
scheduleIntentPrefetch();
|
|
45853
46221
|
},
|
|
45854
46222
|
[onFocus, scheduleIntentPrefetch]
|
|
45855
46223
|
);
|
|
45856
|
-
const handleBlur = (0,
|
|
46224
|
+
const handleBlur = (0, import_react14.useCallback)(
|
|
45857
46225
|
(event) => {
|
|
45858
46226
|
onBlur?.(event);
|
|
45859
46227
|
cancelIntent();
|
|
45860
46228
|
},
|
|
45861
46229
|
[onBlur, cancelIntent]
|
|
45862
46230
|
);
|
|
45863
|
-
const handleClick = (0,
|
|
46231
|
+
const handleClick = (0, import_react14.useCallback)(
|
|
45864
46232
|
(event) => {
|
|
45865
46233
|
onClick?.(event);
|
|
45866
46234
|
if (event.defaultPrevented) return;
|
|
@@ -45885,7 +46253,7 @@ function LinkInner({
|
|
|
45885
46253
|
},
|
|
45886
46254
|
[resolvedHref, replace, scroll, viewTransition, target, isExternal, onClick]
|
|
45887
46255
|
);
|
|
45888
|
-
const setRefs = (0,
|
|
46256
|
+
const setRefs = (0, import_react14.useCallback)(
|
|
45889
46257
|
(node) => {
|
|
45890
46258
|
elementRef.current = node;
|
|
45891
46259
|
if (typeof ref === "function") ref(node);
|
|
@@ -45914,7 +46282,7 @@ function LinkInner({
|
|
|
45914
46282
|
);
|
|
45915
46283
|
}
|
|
45916
46284
|
__name(LinkInner, "LinkInner");
|
|
45917
|
-
var LinkWithRef = (0,
|
|
46285
|
+
var LinkWithRef = (0, import_react14.forwardRef)(LinkInner);
|
|
45918
46286
|
LinkWithRef.displayName = "Link";
|
|
45919
46287
|
var Link = LinkWithRef;
|
|
45920
46288
|
function resolveLinkHref(href, params, options) {
|
|
@@ -46854,6 +47222,7 @@ __name(decodeCookiePart, "decodeCookiePart");
|
|
|
46854
47222
|
getServerActionInvalidations,
|
|
46855
47223
|
getServerActionSignal,
|
|
46856
47224
|
getStorage,
|
|
47225
|
+
getTheme,
|
|
46857
47226
|
globFiles,
|
|
46858
47227
|
hasFarmRouteRuntimeControls,
|
|
46859
47228
|
hasISR,
|
|
@@ -46970,6 +47339,7 @@ __name(decodeCookiePart, "decodeCookiePart");
|
|
|
46970
47339
|
resolveFarmLayoutFonts,
|
|
46971
47340
|
resolveFarmRouteRuleRuntimeConfig,
|
|
46972
47341
|
resolveFarmRouteRuntimeConfig,
|
|
47342
|
+
resolveFarmThemeConfig,
|
|
46973
47343
|
resolveIntegrationOrmRuntimeClient,
|
|
46974
47344
|
resolveIntegrationPlugins,
|
|
46975
47345
|
resolveMarkdownConfig,
|
|
@@ -46996,12 +47366,14 @@ __name(decodeCookiePart, "decodeCookiePart");
|
|
|
46996
47366
|
segmentsToPattern,
|
|
46997
47367
|
serverEnv,
|
|
46998
47368
|
setEnv,
|
|
47369
|
+
setTheme,
|
|
46999
47370
|
snapshotDeferredData,
|
|
47000
47371
|
sqliteStorage,
|
|
47001
47372
|
storageCacheAdapter,
|
|
47002
47373
|
titleFromMarkdown,
|
|
47003
47374
|
toFormData,
|
|
47004
47375
|
toViteModuleId,
|
|
47376
|
+
toggleTheme,
|
|
47005
47377
|
unstable_cache,
|
|
47006
47378
|
unwrapMiddleware,
|
|
47007
47379
|
updateTag,
|
|
@@ -47017,6 +47389,7 @@ __name(decodeCookiePart, "decodeCookiePart");
|
|
|
47017
47389
|
useSearchParams,
|
|
47018
47390
|
useServerFn,
|
|
47019
47391
|
useServerQuery,
|
|
47392
|
+
useTheme,
|
|
47020
47393
|
validateServerActionRequest,
|
|
47021
47394
|
vercelBlobStorage,
|
|
47022
47395
|
vercelKVStorage,
|