@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,53 @@
1
+ export { F as FarmApp, R as RouteManager, S as ServerRenderer, c as createFarmApp } from './app-DA6ospIq.mjs';
2
+ import { F as FarmConfig } from './client-plugins-CCilIb_G.mjs';
3
+ export { A as AppRoutePattern, D as BuildOptions, r as ErrorBoundary, E as ErrorProps, h as FarmAppContext, g as FarmContextFactory, e as FarmContextFactoryInput, J as FarmLayerEntry, T as FarmLayerResolution, a as FarmMigrationCommand, b as FarmMigrationsConfig, c as FarmMigrationsUserConfig, x as FarmRequest, y as FarmResponse, O as FarmSourceRoot, G as GenerateStaticParams, p as Layout, n as LayoutMetadataProps, v as LayoutModule, l as LayoutProps, q as Loading, L as LoadingProps, w as Metadata, m as MetadataProps, M as MiddlewareProps, N as NitroPreset, o as Page, j as PageProps, k as PagePropsWithMiddleware, P as PageRouteParams, C as ParsedRoute, i as PluginContextProps, Q as ResolveFarmLayersOptions, K as ResolvedFarmLayer, R as ResolvedFarmMigrationsConfig, s as RouteModule, B as RouteSegment, I as SSGCollectionResult, H as SSGPage, z as ServerAction, t as StaticPathParams, S as StaticPathPrimitive, u as StaticRouteParams, d as defineConfig, f as farmPlugin, W as getFarmAppDirectories, X as getFarmLayerAliases, V as getFarmSourceRoots, Y as loadFarmConfigFile, U as resolveFarmLayers } from './client-plugins-CCilIb_G.mjs';
4
+ export { f as fileExists, g as globFiles, l as logger, m as matchRoute, p as parseRoutePath, a as parseSearchParams, r as resolveAppPath, s as segmentsToPattern, t as toViteModuleId } from './utils-Bop7bly-.mjs';
5
+ export { createFarmStorage, createStorageClient, databaseStorage, defineStorageClient, disposeStorage, driverStorage, getStorage, initStorage, libsqlStorage, localStorage, memoryStorage, mongodbStorage, mysql2Storage, mysqlStorage, netlifyBlobsStorage, pgStorage, pgliteStorage, planetscaleStorage, postgresStorage, redisStorage, resolveStorageRuntimeClient, s3Storage, sqliteStorage, upstashStorage, vercelBlobStorage, vercelKVStorage } from './storage.mjs';
6
+ export { CacheKeyFactory, DefinedCacheKey, FarmCacheAdapter, FarmCacheEntry, FarmCacheInvalidationTarget, FarmCacheOptions, FarmCacheSetOptions, FarmCacheStorage, FarmCacheUserConfig, FarmDataCache, GetFarmCacheEntryOptions, InferCacheKeyData, RevalidateTagProfile, RouteDataCacheKey, StorageFarmCacheAdapterOptions, applyFarmCacheInvalidationTargets, applyFarmCacheInvalidations, configureFarmCache, createFarmCacheKey, createPathCacheTag, createRouteDataCacheKey, createRouteDataCacheTag, defineCacheKey, getFarmDataCache, invalidate, invalidateRouteData, normalizeRevalidatePath, revalidatePath, revalidateTag, storageCacheAdapter, unstable_cache, updateTag } from './cache.mjs';
7
+ export { AfterCallback, FarmAfterPlatformContext, _runWithAfterNodeResponse, _runWithAfterRequest, _withAfterNodeMiddleware, after } from './after.mjs';
8
+ export { FARM_SERVER_QUERY_SYMBOL, ServerQuery, ServerQueryKey, ServerQueryOptions, ServerQueryOutputOptions, ServerQueryStaleTime, createServerQuery } from './server-query.mjs';
9
+ import { ViteDevServer } from 'vite';
10
+ export { g as getCurrentRequest } from './request-B2PpOxYK.mjs';
11
+ export { getTheme, getThemeSnapshot } from './theme/server.mjs';
12
+ export { DEFAULT_SERVER_ACTION_BODY_SIZE_LIMIT, FarmServerActionsConfig, PreparedServerActionRequest, ResolvedFarmServerActionsConfig, SanitizedServerActionError, ServerActionRequestError, ServerActionRequestKind, createServerActionRequestErrorResponse, getServerActionExecutionContext, getServerActionInvalidations, getServerActionSignal, prepareServerActionRequest, resolveServerActionsConfig, runWithServerActionRequest, sanitizeServerActionError, validateServerActionRequest } from './server-action-security.mjs';
13
+ export { FarmEnvironment, FarmEnvironmentError, FarmIsomorphicFnOptions, createClientOnlyFn, createIsomorphicFn, createServerOnlyFn } from './environment.mjs';
14
+ export { F as FarmStorageBuiltinDriverConfig, a as FarmStorageClient, b as FarmStorageClientConfig, c as FarmStorageConfigObject, d as FarmStorageCustomDriverConfig, e as FarmStorageDatabaseConfig, f as FarmStorageDatabaseDriverName, g as FarmStorageLocalDriverConfig, i as FarmStorageMountConfig, j as FarmStorageMounts, h as FarmStorageRuntimeClient, k as FarmStorageUserConfig } from './types-D1A6-XvH.mjs';
15
+ export { BuiltinDriverName, BuiltinDriverOptions, Driver, Storage, StorageMeta, StorageValue, TransactionOptions } from 'unstorage';
16
+ export { ConnectorName, ConnectorOptions, Database } from 'db0';
17
+ import './types-DTzm4TCl.mjs';
18
+ import '@farming-labs/docs';
19
+ import './markdown.mjs';
20
+ import './workflows-CusFV6mn.mjs';
21
+ import './cron.mjs';
22
+ import './image-config-Duob7wER.mjs';
23
+ import './routes.mjs';
24
+ import './route-runtime-DoOHzCAD.mjs';
25
+ import 'react';
26
+ import './metadata-_GHcAySx.mjs';
27
+ import './island-CfGru1MO.mjs';
28
+ import './types-BMxWr97v.mjs';
29
+ import './runtime-Cxpq6xZN.mjs';
30
+ import './resolver-DJqjLMg_.mjs';
31
+ import './types-CsR8fpgF.mjs';
32
+ import './plugin-BJDf43dc.mjs';
33
+ import 'http';
34
+ import './integration-api-CHT2OKAf.mjs';
35
+ import '@farming-labs/orm';
36
+ import './observability.mjs';
37
+ import './env.mjs';
38
+ import './font.mjs';
39
+ import 'node:http';
40
+ import './server-fn.mjs';
41
+ import './server-fn-error-DDh14a0V.mjs';
42
+
43
+ declare const DEFAULT_FARM_DEV_SERVER_PORT = 3000;
44
+ /**
45
+ * Create a Vite development server with Farm.js integration
46
+ */
47
+ declare function createServer(config?: FarmConfig): Promise<ViteDevServer>;
48
+ /**
49
+ * Start the development server
50
+ */
51
+ declare function startDevServer(config?: FarmConfig, port?: number): Promise<ViteDevServer>;
52
+
53
+ export { DEFAULT_FARM_DEV_SERVER_PORT, FarmConfig, createServer, startDevServer };
@@ -0,0 +1,53 @@
1
+ export { F as FarmApp, R as RouteManager, S as ServerRenderer, c as createFarmApp } from './app-CTFnOJaI.js';
2
+ import { F as FarmConfig } from './client-plugins-DuuleQKk.js';
3
+ export { A as AppRoutePattern, D as BuildOptions, r as ErrorBoundary, E as ErrorProps, h as FarmAppContext, g as FarmContextFactory, e as FarmContextFactoryInput, J as FarmLayerEntry, T as FarmLayerResolution, a as FarmMigrationCommand, b as FarmMigrationsConfig, c as FarmMigrationsUserConfig, x as FarmRequest, y as FarmResponse, O as FarmSourceRoot, G as GenerateStaticParams, p as Layout, n as LayoutMetadataProps, v as LayoutModule, l as LayoutProps, q as Loading, L as LoadingProps, w as Metadata, m as MetadataProps, M as MiddlewareProps, N as NitroPreset, o as Page, j as PageProps, k as PagePropsWithMiddleware, P as PageRouteParams, C as ParsedRoute, i as PluginContextProps, Q as ResolveFarmLayersOptions, K as ResolvedFarmLayer, R as ResolvedFarmMigrationsConfig, s as RouteModule, B as RouteSegment, I as SSGCollectionResult, H as SSGPage, z as ServerAction, t as StaticPathParams, S as StaticPathPrimitive, u as StaticRouteParams, d as defineConfig, f as farmPlugin, W as getFarmAppDirectories, X as getFarmLayerAliases, V as getFarmSourceRoots, Y as loadFarmConfigFile, U as resolveFarmLayers } from './client-plugins-DuuleQKk.js';
4
+ export { f as fileExists, g as globFiles, l as logger, m as matchRoute, p as parseRoutePath, a as parseSearchParams, r as resolveAppPath, s as segmentsToPattern, t as toViteModuleId } from './utils-3sQgfkya.js';
5
+ export { createFarmStorage, createStorageClient, databaseStorage, defineStorageClient, disposeStorage, driverStorage, getStorage, initStorage, libsqlStorage, localStorage, memoryStorage, mongodbStorage, mysql2Storage, mysqlStorage, netlifyBlobsStorage, pgStorage, pgliteStorage, planetscaleStorage, postgresStorage, redisStorage, resolveStorageRuntimeClient, s3Storage, sqliteStorage, upstashStorage, vercelBlobStorage, vercelKVStorage } from './storage.js';
6
+ export { CacheKeyFactory, DefinedCacheKey, FarmCacheAdapter, FarmCacheEntry, FarmCacheInvalidationTarget, FarmCacheOptions, FarmCacheSetOptions, FarmCacheStorage, FarmCacheUserConfig, FarmDataCache, GetFarmCacheEntryOptions, InferCacheKeyData, RevalidateTagProfile, RouteDataCacheKey, StorageFarmCacheAdapterOptions, applyFarmCacheInvalidationTargets, applyFarmCacheInvalidations, configureFarmCache, createFarmCacheKey, createPathCacheTag, createRouteDataCacheKey, createRouteDataCacheTag, defineCacheKey, getFarmDataCache, invalidate, invalidateRouteData, normalizeRevalidatePath, revalidatePath, revalidateTag, storageCacheAdapter, unstable_cache, updateTag } from './cache.js';
7
+ export { AfterCallback, FarmAfterPlatformContext, _runWithAfterNodeResponse, _runWithAfterRequest, _withAfterNodeMiddleware, after } from './after.js';
8
+ export { FARM_SERVER_QUERY_SYMBOL, ServerQuery, ServerQueryKey, ServerQueryOptions, ServerQueryOutputOptions, ServerQueryStaleTime, createServerQuery } from './server-query.js';
9
+ import { ViteDevServer } from 'vite';
10
+ export { g as getCurrentRequest } from './request-D40lt6aN.js';
11
+ export { getTheme, getThemeSnapshot } from './theme/server.js';
12
+ export { DEFAULT_SERVER_ACTION_BODY_SIZE_LIMIT, FarmServerActionsConfig, PreparedServerActionRequest, ResolvedFarmServerActionsConfig, SanitizedServerActionError, ServerActionRequestError, ServerActionRequestKind, createServerActionRequestErrorResponse, getServerActionExecutionContext, getServerActionInvalidations, getServerActionSignal, prepareServerActionRequest, resolveServerActionsConfig, runWithServerActionRequest, sanitizeServerActionError, validateServerActionRequest } from './server-action-security.js';
13
+ export { FarmEnvironment, FarmEnvironmentError, FarmIsomorphicFnOptions, createClientOnlyFn, createIsomorphicFn, createServerOnlyFn } from './environment.js';
14
+ export { F as FarmStorageBuiltinDriverConfig, a as FarmStorageClient, b as FarmStorageClientConfig, c as FarmStorageConfigObject, d as FarmStorageCustomDriverConfig, e as FarmStorageDatabaseConfig, f as FarmStorageDatabaseDriverName, g as FarmStorageLocalDriverConfig, i as FarmStorageMountConfig, j as FarmStorageMounts, h as FarmStorageRuntimeClient, k as FarmStorageUserConfig } from './types-D1A6-XvH.js';
15
+ export { BuiltinDriverName, BuiltinDriverOptions, Driver, Storage, StorageMeta, StorageValue, TransactionOptions } from 'unstorage';
16
+ export { ConnectorName, ConnectorOptions, Database } from 'db0';
17
+ import './types-DTzm4TCl.js';
18
+ import '@farming-labs/docs';
19
+ import './markdown.js';
20
+ import './workflows-CusFV6mn.js';
21
+ import './cron.js';
22
+ import './image-config-Duob7wER.js';
23
+ import './routes.js';
24
+ import './route-runtime-DoOHzCAD.js';
25
+ import 'react';
26
+ import './metadata-DyPRG0wX.js';
27
+ import './island-CfGru1MO.js';
28
+ import './types-BMxWr97v.js';
29
+ import './runtime-bv63eUiO.js';
30
+ import './resolver-IH4RmPEl.js';
31
+ import './types-CsR8fpgF.js';
32
+ import './plugin-BJDf43dc.js';
33
+ import 'http';
34
+ import './integration-api-CHT2OKAf.js';
35
+ import '@farming-labs/orm';
36
+ import './observability.js';
37
+ import './env.js';
38
+ import './font.js';
39
+ import 'node:http';
40
+ import './server-fn.js';
41
+ import './server-fn-error-DDh14a0V.js';
42
+
43
+ declare const DEFAULT_FARM_DEV_SERVER_PORT = 3000;
44
+ /**
45
+ * Create a Vite development server with Farm.js integration
46
+ */
47
+ declare function createServer(config?: FarmConfig): Promise<ViteDevServer>;
48
+ /**
49
+ * Start the development server
50
+ */
51
+ declare function startDevServer(config?: FarmConfig, port?: number): Promise<ViteDevServer>;
52
+
53
+ export { DEFAULT_FARM_DEV_SERVER_PORT, FarmConfig, createServer, startDevServer };
package/dist/server.mjs CHANGED
@@ -12,7 +12,7 @@ import "./chunk-CSLA7ALU.mjs";
12
12
  import {
13
13
  loadConfig,
14
14
  resolveConfig
15
- } from "./chunk-CEVMYGDL.mjs";
15
+ } from "./chunk-YD5IRKVS.mjs";
16
16
  import "./chunk-UVCIEUJC.mjs";
17
17
  import {
18
18
  PluginManager
@@ -26,23 +26,28 @@ import {
26
26
  createFarmApp,
27
27
  createFarmClientOptimizeDepsConfig,
28
28
  createFarmClientOptimizeDepsEntries,
29
+ createFarmThemeCssPlugin,
29
30
  defineConfig,
30
31
  farmI18nClientBridgePlugin,
31
32
  farmPlugin,
32
33
  mergeFarmViteConfig
33
- } from "./chunk-FKKM7HVF.mjs";
34
+ } from "./chunk-TX54PXAJ.mjs";
34
35
  import "./chunk-LGHEOHBU.mjs";
35
- import "./chunk-FRPWCMMG.mjs";
36
36
  import "./chunk-53MVSX3R.mjs";
37
+ import "./chunk-3XNTL3FQ.mjs";
38
+ import "./chunk-SBWOTAX4.mjs";
39
+ import "./chunk-CGIXMLSY.mjs";
40
+ import "./chunk-USWZZUEH.mjs";
37
41
  import "./chunk-6ZXIQSXE.mjs";
38
42
  import {
39
43
  farmEnvironmentFunctionsPlugin
40
44
  } from "./chunk-V6WE6JSZ.mjs";
41
- import "./chunk-3XNTL3FQ.mjs";
42
- import "./chunk-CGIXMLSY.mjs";
43
- import "./chunk-USWZZUEH.mjs";
44
45
  import "./chunk-XMFTIVJH.mjs";
45
46
  import "./chunk-7HO6AEOP.mjs";
47
+ import {
48
+ getTheme,
49
+ getThemeSnapshot
50
+ } from "./chunk-4IVNW5QD.mjs";
46
51
  import "./chunk-USLFXFFH.mjs";
47
52
  import "./chunk-E257KFBU.mjs";
48
53
  import "./chunk-7MABZJIM.mjs";
@@ -54,8 +59,10 @@ import {
54
59
  loadFarmConfigFile,
55
60
  resolveFarmLayers
56
61
  } from "./chunk-74YTBPTY.mjs";
57
- import "./chunk-7ZVN3YZI.mjs";
58
62
  import "./chunk-GY2STC2S.mjs";
63
+ import "./chunk-7ZVN3YZI.mjs";
64
+ import "./chunk-4E6VRJ6P.mjs";
65
+ import "./chunk-GXASWWJU.mjs";
59
66
  import {
60
67
  DEFAULT_SERVER_ACTION_BODY_SIZE_LIMIT,
61
68
  ServerActionRequestError,
@@ -69,10 +76,9 @@ import {
69
76
  sanitizeServerActionError,
70
77
  validateServerActionRequest
71
78
  } from "./chunk-WORFTBLU.mjs";
79
+ import "./chunk-H53KVQUU.mjs";
72
80
  import "./chunk-ZVWA4ZQ3.mjs";
73
81
  import "./chunk-7FBJLMQH.mjs";
74
- import "./chunk-4E6VRJ6P.mjs";
75
- import "./chunk-GXASWWJU.mjs";
76
82
  import "./chunk-CRN3AH35.mjs";
77
83
  import {
78
84
  createFarmStorage,
@@ -102,7 +108,7 @@ import {
102
108
  vercelBlobStorage,
103
109
  vercelKVStorage
104
110
  } from "./chunk-T4QJQK76.mjs";
105
- import "./chunk-MIUW47JX.mjs";
111
+ import "./chunk-2PEJGY5V.mjs";
106
112
  import "./chunk-P7QDS5AT.mjs";
107
113
  import {
108
114
  _runWithAfterNodeResponse,
@@ -110,6 +116,9 @@ import {
110
116
  _withAfterNodeMiddleware,
111
117
  after
112
118
  } from "./chunk-E6EPN5BT.mjs";
119
+ import {
120
+ createCliColors
121
+ } from "./chunk-GIELMNBG.mjs";
113
122
  import "./chunk-QGOHVJ6J.mjs";
114
123
  import "./chunk-KALXVY5L.mjs";
115
124
  import "./chunk-2ED5Q2GH.mjs";
@@ -137,9 +146,10 @@ import {
137
146
  import "./chunk-LM2YNO4U.mjs";
138
147
  import {
139
148
  FARM_VERSION
140
- } from "./chunk-I3UWA2P2.mjs";
149
+ } from "./chunk-5NOVWCFL.mjs";
141
150
  import "./chunk-B3FFOIWS.mjs";
142
151
  import "./chunk-ITN462YM.mjs";
152
+ import "./chunk-GQVQESLY.mjs";
143
153
  import "./chunk-3HIVDX7J.mjs";
144
154
  import "./chunk-JK25YEN6.mjs";
145
155
  import "./chunk-GS6K5OCM.mjs";
@@ -178,8 +188,7 @@ import {
178
188
  createRewritesPlugin
179
189
  } from "./chunk-SPBBQLXI.mjs";
180
190
  import {
181
- __name,
182
- __require
191
+ __name
183
192
  } from "./chunk-CGILA3WO.mjs";
184
193
 
185
194
  // src/server/create-server.ts
@@ -190,22 +199,6 @@ var DEFAULT_FARM_DEV_SERVER_PORT = 3e3;
190
199
  function createBrandingPlugin() {
191
200
  let serverStarted = false;
192
201
  let startTime = Date.now();
193
- const getColors = /* @__PURE__ */ __name(() => {
194
- const id = /* @__PURE__ */ __name((s) => s, "id");
195
- try {
196
- const pc = typeof __require === "function" ? __require("picocolors") : null;
197
- if (pc && typeof pc.createColors === "function") return pc.createColors(true);
198
- if (pc) return pc;
199
- } catch {
200
- }
201
- return {
202
- dim: id,
203
- bold: id,
204
- green: id,
205
- cyan: id,
206
- gray: id
207
- };
208
- }, "getColors");
209
202
  return {
210
203
  name: "farm:branding",
211
204
  enforce: "pre",
@@ -219,7 +212,7 @@ function createBrandingPlugin() {
219
212
  const elapsed = Date.now() - startTime;
220
213
  const address = server.httpServer?.address();
221
214
  const resolvedPort = typeof address === "object" && address ? address.port : server.config.server.port || port || 3e3;
222
- const pc = getColors();
215
+ const pc = createCliColors();
223
216
  console.log("");
224
217
  console.log(
225
218
  ` ${pc.bold(pc.green("Farm.js"))} ${pc.dim(`v${FARM_VERSION}`)} ${pc.dim(`ready in ${elapsed}ms`)}`
@@ -327,7 +320,6 @@ async function createServer(config = {}) {
327
320
  try {
328
321
  const tailwindcss = (await import("@tailwindcss/vite")).default;
329
322
  tailwindVitePlugin = tailwindcss();
330
- logger.info("\u{1F4E6} Enabled built-in Tailwind support (@tailwindcss/vite)");
331
323
  } catch (error) {
332
324
  logger.warn(
333
325
  `Tailwind plugin auto-enable failed; continuing without it: ${error.message}`
@@ -340,6 +332,7 @@ async function createServer(config = {}) {
340
332
  root: projectRoot,
341
333
  css: shouldUseProjectPostcss ? void 0 : { postcss: { plugins: [] } },
342
334
  plugins: [
335
+ createFarmThemeCssPlugin(finalConfig.theme, finalConfig.basePath),
343
336
  ...tailwindVitePlugin ? [tailwindVitePlugin] : [],
344
337
  createDevDependencyStubsPlugin(),
345
338
  farmI18nClientBridgePlugin(),
@@ -484,6 +477,8 @@ export {
484
477
  getServerActionInvalidations,
485
478
  getServerActionSignal,
486
479
  getStorage,
480
+ getTheme,
481
+ getThemeSnapshot,
487
482
  globFiles,
488
483
  initStorage,
489
484
  invalidate,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/create-server.ts"],"sourcesContent":["import { createServer as createViteServer, type ViteDevServer } from \"vite\";\nimport type { FarmConfig } from \"../types\";\nimport { farmI18nClientBridgePlugin, farmPlugin } from \"../vite\";\nimport { logger } from \"../utils\";\nimport { loadConfig, resolveConfig } from \"../config\";\nimport { PluginManager } from \"../plugin\";\nimport { farmEnvironmentFunctionsPlugin } from \"../environment-vite\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport {\n createRedirectsPlugin,\n createHeadersPlugin,\n createRewritesPlugin,\n createCompressionPlugin,\n createLoggerPlugin,\n} from \"../plugins\";\nimport {\n createFarmClientOptimizeDepsConfig,\n createFarmClientOptimizeDepsEntries,\n mergeFarmViteConfig,\n} from \"./vite-config\";\nimport { FARM_VERSION } from \"../version\";\nimport { getFarmAppDirectories } from \"../layers\";\n\nexport const DEFAULT_FARM_DEV_SERVER_PORT = 3000;\n\n// Farm.js branding plugin for createServer\nfunction createBrandingPlugin() {\n let serverStarted = false;\n let startTime = Date.now();\n\n const getColors = () => {\n const id = (s: string) => s;\n try {\n const pc = typeof require === \"function\" ? require(\"picocolors\") : null;\n if (pc && typeof pc.createColors === \"function\") return pc.createColors(true);\n if (pc) return pc;\n } catch {}\n return {\n dim: id,\n bold: id,\n green: id,\n cyan: id,\n gray: id,\n };\n };\n\n return {\n name: \"farm:branding\",\n enforce: \"pre\" as const,\n configureServer(server: ViteDevServer) {\n startTime = Date.now();\n\n const originalListen = server.listen.bind(server);\n server.listen = async (port?: number, ...args: any[]) => {\n const result = await originalListen(port, ...args);\n if (!serverStarted) {\n serverStarted = true;\n const elapsed = Date.now() - startTime;\n const address = server.httpServer?.address();\n const resolvedPort =\n typeof address === \"object\" && address\n ? address.port\n : server.config.server.port || port || 3000;\n\n const pc = getColors();\n console.log(\"\");\n console.log(\n ` ${pc.bold(pc.green(\"Farm.js\"))} ${pc.dim(`v${FARM_VERSION}`)} ${pc.dim(`ready in ${elapsed}ms`)}`,\n );\n console.log(\"\");\n console.log(\n ` ${pc.dim(\"➜\")} ${pc.bold(\"Local:\")} ${pc.cyan(`http://localhost:${resolvedPort}/`)}`,\n );\n console.log(` ${pc.dim(\"➜\")} ${pc.bold(\"Network:\")} ${pc.dim(\"use --host to expose\")}`);\n console.log(\"\");\n }\n return result;\n };\n },\n };\n}\n\nfunction hasProjectPostcssConfig(root: string): boolean {\n const candidates = [\n \"postcss.config.js\",\n \"postcss.config.cjs\",\n \"postcss.config.mjs\",\n \"postcss.config.ts\",\n \"postcss.config.json\",\n \".postcssrc\",\n \".postcssrc.json\",\n \".postcssrc.js\",\n \".postcssrc.cjs\",\n \".postcssrc.mjs\",\n \".postcssrc.ts\",\n ];\n\n return candidates.some((file) => fs.existsSync(path.join(root, file)));\n}\n\nfunction createDevDependencyStubsPlugin() {\n const stubs: Record<string, string> = {\n \"supports-color\":\n \"const disabled = false; export default { stdout: disabled, stderr: disabled }; export const stdout = disabled; export const stderr = disabled;\",\n };\n\n return {\n name: \"farm:dev-dependency-stubs\",\n enforce: \"pre\" as const,\n resolveId(id: string) {\n if (id in stubs) {\n return `\\0farm-dev-dependency-stub:${id}`;\n }\n return null;\n },\n load(id: string) {\n if (!id.startsWith(\"\\0farm-dev-dependency-stub:\")) {\n return null;\n }\n\n const moduleName = id.slice(\"\\0farm-dev-dependency-stub:\".length);\n return stubs[moduleName] || null;\n },\n };\n}\n\n/**\n * Create a Vite development server with Farm.js integration\n */\nexport async function createServer(config: FarmConfig = {}) {\n let pluginManager: PluginManager | null = null;\n try {\n const root = config.root || process.cwd();\n\n // Load farm.config.ts if it exists\n const mode = process.env.NODE_ENV === \"production\" ? \"production\" : \"development\";\n const userConfig = await loadConfig(root, undefined, mode);\n\n const resolvedConfig = userConfig ? await resolveConfig(userConfig, mode) : null;\n\n // Initialize plugin manager\n pluginManager = new PluginManager({\n config: resolvedConfig || config,\n isDev: mode === \"development\",\n isProd: mode === \"production\",\n });\n\n // Add built-in plugins if config is available\n if (resolvedConfig) {\n const redirects = await resolvedConfig.redirects();\n const headers = await resolvedConfig.headers();\n const rewrites = await resolvedConfig.rewrites();\n\n if (redirects.length > 0) {\n pluginManager.addPlugin(createRedirectsPlugin(redirects));\n }\n\n if (headers.length > 0) {\n pluginManager.addPlugin(createHeadersPlugin(headers));\n }\n\n if (rewrites.length > 0) {\n pluginManager.addPlugin(createRewritesPlugin(rewrites));\n }\n\n // Compression is applied by production adapters. Its hook is a no-op in\n // development, so do not put every dev response through that lifecycle.\n if (resolvedConfig.compress && mode === \"production\") {\n pluginManager.addPlugin(createCompressionPlugin());\n }\n\n if (resolvedConfig.plugins) {\n pluginManager.addPlugins(resolvedConfig.plugins);\n }\n }\n\n if (mode === \"development\") {\n const hasLogger = pluginManager.getPlugins().some((p) => p.name === \"farm:logger\");\n if (!hasLogger) {\n pluginManager.addPlugin(createLoggerPlugin());\n }\n }\n\n // Run config hooks\n await pluginManager.runHookParallel(\"init\");\n\n let finalConfig = resolvedConfig || config;\n finalConfig = await pluginManager.runHookSerial(\"config\", finalConfig);\n const projectRoot = finalConfig.root || process.cwd();\n\n let tailwindVitePlugin: any = undefined;\n const shouldUseProjectPostcss = hasProjectPostcssConfig(projectRoot);\n if (shouldUseProjectPostcss) {\n logger.info(\"📦 Using project PostCSS/Tailwind configuration\");\n } else {\n try {\n const tailwindcss = (await import(\"@tailwindcss/vite\")).default;\n tailwindVitePlugin = tailwindcss();\n logger.info(\"📦 Enabled built-in Tailwind support (@tailwindcss/vite)\");\n } catch (error) {\n logger.warn(\n `Tailwind plugin auto-enable failed; continuing without it: ${(error as Error).message}`,\n );\n }\n }\n\n const server = await createViteServer(\n mergeFarmViteConfig(\n {\n root: projectRoot,\n css: shouldUseProjectPostcss ? undefined : { postcss: { plugins: [] } },\n plugins: [\n ...(tailwindVitePlugin ? [tailwindVitePlugin] : []),\n createDevDependencyStubsPlugin(),\n farmI18nClientBridgePlugin(),\n farmPlugin(finalConfig, pluginManager),\n farmEnvironmentFunctionsPlugin(),\n createBrandingPlugin(),\n ],\n server: {\n middlewareMode: false,\n port: DEFAULT_FARM_DEV_SERVER_PORT,\n strictPort: true,\n },\n resolve: {\n // Keep framework and application modules on one React runtime.\n dedupe: [\"react\", \"react-dom\"],\n },\n optimizeDeps: {\n ...createFarmClientOptimizeDepsConfig(\n createFarmClientOptimizeDepsEntries(projectRoot, getFarmAppDirectories(finalConfig)),\n ),\n exclude: [\n \"@farm.js/core/server\",\n \"@farm.js/core/api\",\n \"@farm.js/core/middleware\",\n \"@farm.js/core/config\",\n \"nitro\",\n \"h3\",\n \"vite\",\n \"esbuild\",\n \"rollup\",\n \"fsevents\",\n \"nf3\",\n \"better-call\",\n \"zod\",\n \"supports-color\",\n \"node-fetch\",\n \"consola\",\n \"mock-aws-s3\",\n \"aws-sdk\",\n \"nock\",\n \"lightningcss\",\n \"@tailwindcss/oxide\",\n ],\n },\n ssr: {\n noExternal: [\"farm\"],\n },\n customLogger: {\n info: () => {},\n warn: () => {},\n warnOnce: () => {},\n error: (msg) => logger.error(String(msg)),\n clearScreen: () => {},\n hasErrorLogged: () => false,\n hasWarned: false,\n },\n },\n finalConfig.vite,\n ),\n );\n\n (server as any).__farmPluginManager = pluginManager;\n\n // Update plugin manager with vite server\n pluginManager.updateContext({ config: finalConfig, viteServer: server });\n await pluginManager.setupPlugins();\n await pluginManager.runHookParallel(\"devServerCreated\", server);\n\n // Run configResolved hooks\n await pluginManager.runHookParallel(\"configResolved\", finalConfig);\n\n // Run buildStart hooks\n await pluginManager.runHookParallel(\"buildStart\");\n\n return server;\n } catch (error) {\n if (pluginManager) {\n await pluginManager.runHookParallel(\"onError\", {\n phase: \"createServer\",\n error,\n });\n }\n logger.error(`Failed to create server: ${error}`);\n throw error;\n }\n}\n\n/**\n * Start the development server\n */\nexport async function startDevServer(config: FarmConfig = {}, port?: number) {\n const server = await createServer(config);\n await server.listen(port);\n const pluginManager = (server as any).__farmPluginManager as PluginManager | undefined;\n if (pluginManager) {\n await pluginManager.startRuntime();\n server.httpServer?.once(\"close\", () => {\n pluginManager.closeRuntime(\"dev-server-closed\").catch(() => {});\n });\n }\n // Branding is handled by farmBrandingPlugin in vite.ts\n return server;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/server/create-server.ts"],"sourcesContent":["import { createServer as createViteServer, type ViteDevServer } from \"vite\";\nimport type { FarmConfig } from \"../types\";\nimport { farmI18nClientBridgePlugin, farmPlugin } from \"../vite\";\nimport { logger } from \"../utils\";\nimport { loadConfig, resolveConfig } from \"../config\";\nimport { PluginManager } from \"../plugin\";\nimport { farmEnvironmentFunctionsPlugin } from \"../environment-vite\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport {\n createRedirectsPlugin,\n createHeadersPlugin,\n createRewritesPlugin,\n createCompressionPlugin,\n createLoggerPlugin,\n} from \"../plugins\";\nimport {\n createFarmClientOptimizeDepsConfig,\n createFarmClientOptimizeDepsEntries,\n mergeFarmViteConfig,\n} from \"./vite-config\";\nimport { FARM_VERSION } from \"../version\";\nimport { getFarmAppDirectories } from \"../layers\";\nimport { createCliColors } from \"../cli-colors\";\nimport { createFarmThemeCssPlugin } from \"../theme/vite\";\n\nexport const DEFAULT_FARM_DEV_SERVER_PORT = 3000;\n\n// Farm.js branding plugin for createServer\nfunction createBrandingPlugin() {\n let serverStarted = false;\n let startTime = Date.now();\n\n return {\n name: \"farm:branding\",\n enforce: \"pre\" as const,\n configureServer(server: ViteDevServer) {\n startTime = Date.now();\n\n const originalListen = server.listen.bind(server);\n server.listen = async (port?: number, ...args: any[]) => {\n const result = await originalListen(port, ...args);\n if (!serverStarted) {\n serverStarted = true;\n const elapsed = Date.now() - startTime;\n const address = server.httpServer?.address();\n const resolvedPort =\n typeof address === \"object\" && address\n ? address.port\n : server.config.server.port || port || 3000;\n\n const pc = createCliColors();\n console.log(\"\");\n console.log(\n ` ${pc.bold(pc.green(\"Farm.js\"))} ${pc.dim(`v${FARM_VERSION}`)} ${pc.dim(`ready in ${elapsed}ms`)}`,\n );\n console.log(\"\");\n console.log(\n ` ${pc.dim(\"➜\")} ${pc.bold(\"Local:\")} ${pc.cyan(`http://localhost:${resolvedPort}/`)}`,\n );\n console.log(` ${pc.dim(\"➜\")} ${pc.bold(\"Network:\")} ${pc.dim(\"use --host to expose\")}`);\n console.log(\"\");\n }\n return result;\n };\n },\n };\n}\n\nfunction hasProjectPostcssConfig(root: string): boolean {\n const candidates = [\n \"postcss.config.js\",\n \"postcss.config.cjs\",\n \"postcss.config.mjs\",\n \"postcss.config.ts\",\n \"postcss.config.json\",\n \".postcssrc\",\n \".postcssrc.json\",\n \".postcssrc.js\",\n \".postcssrc.cjs\",\n \".postcssrc.mjs\",\n \".postcssrc.ts\",\n ];\n\n return candidates.some((file) => fs.existsSync(path.join(root, file)));\n}\n\nfunction createDevDependencyStubsPlugin() {\n const stubs: Record<string, string> = {\n \"supports-color\":\n \"const disabled = false; export default { stdout: disabled, stderr: disabled }; export const stdout = disabled; export const stderr = disabled;\",\n };\n\n return {\n name: \"farm:dev-dependency-stubs\",\n enforce: \"pre\" as const,\n resolveId(id: string) {\n if (id in stubs) {\n return `\\0farm-dev-dependency-stub:${id}`;\n }\n return null;\n },\n load(id: string) {\n if (!id.startsWith(\"\\0farm-dev-dependency-stub:\")) {\n return null;\n }\n\n const moduleName = id.slice(\"\\0farm-dev-dependency-stub:\".length);\n return stubs[moduleName] || null;\n },\n };\n}\n\n/**\n * Create a Vite development server with Farm.js integration\n */\nexport async function createServer(config: FarmConfig = {}) {\n let pluginManager: PluginManager | null = null;\n try {\n const root = config.root || process.cwd();\n\n // Load farm.config.ts if it exists\n const mode = process.env.NODE_ENV === \"production\" ? \"production\" : \"development\";\n const userConfig = await loadConfig(root, undefined, mode);\n\n const resolvedConfig = userConfig ? await resolveConfig(userConfig, mode) : null;\n\n // Initialize plugin manager\n pluginManager = new PluginManager({\n config: resolvedConfig || config,\n isDev: mode === \"development\",\n isProd: mode === \"production\",\n });\n\n // Add built-in plugins if config is available\n if (resolvedConfig) {\n const redirects = await resolvedConfig.redirects();\n const headers = await resolvedConfig.headers();\n const rewrites = await resolvedConfig.rewrites();\n\n if (redirects.length > 0) {\n pluginManager.addPlugin(createRedirectsPlugin(redirects));\n }\n\n if (headers.length > 0) {\n pluginManager.addPlugin(createHeadersPlugin(headers));\n }\n\n if (rewrites.length > 0) {\n pluginManager.addPlugin(createRewritesPlugin(rewrites));\n }\n\n // Compression is applied by production adapters. Its hook is a no-op in\n // development, so do not put every dev response through that lifecycle.\n if (resolvedConfig.compress && mode === \"production\") {\n pluginManager.addPlugin(createCompressionPlugin());\n }\n\n if (resolvedConfig.plugins) {\n pluginManager.addPlugins(resolvedConfig.plugins);\n }\n }\n\n if (mode === \"development\") {\n const hasLogger = pluginManager.getPlugins().some((p) => p.name === \"farm:logger\");\n if (!hasLogger) {\n pluginManager.addPlugin(createLoggerPlugin());\n }\n }\n\n // Run config hooks\n await pluginManager.runHookParallel(\"init\");\n\n let finalConfig = resolvedConfig || config;\n finalConfig = await pluginManager.runHookSerial(\"config\", finalConfig);\n const projectRoot = finalConfig.root || process.cwd();\n\n let tailwindVitePlugin: any = undefined;\n const shouldUseProjectPostcss = hasProjectPostcssConfig(projectRoot);\n if (shouldUseProjectPostcss) {\n logger.info(\"📦 Using project PostCSS/Tailwind configuration\");\n } else {\n try {\n const tailwindcss = (await import(\"@tailwindcss/vite\")).default;\n tailwindVitePlugin = tailwindcss();\n } catch (error) {\n logger.warn(\n `Tailwind plugin auto-enable failed; continuing without it: ${(error as Error).message}`,\n );\n }\n }\n\n const server = await createViteServer(\n mergeFarmViteConfig(\n {\n root: projectRoot,\n css: shouldUseProjectPostcss ? undefined : { postcss: { plugins: [] } },\n plugins: [\n createFarmThemeCssPlugin(finalConfig.theme, finalConfig.basePath),\n ...(tailwindVitePlugin ? [tailwindVitePlugin] : []),\n createDevDependencyStubsPlugin(),\n farmI18nClientBridgePlugin(),\n farmPlugin(finalConfig, pluginManager),\n farmEnvironmentFunctionsPlugin(),\n createBrandingPlugin(),\n ],\n server: {\n middlewareMode: false,\n port: DEFAULT_FARM_DEV_SERVER_PORT,\n strictPort: true,\n },\n resolve: {\n // Keep framework and application modules on one React runtime.\n dedupe: [\"react\", \"react-dom\"],\n },\n optimizeDeps: {\n ...createFarmClientOptimizeDepsConfig(\n createFarmClientOptimizeDepsEntries(projectRoot, getFarmAppDirectories(finalConfig)),\n ),\n exclude: [\n \"@farm.js/core/server\",\n \"@farm.js/core/api\",\n \"@farm.js/core/middleware\",\n \"@farm.js/core/config\",\n \"nitro\",\n \"h3\",\n \"vite\",\n \"esbuild\",\n \"rollup\",\n \"fsevents\",\n \"nf3\",\n \"better-call\",\n \"zod\",\n \"supports-color\",\n \"node-fetch\",\n \"consola\",\n \"mock-aws-s3\",\n \"aws-sdk\",\n \"nock\",\n \"lightningcss\",\n \"@tailwindcss/oxide\",\n ],\n },\n ssr: {\n noExternal: [\"farm\"],\n },\n customLogger: {\n info: () => {},\n warn: () => {},\n warnOnce: () => {},\n error: (msg) => logger.error(String(msg)),\n clearScreen: () => {},\n hasErrorLogged: () => false,\n hasWarned: false,\n },\n },\n finalConfig.vite,\n ),\n );\n\n (server as any).__farmPluginManager = pluginManager;\n\n // Update plugin manager with vite server\n pluginManager.updateContext({ config: finalConfig, viteServer: server });\n await pluginManager.setupPlugins();\n await pluginManager.runHookParallel(\"devServerCreated\", server);\n\n // Run configResolved hooks\n await pluginManager.runHookParallel(\"configResolved\", finalConfig);\n\n // Run buildStart hooks\n await pluginManager.runHookParallel(\"buildStart\");\n\n return server;\n } catch (error) {\n if (pluginManager) {\n await pluginManager.runHookParallel(\"onError\", {\n phase: \"createServer\",\n error,\n });\n }\n logger.error(`Failed to create server: ${error}`);\n throw error;\n }\n}\n\n/**\n * Start the development server\n */\nexport async function startDevServer(config: FarmConfig = {}, port?: number) {\n const server = await createServer(config);\n await server.listen(port);\n const pluginManager = (server as any).__farmPluginManager as PluginManager | undefined;\n if (pluginManager) {\n await pluginManager.startRuntime();\n server.httpServer?.once(\"close\", () => {\n pluginManager.closeRuntime(\"dev-server-closed\").catch(() => {});\n });\n }\n // Branding is handled by farmBrandingPlugin in vite.ts\n return server;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,52 @@
1
+ import { Driver, Storage } from 'unstorage';
2
+ export { BuiltinDriverName, BuiltinDriverOptions, Driver, Storage, StorageMeta, StorageValue, TransactionOptions } from 'unstorage';
3
+ import { Database } from 'db0';
4
+ export { ConnectorName, ConnectorOptions, Database } from 'db0';
5
+ import { a as FarmStorageClient, b as FarmStorageClientConfig, g as FarmStorageLocalDriverConfig, e as FarmStorageDatabaseConfig, k as FarmStorageUserConfig } from './types-D1A6-XvH.mjs';
6
+ export { F as FarmStorageBuiltinDriverConfig, c as FarmStorageConfigObject, d as FarmStorageCustomDriverConfig, f as FarmStorageDatabaseDriverName, i as FarmStorageMountConfig, j as FarmStorageMounts, h as FarmStorageRuntimeClient } from './types-D1A6-XvH.mjs';
7
+
8
+ type DriverResolver = () => Driver | Promise<Driver>;
9
+ declare function defineStorageClient(resolveDriver: DriverResolver): FarmStorageClient;
10
+ declare function createStorageClient(config: FarmStorageClientConfig): FarmStorageClient;
11
+ declare function driverStorage(driver: Driver | (() => Driver | Promise<Driver>)): FarmStorageClient;
12
+ declare function databaseStorage(database: Database, options?: {
13
+ tableName?: string;
14
+ }): FarmStorageClient;
15
+ declare function memoryStorage(): FarmStorageClient;
16
+ declare function localStorage(options?: Omit<FarmStorageLocalDriverConfig, "driver">): FarmStorageClient;
17
+ declare function sqliteStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
18
+ declare function mysqlStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
19
+ declare function mysql2Storage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
20
+ declare function postgresStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
21
+ declare function pgStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
22
+ declare function pgliteStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
23
+ declare function planetscaleStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
24
+ declare function libsqlStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
25
+ declare function redisStorage(options: Omit<Extract<FarmStorageClientConfig, {
26
+ driver: "redis";
27
+ }>, "driver">): FarmStorageClient;
28
+ declare function s3Storage(options: Omit<Extract<FarmStorageClientConfig, {
29
+ driver: "s3";
30
+ }>, "driver">): FarmStorageClient;
31
+ declare function mongodbStorage(options: Omit<Extract<FarmStorageClientConfig, {
32
+ driver: "mongodb";
33
+ }>, "driver">): FarmStorageClient;
34
+ declare function upstashStorage(options: Omit<Extract<FarmStorageClientConfig, {
35
+ driver: "upstash";
36
+ }>, "driver">): FarmStorageClient;
37
+ declare function netlifyBlobsStorage(options: Omit<Extract<FarmStorageClientConfig, {
38
+ driver: "netlify-blobs";
39
+ }>, "driver">): FarmStorageClient;
40
+ declare function vercelKVStorage(options: Omit<Extract<FarmStorageClientConfig, {
41
+ driver: "vercel-kv";
42
+ }>, "driver">): FarmStorageClient;
43
+ declare function vercelBlobStorage(options: Omit<Extract<FarmStorageClientConfig, {
44
+ driver: "vercel-blob";
45
+ }>, "driver">): FarmStorageClient;
46
+ declare function createFarmStorage(config?: FarmStorageUserConfig): Promise<Storage>;
47
+ declare function resolveStorageRuntimeClient(config: FarmStorageUserConfig | undefined): Promise<unknown | undefined>;
48
+ declare function initStorage(config?: FarmStorageUserConfig): Promise<Storage>;
49
+ declare function getStorage(namespace?: string): Storage;
50
+ declare function disposeStorage(): Promise<void>;
51
+
52
+ export { FarmStorageClient, FarmStorageClientConfig, FarmStorageDatabaseConfig, FarmStorageLocalDriverConfig, FarmStorageUserConfig, createFarmStorage, createStorageClient, databaseStorage, defineStorageClient, disposeStorage, driverStorage, getStorage, initStorage, libsqlStorage, localStorage, memoryStorage, mongodbStorage, mysql2Storage, mysqlStorage, netlifyBlobsStorage, pgStorage, pgliteStorage, planetscaleStorage, postgresStorage, redisStorage, resolveStorageRuntimeClient, s3Storage, sqliteStorage, upstashStorage, vercelBlobStorage, vercelKVStorage };
@@ -0,0 +1,52 @@
1
+ import { Driver, Storage } from 'unstorage';
2
+ export { BuiltinDriverName, BuiltinDriverOptions, Driver, Storage, StorageMeta, StorageValue, TransactionOptions } from 'unstorage';
3
+ import { Database } from 'db0';
4
+ export { ConnectorName, ConnectorOptions, Database } from 'db0';
5
+ import { a as FarmStorageClient, b as FarmStorageClientConfig, g as FarmStorageLocalDriverConfig, e as FarmStorageDatabaseConfig, k as FarmStorageUserConfig } from './types-D1A6-XvH.js';
6
+ export { F as FarmStorageBuiltinDriverConfig, c as FarmStorageConfigObject, d as FarmStorageCustomDriverConfig, f as FarmStorageDatabaseDriverName, i as FarmStorageMountConfig, j as FarmStorageMounts, h as FarmStorageRuntimeClient } from './types-D1A6-XvH.js';
7
+
8
+ type DriverResolver = () => Driver | Promise<Driver>;
9
+ declare function defineStorageClient(resolveDriver: DriverResolver): FarmStorageClient;
10
+ declare function createStorageClient(config: FarmStorageClientConfig): FarmStorageClient;
11
+ declare function driverStorage(driver: Driver | (() => Driver | Promise<Driver>)): FarmStorageClient;
12
+ declare function databaseStorage(database: Database, options?: {
13
+ tableName?: string;
14
+ }): FarmStorageClient;
15
+ declare function memoryStorage(): FarmStorageClient;
16
+ declare function localStorage(options?: Omit<FarmStorageLocalDriverConfig, "driver">): FarmStorageClient;
17
+ declare function sqliteStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
18
+ declare function mysqlStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
19
+ declare function mysql2Storage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
20
+ declare function postgresStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
21
+ declare function pgStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
22
+ declare function pgliteStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
23
+ declare function planetscaleStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
24
+ declare function libsqlStorage(options: Omit<FarmStorageDatabaseConfig, "driver">): FarmStorageClient;
25
+ declare function redisStorage(options: Omit<Extract<FarmStorageClientConfig, {
26
+ driver: "redis";
27
+ }>, "driver">): FarmStorageClient;
28
+ declare function s3Storage(options: Omit<Extract<FarmStorageClientConfig, {
29
+ driver: "s3";
30
+ }>, "driver">): FarmStorageClient;
31
+ declare function mongodbStorage(options: Omit<Extract<FarmStorageClientConfig, {
32
+ driver: "mongodb";
33
+ }>, "driver">): FarmStorageClient;
34
+ declare function upstashStorage(options: Omit<Extract<FarmStorageClientConfig, {
35
+ driver: "upstash";
36
+ }>, "driver">): FarmStorageClient;
37
+ declare function netlifyBlobsStorage(options: Omit<Extract<FarmStorageClientConfig, {
38
+ driver: "netlify-blobs";
39
+ }>, "driver">): FarmStorageClient;
40
+ declare function vercelKVStorage(options: Omit<Extract<FarmStorageClientConfig, {
41
+ driver: "vercel-kv";
42
+ }>, "driver">): FarmStorageClient;
43
+ declare function vercelBlobStorage(options: Omit<Extract<FarmStorageClientConfig, {
44
+ driver: "vercel-blob";
45
+ }>, "driver">): FarmStorageClient;
46
+ declare function createFarmStorage(config?: FarmStorageUserConfig): Promise<Storage>;
47
+ declare function resolveStorageRuntimeClient(config: FarmStorageUserConfig | undefined): Promise<unknown | undefined>;
48
+ declare function initStorage(config?: FarmStorageUserConfig): Promise<Storage>;
49
+ declare function getStorage(namespace?: string): Storage;
50
+ declare function disposeStorage(): Promise<void>;
51
+
52
+ export { FarmStorageClient, FarmStorageClientConfig, FarmStorageDatabaseConfig, FarmStorageLocalDriverConfig, FarmStorageUserConfig, createFarmStorage, createStorageClient, databaseStorage, defineStorageClient, disposeStorage, driverStorage, getStorage, initStorage, libsqlStorage, localStorage, memoryStorage, mongodbStorage, mysql2Storage, mysqlStorage, netlifyBlobsStorage, pgStorage, pgliteStorage, planetscaleStorage, postgresStorage, redisStorage, resolveStorageRuntimeClient, s3Storage, sqliteStorage, upstashStorage, vercelBlobStorage, vercelKVStorage };
@@ -0,0 +1,104 @@
1
+ import { ReactElement } from 'react';
2
+ import './types-BMxWr97v.mjs';
3
+ import { b as APIRouteParams } from './runtime-Q3u74Nbq.mjs';
4
+ import { ProgrammaticPageRoute, InferProgrammaticRouteData, ProgrammaticRouteComponentProps, ProgrammaticApiRoute } from './routes.mjs';
5
+ import { FarmRouterQueryValue, FarmRouterPathParams } from './router.mjs';
6
+ import { ServerFn } from './server-fn.mjs';
7
+ import { g as FarmContextFactory, M as MiddlewareProps, i as PluginContextProps, s as RouteModule } from './client-plugins-CCilIb_G.mjs';
8
+ import './cache.mjs';
9
+ import './transport-BmbGTXA5.mjs';
10
+ import './route-runtime-DoOHzCAD.mjs';
11
+ import './plugin-BJDf43dc.mjs';
12
+ import 'http';
13
+ import './types-D1A6-XvH.mjs';
14
+ import 'db0';
15
+ import 'unstorage';
16
+ import './integration-api-CHT2OKAf.mjs';
17
+ import '@farming-labs/orm';
18
+ import './types-DTzm4TCl.mjs';
19
+ import '@farming-labs/docs';
20
+ import './markdown.mjs';
21
+ import './observability.mjs';
22
+ import 'vite';
23
+ import './workflows-CusFV6mn.mjs';
24
+ import './cron.mjs';
25
+ import './env.mjs';
26
+ import './server-action-security.mjs';
27
+ import './server-fn-error-DDh14a0V.mjs';
28
+ import './image-config-Duob7wER.mjs';
29
+ import './types-CsR8fpgF.mjs';
30
+ import './font.mjs';
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 };