@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.
Files changed (266) hide show
  1. package/dist/after.d.mts +25 -0
  2. package/dist/after.d.ts +25 -0
  3. package/dist/agent-runtime.d.mts +97 -0
  4. package/dist/agent-runtime.d.ts +97 -0
  5. package/dist/api/route-manager.d.mts +68 -0
  6. package/dist/api/route-manager.d.ts +68 -0
  7. package/dist/api/runtime.d.mts +3 -0
  8. package/dist/api/runtime.d.ts +3 -0
  9. package/dist/api.cjs +22 -19
  10. package/dist/api.cjs.map +1 -1
  11. package/dist/api.d.mts +50 -0
  12. package/dist/api.d.ts +50 -0
  13. package/dist/api.mjs +2 -1
  14. package/dist/app-CTFnOJaI.d.ts +308 -0
  15. package/dist/app-DA6ospIq.d.mts +308 -0
  16. package/dist/app-markdown.d.mts +25 -0
  17. package/dist/app-markdown.d.ts +25 -0
  18. package/dist/cache.d.mts +192 -0
  19. package/dist/cache.d.ts +192 -0
  20. package/dist/{chunk-MIUW47JX.mjs → chunk-2PEJGY5V.mjs} +15 -20
  21. package/dist/chunk-2PEJGY5V.mjs.map +1 -0
  22. package/dist/{chunk-RIXKJPGI.mjs → chunk-42325TLU.mjs} +2 -2
  23. package/dist/chunk-4IVNW5QD.mjs +82 -0
  24. package/dist/chunk-4IVNW5QD.mjs.map +1 -0
  25. package/dist/{chunk-I3UWA2P2.mjs → chunk-5NOVWCFL.mjs} +2 -2
  26. package/dist/chunk-5NOVWCFL.mjs.map +1 -0
  27. package/dist/chunk-D42BNPZH.mjs +79 -0
  28. package/dist/chunk-D42BNPZH.mjs.map +1 -0
  29. package/dist/{chunk-LLPN5SEZ.mjs → chunk-DVPRBMU2.mjs} +2 -2
  30. package/dist/{chunk-VIC7NJ77.mjs → chunk-FJGTYLCO.mjs} +67 -20
  31. package/dist/chunk-FJGTYLCO.mjs.map +1 -0
  32. package/dist/chunk-GIELMNBG.mjs +15 -0
  33. package/dist/chunk-GIELMNBG.mjs.map +1 -0
  34. package/dist/chunk-GQVQESLY.mjs +25 -0
  35. package/dist/chunk-GQVQESLY.mjs.map +1 -0
  36. package/dist/chunk-H53KVQUU.mjs +48 -0
  37. package/dist/chunk-H53KVQUU.mjs.map +1 -0
  38. package/dist/chunk-HCGQYYHI.mjs +1 -0
  39. package/dist/chunk-HCGQYYHI.mjs.map +1 -0
  40. package/dist/{chunk-4EATUJFO.mjs → chunk-ICTGDDV4.mjs} +20 -22
  41. package/dist/chunk-ICTGDDV4.mjs.map +1 -0
  42. package/dist/{chunk-UCYWGN2P.mjs → chunk-OHNSROHS.mjs} +1 -1
  43. package/dist/{chunk-FRPWCMMG.mjs → chunk-SBWOTAX4.mjs} +63 -2
  44. package/dist/chunk-SBWOTAX4.mjs.map +1 -0
  45. package/dist/{chunk-FKKM7HVF.mjs → chunk-TX54PXAJ.mjs} +109 -58
  46. package/dist/chunk-TX54PXAJ.mjs.map +1 -0
  47. package/dist/{chunk-CEVMYGDL.mjs → chunk-YD5IRKVS.mjs} +13 -9
  48. package/dist/chunk-YD5IRKVS.mjs.map +1 -0
  49. package/dist/chunk-recovery-lnQFzcQP.d.mts +26 -0
  50. package/dist/chunk-recovery-lnQFzcQP.d.ts +26 -0
  51. package/dist/client-BT1mFQas.d.mts +447 -0
  52. package/dist/client-Nn0q4eO4.d.ts +447 -0
  53. package/dist/client-cache-CIlyBlmx.d.ts +6 -0
  54. package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
  55. package/dist/client-plugins-CCilIb_G.d.mts +2092 -0
  56. package/dist/client-plugins-DuuleQKk.d.ts +2092 -0
  57. package/dist/client-plugins.d.mts +25 -0
  58. package/dist/client-plugins.d.ts +25 -0
  59. package/dist/client.cjs +122 -35
  60. package/dist/client.cjs.map +1 -1
  61. package/dist/client.d.mts +454 -0
  62. package/dist/client.d.ts +454 -0
  63. package/dist/client.mjs +13 -2
  64. package/dist/config.d.mts +32 -0
  65. package/dist/config.d.ts +32 -0
  66. package/dist/cron.d.mts +78 -0
  67. package/dist/cron.d.ts +78 -0
  68. package/dist/deferred.d.mts +42 -0
  69. package/dist/deferred.d.ts +42 -0
  70. package/dist/deployment.d.mts +36 -0
  71. package/dist/deployment.d.ts +36 -0
  72. package/dist/{devtools-52FYXIEK.mjs → devtools-326RBQCN.mjs} +7 -6
  73. package/dist/{devtools-52FYXIEK.mjs.map → devtools-326RBQCN.mjs.map} +1 -1
  74. package/dist/docs.cjs.map +1 -1
  75. package/dist/docs.d.mts +80 -0
  76. package/dist/docs.d.ts +80 -0
  77. package/dist/docs.mjs +6 -5
  78. package/dist/env-types.d.mts +12 -0
  79. package/dist/env-types.d.ts +12 -0
  80. package/dist/env.d.mts +45 -0
  81. package/dist/env.d.ts +45 -0
  82. package/dist/environment/vite.d.mts +22 -0
  83. package/dist/environment/vite.d.ts +22 -0
  84. package/dist/environment.d.mts +18 -0
  85. package/dist/environment.d.ts +18 -0
  86. package/dist/font.d.mts +95 -0
  87. package/dist/font.d.ts +95 -0
  88. package/dist/headers.d.mts +22 -0
  89. package/dist/headers.d.ts +22 -0
  90. package/dist/i18n/client.d.mts +32 -0
  91. package/dist/i18n/client.d.ts +32 -0
  92. package/dist/i18n/index.d.mts +20 -0
  93. package/dist/i18n/index.d.ts +20 -0
  94. package/dist/i18n/server.d.mts +30 -0
  95. package/dist/i18n/server.d.ts +30 -0
  96. package/dist/image/server.d.mts +37 -0
  97. package/dist/image/server.d.ts +37 -0
  98. package/dist/image/sharp.d.mts +7 -0
  99. package/dist/image/sharp.d.ts +7 -0
  100. package/dist/image-config-Duob7wER.d.mts +50 -0
  101. package/dist/image-config-Duob7wER.d.ts +50 -0
  102. package/dist/image.d.mts +39 -0
  103. package/dist/image.d.ts +39 -0
  104. package/dist/index.cjs +496 -123
  105. package/dist/index.cjs.map +1 -1
  106. package/dist/index.d.mts +480 -0
  107. package/dist/index.d.ts +480 -0
  108. package/dist/index.mjs +70 -52
  109. package/dist/index.mjs.map +1 -1
  110. package/dist/integration-api-CHT2OKAf.d.mts +93 -0
  111. package/dist/integration-api-CHT2OKAf.d.ts +93 -0
  112. package/dist/integrations.d.mts +25 -0
  113. package/dist/integrations.d.ts +25 -0
  114. package/dist/internal/build-runtime.cjs +386 -83
  115. package/dist/internal/build-runtime.cjs.map +1 -1
  116. package/dist/internal/build-runtime.d.mts +42 -0
  117. package/dist/internal/build-runtime.d.ts +42 -0
  118. package/dist/internal/build-runtime.mjs +17 -13
  119. package/dist/internal/client-runtime.d.mts +17 -0
  120. package/dist/internal/client-runtime.d.ts +17 -0
  121. package/dist/internal/config-runtime.cjs +41 -0
  122. package/dist/internal/config-runtime.cjs.map +1 -1
  123. package/dist/internal/config-runtime.d.mts +42 -0
  124. package/dist/internal/config-runtime.d.ts +42 -0
  125. package/dist/internal/config-runtime.mjs +5 -4
  126. package/dist/internal/metadata-image-runtime.d.mts +25 -0
  127. package/dist/internal/metadata-image-runtime.d.ts +25 -0
  128. package/dist/internal/production-node-env.d.mts +12 -0
  129. package/dist/internal/production-node-env.d.ts +12 -0
  130. package/dist/internal/production-runtime.cjs +178 -0
  131. package/dist/internal/production-runtime.cjs.map +1 -1
  132. package/dist/internal/production-runtime.d.mts +80 -0
  133. package/dist/internal/production-runtime.d.ts +80 -0
  134. package/dist/internal/production-runtime.mjs +13 -1
  135. package/dist/internal/production-runtime.mjs.map +1 -1
  136. package/dist/island-CfGru1MO.d.mts +9 -0
  137. package/dist/island-CfGru1MO.d.ts +9 -0
  138. package/dist/markdown.d.mts +60 -0
  139. package/dist/markdown.d.ts +60 -0
  140. package/dist/metadata-DyPRG0wX.d.ts +22 -0
  141. package/dist/metadata-_GHcAySx.d.mts +22 -0
  142. package/dist/middleware.cjs +17 -17
  143. package/dist/middleware.cjs.map +1 -1
  144. package/dist/middleware.d.mts +172 -0
  145. package/dist/middleware.d.ts +172 -0
  146. package/dist/middleware.mjs +3 -2
  147. package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
  148. package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
  149. package/dist/navigation.d.mts +14 -0
  150. package/dist/navigation.d.ts +14 -0
  151. package/dist/observability.d.mts +335 -0
  152. package/dist/observability.d.ts +335 -0
  153. package/dist/params-BALtrRim.d.ts +15 -0
  154. package/dist/params-ry-lxqmy.d.mts +15 -0
  155. package/dist/plugin-BJDf43dc.d.mts +165 -0
  156. package/dist/plugin-BJDf43dc.d.ts +165 -0
  157. package/dist/plugin.cjs +261 -62
  158. package/dist/plugin.cjs.map +1 -1
  159. package/dist/plugin.d.mts +25 -0
  160. package/dist/plugin.d.ts +25 -0
  161. package/dist/plugin.mjs +13 -9
  162. package/dist/production-runtime-C4cO3esK.d.mts +81 -0
  163. package/dist/production-runtime-DrEy8kBO.d.ts +81 -0
  164. package/dist/query/client.d.mts +61 -0
  165. package/dist/query/client.d.ts +61 -0
  166. package/dist/query/index.d.mts +90 -0
  167. package/dist/query/index.d.ts +90 -0
  168. package/dist/query/parsers.d.mts +25 -0
  169. package/dist/query/parsers.d.ts +25 -0
  170. package/dist/query/server.d.mts +55 -0
  171. package/dist/query/server.d.ts +55 -0
  172. package/dist/request-B2PpOxYK.d.mts +6 -0
  173. package/dist/request-D40lt6aN.d.ts +6 -0
  174. package/dist/request.d.mts +26 -0
  175. package/dist/request.d.ts +26 -0
  176. package/dist/resolver-DJqjLMg_.d.mts +14 -0
  177. package/dist/resolver-IH4RmPEl.d.ts +14 -0
  178. package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
  179. package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
  180. package/dist/router.d.mts +36 -0
  181. package/dist/router.d.ts +36 -0
  182. package/dist/routes.d.mts +227 -0
  183. package/dist/routes.d.ts +227 -0
  184. package/dist/runtime-Bpp-c28k.d.ts +231 -0
  185. package/dist/runtime-Cxpq6xZN.d.mts +27 -0
  186. package/dist/runtime-Q3u74Nbq.d.mts +231 -0
  187. package/dist/runtime-bv63eUiO.d.ts +27 -0
  188. package/dist/server-action-security.d.mts +45 -0
  189. package/dist/server-action-security.d.ts +45 -0
  190. package/dist/server-fn-client.d.mts +33 -0
  191. package/dist/server-fn-client.d.ts +33 -0
  192. package/dist/server-fn-error-DDh14a0V.d.mts +26 -0
  193. package/dist/server-fn-error-DDh14a0V.d.ts +26 -0
  194. package/dist/server-fn.d.mts +121 -0
  195. package/dist/server-fn.d.ts +121 -0
  196. package/dist/server-plugins.d.mts +58 -0
  197. package/dist/server-plugins.d.ts +58 -0
  198. package/dist/server-query-client.d.mts +51 -0
  199. package/dist/server-query-client.d.ts +51 -0
  200. package/dist/server-query.d.mts +37 -0
  201. package/dist/server-query.d.ts +37 -0
  202. package/dist/server.cjs +285 -85
  203. package/dist/server.cjs.map +1 -1
  204. package/dist/server.d.mts +53 -0
  205. package/dist/server.d.ts +53 -0
  206. package/dist/server.mjs +26 -31
  207. package/dist/server.mjs.map +1 -1
  208. package/dist/storage.d.mts +52 -0
  209. package/dist/storage.d.ts +52 -0
  210. package/dist/testing.d.mts +104 -0
  211. package/dist/testing.d.ts +104 -0
  212. package/dist/theme/client.cjs +115 -0
  213. package/dist/theme/client.cjs.map +1 -0
  214. package/dist/theme/client.d.mts +17 -0
  215. package/dist/theme/client.d.ts +17 -0
  216. package/dist/theme/client.mjs +16 -0
  217. package/dist/theme/client.mjs.map +1 -0
  218. package/dist/theme/index.cjs +71 -0
  219. package/dist/theme/index.cjs.map +1 -0
  220. package/dist/theme/index.d.mts +6 -0
  221. package/dist/theme/index.d.ts +6 -0
  222. package/dist/theme/index.mjs +9 -0
  223. package/dist/theme/index.mjs.map +1 -0
  224. package/dist/theme/server.cjs +191 -0
  225. package/dist/theme/server.cjs.map +1 -0
  226. package/dist/theme/server.d.mts +8 -0
  227. package/dist/theme/server.d.ts +8 -0
  228. package/dist/theme/server.mjs +18 -0
  229. package/dist/theme/server.mjs.map +1 -0
  230. package/dist/transport-BmbGTXA5.d.mts +49 -0
  231. package/dist/transport-BmbGTXA5.d.ts +49 -0
  232. package/dist/types-BMxWr97v.d.mts +81 -0
  233. package/dist/types-BMxWr97v.d.ts +81 -0
  234. package/dist/types-CsR8fpgF.d.mts +30 -0
  235. package/dist/types-CsR8fpgF.d.ts +30 -0
  236. package/dist/types-D1A6-XvH.d.mts +73 -0
  237. package/dist/types-D1A6-XvH.d.ts +73 -0
  238. package/dist/types-DTzm4TCl.d.mts +78 -0
  239. package/dist/types-DTzm4TCl.d.ts +78 -0
  240. package/dist/utils-3sQgfkya.d.ts +23 -0
  241. package/dist/utils-Bop7bly-.d.mts +23 -0
  242. package/dist/version.cjs +1 -1
  243. package/dist/version.cjs.map +1 -1
  244. package/dist/version.d.mts +3 -0
  245. package/dist/version.d.ts +3 -0
  246. package/dist/version.mjs +1 -1
  247. package/dist/vite.cjs +285 -64
  248. package/dist/vite.cjs.map +1 -1
  249. package/dist/vite.d.mts +25 -0
  250. package/dist/vite.d.ts +25 -0
  251. package/dist/vite.mjs +13 -9
  252. package/dist/workflows-CusFV6mn.d.mts +153 -0
  253. package/dist/workflows-CusFV6mn.d.ts +153 -0
  254. package/dist/workflows.d.mts +1 -0
  255. package/dist/workflows.d.ts +1 -0
  256. package/package.json +25 -1
  257. package/dist/chunk-4EATUJFO.mjs.map +0 -1
  258. package/dist/chunk-CEVMYGDL.mjs.map +0 -1
  259. package/dist/chunk-FKKM7HVF.mjs.map +0 -1
  260. package/dist/chunk-FRPWCMMG.mjs.map +0 -1
  261. package/dist/chunk-I3UWA2P2.mjs.map +0 -1
  262. package/dist/chunk-MIUW47JX.mjs.map +0 -1
  263. package/dist/chunk-VIC7NJ77.mjs.map +0 -1
  264. /package/dist/{chunk-RIXKJPGI.mjs.map → chunk-42325TLU.mjs.map} +0 -0
  265. /package/dist/{chunk-LLPN5SEZ.mjs.map → chunk-DVPRBMU2.mjs.map} +0 -0
  266. /package/dist/{chunk-UCYWGN2P.mjs.map → chunk-OHNSROHS.mjs.map} +0 -0
@@ -0,0 +1,104 @@
1
+ import { ReactElement } from 'react';
2
+ import './types-BMxWr97v.js';
3
+ import { b as APIRouteParams } from './runtime-Bpp-c28k.js';
4
+ import { ProgrammaticPageRoute, InferProgrammaticRouteData, ProgrammaticRouteComponentProps, ProgrammaticApiRoute } from './routes.js';
5
+ import { FarmRouterQueryValue, FarmRouterPathParams } from './router.js';
6
+ import { ServerFn } from './server-fn.js';
7
+ import { g as FarmContextFactory, M as MiddlewareProps, i as PluginContextProps, s as RouteModule } from './client-plugins-DuuleQKk.js';
8
+ import './cache.js';
9
+ import './transport-BmbGTXA5.js';
10
+ import './route-runtime-DoOHzCAD.js';
11
+ import './plugin-BJDf43dc.js';
12
+ import 'http';
13
+ import './types-D1A6-XvH.js';
14
+ import 'db0';
15
+ import 'unstorage';
16
+ import './integration-api-CHT2OKAf.js';
17
+ import '@farming-labs/orm';
18
+ import './types-DTzm4TCl.js';
19
+ import '@farming-labs/docs';
20
+ import './markdown.js';
21
+ import './observability.js';
22
+ import 'vite';
23
+ import './workflows-CusFV6mn.js';
24
+ import './cron.js';
25
+ import './env.js';
26
+ import './server-action-security.js';
27
+ import './server-fn-error-DDh14a0V.js';
28
+ import './image-config-Duob7wER.js';
29
+ import './types-CsR8fpgF.js';
30
+ import './font.js';
31
+
32
+ type FarmTestQuery = URLSearchParams | Record<string, FarmRouterQueryValue>;
33
+ type FarmTestPathParams = FarmRouterPathParams;
34
+ type FarmTestFormValues = Record<string, FormDataEntryValue | readonly FormDataEntryValue[]>;
35
+ interface FarmTestRequestOptions extends Omit<RequestInit, "body" | "headers"> {
36
+ origin?: string;
37
+ headers?: HeadersInit;
38
+ query?: FarmTestQuery;
39
+ cookies?: Record<string, string>;
40
+ json?: unknown;
41
+ form?: FormData | FarmTestFormValues;
42
+ body?: BodyInit | null;
43
+ }
44
+ interface FarmTestHarnessOptions<TContext = unknown> {
45
+ origin?: string;
46
+ headers?: HeadersInit;
47
+ cookies?: Record<string, string>;
48
+ context?: FarmContextFactory<TContext>;
49
+ }
50
+ type AnyProgrammaticPageRoute = ProgrammaticPageRoute<any, any, any, any>;
51
+ type InferFarmTestRouteParams<TRoute> = TRoute extends ProgrammaticPageRoute<infer TParams, any, any, any> ? TParams : never;
52
+ type InferFarmTestRouteSearch<TRoute> = TRoute extends ProgrammaticPageRoute<any, infer TSearch, any, any> ? TSearch : never;
53
+ type InferFarmTestRouteData<TRoute> = TRoute extends ProgrammaticPageRoute<any, any, infer TDataHooks, any> ? InferProgrammaticRouteData<TDataHooks> : never;
54
+ type FarmTestRouteProps<TRoute extends AnyProgrammaticPageRoute> = ProgrammaticRouteComponentProps<InferFarmTestRouteParams<TRoute>, InferFarmTestRouteSearch<TRoute>, InferFarmTestRouteData<TRoute>>;
55
+ type FarmTestRouteParamsInput<TRoute> = InferFarmTestRouteParams<TRoute> extends Record<string, unknown> ? Partial<InferFarmTestRouteParams<TRoute>> : FarmTestPathParams;
56
+ type FarmTestRouteSearchInput<TRoute> = InferFarmTestRouteSearch<TRoute> extends Record<string, unknown> ? Partial<InferFarmTestRouteSearch<TRoute>> | URLSearchParams : FarmTestQuery;
57
+ interface FarmTestRouteOptions<TRoute extends AnyProgrammaticPageRoute, TContext = unknown> extends Pick<FarmTestRequestOptions, "origin" | "headers" | "cookies" | "signal"> {
58
+ path?: string | URL;
59
+ params?: FarmTestRouteParamsInput<TRoute>;
60
+ search?: FarmTestRouteSearchInput<TRoute>;
61
+ context?: TContext;
62
+ middleware?: MiddlewareProps;
63
+ pluginContext?: PluginContextProps;
64
+ }
65
+ interface FarmTestRouteResult<TRoute extends AnyProgrammaticPageRoute> {
66
+ route: TRoute;
67
+ module: RouteModule;
68
+ request: Request;
69
+ props: FarmTestRouteProps<TRoute>;
70
+ element: ReactElement;
71
+ canonicalPath?: string;
72
+ }
73
+ interface FarmTestApiOptions extends FarmTestRequestOptions {
74
+ path?: string | URL;
75
+ params?: FarmTestPathParams;
76
+ throwOnError?: boolean;
77
+ }
78
+ interface FarmTestEndpointOptions extends FarmTestRequestOptions {
79
+ path?: string | URL;
80
+ params?: APIRouteParams;
81
+ throwOnError?: boolean;
82
+ }
83
+ interface FarmTestServerFnOptions extends Pick<FarmTestRequestOptions, "origin" | "headers" | "cookies" | "signal"> {
84
+ path?: string | URL;
85
+ request?: Request;
86
+ }
87
+ type FarmTestServerFnArguments<TInput> = [unknown] extends [TInput] ? [input?: TInput | FormData, options?: FarmTestServerFnOptions] : [input: TInput | FormData, options?: FarmTestServerFnOptions];
88
+ interface FarmTestHarness<TContext = unknown> {
89
+ request(path?: string | URL, options?: FarmTestRequestOptions): Request;
90
+ route<TRoute extends AnyProgrammaticPageRoute>(route: TRoute, options?: FarmTestRouteOptions<TRoute, TContext>): Promise<FarmTestRouteResult<TRoute>>;
91
+ api(route: ProgrammaticApiRoute, options?: FarmTestApiOptions): Promise<Response>;
92
+ endpoint(endpoint: unknown, options?: FarmTestEndpointOptions): Promise<Response>;
93
+ serverFn<TInput, TResult>(serverFn: ServerFn<TInput, TResult>, ...args: FarmTestServerFnArguments<TInput>): Promise<TResult>;
94
+ clearCache(): void;
95
+ }
96
+ /** Create a deterministic Web Request without depending on a test runner. */
97
+ declare function createTestRequest(path?: string | URL, options?: FarmTestRequestOptions): Request;
98
+ /**
99
+ * Create test helpers that exercise Farm's real route, API, and server-function runtimes.
100
+ * The harness has no dependency on Vitest, Jest, or a DOM environment.
101
+ */
102
+ declare function createFarmTestHarness<TContext = unknown>(options?: FarmTestHarnessOptions<TContext>): FarmTestHarness<TContext>;
103
+
104
+ export { type FarmTestApiOptions, type FarmTestEndpointOptions, type FarmTestFormValues, type FarmTestHarness, type FarmTestHarnessOptions, type FarmTestPathParams, type FarmTestQuery, type FarmTestRequestOptions, type FarmTestRouteOptions, type FarmTestRouteProps, type FarmTestRouteResult, type FarmTestServerFnArguments, type FarmTestServerFnOptions, type InferFarmTestRouteData, type InferFarmTestRouteParams, type InferFarmTestRouteSearch, createFarmTestHarness, createTestRequest };
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+
22
+ // src/theme/client.tsx
23
+ var client_exports = {};
24
+ __export(client_exports, {
25
+ getTheme: () => getTheme,
26
+ setTheme: () => setTheme,
27
+ toggleTheme: () => toggleTheme,
28
+ useTheme: () => useTheme
29
+ });
30
+ module.exports = __toCommonJS(client_exports);
31
+ var import_react = require("react");
32
+
33
+ // src/theme/bridge.ts
34
+ var FALLBACK_SERVER_SNAPSHOT = Object.freeze({
35
+ theme: "system",
36
+ resolvedTheme: void 0,
37
+ mounted: false
38
+ });
39
+ var FARM_THEME_SERVER_SNAPSHOT_RESOLVER = /* @__PURE__ */ Symbol.for("farm.js.theme.server-snapshot-resolver");
40
+ function getFarmThemeServerSnapshot() {
41
+ return globalThis[FARM_THEME_SERVER_SNAPSHOT_RESOLVER]?.() ?? FALLBACK_SERVER_SNAPSHOT;
42
+ }
43
+ __name(getFarmThemeServerSnapshot, "getFarmThemeServerSnapshot");
44
+
45
+ // src/theme/client.tsx
46
+ var FALLBACK_CLIENT_SNAPSHOT = Object.freeze({
47
+ theme: "system",
48
+ resolvedTheme: "light",
49
+ mounted: true
50
+ });
51
+ var cachedClientSnapshot = FALLBACK_CLIENT_SNAPSHOT;
52
+ function snapshotsMatch(left, right) {
53
+ return left.theme === right.theme && left.resolvedTheme === right.resolvedTheme && left.mounted === right.mounted;
54
+ }
55
+ __name(snapshotsMatch, "snapshotsMatch");
56
+ function getClientSnapshot() {
57
+ const next = typeof window === "undefined" ? FALLBACK_CLIENT_SNAPSHOT : window.__FARM_THEME__?.snapshot;
58
+ if (!next) return cachedClientSnapshot;
59
+ if (!snapshotsMatch(cachedClientSnapshot, next)) cachedClientSnapshot = next;
60
+ return cachedClientSnapshot;
61
+ }
62
+ __name(getClientSnapshot, "getClientSnapshot");
63
+ function getHydrationSnapshot() {
64
+ if (typeof window !== "undefined" && window.__FARM_THEME__?.serverSnapshot) {
65
+ return window.__FARM_THEME__.serverSnapshot;
66
+ }
67
+ return getFarmThemeServerSnapshot();
68
+ }
69
+ __name(getHydrationSnapshot, "getHydrationSnapshot");
70
+ function subscribe(listener) {
71
+ if (typeof window === "undefined") return () => {
72
+ };
73
+ const handleThemeChange = /* @__PURE__ */ __name(() => {
74
+ getClientSnapshot();
75
+ listener();
76
+ }, "handleThemeChange");
77
+ window.addEventListener("farm:themechange", handleThemeChange);
78
+ return () => window.removeEventListener("farm:themechange", handleThemeChange);
79
+ }
80
+ __name(subscribe, "subscribe");
81
+ function getTheme() {
82
+ return getClientSnapshot();
83
+ }
84
+ __name(getTheme, "getTheme");
85
+ function setTheme(theme) {
86
+ const runtime = typeof window === "undefined" ? void 0 : window.__FARM_THEME__;
87
+ if (!runtime) {
88
+ throw new Error("The FARMJS theme runtime is not enabled. Add `theme` to farm.config.ts.");
89
+ }
90
+ runtime.setTheme(theme);
91
+ }
92
+ __name(setTheme, "setTheme");
93
+ function toggleTheme() {
94
+ const next = getClientSnapshot().resolvedTheme === "dark" ? "light" : "dark";
95
+ setTheme(next);
96
+ return next;
97
+ }
98
+ __name(toggleTheme, "toggleTheme");
99
+ function useTheme() {
100
+ const snapshot = (0, import_react.useSyncExternalStore)(subscribe, getClientSnapshot, getHydrationSnapshot);
101
+ return {
102
+ ...snapshot,
103
+ setTheme,
104
+ toggleTheme
105
+ };
106
+ }
107
+ __name(useTheme, "useTheme");
108
+ // Annotate the CommonJS export names for ESM import in node:
109
+ 0 && (module.exports = {
110
+ getTheme,
111
+ setTheme,
112
+ toggleTheme,
113
+ useTheme
114
+ });
115
+ //# sourceMappingURL=client.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/theme/client.tsx","../../src/theme/bridge.ts"],"sourcesContent":["\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\nimport { getFarmThemeServerSnapshot } from \"./bridge\";\nimport type {\n FarmThemePreference,\n FarmThemeRuntime,\n FarmThemeSnapshot,\n FarmResolvedTheme,\n} from \"./types\";\n\ndeclare global {\n interface Window {\n __FARM_THEME__?: FarmThemeRuntime;\n }\n}\n\nconst FALLBACK_CLIENT_SNAPSHOT: FarmThemeSnapshot = Object.freeze({\n theme: \"system\",\n resolvedTheme: \"light\",\n mounted: true,\n});\n\nlet cachedClientSnapshot = FALLBACK_CLIENT_SNAPSHOT;\n\nfunction snapshotsMatch(left: FarmThemeSnapshot, right: FarmThemeSnapshot): boolean {\n return (\n left.theme === right.theme &&\n left.resolvedTheme === right.resolvedTheme &&\n left.mounted === right.mounted\n );\n}\n\nfunction getClientSnapshot(): FarmThemeSnapshot {\n const next =\n typeof window === \"undefined\" ? FALLBACK_CLIENT_SNAPSHOT : window.__FARM_THEME__?.snapshot;\n if (!next) return cachedClientSnapshot;\n if (!snapshotsMatch(cachedClientSnapshot, next)) cachedClientSnapshot = next;\n return cachedClientSnapshot;\n}\n\nfunction getHydrationSnapshot(): FarmThemeSnapshot {\n if (typeof window !== \"undefined\" && window.__FARM_THEME__?.serverSnapshot) {\n return window.__FARM_THEME__.serverSnapshot;\n }\n return getFarmThemeServerSnapshot();\n}\n\nfunction subscribe(listener: () => void): () => void {\n if (typeof window === \"undefined\") return () => {};\n const handleThemeChange = () => {\n getClientSnapshot();\n listener();\n };\n window.addEventListener(\"farm:themechange\", handleThemeChange);\n return () => window.removeEventListener(\"farm:themechange\", handleThemeChange);\n}\n\nexport function getTheme(): FarmThemeSnapshot {\n return getClientSnapshot();\n}\n\nexport function setTheme(theme: FarmThemePreference): void {\n const runtime = typeof window === \"undefined\" ? undefined : window.__FARM_THEME__;\n if (!runtime) {\n throw new Error(\"The FARMJS theme runtime is not enabled. Add `theme` to farm.config.ts.\");\n }\n runtime.setTheme(theme);\n}\n\nexport function toggleTheme(): FarmResolvedTheme {\n const next = getClientSnapshot().resolvedTheme === \"dark\" ? \"light\" : \"dark\";\n setTheme(next);\n return next;\n}\n\nexport interface UseThemeResult extends FarmThemeSnapshot {\n setTheme(theme: FarmThemePreference): void;\n toggleTheme(): FarmResolvedTheme;\n}\n\nexport function useTheme(): UseThemeResult {\n const snapshot = useSyncExternalStore(subscribe, getClientSnapshot, getHydrationSnapshot);\n return {\n ...snapshot,\n setTheme,\n toggleTheme,\n };\n}\n","import type { FarmThemeSnapshot } from \"./types\";\n\nconst FALLBACK_SERVER_SNAPSHOT: FarmThemeSnapshot = Object.freeze({\n theme: \"system\",\n resolvedTheme: undefined,\n mounted: false,\n});\n\nconst FARM_THEME_SERVER_SNAPSHOT_RESOLVER = Symbol.for(\"farm.js.theme.server-snapshot-resolver\");\n\ntype FarmThemeBridgeGlobal = typeof globalThis & {\n [FARM_THEME_SERVER_SNAPSHOT_RESOLVER]?: () => FarmThemeSnapshot;\n};\n\nexport function _setFarmThemeServerSnapshotResolver(resolver: () => FarmThemeSnapshot): void {\n (globalThis as FarmThemeBridgeGlobal)[FARM_THEME_SERVER_SNAPSHOT_RESOLVER] = resolver;\n}\n\nexport function getFarmThemeServerSnapshot(): FarmThemeSnapshot {\n return (\n (globalThis as FarmThemeBridgeGlobal)[FARM_THEME_SERVER_SNAPSHOT_RESOLVER]?.() ??\n FALLBACK_SERVER_SNAPSHOT\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAqC;;;ACArC,IAAM,2BAA8C,OAAO,OAAO;AAAA,EAChE,OAAO;AAAA,EACP,eAAe;AAAA,EACf,SAAS;AACX,CAAC;AAED,IAAM,sCAAsC,uBAAO,IAAI,wCAAwC;AAUxF,SAAS,6BAAgD;AAC9D,SACG,WAAqC,mCAAmC,IAAI,KAC7E;AAEJ;AALgB;;;ADDhB,IAAM,2BAA8C,OAAO,OAAO;AAAA,EAChE,OAAO;AAAA,EACP,eAAe;AAAA,EACf,SAAS;AACX,CAAC;AAED,IAAI,uBAAuB;AAE3B,SAAS,eAAe,MAAyB,OAAmC;AAClF,SACE,KAAK,UAAU,MAAM,SACrB,KAAK,kBAAkB,MAAM,iBAC7B,KAAK,YAAY,MAAM;AAE3B;AANS;AAQT,SAAS,oBAAuC;AAC9C,QAAM,OACJ,OAAO,WAAW,cAAc,2BAA2B,OAAO,gBAAgB;AACpF,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,CAAC,eAAe,sBAAsB,IAAI,EAAG,wBAAuB;AACxE,SAAO;AACT;AANS;AAQT,SAAS,uBAA0C;AACjD,MAAI,OAAO,WAAW,eAAe,OAAO,gBAAgB,gBAAgB;AAC1E,WAAO,OAAO,eAAe;AAAA,EAC/B;AACA,SAAO,2BAA2B;AACpC;AALS;AAOT,SAAS,UAAU,UAAkC;AACnD,MAAI,OAAO,WAAW,YAAa,QAAO,MAAM;AAAA,EAAC;AACjD,QAAM,oBAAoB,6BAAM;AAC9B,sBAAkB;AAClB,aAAS;AAAA,EACX,GAH0B;AAI1B,SAAO,iBAAiB,oBAAoB,iBAAiB;AAC7D,SAAO,MAAM,OAAO,oBAAoB,oBAAoB,iBAAiB;AAC/E;AARS;AAUF,SAAS,WAA8B;AAC5C,SAAO,kBAAkB;AAC3B;AAFgB;AAIT,SAAS,SAAS,OAAkC;AACzD,QAAM,UAAU,OAAO,WAAW,cAAc,SAAY,OAAO;AACnE,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,yEAAyE;AAAA,EAC3F;AACA,UAAQ,SAAS,KAAK;AACxB;AANgB;AAQT,SAAS,cAAiC;AAC/C,QAAM,OAAO,kBAAkB,EAAE,kBAAkB,SAAS,UAAU;AACtE,WAAS,IAAI;AACb,SAAO;AACT;AAJgB;AAWT,SAAS,WAA2B;AACzC,QAAM,eAAW,mCAAqB,WAAW,mBAAmB,oBAAoB;AACxF,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,EACF;AACF;AAPgB;","names":[]}
@@ -0,0 +1,17 @@
1
+ import { F as FarmThemeRuntime, a as FarmThemeSnapshot, b as FarmThemePreference, c as FarmResolvedTheme } from '../types-CsR8fpgF.mjs';
2
+
3
+ declare global {
4
+ interface Window {
5
+ __FARM_THEME__?: FarmThemeRuntime;
6
+ }
7
+ }
8
+ declare function getTheme(): FarmThemeSnapshot;
9
+ declare function setTheme(theme: FarmThemePreference): void;
10
+ declare function toggleTheme(): FarmResolvedTheme;
11
+ interface UseThemeResult extends FarmThemeSnapshot {
12
+ setTheme(theme: FarmThemePreference): void;
13
+ toggleTheme(): FarmResolvedTheme;
14
+ }
15
+ declare function useTheme(): UseThemeResult;
16
+
17
+ export { type UseThemeResult, getTheme, setTheme, toggleTheme, useTheme };
@@ -0,0 +1,17 @@
1
+ import { F as FarmThemeRuntime, a as FarmThemeSnapshot, b as FarmThemePreference, c as FarmResolvedTheme } from '../types-CsR8fpgF.js';
2
+
3
+ declare global {
4
+ interface Window {
5
+ __FARM_THEME__?: FarmThemeRuntime;
6
+ }
7
+ }
8
+ declare function getTheme(): FarmThemeSnapshot;
9
+ declare function setTheme(theme: FarmThemePreference): void;
10
+ declare function toggleTheme(): FarmResolvedTheme;
11
+ interface UseThemeResult extends FarmThemeSnapshot {
12
+ setTheme(theme: FarmThemePreference): void;
13
+ toggleTheme(): FarmResolvedTheme;
14
+ }
15
+ declare function useTheme(): UseThemeResult;
16
+
17
+ export { type UseThemeResult, getTheme, setTheme, toggleTheme, useTheme };
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import {
3
+ getTheme,
4
+ setTheme,
5
+ toggleTheme,
6
+ useTheme
7
+ } from "../chunk-D42BNPZH.mjs";
8
+ import "../chunk-GQVQESLY.mjs";
9
+ import "../chunk-CGILA3WO.mjs";
10
+ export {
11
+ getTheme,
12
+ setTheme,
13
+ toggleTheme,
14
+ useTheme
15
+ };
16
+ //# sourceMappingURL=client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/theme/index.ts
22
+ var theme_exports = {};
23
+ __export(theme_exports, {
24
+ resolveFarmThemeConfig: () => resolveFarmThemeConfig
25
+ });
26
+ module.exports = __toCommonJS(theme_exports);
27
+
28
+ // src/theme/config.ts
29
+ var DEFAULT_FARM_THEME_STORAGE_KEY = "farm-theme";
30
+ var STORAGE_KEY_PATTERN = /^[A-Za-z0-9._-]+$/;
31
+ function resolveFarmThemeConfig(config, basePath = "/") {
32
+ if (config && "enabled" in config) {
33
+ return config;
34
+ }
35
+ if (!config) {
36
+ return {
37
+ enabled: false,
38
+ default: "system",
39
+ storageKey: DEFAULT_FARM_THEME_STORAGE_KEY,
40
+ cookiePath: normalizeCookiePath(basePath)
41
+ };
42
+ }
43
+ const storageKey = config.storageKey?.trim() || DEFAULT_FARM_THEME_STORAGE_KEY;
44
+ if (!STORAGE_KEY_PATTERN.test(storageKey)) {
45
+ throw new Error(
46
+ "theme.storageKey may only contain letters, numbers, dots, underscores, and hyphens."
47
+ );
48
+ }
49
+ const defaultTheme = config.default ?? "system";
50
+ if (defaultTheme !== "light" && defaultTheme !== "dark" && defaultTheme !== "system") {
51
+ throw new Error('theme.default must be "light", "dark", or "system".');
52
+ }
53
+ return {
54
+ enabled: true,
55
+ default: defaultTheme,
56
+ storageKey,
57
+ cookiePath: normalizeCookiePath(basePath)
58
+ };
59
+ }
60
+ __name(resolveFarmThemeConfig, "resolveFarmThemeConfig");
61
+ function normalizeCookiePath(basePath) {
62
+ const normalized = `/${basePath}`.replace(/\/{2,}/g, "/");
63
+ if (normalized === "/") return normalized;
64
+ return normalized.replace(/\/$/, "");
65
+ }
66
+ __name(normalizeCookiePath, "normalizeCookiePath");
67
+ // Annotate the CommonJS export names for ESM import in node:
68
+ 0 && (module.exports = {
69
+ resolveFarmThemeConfig
70
+ });
71
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/theme/index.ts","../../src/theme/config.ts"],"sourcesContent":["export { resolveFarmThemeConfig } from \"./config\";\nexport type {\n FarmResolvedTheme,\n FarmThemeConfig,\n FarmThemePreference,\n FarmThemeSnapshot,\n ResolvedFarmThemeConfig,\n} from \"./types\";\n","import type { FarmThemeConfig, ResolvedFarmThemeConfig } from \"./types\";\n\nexport const DEFAULT_FARM_THEME_STORAGE_KEY = \"farm-theme\";\n\nconst STORAGE_KEY_PATTERN = /^[A-Za-z0-9._-]+$/;\n\nexport function resolveFarmThemeConfig(\n config: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined,\n basePath = \"/\",\n): ResolvedFarmThemeConfig {\n if (config && \"enabled\" in config) {\n return config;\n }\n\n if (!config) {\n return {\n enabled: false,\n default: \"system\",\n storageKey: DEFAULT_FARM_THEME_STORAGE_KEY,\n cookiePath: normalizeCookiePath(basePath),\n };\n }\n\n const storageKey = config.storageKey?.trim() || DEFAULT_FARM_THEME_STORAGE_KEY;\n if (!STORAGE_KEY_PATTERN.test(storageKey)) {\n throw new Error(\n \"theme.storageKey may only contain letters, numbers, dots, underscores, and hyphens.\",\n );\n }\n\n const defaultTheme = config.default ?? \"system\";\n if (defaultTheme !== \"light\" && defaultTheme !== \"dark\" && defaultTheme !== \"system\") {\n throw new Error('theme.default must be \"light\", \"dark\", or \"system\".');\n }\n\n return {\n enabled: true,\n default: defaultTheme,\n storageKey,\n cookiePath: normalizeCookiePath(basePath),\n };\n}\n\nfunction normalizeCookiePath(basePath: string): string {\n const normalized = `/${basePath}`.replace(/\\/{2,}/g, \"/\");\n if (normalized === \"/\") return normalized;\n return normalized.replace(/\\/$/, \"\");\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,IAAM,iCAAiC;AAE9C,IAAM,sBAAsB;AAErB,SAAS,uBACd,QACA,WAAW,KACc;AACzB,MAAI,UAAU,aAAa,QAAQ;AACjC,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY,oBAAoB,QAAQ;AAAA,IAC1C;AAAA,EACF;AAEA,QAAM,aAAa,OAAO,YAAY,KAAK,KAAK;AAChD,MAAI,CAAC,oBAAoB,KAAK,UAAU,GAAG;AACzC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe,OAAO,WAAW;AACvC,MAAI,iBAAiB,WAAW,iBAAiB,UAAU,iBAAiB,UAAU;AACpF,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAEA,SAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,IACA,YAAY,oBAAoB,QAAQ;AAAA,EAC1C;AACF;AAnCgB;AAqChB,SAAS,oBAAoB,UAA0B;AACrD,QAAM,aAAa,IAAI,QAAQ,GAAG,QAAQ,WAAW,GAAG;AACxD,MAAI,eAAe,IAAK,QAAO;AAC/B,SAAO,WAAW,QAAQ,OAAO,EAAE;AACrC;AAJS;","names":[]}
@@ -0,0 +1,6 @@
1
+ import { d as FarmThemeConfig, R as ResolvedFarmThemeConfig } from '../types-CsR8fpgF.mjs';
2
+ export { c as FarmResolvedTheme, b as FarmThemePreference, a as FarmThemeSnapshot } from '../types-CsR8fpgF.mjs';
3
+
4
+ declare function resolveFarmThemeConfig(config: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined, basePath?: string): ResolvedFarmThemeConfig;
5
+
6
+ export { FarmThemeConfig, ResolvedFarmThemeConfig, resolveFarmThemeConfig };
@@ -0,0 +1,6 @@
1
+ import { d as FarmThemeConfig, R as ResolvedFarmThemeConfig } from '../types-CsR8fpgF.js';
2
+ export { c as FarmResolvedTheme, b as FarmThemePreference, a as FarmThemeSnapshot } from '../types-CsR8fpgF.js';
3
+
4
+ declare function resolveFarmThemeConfig(config: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined, basePath?: string): ResolvedFarmThemeConfig;
5
+
6
+ export { FarmThemeConfig, ResolvedFarmThemeConfig, resolveFarmThemeConfig };
@@ -0,0 +1,9 @@
1
+ import "../chunk-HCGQYYHI.mjs";
2
+ import {
3
+ resolveFarmThemeConfig
4
+ } from "../chunk-H53KVQUU.mjs";
5
+ import "../chunk-CGILA3WO.mjs";
6
+ export {
7
+ resolveFarmThemeConfig
8
+ };
9
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/theme/server.ts
22
+ var server_exports = {};
23
+ __export(server_exports, {
24
+ _setDefaultFarmThemeConfig: () => _setDefaultFarmThemeConfig,
25
+ getTheme: () => getTheme,
26
+ getThemeSnapshot: () => getThemeSnapshot,
27
+ readFarmThemePreference: () => readFarmThemePreference
28
+ });
29
+ module.exports = __toCommonJS(server_exports);
30
+
31
+ // src/server/request.ts
32
+ var import_node_async_hooks = require("async_hooks");
33
+
34
+ // src/server/request-bridge.ts
35
+ var CURRENT_REQUEST_RESOLVER_KEY = /* @__PURE__ */ Symbol.for("farm.currentRequestResolver");
36
+ function getGlobalState() {
37
+ return globalThis;
38
+ }
39
+ __name(getGlobalState, "getGlobalState");
40
+ function _setCurrentRequestResolver(resolver) {
41
+ getGlobalState()[CURRENT_REQUEST_RESOLVER_KEY] = resolver;
42
+ }
43
+ __name(_setCurrentRequestResolver, "_setCurrentRequestResolver");
44
+
45
+ // src/server/request.ts
46
+ var REQUEST_STORAGE_KEY = /* @__PURE__ */ Symbol.for("@farm.js/core/request-storage");
47
+ function getRequestStore() {
48
+ const runtime = globalThis;
49
+ const existing = runtime[REQUEST_STORAGE_KEY];
50
+ if (existing instanceof import_node_async_hooks.AsyncLocalStorage) {
51
+ return existing;
52
+ }
53
+ const storage = new import_node_async_hooks.AsyncLocalStorage();
54
+ runtime[REQUEST_STORAGE_KEY] = storage;
55
+ return storage;
56
+ }
57
+ __name(getRequestStore, "getRequestStore");
58
+ var requestStore = getRequestStore();
59
+ _setCurrentRequestResolver(() => requestStore.getStore());
60
+ function getCurrentRequest() {
61
+ const request = requestStore.getStore();
62
+ if (!request) {
63
+ throw new Error(
64
+ "No current request is available. getCurrentRequest() can only be used during server rendering."
65
+ );
66
+ }
67
+ return request;
68
+ }
69
+ __name(getCurrentRequest, "getCurrentRequest");
70
+
71
+ // src/theme/bridge.ts
72
+ var FALLBACK_SERVER_SNAPSHOT = Object.freeze({
73
+ theme: "system",
74
+ resolvedTheme: void 0,
75
+ mounted: false
76
+ });
77
+ var FARM_THEME_SERVER_SNAPSHOT_RESOLVER = /* @__PURE__ */ Symbol.for("farm.js.theme.server-snapshot-resolver");
78
+ function _setFarmThemeServerSnapshotResolver(resolver) {
79
+ globalThis[FARM_THEME_SERVER_SNAPSHOT_RESOLVER] = resolver;
80
+ }
81
+ __name(_setFarmThemeServerSnapshotResolver, "_setFarmThemeServerSnapshotResolver");
82
+
83
+ // src/theme/config.ts
84
+ var DEFAULT_FARM_THEME_STORAGE_KEY = "farm-theme";
85
+ var STORAGE_KEY_PATTERN = /^[A-Za-z0-9._-]+$/;
86
+ function resolveFarmThemeConfig(config, basePath = "/") {
87
+ if (config && "enabled" in config) {
88
+ return config;
89
+ }
90
+ if (!config) {
91
+ return {
92
+ enabled: false,
93
+ default: "system",
94
+ storageKey: DEFAULT_FARM_THEME_STORAGE_KEY,
95
+ cookiePath: normalizeCookiePath(basePath)
96
+ };
97
+ }
98
+ const storageKey = config.storageKey?.trim() || DEFAULT_FARM_THEME_STORAGE_KEY;
99
+ if (!STORAGE_KEY_PATTERN.test(storageKey)) {
100
+ throw new Error(
101
+ "theme.storageKey may only contain letters, numbers, dots, underscores, and hyphens."
102
+ );
103
+ }
104
+ const defaultTheme = config.default ?? "system";
105
+ if (defaultTheme !== "light" && defaultTheme !== "dark" && defaultTheme !== "system") {
106
+ throw new Error('theme.default must be "light", "dark", or "system".');
107
+ }
108
+ return {
109
+ enabled: true,
110
+ default: defaultTheme,
111
+ storageKey,
112
+ cookiePath: normalizeCookiePath(basePath)
113
+ };
114
+ }
115
+ __name(resolveFarmThemeConfig, "resolveFarmThemeConfig");
116
+ function normalizeCookiePath(basePath) {
117
+ const normalized = `/${basePath}`.replace(/\/{2,}/g, "/");
118
+ if (normalized === "/") return normalized;
119
+ return normalized.replace(/\/$/, "");
120
+ }
121
+ __name(normalizeCookiePath, "normalizeCookiePath");
122
+
123
+ // src/theme/server.ts
124
+ var defaultThemeConfig = resolveFarmThemeConfig(void 0);
125
+ function _setDefaultFarmThemeConfig(config, basePath = "/") {
126
+ defaultThemeConfig = resolveFarmThemeConfig(config, basePath);
127
+ }
128
+ __name(_setDefaultFarmThemeConfig, "_setDefaultFarmThemeConfig");
129
+ function getTheme(request = getCurrentRequest()) {
130
+ return readFarmThemePreference(request, defaultThemeConfig);
131
+ }
132
+ __name(getTheme, "getTheme");
133
+ function getThemeSnapshot(request = getCurrentRequest()) {
134
+ const theme = readFarmThemePreference(request, defaultThemeConfig);
135
+ return {
136
+ theme,
137
+ resolvedTheme: theme === "system" ? void 0 : theme,
138
+ mounted: false
139
+ };
140
+ }
141
+ __name(getThemeSnapshot, "getThemeSnapshot");
142
+ function readFarmThemePreference(request, config) {
143
+ if (!config.enabled) return config.default;
144
+ const stored = readCookie(request.headers.get("cookie"), config.storageKey);
145
+ return isFarmThemePreference(stored) ? stored : config.default;
146
+ }
147
+ __name(readFarmThemePreference, "readFarmThemePreference");
148
+ function readCookie(cookieHeader, name) {
149
+ if (!cookieHeader) return void 0;
150
+ for (const entry of cookieHeader.split(";")) {
151
+ const separator = entry.indexOf("=");
152
+ if (separator < 0) continue;
153
+ const key = decodeCookieValue(entry.slice(0, separator).trim());
154
+ if (key !== name) continue;
155
+ return decodeCookieValue(entry.slice(separator + 1).trim());
156
+ }
157
+ return void 0;
158
+ }
159
+ __name(readCookie, "readCookie");
160
+ function decodeCookieValue(value) {
161
+ try {
162
+ return decodeURIComponent(value);
163
+ } catch {
164
+ return value;
165
+ }
166
+ }
167
+ __name(decodeCookieValue, "decodeCookieValue");
168
+ function isFarmThemePreference(value) {
169
+ return value === "light" || value === "dark" || value === "system";
170
+ }
171
+ __name(isFarmThemePreference, "isFarmThemePreference");
172
+ _setFarmThemeServerSnapshotResolver(() => {
173
+ try {
174
+ return getThemeSnapshot();
175
+ } catch {
176
+ const theme = defaultThemeConfig.default;
177
+ return {
178
+ theme,
179
+ resolvedTheme: theme === "system" ? void 0 : theme,
180
+ mounted: false
181
+ };
182
+ }
183
+ });
184
+ // Annotate the CommonJS export names for ESM import in node:
185
+ 0 && (module.exports = {
186
+ _setDefaultFarmThemeConfig,
187
+ getTheme,
188
+ getThemeSnapshot,
189
+ readFarmThemePreference
190
+ });
191
+ //# sourceMappingURL=server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/theme/server.ts","../../src/server/request.ts","../../src/server/request-bridge.ts","../../src/theme/bridge.ts","../../src/theme/config.ts"],"sourcesContent":["import { getCurrentRequest } from \"../server/request\";\nimport { _setFarmThemeServerSnapshotResolver } from \"./bridge\";\nimport { resolveFarmThemeConfig } from \"./config\";\nimport type {\n FarmThemeConfig,\n FarmThemePreference,\n FarmThemeSnapshot,\n ResolvedFarmThemeConfig,\n} from \"./types\";\n\nlet defaultThemeConfig = resolveFarmThemeConfig(undefined);\n\nexport function _setDefaultFarmThemeConfig(\n config: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined,\n basePath = \"/\",\n): void {\n defaultThemeConfig = resolveFarmThemeConfig(config, basePath);\n}\n\nexport function getTheme(request: Request = getCurrentRequest()): FarmThemePreference {\n return readFarmThemePreference(request, defaultThemeConfig);\n}\n\nexport function getThemeSnapshot(request: Request = getCurrentRequest()): FarmThemeSnapshot {\n const theme = readFarmThemePreference(request, defaultThemeConfig);\n return {\n theme,\n resolvedTheme: theme === \"system\" ? undefined : theme,\n mounted: false,\n };\n}\n\nexport function readFarmThemePreference(\n request: Request,\n config: ResolvedFarmThemeConfig,\n): FarmThemePreference {\n if (!config.enabled) return config.default;\n const stored = readCookie(request.headers.get(\"cookie\"), config.storageKey);\n return isFarmThemePreference(stored) ? stored : config.default;\n}\n\nfunction readCookie(cookieHeader: string | null, name: string): string | undefined {\n if (!cookieHeader) return undefined;\n for (const entry of cookieHeader.split(\";\")) {\n const separator = entry.indexOf(\"=\");\n if (separator < 0) continue;\n const key = decodeCookieValue(entry.slice(0, separator).trim());\n if (key !== name) continue;\n return decodeCookieValue(entry.slice(separator + 1).trim());\n }\n return undefined;\n}\n\nfunction decodeCookieValue(value: string): string {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\n\nfunction isFarmThemePreference(value: unknown): value is FarmThemePreference {\n return value === \"light\" || value === \"dark\" || value === \"system\";\n}\n\n_setFarmThemeServerSnapshotResolver(() => {\n try {\n return getThemeSnapshot();\n } catch {\n const theme = defaultThemeConfig.default;\n return {\n theme,\n resolvedTheme: theme === \"system\" ? undefined : theme,\n mounted: false,\n };\n }\n});\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { FarmRequest } from \"../types\";\nimport { _setCurrentRequestResolver } from \"./request-bridge\";\n\nconst REQUEST_STORAGE_KEY = Symbol.for(\"@farm.js/core/request-storage\");\n\nfunction getRequestStore(): AsyncLocalStorage<Request> {\n const runtime = globalThis as typeof globalThis & Record<PropertyKey, unknown>;\n const existing = runtime[REQUEST_STORAGE_KEY];\n if (existing instanceof AsyncLocalStorage) {\n return existing as AsyncLocalStorage<Request>;\n }\n\n const storage = new AsyncLocalStorage<Request>();\n runtime[REQUEST_STORAGE_KEY] = storage;\n return storage;\n}\n\nconst requestStore = getRequestStore();\n\n_setCurrentRequestResolver(() => requestStore.getStore());\n\nexport function createWebRequestFromFarmRequest(req: FarmRequest): Request {\n const forwardedHost = req.headers[\"x-forwarded-host\"];\n const host = Array.isArray(forwardedHost)\n ? forwardedHost[0]\n : forwardedHost || req.headers.host || \"localhost\";\n const forwardedProto = req.headers[\"x-forwarded-proto\"];\n const proto = Array.isArray(forwardedProto) ? forwardedProto[0] : forwardedProto || \"http\";\n const fullUrl = new URL(req.url || \"/\", `${proto}://${host}`).toString();\n\n const headers = new Headers();\n for (const [key, value] of Object.entries(req.headers)) {\n if (value == null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n headers.append(key, item);\n }\n continue;\n }\n\n headers.set(key, value);\n }\n\n return new Request(fullUrl, {\n method: req.method,\n headers,\n });\n}\n\nexport async function _runWithCurrentRequest<T>(\n request: Request,\n fn: () => Promise<T> | T,\n): Promise<T> {\n return requestStore.run(request, fn);\n}\n\nexport function getCurrentRequest(): Request {\n const request = requestStore.getStore();\n if (!request) {\n throw new Error(\n \"No current request is available. getCurrentRequest() can only be used during server rendering.\",\n );\n }\n\n return request;\n}\n","type CurrentRequestResolver = () => Request | undefined;\n\nconst CURRENT_REQUEST_RESOLVER_KEY = Symbol.for(\"farm.currentRequestResolver\");\n\ntype GlobalWithCurrentRequestResolver = typeof globalThis & {\n [CURRENT_REQUEST_RESOLVER_KEY]?: CurrentRequestResolver;\n};\n\nfunction getGlobalState(): GlobalWithCurrentRequestResolver {\n return globalThis as GlobalWithCurrentRequestResolver;\n}\n\nexport function _setCurrentRequestResolver(resolver: CurrentRequestResolver | undefined): void {\n getGlobalState()[CURRENT_REQUEST_RESOLVER_KEY] = resolver;\n}\n\nexport function _resolveCurrentRequest(): Request | undefined {\n return getGlobalState()[CURRENT_REQUEST_RESOLVER_KEY]?.();\n}\n","import type { FarmThemeSnapshot } from \"./types\";\n\nconst FALLBACK_SERVER_SNAPSHOT: FarmThemeSnapshot = Object.freeze({\n theme: \"system\",\n resolvedTheme: undefined,\n mounted: false,\n});\n\nconst FARM_THEME_SERVER_SNAPSHOT_RESOLVER = Symbol.for(\"farm.js.theme.server-snapshot-resolver\");\n\ntype FarmThemeBridgeGlobal = typeof globalThis & {\n [FARM_THEME_SERVER_SNAPSHOT_RESOLVER]?: () => FarmThemeSnapshot;\n};\n\nexport function _setFarmThemeServerSnapshotResolver(resolver: () => FarmThemeSnapshot): void {\n (globalThis as FarmThemeBridgeGlobal)[FARM_THEME_SERVER_SNAPSHOT_RESOLVER] = resolver;\n}\n\nexport function getFarmThemeServerSnapshot(): FarmThemeSnapshot {\n return (\n (globalThis as FarmThemeBridgeGlobal)[FARM_THEME_SERVER_SNAPSHOT_RESOLVER]?.() ??\n FALLBACK_SERVER_SNAPSHOT\n );\n}\n","import type { FarmThemeConfig, ResolvedFarmThemeConfig } from \"./types\";\n\nexport const DEFAULT_FARM_THEME_STORAGE_KEY = \"farm-theme\";\n\nconst STORAGE_KEY_PATTERN = /^[A-Za-z0-9._-]+$/;\n\nexport function resolveFarmThemeConfig(\n config: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined,\n basePath = \"/\",\n): ResolvedFarmThemeConfig {\n if (config && \"enabled\" in config) {\n return config;\n }\n\n if (!config) {\n return {\n enabled: false,\n default: \"system\",\n storageKey: DEFAULT_FARM_THEME_STORAGE_KEY,\n cookiePath: normalizeCookiePath(basePath),\n };\n }\n\n const storageKey = config.storageKey?.trim() || DEFAULT_FARM_THEME_STORAGE_KEY;\n if (!STORAGE_KEY_PATTERN.test(storageKey)) {\n throw new Error(\n \"theme.storageKey may only contain letters, numbers, dots, underscores, and hyphens.\",\n );\n }\n\n const defaultTheme = config.default ?? \"system\";\n if (defaultTheme !== \"light\" && defaultTheme !== \"dark\" && defaultTheme !== \"system\") {\n throw new Error('theme.default must be \"light\", \"dark\", or \"system\".');\n }\n\n return {\n enabled: true,\n default: defaultTheme,\n storageKey,\n cookiePath: normalizeCookiePath(basePath),\n };\n}\n\nfunction normalizeCookiePath(basePath: string): string {\n const normalized = `/${basePath}`.replace(/\\/{2,}/g, \"/\");\n if (normalized === \"/\") return normalized;\n return normalized.replace(/\\/$/, \"\");\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,8 @@
1
+ import { b as FarmThemePreference, a as FarmThemeSnapshot, d as FarmThemeConfig, R as ResolvedFarmThemeConfig } from '../types-CsR8fpgF.mjs';
2
+
3
+ declare function _setDefaultFarmThemeConfig(config: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined, basePath?: string): void;
4
+ declare function getTheme(request?: Request): FarmThemePreference;
5
+ declare function getThemeSnapshot(request?: Request): FarmThemeSnapshot;
6
+ declare function readFarmThemePreference(request: Request, config: ResolvedFarmThemeConfig): FarmThemePreference;
7
+
8
+ export { _setDefaultFarmThemeConfig, getTheme, getThemeSnapshot, readFarmThemePreference };
@@ -0,0 +1,8 @@
1
+ import { b as FarmThemePreference, a as FarmThemeSnapshot, d as FarmThemeConfig, R as ResolvedFarmThemeConfig } from '../types-CsR8fpgF.js';
2
+
3
+ declare function _setDefaultFarmThemeConfig(config: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined, basePath?: string): void;
4
+ declare function getTheme(request?: Request): FarmThemePreference;
5
+ declare function getThemeSnapshot(request?: Request): FarmThemeSnapshot;
6
+ declare function readFarmThemePreference(request: Request, config: ResolvedFarmThemeConfig): FarmThemePreference;
7
+
8
+ export { _setDefaultFarmThemeConfig, getTheme, getThemeSnapshot, readFarmThemePreference };
@@ -0,0 +1,18 @@
1
+ import {
2
+ _setDefaultFarmThemeConfig,
3
+ getTheme,
4
+ getThemeSnapshot,
5
+ readFarmThemePreference
6
+ } from "../chunk-4IVNW5QD.mjs";
7
+ import "../chunk-H53KVQUU.mjs";
8
+ import "../chunk-RHIFZZUI.mjs";
9
+ import "../chunk-LM2YNO4U.mjs";
10
+ import "../chunk-GQVQESLY.mjs";
11
+ import "../chunk-CGILA3WO.mjs";
12
+ export {
13
+ _setDefaultFarmThemeConfig,
14
+ getTheme,
15
+ getThemeSnapshot,
16
+ readFarmThemePreference
17
+ };
18
+ //# sourceMappingURL=server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}